From b6b36e1b5a37cfddc025efdbd816acbde70eafb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Mon, 26 Aug 2013 17:18:08 +0200 Subject: [PATCH 01/52] fix bug #182: Wrong title on favorites and archives pages --- tpl/home.twig | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/tpl/home.twig b/tpl/home.twig index a2fa9a9..6b80c6e 100644 --- a/tpl/home.twig +++ b/tpl/home.twig @@ -1,5 +1,13 @@ {% extends "layout.twig" %} -{% block title %}{% trans "home" %}{% endblock %} +{% block title %} +{% if view == 'fav' %} +{% trans "favoris" %} +{% elseif view == 'archive' %} +{% trans "archive" %} +{% else %} +{% trans "unread" %} +{% endif %} +{% endblock %} {% block menu %} {% include '_menu.twig' %} {% endblock %} From 6fb46003340dc96c3a9fa876949c39eb25f14773 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Mon, 26 Aug 2013 17:38:01 +0200 Subject: [PATCH 02/52] fix bug #186: content was empty when enabling downloading pictures --- inc/poche/Poche.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php index 646193f..bca8bfd 100644 --- a/inc/poche/Poche.class.php +++ b/inc/poche/Poche.class.php @@ -166,7 +166,7 @@ class Poche } $last_id = $this->store->getLastId($sequence); if (DOWNLOAD_PICTURES) { - $content = filtre_picture($parametres_url['body'], $url->getUrl(), $last_id); + $content = filtre_picture($content['body'], $url->getUrl(), $last_id); Tools::logm('updating content article'); $this->store->updateContent($last_id, $content, $this->user->getId()); } From 5ebf6eeca1a1096efa3027fa082ec6b60a7ac1e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Tue, 27 Aug 2013 11:05:57 +0200 Subject: [PATCH 03/52] add configuration to parse bfmtv.com --- inc/3rdparty/site_config/custom/bfmtv.com.txt | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 inc/3rdparty/site_config/custom/bfmtv.com.txt diff --git a/inc/3rdparty/site_config/custom/bfmtv.com.txt b/inc/3rdparty/site_config/custom/bfmtv.com.txt new file mode 100644 index 0000000..0ff28d5 --- /dev/null +++ b/inc/3rdparty/site_config/custom/bfmtv.com.txt @@ -0,0 +1,6 @@ +title: //title +body: //h2 | //span[@class='masque'] | //article[@class='corps_article_right'] +prune: no +tidy: no + +test_url: http://www.bfmtv.com/societe/cigarette-electronique-dangers-588622.html \ No newline at end of file From 7d1778bbd20030dd37b47a87bfa10bff61f6457e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Tue, 27 Aug 2013 12:52:35 +0200 Subject: [PATCH 04/52] config file for tldp.org --- inc/3rdparty/site_config/custom/tldp.org.txt | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 inc/3rdparty/site_config/custom/tldp.org.txt diff --git a/inc/3rdparty/site_config/custom/tldp.org.txt b/inc/3rdparty/site_config/custom/tldp.org.txt new file mode 100644 index 0000000..7dd5cdb --- /dev/null +++ b/inc/3rdparty/site_config/custom/tldp.org.txt @@ -0,0 +1,6 @@ +title: //title +body: //h2 | //p | //ul +prune: no +tidy: no + +test_url: http://www.tldp.org/HOWTO/Plug-and-Play-HOWTO-7.html \ No newline at end of file From 093f1efb213ce43e76ad7416eef347c80d8b0e17 Mon Sep 17 00:00:00 2001 From: NumEricR Date: Tue, 27 Aug 2013 02:14:15 +0200 Subject: [PATCH 05/52] Update comment --- inc/poche/Poche.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php index bca8bfd..57e8b7b 100644 --- a/inc/poche/Poche.class.php +++ b/inc/poche/Poche.class.php @@ -257,7 +257,7 @@ class Poche Tools::logm('error in view call : entry is null'); } break; - default: # home view + default: # home, favorites and archive views $entries = $this->store->getEntriesByView($view, $this->user->getId()); $this->pagination->set_total(count($entries)); $page_links = $this->pagination->page_links('?view=' . $view . '&sort=' . $_SESSION['sort'] . '&'); From 3eb049036e601c1978cf5f7f0d5be8c577933b72 Mon Sep 17 00:00:00 2001 From: NumEricR Date: Tue, 27 Aug 2013 16:02:25 +0200 Subject: [PATCH 06/52] Add warning message when there is no entry in current view --- inc/poche/Poche.class.php | 14 +++++++++----- tpl/home.twig | 8 ++++++-- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php index 57e8b7b..a8f6415 100644 --- a/inc/poche/Poche.class.php +++ b/inc/poche/Poche.class.php @@ -259,13 +259,17 @@ class Poche break; default: # home, favorites and archive views $entries = $this->store->getEntriesByView($view, $this->user->getId()); - $this->pagination->set_total(count($entries)); - $page_links = $this->pagination->page_links('?view=' . $view . '&sort=' . $_SESSION['sort'] . '&'); - $datas = $this->store->getEntriesByView($view, $this->user->getId(), $this->pagination->get_limit()); $tpl_vars = array( - 'entries' => $datas, - 'page_links' => $page_links, + 'entries' => '', + 'page_links' => '', ); + if (count($entries) > 0) { + $this->pagination->set_total(count($entries)); + $page_links = $this->pagination->page_links('?view=' . $view . '&sort=' . $_SESSION['sort'] . '&'); + $datas = $this->store->getEntriesByView($view, $this->user->getId(), $this->pagination->get_limit()); + $tpl_vars['entries'] = $datas; + $tpl_vars['page_links'] = $page_links; + } Tools::logm('display ' . $view . ' view'); break; } diff --git a/tpl/home.twig b/tpl/home.twig index 6b80c6e..f51c34f 100644 --- a/tpl/home.twig +++ b/tpl/home.twig @@ -19,7 +19,10 @@ {% endblock %} {% block content %} {{ page_links | raw }} - {% for entry in entries %} + {% if entries is empty %} +

{% trans "No link available here!" %}

+ {% else %} + {% for entry in entries %}

{{ entry.title|raw }}

- {% endfor %} + {% endfor %} + {% endif %} {{ page_links | raw }} {% endblock %} \ No newline at end of file From 7f9f5281e5fe6dd92c810f7945c7761ca17fd2e6 Mon Sep 17 00:00:00 2001 From: NumEricR Date: Wed, 28 Aug 2013 19:12:11 +0200 Subject: [PATCH 07/52] Add number of results next to pager --- inc/poche/Poche.class.php | 2 ++ tpl/css/style.css | 21 ++++++++++++++++++--- tpl/home.twig | 11 +++++++++-- 3 files changed, 29 insertions(+), 5 deletions(-) diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php index a8f6415..89e94a3 100644 --- a/inc/poche/Poche.class.php +++ b/inc/poche/Poche.class.php @@ -262,6 +262,7 @@ class Poche $tpl_vars = array( 'entries' => '', 'page_links' => '', + 'nb_results' => '', ); if (count($entries) > 0) { $this->pagination->set_total(count($entries)); @@ -269,6 +270,7 @@ class Poche $datas = $this->store->getEntriesByView($view, $this->user->getId(), $this->pagination->get_limit()); $tpl_vars['entries'] = $datas; $tpl_vars['page_links'] = $page_links; + $tpl_vars['nb_results'] = count($entries); } Tools::logm('display ' . $view . ' view'); break; diff --git a/tpl/css/style.css b/tpl/css/style.css index 7633534..f07072a 100644 --- a/tpl/css/style.css +++ b/tpl/css/style.css @@ -98,6 +98,10 @@ a, a:hover, a:visited { #main #content .entrie { border-bottom: 1px dashed #222; } +/* First entry */ +#main #content .results + .entrie { + clear: both; +} #main .entrie .tools { list-style-type: none; @@ -189,11 +193,22 @@ a, a:hover, a:visited { } -/* Pagination */ -.pagination { - clear: both; +.results { + overflow: hidden; padding-bottom: 20px; padding-top: 10px; +} + +.nb-results { + float: left; + font-size: 0.9em; + line-height: 24px; + vertical-align: middle; +} + +/* Pagination */ +.pagination { + float: right; text-align: right; } .pagination a { diff --git a/tpl/home.twig b/tpl/home.twig index f51c34f..db4e088 100644 --- a/tpl/home.twig +++ b/tpl/home.twig @@ -18,10 +18,17 @@ {% endblock %} {% block content %} - {{ page_links | raw }} {% if entries is empty %}

{% trans "No link available here!" %}

{% else %} + {% block pager %} + {% if nb_results > 1 %} +
+
{{ nb_results }} {% trans "results" %}
+ {{ page_links | raw }} +
+ {% endif %} + {% endblock %} {% for entry in entries %}

{{ entry.title|raw }}

@@ -36,5 +43,5 @@
{% endfor %} {% endif %} - {{ page_links | raw }} + {{ block('pager') }} {% endblock %} \ No newline at end of file From 876bb3af42b1628e162492bcd95939e32ce1a661 Mon Sep 17 00:00:00 2001 From: NumEricR Date: Fri, 30 Aug 2013 15:31:33 +0200 Subject: [PATCH 08/52] Remove on login and home views useless link "back to home" --- tpl/_top.twig | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tpl/_top.twig b/tpl/_top.twig index ae01cc3..dc20081 100644 --- a/tpl/_top.twig +++ b/tpl/_top.twig @@ -1,3 +1,7 @@
-

logo poche

+

+ {% if view == 'home' %}{% block logo %}logo poche{% endblock %} + {% else %}{{ block('logo') }} + {% endif %} +

\ No newline at end of file From 08a12b6dbbbdff54ffd93c6c8ed3608f0c99e34e Mon Sep 17 00:00:00 2001 From: NumEricR Date: Thu, 5 Sep 2013 22:01:15 +0200 Subject: [PATCH 09/52] Hide disabled pagination links --- tpl/css/style.css | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/tpl/css/style.css b/tpl/css/style.css index 7633534..5aca9ae 100644 --- a/tpl/css/style.css +++ b/tpl/css/style.css @@ -221,12 +221,7 @@ a, a:hover, a:visited { margin: 2px; } .pagination .disabled { - border: 1px solid #eee; - color: #ddd; - margin: 2px; - padding: 4px 8px; - font-size: 11px; - font-weight: bold; + display: none; } #bookmarklet { From 2edde7fe337a8502ee5d37ae0b76f76295864b7c Mon Sep 17 00:00:00 2001 From: NumEricR Date: Thu, 5 Sep 2013 22:16:36 +0200 Subject: [PATCH 10/52] Display sort links only if there is at least 2 articles in current list --- tpl/home.twig | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tpl/home.twig b/tpl/home.twig index f51c34f..f44e040 100644 --- a/tpl/home.twig +++ b/tpl/home.twig @@ -12,10 +12,12 @@ {% include '_menu.twig' %} {% endblock %} {% block precontent %} + {% if entries|length > 1 %}
  • {% trans {% trans "by date" %} {% trans
  • {% trans {% trans "by title" %} {% trans
+ {% endif %} {% endblock %} {% block content %} {{ page_links | raw }} From a32231274060ec2de453124117518458c4fa00df Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Sun, 8 Sep 2013 20:54:11 +0200 Subject: [PATCH 11/52] Implemented Flattr changes Added a button to say if the article is flattrable or not and how many people have flattred this object. --- inc/poche/Poche.class.php | 59 +++++++++++++++++++++++++++++++++++++-- tpl/view.twig | 1 + 2 files changed, 58 insertions(+), 2 deletions(-) diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php index a8f6415..5dab10d 100644 --- a/inc/poche/Poche.class.php +++ b/inc/poche/Poche.class.php @@ -247,10 +247,15 @@ class Poche $tidy = tidy_parse_string($content, array('indent'=>true, 'show-body-only' => true), 'UTF8'); $tidy->cleanRepair(); $content = $tidy->value; - } + + // flattr checking + $flattr = new FlattrItem(); + $flattr->checkitem($entry['url']); + $tpl_vars = array( 'entry' => $entry, 'content' => $content, + 'flattr' => $flattr, ); } else { @@ -558,4 +563,54 @@ class Poche } return $version; } -} \ No newline at end of file +} + +/* class for Flattr querying. Should be put in a separate file +* Or maybe just create an array instead of a complete class... My mistake. :-° +*/ +class FlattrItem{ + public $status; + public $urltoflattr; + public $flattrItemURL; + public $numflattrs; + + public function checkitem($urltoflattr){ + $this->cacheflattrfile($urltoflattr); + $flattrResponse = file_get_contents("cache/flattr/".base64_encode($urltoflattr).".cache"); + var_dump($flattrResponse); + if($flattrResponse != FALSE){ + $result = json_decode($flattrResponse); + if (isset($result->message)){ + if ($result->message == "flattrable"){ + $this->status = "flattrable"; + } + } + elseif ($result->link) { + $this->status = "flattred"; + $this->flattrItemURL = $result->link; + $this->numflattrs = $result->flattrs_user_count; + } + else{ + $this->status = "not flattrable"; + } + } + else + { + $this->status = "FLATTR_ERR_CONNECTION"; + } + } + + private function cacheflattrfile($urltoflattr){ + if (!is_dir('cache/flattr')){ + mkdir('./cache/flattr', 0700); + } + // if a cache flattr file for this url already exists and it's been less than one day than it have been updated, see in /cache + if ((!file_exists("cache/flattr/".base64_encode($urltoflattr).".cache")) || (time() - filemtime("cache/flattr/".base64_encode($urltoflattr).".cache") > 86400)) + { + $askForFlattr = Tools::getFile("https://api.flattr.com/rest/v2/things/lookup/?url=".$urltoflattr); + $flattrCacheFile = fopen("cache/flattr/".base64_encode($urltoflattr).".cache", 'w+'); + fwrite($flattrCacheFile, $askForFlattr); + fclose($flattrCacheFile); + } + } +} diff --git a/tpl/view.twig b/tpl/view.twig index 2850877..7b15c7c 100644 --- a/tpl/view.twig +++ b/tpl/view.twig @@ -31,6 +31,7 @@ {% if constant('SHARE_TWITTER') == 1 %}
  • {% endif %} {% if constant('SHARE_MAIL') == 1 %}
  • {% endif %} {% if constant('SHARE_SHAARLI') == 1 %}
  • {% trans "shaarli" %}
  • {% endif %} +
  • {% if flattr.status == "flattrable" %} This thing is flattrable !{% elseif flattr.status == "flattred" %} This thing has already been flattred by {{ flattr.numflattrs }} users and can be flattred !{% else %}This article cannot be flattred{% endif %}
  • {% trans "this article appears wrong?" %} {% trans "create an issue" %} {% trans "or" %} {% trans "contact us by mail" %}

    From 693b3f86776ae236d69ac6ed085b5e46b9054642 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Sun, 8 Sep 2013 21:07:59 +0200 Subject: [PATCH 12/52] Implemented Add Button Added a button to add an URL when directly into Poche. If JS isn't enabled, nothing happens. --- inc/poche/Poche.class.php | 5 +++++ index.php | 3 +++ tpl/_menu.twig | 11 ++++++++++- tpl/css/style.css | 13 +++++++++++++ tpl/js/poche.js | 2 ++ tpl/layout.twig | 1 + 6 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 tpl/js/poche.js diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php index a8f6415..a7479ad 100644 --- a/inc/poche/Poche.class.php +++ b/inc/poche/Poche.class.php @@ -558,4 +558,9 @@ class Poche } return $version; } + + function convertURLToBase64($plainurl){ + $convertedURL = base64_encode($plainurl); + $this->action('add', new Url($convertedURL)) + } } \ No newline at end of file diff --git a/index.php b/index.php index 5f43b74..e81a924 100644 --- a/index.php +++ b/index.php @@ -44,6 +44,9 @@ elseif (isset($_GET['export'])) { $poche->export(); } +if (isset($_GET['plainurl'])){ + $poche->convertURLToBase64($_GET['plainurl']);} + # vars to send to templates $tpl_vars = array( 'referer' => $referer, diff --git a/tpl/_menu.twig b/tpl/_menu.twig index 699d6a0..8341c49 100644 --- a/tpl/_menu.twig +++ b/tpl/_menu.twig @@ -4,4 +4,13 @@
  • {% trans "archive" %}
  • {% trans "config" %}
  • {% trans "logout" %}
  • - \ No newline at end of file +
  • {% trans "addlink" %}
  • +
  • {% trans "logout" %}
  • + +
    +
    +
    + + +
    +
    \ No newline at end of file diff --git a/tpl/css/style.css b/tpl/css/style.css index 7633534..808e4b6 100644 --- a/tpl/css/style.css +++ b/tpl/css/style.css @@ -257,3 +257,16 @@ footer { .reading-time { font-size: 0.8em; } + +#inputform{ ++ display: none; ++ text-align:center; ++ max-width:300px; ++ margin-left:auto; ++ margin-right:auto; ++ margin-top:5px; ++ background-color: rgba(0, 0, 0, 0.9); ++ opacity:0.8; ++ color:white; ++ border-radius: 3px; ++} \ No newline at end of file diff --git a/tpl/js/poche.js b/tpl/js/poche.js new file mode 100644 index 0000000..c2e02f9 --- /dev/null +++ b/tpl/js/poche.js @@ -0,0 +1,2 @@ +function showinput(){ +$('#inputform').fadeIn('fast');} \ No newline at end of file diff --git a/tpl/layout.twig b/tpl/layout.twig index 07ca231..b248401 100644 --- a/tpl/layout.twig +++ b/tpl/layout.twig @@ -12,6 +12,7 @@ {% block title %}{% endblock %} - poche {% include '_head.twig' %} + {% include '_bookmarklet.twig' %} From d5ce28df67fcddfb957ce28424f3e5751f433695 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Sun, 8 Sep 2013 21:26:30 +0200 Subject: [PATCH 13/52] Fixed bugs due to migration --- inc/poche/Poche.class.php | 2 +- tpl/_menu.twig | 1 - tpl/css/style.css | 22 +++++++++++----------- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php index a7479ad..4fe938f 100644 --- a/inc/poche/Poche.class.php +++ b/inc/poche/Poche.class.php @@ -561,6 +561,6 @@ class Poche function convertURLToBase64($plainurl){ $convertedURL = base64_encode($plainurl); - $this->action('add', new Url($convertedURL)) + $this->action('add', new Url($convertedURL)); } } \ No newline at end of file diff --git a/tpl/_menu.twig b/tpl/_menu.twig index 8341c49..b39ce35 100644 --- a/tpl/_menu.twig +++ b/tpl/_menu.twig @@ -3,7 +3,6 @@
  • {% trans "favorites" %}
  • {% trans "archive" %}
  • {% trans "config" %}
  • -
  • {% trans "logout" %}
  • {% trans "addlink" %}
  • {% trans "logout" %}
  • diff --git a/tpl/css/style.css b/tpl/css/style.css index 808e4b6..7d2c143 100644 --- a/tpl/css/style.css +++ b/tpl/css/style.css @@ -259,14 +259,14 @@ footer { } #inputform{ -+ display: none; -+ text-align:center; -+ max-width:300px; -+ margin-left:auto; -+ margin-right:auto; -+ margin-top:5px; -+ background-color: rgba(0, 0, 0, 0.9); -+ opacity:0.8; -+ color:white; -+ border-radius: 3px; -+} \ No newline at end of file + display: none; + text-align:center; + max-width:300px; + margin-left:auto; + margin-right:auto; + margin-top:5px; + background-color: rgba(0, 0, 0, 0.9); + opacity:0.8; + color:white; + border-radius: 3px; +} \ No newline at end of file From af1d2792263d45c5ffea2e5485dd81bf59b7bded Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Sun, 8 Sep 2013 21:52:01 +0200 Subject: [PATCH 14/52] Fixed errors and changed source of flattrs Fixed errors, and the number displayed is no longer the number of peope who has flattred an article, but the number of flattrs he has got. --- inc/poche/Poche.class.php | 16 ++++++++-------- tpl/view.twig | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php index 5dab10d..8b24e5c 100644 --- a/inc/poche/Poche.class.php +++ b/inc/poche/Poche.class.php @@ -249,20 +249,21 @@ class Poche $content = $tidy->value; // flattr checking - $flattr = new FlattrItem(); - $flattr->checkitem($entry['url']); + $flattr = new FlattrItem(); + $flattr->checkitem($entry['url']); - $tpl_vars = array( + $tpl_vars = array( 'entry' => $entry, 'content' => $content, - 'flattr' => $flattr, - ); + 'flattr' => $flattr + ); + } } else { Tools::logm('error in view call : entry is null'); } break; - default: # home, favorites and archive views + default : // home, favorites and archive views $entries = $this->store->getEntriesByView($view, $this->user->getId()); $tpl_vars = array( 'entries' => '', @@ -577,7 +578,6 @@ class FlattrItem{ public function checkitem($urltoflattr){ $this->cacheflattrfile($urltoflattr); $flattrResponse = file_get_contents("cache/flattr/".base64_encode($urltoflattr).".cache"); - var_dump($flattrResponse); if($flattrResponse != FALSE){ $result = json_decode($flattrResponse); if (isset($result->message)){ @@ -588,7 +588,7 @@ class FlattrItem{ elseif ($result->link) { $this->status = "flattred"; $this->flattrItemURL = $result->link; - $this->numflattrs = $result->flattrs_user_count; + $this->numflattrs = $result->flattrs; } else{ $this->status = "not flattrable"; diff --git a/tpl/view.twig b/tpl/view.twig index 7b15c7c..c101db0 100644 --- a/tpl/view.twig +++ b/tpl/view.twig @@ -31,7 +31,7 @@ {% if constant('SHARE_TWITTER') == 1 %}
  • {% endif %} {% if constant('SHARE_MAIL') == 1 %}
  • {% endif %} {% if constant('SHARE_SHAARLI') == 1 %}
  • {% trans "shaarli" %}
  • {% endif %} -
  • {% if flattr.status == "flattrable" %} This thing is flattrable !{% elseif flattr.status == "flattred" %} This thing has already been flattred by {{ flattr.numflattrs }} users and can be flattred !{% else %}This article cannot be flattred{% endif %}
  • +
  • {% if flattr.status == "flattrable" %} This thing is flattrable !{% elseif flattr.status == "flattred" %} This thing has already been flattred {{ flattr.numflattrs }} times and can be flattred !{% else %}This article cannot be flattred{% endif %}
  • {% trans "this article appears wrong?" %} {% trans "create an issue" %} {% trans "or" %} {% trans "contact us by mail" %}

    From ce4a1dcc193d3124fc51c4942137621d3d806a19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Tue, 10 Sep 2013 14:41:58 +0200 Subject: [PATCH 15/52] changes to add url directly from poche --- inc/poche/Poche.class.php | 7 +------ index.php | 7 ++++--- tpl/_menu.twig | 12 ++---------- tpl/config.twig | 15 ++++++++------- tpl/css/style.css | 3 ++- tpl/layout.twig | 1 - 6 files changed, 17 insertions(+), 28 deletions(-) diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php index 4fe938f..5030c9a 100644 --- a/inc/poche/Poche.class.php +++ b/inc/poche/Poche.class.php @@ -182,7 +182,7 @@ class Poche } if (!$import) { - Tools::redirect(); + Tools::redirect('?view=home'); } break; case 'delete': @@ -558,9 +558,4 @@ class Poche } return $version; } - - function convertURLToBase64($plainurl){ - $convertedURL = base64_encode($plainurl); - $this->action('add', new Url($convertedURL)); - } } \ No newline at end of file diff --git a/index.php b/index.php index e81a924..7b775c4 100644 --- a/index.php +++ b/index.php @@ -43,9 +43,10 @@ elseif (isset($_GET['import'])) { elseif (isset($_GET['export'])) { $poche->export(); } - -if (isset($_GET['plainurl'])){ - $poche->convertURLToBase64($_GET['plainurl']);} +elseif (isset($_GET['plainurl']) && !empty($_GET['plainurl'])) { + $plain_url = new Url(base64_encode($_GET['plainurl'])); + $poche->action('add', $plain_url); +} # vars to send to templates $tpl_vars = array( diff --git a/tpl/_menu.twig b/tpl/_menu.twig index b39ce35..523d63c 100644 --- a/tpl/_menu.twig +++ b/tpl/_menu.twig @@ -3,13 +3,5 @@
  • {% trans "favorites" %}
  • {% trans "archive" %}
  • {% trans "config" %}
  • -
  • {% trans "addlink" %}
  • -
  • {% trans "logout" %}
  • - -
    -
    -
    - - -
    -
    \ No newline at end of file +
  • {% trans "logout" %}
  • + \ No newline at end of file diff --git a/tpl/config.twig b/tpl/config.twig index c838c31..e24e58d 100644 --- a/tpl/config.twig +++ b/tpl/config.twig @@ -2,13 +2,7 @@ {% block title %}{% trans "config" %}{% endblock %} {% block menu %} - +{% include '_menu.twig' %} {% endblock %} {% block content %}

    {% trans "Poching a link" %}

    @@ -17,6 +11,13 @@
  • firefox: download the extension
  • chrome: download the extension
  • android: download the application
  • +
  • +
    + + + +
    +
  • bookmarklet: drag & drop this link to your bookmarks bar {% trans "poche it!" %}
  • diff --git a/tpl/css/style.css b/tpl/css/style.css index 7d2c143..d644814 100644 --- a/tpl/css/style.css +++ b/tpl/css/style.css @@ -258,13 +258,14 @@ footer { font-size: 0.8em; } -#inputform{ +#inputform { display: none; text-align:center; max-width:300px; margin-left:auto; margin-right:auto; margin-top:5px; + padding-bottom: 5px; background-color: rgba(0, 0, 0, 0.9); opacity:0.8; color:white; diff --git a/tpl/layout.twig b/tpl/layout.twig index b248401..07ca231 100644 --- a/tpl/layout.twig +++ b/tpl/layout.twig @@ -12,7 +12,6 @@ {% block title %}{% endblock %} - poche {% include '_head.twig' %} - {% include '_bookmarklet.twig' %} From 3c33e40b614db7d14fec1d9b87963def4fac46a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Tue, 10 Sep 2013 15:43:01 +0200 Subject: [PATCH 16/52] change email address in header --- inc/poche/config.inc.php | 5 +---- inc/poche/define.inc.php | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/inc/poche/config.inc.php b/inc/poche/config.inc.php index a191729..2268808 100755 --- a/inc/poche/config.inc.php +++ b/inc/poche/config.inc.php @@ -3,7 +3,7 @@ * poche, a read it later open source system * * @category poche - * @author Nicolas Lœuillet + * @author Nicolas Lœuillet * @copyright 2013 * @license http://www.wtfpl.net/ see COPYING file */ @@ -15,9 +15,6 @@ if (!file_exists(__DIR__ . '/../../vendor/autoload.php')) { die('Twig does not seem installed. Have a look at the documentation.'); } -// if (file_exists(__DIR__ . '/../../inc/poche/myconfig.inc.php')) { - // require_once __DIR__ . '/../../inc/poche/myconfig.inc.php'; -// } require_once __DIR__ . '/../../inc/poche/User.class.php'; require_once __DIR__ . '/../../inc/poche/Url.class.php'; require_once __DIR__ . '/../../inc/3rdparty/class.messages.php'; diff --git a/inc/poche/define.inc.php b/inc/poche/define.inc.php index 3f66743..53c275d 100644 --- a/inc/poche/define.inc.php +++ b/inc/poche/define.inc.php @@ -3,7 +3,7 @@ * poche, a read it later open source system * * @category poche - * @author Nicolas Lœuillet + * @author Nicolas Lœuillet * @copyright 2013 * @license http://www.wtfpl.net/ see COPYING file */ From d11e2bcf48badc1da0e3914eec49d9ab1d781f4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Tue, 10 Sep 2013 15:46:05 +0200 Subject: [PATCH 17/52] change doc url --- inc/poche/config.inc.php | 2 +- tpl/config.twig | 8 ++++---- tpl/error.twig | 2 +- tpl/install.twig | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/inc/poche/config.inc.php b/inc/poche/config.inc.php index 2268808..7f1b8c9 100755 --- a/inc/poche/config.inc.php +++ b/inc/poche/config.inc.php @@ -12,7 +12,7 @@ require_once __DIR__ . '/../../inc/poche/define.inc.php'; # /!\ Be careful if you change the lines below /!\ if (!file_exists(__DIR__ . '/../../vendor/autoload.php')) { - die('Twig does not seem installed. Have a look at the documentation.'); + die('Twig does not seem installed. Have a look at the documentation.'); } require_once __DIR__ . '/../../inc/poche/User.class.php'; diff --git a/tpl/config.twig b/tpl/config.twig index e24e58d..7078887 100644 --- a/tpl/config.twig +++ b/tpl/config.twig @@ -6,7 +6,7 @@ {% endblock %} {% block content %}

    {% trans "Poching a link" %}

    -

    You can poche a link by several methods: (?)

    +

    You can poche a link by several methods: (?)

    • firefox: download the extension
    • chrome: download the extension
    • @@ -24,8 +24,8 @@

      {% trans "Updating poche" %}

      {% trans "Change your password" %}

      @@ -49,7 +49,7 @@

      {% trans "Import" %}

      {% trans "Please execute the import script locally, it can take a very long time." %}

      -

      {% trans "More infos in the official doc:" %} inthepoche.com

      +

      {% trans "More infos in the official doc:" %} inthepoche.com

      • {% trans "import from Pocket" %} (you must have a "{{ constant('IMPORT_POCKET_FILE')}}" file on your server)
      • {% trans "import from Readability" %} (you must have a "{{constant('IMPORT_READABILITY_FILE')}}" file on your server)
      • diff --git a/tpl/error.twig b/tpl/error.twig index 14c4992..c829d12 100644 --- a/tpl/error.twig +++ b/tpl/error.twig @@ -2,5 +2,5 @@ {% block title %}{% trans "plop" %}{% endblock %} {% block content %} {{ msg|raw }} -

        Don't forget the documentation.

        +

        Don't forget the documentation.

        {% endblock %} \ No newline at end of file diff --git a/tpl/install.twig b/tpl/install.twig index afb5b0f..6e85e5c 100644 --- a/tpl/install.twig +++ b/tpl/install.twig @@ -5,7 +5,7 @@

        {% trans "install your poche" %}

        - {% trans "poche is still not installed. Please fill the below form to install it. Don't hesitate to read the documentation on poche website." %} + {% trans "poche is still not installed. Please fill the below form to install it. Don't hesitate to read the documentation on poche website." %}

        From d143cae25a42830e795d43cdcfaecd25e459915c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Tue, 10 Sep 2013 15:47:09 +0200 Subject: [PATCH 18/52] remove comments in poche_compatibility_test --- poche_compatibility_test.php | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/poche_compatibility_test.php b/poche_compatibility_test.php index 7c85a58..be4fd6f 100644 --- a/poche_compatibility_test.php +++ b/poche_compatibility_test.php @@ -1,18 +1,4 @@ =')); From 964481d023676bee964141a1d14f638995ac8d30 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Tue, 10 Sep 2013 18:23:56 +0200 Subject: [PATCH 19/52] Fixed bugs, added a flattr button and an option There's a button and an option in define.inc.php to show the button or not. --- inc/poche/Poche.class.php | 2 +- inc/poche/define.inc.php | 3 ++- tpl/css/style-light.css | 4 ++++ tpl/img/light/flattr.png | Bin 0 -> 3521 bytes tpl/view.twig | 3 ++- 5 files changed, 9 insertions(+), 3 deletions(-) create mode 100644 tpl/img/light/flattr.png diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php index 8b24e5c..b0efe69 100644 --- a/inc/poche/Poche.class.php +++ b/inc/poche/Poche.class.php @@ -602,7 +602,7 @@ class FlattrItem{ private function cacheflattrfile($urltoflattr){ if (!is_dir('cache/flattr')){ - mkdir('./cache/flattr', 0700); + mkdir('./cache/flattr', 0777); } // if a cache flattr file for this url already exists and it's been less than one day than it have been updated, see in /cache if ((!file_exists("cache/flattr/".base64_encode($urltoflattr).".cache")) || (time() - filemtime("cache/flattr/".base64_encode($urltoflattr).".cache") > 86400)) diff --git a/inc/poche/define.inc.php b/inc/poche/define.inc.php index 3f66743..6277728 100644 --- a/inc/poche/define.inc.php +++ b/inc/poche/define.inc.php @@ -20,8 +20,9 @@ define ('DEBUG_POCHE', FALSE); define ('DOWNLOAD_PICTURES', FALSE); define ('SHARE_TWITTER', TRUE); define ('SHARE_MAIL', TRUE); -define ('SHARE_SHAARLI', FALSE); +define ('SHARE_SHAARLI', TRUE); define ('SHAARLI_URL', 'http://myshaarliurl.com'); +define ('FLATTR', TRUE); define ('ABS_PATH', 'assets/'); define ('TPL', __DIR__ . '/../../tpl'); define ('LOCALE', __DIR__ . '/../../locale'); diff --git a/tpl/css/style-light.css b/tpl/css/style-light.css index e2788a1..224ef18 100644 --- a/tpl/css/style-light.css +++ b/tpl/css/style-light.css @@ -48,6 +48,10 @@ a.shaarli span { background: url('../img/light/shaarli.png') no-repeat; } +a.flattr span { + background: url('../img/light/flattr.png'); +} + a.email span { background: url('../img/light/envelop.png') no-repeat; } diff --git a/tpl/img/light/flattr.png b/tpl/img/light/flattr.png new file mode 100644 index 0000000000000000000000000000000000000000..d9007c0c12cb48b0e4f77dc4e11e391a6cfefe9c GIT binary patch literal 3521 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 vHe0N{% endif %} {% if constant('SHARE_MAIL') == 1 %}

      • {% endif %} {% if constant('SHARE_SHAARLI') == 1 %}
      • {% trans "shaarli" %}
      • {% endif %} + {% if constant('FLATTR') == 1 %}{% if flattr.status == "flattrable" %}
      • flattr
      • {% elseif flattr.status == "flattred" %}
      • flattr{{ flattr.numflattrs }}
      • {% else %}{% endif %}{% endif %}
      @@ -31,7 +32,7 @@ {% if constant('SHARE_TWITTER') == 1 %}
    • {% endif %} {% if constant('SHARE_MAIL') == 1 %}
    • {% endif %} {% if constant('SHARE_SHAARLI') == 1 %}
    • {% trans "shaarli" %}
    • {% endif %} -
    • {% if flattr.status == "flattrable" %} This thing is flattrable !{% elseif flattr.status == "flattred" %} This thing has already been flattred {{ flattr.numflattrs }} times and can be flattred !{% else %}This article cannot be flattred{% endif %}
    • + {% if constant('FLATTR') == 1 %}{% if flattr.status == "flattrable" %}
    • flattr
    • {% elseif flattr.status == "flattred" %}
    • flattr{{ flattr.numflattrs }}
    • {% else %}{% endif %}{% endif %}

    {% trans "this article appears wrong?" %} {% trans "create an issue" %} {% trans "or" %} {% trans "contact us by mail" %}

    From f16b0747a45bfd91de03d22ecd7dbe70bf3d98a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Tue, 10 Sep 2013 18:28:17 +0200 Subject: [PATCH 20/52] remove site_config to manage them by a submodule --- inc/3rdparty/site_config/README.txt | 6 ------ inc/3rdparty/site_config/custom/bfmtv.com.txt | 6 ------ .../site_config/custom/inthepoche.com.txt | 7 ------- inc/3rdparty/site_config/custom/tldp.org.txt | 6 ------ inc/3rdparty/site_config/index.php | 3 --- .../site_config/standard/.wikipedia.org.txt | 19 ------------------- inc/3rdparty/site_config/standard/index.php | 3 --- inc/3rdparty/site_config/standard/version.php | 2 -- 8 files changed, 52 deletions(-) delete mode 100644 inc/3rdparty/site_config/README.txt delete mode 100644 inc/3rdparty/site_config/custom/bfmtv.com.txt delete mode 100644 inc/3rdparty/site_config/custom/inthepoche.com.txt delete mode 100644 inc/3rdparty/site_config/custom/tldp.org.txt delete mode 100644 inc/3rdparty/site_config/index.php delete mode 100644 inc/3rdparty/site_config/standard/.wikipedia.org.txt delete mode 100644 inc/3rdparty/site_config/standard/index.php delete mode 100644 inc/3rdparty/site_config/standard/version.php diff --git a/inc/3rdparty/site_config/README.txt b/inc/3rdparty/site_config/README.txt deleted file mode 100644 index 0aff456..0000000 --- a/inc/3rdparty/site_config/README.txt +++ /dev/null @@ -1,6 +0,0 @@ -Full-Text RSS Site Patterns ---------------------------- - -Site patterns allow you to specify what should be extracted from specific sites. - -Please see http://help.fivefilters.org/customer/portal/articles/223153-site-patterns for more information. \ No newline at end of file diff --git a/inc/3rdparty/site_config/custom/bfmtv.com.txt b/inc/3rdparty/site_config/custom/bfmtv.com.txt deleted file mode 100644 index 0ff28d5..0000000 --- a/inc/3rdparty/site_config/custom/bfmtv.com.txt +++ /dev/null @@ -1,6 +0,0 @@ -title: //title -body: //h2 | //span[@class='masque'] | //article[@class='corps_article_right'] -prune: no -tidy: no - -test_url: http://www.bfmtv.com/societe/cigarette-electronique-dangers-588622.html \ No newline at end of file diff --git a/inc/3rdparty/site_config/custom/inthepoche.com.txt b/inc/3rdparty/site_config/custom/inthepoche.com.txt deleted file mode 100644 index ede74b9..0000000 --- a/inc/3rdparty/site_config/custom/inthepoche.com.txt +++ /dev/null @@ -1,7 +0,0 @@ -title: //title -body: //div[@class='post-content'] - -prune: no -tidy: no - -test_url: http://www.inthepoche.com/?post/poche-hosting \ No newline at end of file diff --git a/inc/3rdparty/site_config/custom/tldp.org.txt b/inc/3rdparty/site_config/custom/tldp.org.txt deleted file mode 100644 index 7dd5cdb..0000000 --- a/inc/3rdparty/site_config/custom/tldp.org.txt +++ /dev/null @@ -1,6 +0,0 @@ -title: //title -body: //h2 | //p | //ul -prune: no -tidy: no - -test_url: http://www.tldp.org/HOWTO/Plug-and-Play-HOWTO-7.html \ No newline at end of file diff --git a/inc/3rdparty/site_config/index.php b/inc/3rdparty/site_config/index.php deleted file mode 100644 index a3d5f73..0000000 --- a/inc/3rdparty/site_config/index.php +++ /dev/null @@ -1,3 +0,0 @@ - \ No newline at end of file diff --git a/inc/3rdparty/site_config/standard/.wikipedia.org.txt b/inc/3rdparty/site_config/standard/.wikipedia.org.txt deleted file mode 100644 index 8b98ae4..0000000 --- a/inc/3rdparty/site_config/standard/.wikipedia.org.txt +++ /dev/null @@ -1,19 +0,0 @@ -title: //h1[@id='firstHeading'] -body: //div[@id = 'bodyContent'] -strip_id_or_class: editsection -#strip_id_or_class: toc -strip_id_or_class: vertical-navbox -strip: //table[@id='toc'] -strip: //div[@id='catlinks'] -strip: //div[@id='jump-to-nav'] -strip: //div[@class='thumbcaption']//div[@class='magnify'] -strip: //table[@class='navbox'] -strip: //table[contains(@class, 'infobox')] -strip: //div[@class='dablink'] -strip: //div[@id='contentSub'] -strip: //table[contains(@class, 'metadata')] -strip: //*[contains(@class, 'noprint')] -strip: //span[@title='pronunciation:'] -prune: no -tidy: no -test_url: http://en.wikipedia.org/wiki/Christopher_Lloyd \ No newline at end of file diff --git a/inc/3rdparty/site_config/standard/index.php b/inc/3rdparty/site_config/standard/index.php deleted file mode 100644 index a3d5f73..0000000 --- a/inc/3rdparty/site_config/standard/index.php +++ /dev/null @@ -1,3 +0,0 @@ - \ No newline at end of file diff --git a/inc/3rdparty/site_config/standard/version.php b/inc/3rdparty/site_config/standard/version.php deleted file mode 100644 index e61807e..0000000 --- a/inc/3rdparty/site_config/standard/version.php +++ /dev/null @@ -1,2 +0,0 @@ - Date: Tue, 10 Sep 2013 18:50:42 +0200 Subject: [PATCH 21/52] add site_config submodule --- .gitmodules | 3 +++ inc/3rdparty/site_config | 1 + 2 files changed, 4 insertions(+) create mode 100644 .gitmodules create mode 160000 inc/3rdparty/site_config diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..fcc2e52 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "inc/3rdparty/site_config"] + path = inc/3rdparty/site_config + url = git://github.com/inthepoche/site_config.git diff --git a/inc/3rdparty/site_config b/inc/3rdparty/site_config new file mode 160000 index 0000000..fe9f0d3 --- /dev/null +++ b/inc/3rdparty/site_config @@ -0,0 +1 @@ +Subproject commit fe9f0d3f60d44a8701f3ecab0c4077a4ed39bfe8 From 9074534c935d852bd66133b56a769ff69ac9f58f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Tue, 10 Sep 2013 22:19:34 +0200 Subject: [PATCH 22/52] fix flattr span --- tpl/view.twig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tpl/view.twig b/tpl/view.twig index ee16afa..e51b79b 100644 --- a/tpl/view.twig +++ b/tpl/view.twig @@ -11,7 +11,7 @@ {% if constant('SHARE_TWITTER') == 1 %}
  • {% endif %} {% if constant('SHARE_MAIL') == 1 %}
  • {% endif %} {% if constant('SHARE_SHAARLI') == 1 %}
  • {% trans "shaarli" %}
  • {% endif %} - {% if constant('FLATTR') == 1 %}{% if flattr.status == constant('FLATTRABLE') %}
  • flattr
  • {% elseif flattr.status == constant('FLATTRED') %}
  • flattr{{ flattr.numflattrs }}
  • {% endif %}{% endif %} + {% if constant('FLATTR') == 1 %}{% if flattr.status == constant('FLATTRABLE') %}
  • flattr
  • {% elseif flattr.status == constant('FLATTRED') %}
  • {% trans "flattr" %}{{ flattr.numflattrs }}
  • {% endif %}{% endif %}
    @@ -32,7 +32,7 @@ {% if constant('SHARE_TWITTER') == 1 %}
  • {% endif %} {% if constant('SHARE_MAIL') == 1 %}
  • {% endif %} {% if constant('SHARE_SHAARLI') == 1 %}
  • {% trans "shaarli" %}
  • {% endif %} - {% if constant('FLATTR') == 1 %}{% if flattr.status == constant('FLATTRABLE') %}
  • flattr
  • {% elseif flattr.status == constant('FLATTRED') %}
  • flattr{{ flattr.numflattrs }}
  • {% endif %}{% endif %} + {% if constant('FLATTR') == 1 %}{% if flattr.status == constant('FLATTRABLE') %}
  • flattr
  • {% elseif flattr.status == constant('FLATTRED') %}
  • {% trans "flattr" %}{{ flattr.numflattrs }}
  • {% endif %}{% endif %}

    {% trans "this article appears wrong?" %} {% trans "create an issue" %} {% trans "or" %} {% trans "contact us by mail" %}

    From 7eb64927cc8936f4b1ee7f76c3a8058044bb587c Mon Sep 17 00:00:00 2001 From: NumEricR Date: Tue, 10 Sep 2013 23:52:28 +0200 Subject: [PATCH 23/52] Move icons no-repeat into common style --- tpl/css/style-light.css | 34 ++++++++++++++-------------------- tpl/css/style.css | 17 +++++++++++++++++ 2 files changed, 31 insertions(+), 20 deletions(-) diff --git a/tpl/css/style-light.css b/tpl/css/style-light.css index 224ef18..a85961c 100644 --- a/tpl/css/style-light.css +++ b/tpl/css/style-light.css @@ -1,51 +1,45 @@ - a.back span { - background: url('../img/light/left.png') no-repeat; + background: url('../img/light/left.png'); } a.top span { - background: url('../img/light/top.png') no-repeat; + background: url('../img/light/top.png'); } - a.fav span { - background: url('../img/light/star-on.png') no-repeat; + background: url('../img/light/star-on.png'); } - a.fav span:hover { - background: url('../img/light/star-off.png') no-repeat; + background: url('../img/light/star-off.png'); } a.fav-off span { - background: url('../img/light/star-off.png') no-repeat; + background: url('../img/light/star-off.png'); } - a.fav-off span:hover { - background: url('../img/light/star-on.png') no-repeat; + background: url('../img/light/star-on.png'); } a.archive span { - background: url('../img/light/checkmark-on.png') no-repeat; + background: url('../img/light/checkmark-on.png'); } - a.archive span:hover { - background: url('../img/light/checkmark-off.png') no-repeat; + background: url('../img/light/checkmark-off.png'); } a.archive-off span { - background: url('../img/light/checkmark-off.png') no-repeat; + background: url('../img/light/checkmark-off.png'); } - a.archive-off span:hover { - background: url('../img/light/checkmark-on.png') no-repeat; + background: url('../img/light/checkmark-on.png'); } a.twitter span { - background: url('../img/light/twitter.png') no-repeat; + background: url('../img/light/twitter.png'); } a.shaarli span { - background: url('../img/light/shaarli.png') no-repeat; + background: url('../img/light/shaarli.png'); } a.flattr span { @@ -53,9 +47,9 @@ a.flattr span { } a.email span { - background: url('../img/light/envelop.png') no-repeat; + background: url('../img/light/envelop.png'); } a.delete span { - background: url('../img/light/remove.png') no-repeat; + background: url('../img/light/remove.png'); } \ No newline at end of file diff --git a/tpl/css/style.css b/tpl/css/style.css index c056429..bb99ca4 100644 --- a/tpl/css/style.css +++ b/tpl/css/style.css @@ -281,3 +281,20 @@ footer { color:white; border-radius: 3px; } + +a.back span, +a.top span, +a.fav span, +a.fav span:hover, +a.fav-off span, +a.fav-off span:hover, +a.archive span, +a.archive span:hover, +a.archive-off span, +a.archive-off span:hover, +a.twitter span, +a.flattr span, +a.email span, +a.delete span { + background-repeat: no-repeat; +} From a0fd7c5b4467adbc85244909663b3fd6bc160b14 Mon Sep 17 00:00:00 2001 From: NumEricR Date: Tue, 10 Sep 2013 23:54:40 +0200 Subject: [PATCH 24/52] Format CSS code --- tpl/css/style.css | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tpl/css/style.css b/tpl/css/style.css index bb99ca4..d60b443 100644 --- a/tpl/css/style.css +++ b/tpl/css/style.css @@ -270,15 +270,15 @@ footer { #inputform { display: none; - text-align:center; - max-width:300px; - margin-left:auto; - margin-right:auto; - margin-top:5px; + text-align: center; + max-width: 300px; + margin-left: auto; + margin-right: auto; + margin-top: 5px; padding-bottom: 5px; background-color: rgba(0, 0, 0, 0.9); - opacity:0.8; - color:white; + opacity: 0.8; + color: #fff; border-radius: 3px; } From 8ca368e7e382446f2333326fce8fb5f0e8955bc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Wed, 11 Sep 2013 06:40:29 +0200 Subject: [PATCH 25/52] fix flattr span --- tpl/view.twig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tpl/view.twig b/tpl/view.twig index e51b79b..2b6d91d 100644 --- a/tpl/view.twig +++ b/tpl/view.twig @@ -11,7 +11,7 @@ {% if constant('SHARE_TWITTER') == 1 %}
  • {% endif %} {% if constant('SHARE_MAIL') == 1 %}
  • {% endif %} {% if constant('SHARE_SHAARLI') == 1 %}
  • {% trans "shaarli" %}
  • {% endif %} - {% if constant('FLATTR') == 1 %}{% if flattr.status == constant('FLATTRABLE') %}
  • flattr
  • {% elseif flattr.status == constant('FLATTRED') %}
  • {% trans "flattr" %}{{ flattr.numflattrs }}
  • {% endif %}{% endif %} + {% if constant('FLATTR') == 1 %}{% if flattr.status == constant('FLATTRABLE') %}
  • {% trans "flattr" %}
  • {% elseif flattr.status == constant('FLATTRED') %}
  • {% trans "flattr" %}{{ flattr.numflattrs }}
  • {% endif %}{% endif %}
    @@ -32,7 +32,7 @@ {% if constant('SHARE_TWITTER') == 1 %}
  • {% endif %} {% if constant('SHARE_MAIL') == 1 %}
  • {% endif %} {% if constant('SHARE_SHAARLI') == 1 %}
  • {% trans "shaarli" %}
  • {% endif %} - {% if constant('FLATTR') == 1 %}{% if flattr.status == constant('FLATTRABLE') %}
  • flattr
  • {% elseif flattr.status == constant('FLATTRED') %}
  • {% trans "flattr" %}{{ flattr.numflattrs }}
  • {% endif %}{% endif %} + {% if constant('FLATTR') == 1 %}{% if flattr.status == constant('FLATTRABLE') %}
  • {% trans "flattr" %}
  • {% elseif flattr.status == constant('FLATTRED') %}
  • {% trans "flattr" %}{{ flattr.numflattrs }}
  • {% endif %}{% endif %}

    {% trans "this article appears wrong?" %} {% trans "create an issue" %} {% trans "or" %} {% trans "contact us by mail" %}

    From 660b998eb7c9d1c7ba3ae5f61040084d7df6b6df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Thu, 12 Sep 2013 12:28:22 +0200 Subject: [PATCH 26/52] add english language --- locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.mo | Bin 0 -> 315 bytes locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.po | 224 ++++++++++++++++++++ 2 files changed, 224 insertions(+) create mode 100644 locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.mo create mode 100644 locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.po diff --git a/locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.mo b/locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.mo new file mode 100644 index 0000000000000000000000000000000000000000..ce18cd52d076535d2e31a3e48e6b77d258f7c3be GIT binary patch literal 315 zcmYL@&q@O^5Qkgzl%r=4Ie0YDg2KA~L8w&Sf6Y8nxU zM|A~+|4!ZGyUiPGRY4-vMDWQ0g;>g4Yl4F$tDmoxbq-0M`9WzHa8Q?B57ucD`U_Ek z?^e*EY7lz9v6wGrn;H{+D5k*^dcN|xF)9 e39a>ADT`-I;z`}0$2ioi1GbjrL?7!TG5P~T`C6j@ literal 0 HcmV?d00001 diff --git a/locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.po b/locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.po new file mode 100644 index 0000000..92f6939 --- /dev/null +++ b/locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.po @@ -0,0 +1,224 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: Nicolas Lœuillet \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.5.4\n" + +msgid "config" +msgstr "" + +msgid "Poching a link" +msgstr "" + +msgid "read the documentation" +msgstr "" + +msgid "by filling this field" +msgstr "" + +msgid "poche it!" +msgstr "" + +msgid "Updating poche" +msgstr "" + +msgid "your version" +msgstr "" + +msgid "latest stable version" +msgstr "" + +msgid "a more recent stable version is available." +msgstr "" + +msgid "you are up to date." +msgstr "" + +msgid "latest dev version" +msgstr "" + +msgid "a more recent development version is available." +msgstr "" + +msgid "Change your password" +msgstr "" + +msgid "New password:" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Repeat your new password:" +msgstr "" + +msgid "Update" +msgstr "" + +msgid "Import" +msgstr "" + +msgid "Please execute the import script locally, it can take a very long time." +msgstr "" + +msgid "More infos in the official doc:" +msgstr "" + +msgid "import from Pocket" +msgstr "" + +msgid "import from Readability" +msgstr "" + +msgid "import from Instapaper" +msgstr "" + +msgid "Export your poche datas" +msgstr "" + +msgid "Click here" +msgstr "" + +msgid "to export your poche datas." +msgstr "" + +msgid "back to home" +msgstr "" + +msgid "installation" +msgstr "" + +msgid "install your poche" +msgstr "" + +msgid "" +"poche is still not installed. Please fill the below form to install it. " +"Don't hesitate to read the documentation " +"on poche website." +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Repeat your password" +msgstr "" + +msgid "Install" +msgstr "" + +msgid "back to top" +msgstr "" + +msgid "favoris" +msgstr "" + +msgid "archive" +msgstr "" + +msgid "unread" +msgstr "" + +msgid "by date asc" +msgstr "" + +msgid "by date" +msgstr "" + +msgid "by date desc" +msgstr "" + +msgid "by title asc" +msgstr "" + +msgid "by title" +msgstr "" + +msgid "by title desc" +msgstr "" + +msgid "No link available here!" +msgstr "" + +msgid "toggle mark as read" +msgstr "" + +msgid "toggle favorite" +msgstr "" + +msgid "delete" +msgstr "" + +msgid "original" +msgstr "" + +msgid "results" +msgstr "" + +msgid "tweet" +msgstr "" + +msgid "email" +msgstr "" + +msgid "shaarli" +msgstr "" + +msgid "flattr" +msgstr "" + +msgid "this article appears wrong?" +msgstr "" + +msgid "create an issue" +msgstr "" + +msgid "or" +msgstr "" + +msgid "contact us by mail" +msgstr "" + +msgid "plop" +msgstr "" + +msgid "home" +msgstr "" + +msgid "favorites" +msgstr "" + +msgid "logout" +msgstr "" + +msgid "powered by" +msgstr "" + +msgid "debug mode is on so cache is off." +msgstr "" + +msgid "your poche version:" +msgstr "" + +msgid "storage:" +msgstr "" + +msgid "login to your poche" +msgstr "" + +msgid "you are in demo mode, some features may be disabled." +msgstr "" + +msgid "Stay signed in" +msgstr "" + +msgid "(Do not check on public computers)" +msgstr "" + +msgid "Sign in" +msgstr "" From b9e0514783e83588a388670789291dce2cb482f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Thu, 12 Sep 2013 13:24:09 +0200 Subject: [PATCH 27/52] update locale files --- locale/de_DE.utf8/LC_MESSAGES/de_DE.utf8.mo | Bin 5799 -> 4216 bytes locale/de_DE.utf8/LC_MESSAGES/de_DE.utf8.po | 337 +++++------------ locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.mo | Bin 315 -> 4487 bytes locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.po | 140 +++---- locale/es_ES.utf8/LC_MESSAGES/es_ES.utf8.mo | Bin 5728 -> 4198 bytes locale/es_ES.utf8/LC_MESSAGES/es_ES.utf8.po | 386 ++++++-------------- locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.mo | Bin 5706 -> 4813 bytes locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.po | 354 ++++++------------ 8 files changed, 385 insertions(+), 832 deletions(-) diff --git a/locale/de_DE.utf8/LC_MESSAGES/de_DE.utf8.mo b/locale/de_DE.utf8/LC_MESSAGES/de_DE.utf8.mo index 3afc2b321e56b2353549e3efb37d7d5f3aa6cb07..54626a5542b65e265b72a2fb0429e49844ce2636 100644 GIT binary patch delta 1693 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 NkAk{#5?7f{{RajnXFC7@ diff --git a/locale/de_DE.utf8/LC_MESSAGES/de_DE.utf8.po b/locale/de_DE.utf8/LC_MESSAGES/de_DE.utf8.po index fafe516..2de43b4 100644 --- a/locale/de_DE.utf8/LC_MESSAGES/de_DE.utf8.po +++ b/locale/de_DE.utf8/LC_MESSAGES/de_DE.utf8.po @@ -1,380 +1,229 @@ -# -# Translators: -# HLFH , 2013 msgid "" msgstr "" -"Project-Id-Version: poche\n" -"POT-Creation-Date: 2013-08-06 08:35+0100\n" -"PO-Revision-Date: 2013-08-23 17:42+0100\n" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" "Last-Translator: Nicolas Lœuillet \n" -"Language-Team: German (http://www.transifex.com/projects/p/poche/language/" -"de/)\n" +"Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: de\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 1.5.4\n" -"X-Poedit-Basepath: /\n" -"X-Poedit-KeywordsList: _;gettext;gettext_noop\n" -"X-Poedit-SourceCharset: UTF-8\n" -"X-Poedit-SearchPath-0: /var/www/poche-i18n\n" -#: /var/www/poche-i18n/index.php:43 -msgid "poche, a read it later open source system" -msgstr "Poche, eine Opensourcelösung, um später zu lesen" - -#: /var/www/poche-i18n/inc/poche/Poche.class.php:101 -msgid "the link has been added successfully" -msgstr "der Link wurde erfolgreich hinzugefügt" - -#: /var/www/poche-i18n/inc/poche/Poche.class.php:104 -msgid "error during insertion : the link wasn't added" -msgstr "Fehler beim Einfügen: der Link wurde nicht hinzugefügt" - -#: /var/www/poche-i18n/inc/poche/Poche.class.php:109 -msgid "error during fetching content : the link wasn't added" -msgstr "Fehler beim Abrufen der Inhalte: der Link wurde nicht hinzugefügt" - -#: /var/www/poche-i18n/inc/poche/Poche.class.php:119 -msgid "the link has been deleted successfully" -msgstr "der Link wurde erfolgreich gelöscht" - -#: /var/www/poche-i18n/inc/poche/Poche.class.php:123 -msgid "the link wasn't deleted" -msgstr "der Link wurde nicht gelöscht" - -#: /var/www/poche-i18n/inc/poche/Tools.class.php:18 -msgid "Oops, it seems you don't have PHP 5." -msgstr "Hoppla, scheint es, dass PHP 5 nicht installiert ist." - -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:32 -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:70 -#: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:50 msgid "config" msgstr "Konfig" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:46 -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:31 -#: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:26 -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:34 -msgid "home" -msgstr "Hause" - -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:54 -#: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:34 -msgid "favorites" -msgstr "Favoriten" - -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:62 -#: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:42 -msgid "archive" -msgstr "Archive" - -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:74 -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:76 -#: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:54 -#: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:56 -msgid "logout" -msgstr "Trennung" - -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:87 -msgid "Bookmarklet" -msgstr "Bookmarklet" - -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:91 -msgid "" -"Thanks to the bookmarklet, you will be able to easily add a link to your " -"poche." +msgid "Poching a link" msgstr "" -"Mit dem Bookmarklet, können Sie ganz einfach einen Link in Poche hinzufügen." -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:93 -msgid "Have a look to this documentation:" -msgstr "Werfen Sie einen Blick in die Dokumentation:" - -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:97 -msgid "Drag & drop this link to your bookmarks bar and have fun with poche." +msgid "read the documentation" +msgstr "" + +msgid "by filling this field" msgstr "" -"Ziehen / Ablegen Sie diesen Link in die Lesezeichenleiste Ihres Browsers und " -"genießen Sie mit Poche." -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:103 msgid "poche it!" msgstr "Pochert es!" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:108 msgid "Updating poche" -msgstr "Poche aktualisieren " +msgstr "Poche aktualisieren" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:113 msgid "your version" msgstr "Ihre Version" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:119 msgid "latest stable version" msgstr "letzte stabile Version" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:125 msgid "a more recent stable version is available." msgstr "eine neuere stabile Version ist verfügbar." -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:128 -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:142 msgid "you are up to date." msgstr "Sie sind auf den neuesten Stand." -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:133 msgid "latest dev version" msgstr "letzte Entwicklungsversion" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:139 msgid "a more recent development version is available." msgstr "eine neuere Entwicklungsversion ist verfügbar." -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:150 msgid "Change your password" msgstr "Ihr Passwort ändern" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:157 msgid "New password:" msgstr "Neues Passwort:" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:161 -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:171 -#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:60 -#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:68 msgid "Password" msgstr "Passwort" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:167 msgid "Repeat your new password:" msgstr "neues Passwort wiederholen:" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:177 msgid "Update" msgstr "Aktualisieren" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:193 msgid "Import" msgstr "Import" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:197 msgid "Please execute the import script locally, it can take a very long time." msgstr "" "Wir danken Ihnen, den Import in lokal zu ausführen, kann es einige Zeit " "dauern." -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:201 msgid "More infos in the official doc:" msgstr "Mehr Informationen auf der offiziellen Dokumentation:" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:206 msgid "import from Pocket" -msgstr "Der Import aus Pocket ist abgeschlossen." +msgstr "import aus Pocket" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:210 msgid "import from Readability" -msgstr "Der Import aus Readability ist abgeschlossen." +msgstr "import aus Readability" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:214 msgid "import from Instapaper" -msgstr "Import aus Instapaper" +msgstr "import aus Instapaper" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:220 msgid "Export your poche datas" msgstr "Exportieren Sie Ihre Daten aus Poche." -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:224 msgid "Click here" msgstr "klicken Sie hier" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:226 msgid "to export your poche datas." msgstr "um Ihre Daten aus Poche zu exportieren." -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:46 -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:139 -#: /var/www/poche-i18n/cache/30/97/b548692380c89d047a16cec7af79.php:22 msgid "back to home" msgstr "züruck zur Hauptseite" -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:50 -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:147 -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:119 -msgid "toggle mark as read" -msgstr "als gelesen markieren" - -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:60 -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:157 -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:129 -msgid "toggle favorite" -msgstr "Favorit" - -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:70 -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:167 -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:139 -msgid "delete" -msgstr "löschen" - -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:82 -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:179 -msgid "tweet" -msgstr "twittern" - -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:93 -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:190 -msgid "email" -msgstr "senden per E-Mail" - -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:109 -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:125 -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:153 -msgid "original" -msgstr "Original" - -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:143 -msgid "back to top" -msgstr "zurück nach oben" - -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:198 -msgid "this article appears wrong?" -msgstr "dieser Artikel erscheint falsch?" - -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:200 -msgid "create an issue" -msgstr "ein Ticket erstellen" - -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:202 -msgid "or" -msgstr "oder" - -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:206 -msgid "contact us by mail" -msgstr "kontaktieren Sie uns per E-Mail" - -#: /var/www/poche-i18n/cache/88/8a/ee3b7080c13204391c14947a0c2c.php:22 -msgid "powered by" -msgstr "bereitgestellt von" - -#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:31 msgid "installation" msgstr "Installierung" -#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:42 msgid "install your poche" msgstr "installieren Sie Poche" -#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:47 msgid "" "poche is still not installed. Please fill the below form to install it. " -"Don't hesitate to read " -"the documentation on poche website." +"Don't hesitate to read the documentation " +"on poche website." msgstr "" "Poche ist noch nicht installiert. Wir danken Ihnen, die Felder unten zu " -"befüllen, um es zu machen. Zögern sie nicht, die Dokumentation auf der Website von Poche zu lesen." +"befüllen, um es zu machen. Zögern sie nicht, die Dokumentation auf der Website von Poche zu lesen." -#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:53 -#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:55 msgid "Login" msgstr "Benutzername" -#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:67 msgid "Repeat your password" msgstr "Wiederholen Sie Ihr Passwort" -#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:74 msgid "Install" msgstr "Installieren" -#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:31 -#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:42 -msgid "login to your poche" -msgstr "Verbinden zu Poche" +msgid "back to top" +msgstr "zurück nach oben" -#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:48 -msgid "you are in demo mode, some features may be disabled." -msgstr "Sie sind im Demomodus, können einige Funktionen deaktiviert werden." +msgid "favoris" +msgstr "" -#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:80 -msgid "Stay signed in" -msgstr "bleiben Sie verbunden" +msgid "archive" +msgstr "Archive" -#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:86 -msgid "(Do not check on public computers)" -msgstr "(nicht auf einem öffentlichen Computer überprüfen)" +msgid "unread" +msgstr "" -#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:93 -msgid "Sign in" -msgstr "Einloggen" - -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:55 -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:57 msgid "by date asc" msgstr "nach Datum asc" -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:59 msgid "by date" msgstr "nach Datum" -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:65 -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:67 msgid "by date desc" msgstr "nach Datum desc" -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:75 -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:77 msgid "by title asc" msgstr "nach Titel asc" -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:79 msgid "by title" msgstr "nach Titel" -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:85 -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:87 msgid "by title desc" msgstr "nach Titel desc" -#~ msgid "Please choose between Pocket & Readabilty :" -#~ msgstr "Merci de choisir entre Pocket & Readability :" +msgid "No link available here!" +msgstr "" -#~ msgid "Bye bye Pocket, let's go !" -#~ msgstr "Bye bye Pocket, en route !" +msgid "toggle mark as read" +msgstr "als gelesen markieren" -#~ msgid "Bye bye Readability, let's go !" -#~ msgstr "Bye bye Readability, en route !" +msgid "toggle favorite" +msgstr "Favorit" -#~ msgid "Welcome to poche !" -#~ msgstr "Bienvenue dans poche !" +msgid "delete" +msgstr "löschen" -#~ msgid "Error with the import." -#~ msgstr "Erreur durant l'import." +msgid "original" +msgstr "Original" -#~ msgid "Wrong token." -#~ msgstr "Mauvais jeton." +msgid "results" +msgstr "" -#~ msgid "Login failed !" -#~ msgstr "Connexion échouée." +msgid "tweet" +msgstr "twittern" -#~ msgid "your password has been updated" -#~ msgstr "Votre mot de passe a été mis à jour. " +msgid "email" +msgstr "senden per E-Mail" -#~ msgid "in demo mode, you can't update password" -#~ msgstr "En mode démo, le mot de passe ne peut être modifié." +msgid "shaarli" +msgstr "shaarli" -#~ msgid "" -#~ "your password can't be empty and you have to repeat it in the second field" -#~ msgstr "" -#~ "Votre mot de passe ne peut être vide et vous devez le répéter dans le " -#~ "second champ." +msgid "flattr" +msgstr "flattr" -#~ msgid "error during url preparation : the link wasn't added" -#~ msgstr "erreur durant l'insertion : le lien n'a pas été ajouté" +msgid "this article appears wrong?" +msgstr "dieser Artikel erscheint falsch?" -#~ msgid "error during url preparation : the link is not valid" -#~ msgstr "erreur durant la préparation de l'URL : le lien n'est pas valide" +msgid "create an issue" +msgstr "ein Ticket erstellen" -#~ msgid "TEST" -#~ msgstr "NICOLAS" +msgid "or" +msgstr "oder" + +msgid "contact us by mail" +msgstr "kontaktieren Sie uns per E-Mail" + +msgid "plop" +msgstr "plop" + +msgid "home" +msgstr "Hause" + +msgid "favorites" +msgstr "Favoriten" + +msgid "logout" +msgstr "Trennung" + +msgid "powered by" +msgstr "bereitgestellt von" + +msgid "debug mode is on so cache is off." +msgstr "" + +msgid "your poche version:" +msgstr "" + +msgid "storage:" +msgstr "" + +msgid "login to your poche" +msgstr "Verbinden zu Poche" + +msgid "you are in demo mode, some features may be disabled." +msgstr "Sie sind im Demomodus, können einige Funktionen deaktiviert werden." + +msgid "Stay signed in" +msgstr "bleiben Sie verbunden" + +msgid "(Do not check on public computers)" +msgstr "(nicht auf einem öffentlichen Computer überprüfen)" + +msgid "Sign in" +msgstr "Einloggen" 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 ce18cd52d076535d2e31a3e48e6b77d258f7c3be..f387889df55a870bb94e0d9d2769ce4109cd0130 100644 GIT binary patch literal 4487 zcmeH|&yOWl702%g3bvpFqaz~79Y7k!d9N8~fT3rm2kiMlhaRRgG{hL9xv%QJ*JanM zTdBIQdme-ZzY-QKh`(YmE{us$gg`O`7lyz>;>HCgu1Fx!h0$oj!i5V>^z*G(Z+;N; zFX)>(^{M;woO{l>x8A?{((fC}3FJCt^<&03_}rzuDBC|_%#H9W_*u9g&cG%3dAJIB zOwQ{vSi_IQ$KVa{33w&^3Do#k;N|eQP&(g%pN7{k`3rCsO3%HJ$2`nS{ojNPHN&<|LKL!8Mw*RNCUxsq^?|`3!7RsJG+x8<+_AW!|`v$xkI`|nF z;V$@e+y67D{k{xQVa~!&!e6)jZ$r8AcW@{CJ=A)Cf%3<{+WHPA$*x9SLfQQ~ z)cSA27vXQ9^oQ+}IE|t7J`H8xk6Qi|YW^>w^5(Uc??9F?e}~fhZ>arkziOg?Csf{C z57mFVWgp7^MmEY0=(QzB++fghvtWRe5F+l_SVO zM826v?nG1$Acqj$!K8rMgB(UaTy!>+@7E%?A{|6|e>-v;qN4a;(tH{76{tAfjNF5$ zd>Oe3xfj`sTvTp78f+1wP1by}ZbMnRs@V1i7P6^}t~N_UwVS1)jxNv5au{TVITgwYE;Gtc*4f z3ChQNY{niP8r{0L&TjZ>OkXjuF&p}>S;6j%nrrl#)4ues-BNLpMHlv*bH;<&pkO=Z z!RW@ers7joA1ZN#pFoS3a*lC!C?8Zl@kO+$-|%@Thx*2-IwJ&GeSX8;4~@r{a>M@^ zTCs}_Z+ec{#9-IL@O&kP()7lP4Q&%zS10GbQ$MNnvmBq}m^JL^XFg9gBxW&h<~1MF ziIYk*GYLgM8yFB>678tA%o-9llT`Q;r)y*N$eYynMgyFXk_fd@t`3Aod82B--(^JZ zvC=ow`)(stS#2hap0C`+Sea&bZM6GU7}_S&N>}>IT-Z!(*L}RG>9lvL>t%Ts$0nQP z=LPvYZE}%l7?k7Ge*tJJPF&jA)br$7gdJj3fR{8$n*|iwU`MJ5Q z;E*-yx}51b4%zGi0ZE&Msg0C+%}$%s-<;n~-(x|4XwEHkr>4eTd~I^xQvz!~dIg&6 zQ66hkuQ^xcnWQXbR^ zY1+8%8h5mZZC>N5b4jpLg>U;Lc9zo4!;^zMZ)a9ct#%eMM48h$%0f+B=d|C*bhM{U z%dU={)yfq$*%hjJ`#_e2oDD6%{oN5!_t73ICQaQu_({_}1Dyv&abaeeD|v)xJFDIe z(Q$I=@I$M|I|t5>lQn%`b&eHD zNVx#!?SWnvXTIJ!;R|0)%v=dRY2m1C{W~U?#n!)L>)$c? KPyD}s$A1BhWp)<; delta 66 xcmZoy-pyojPl#nI0}wC*u?!Ha05LNV>i{tbSO762P|^}ag9M;pvlllrBLL@L1sMPU 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 92f6939..8e56560 100644 --- a/locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.po +++ b/locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.po @@ -11,214 +11,218 @@ msgstr "" "X-Generator: Poedit 1.5.4\n" msgid "config" -msgstr "" +msgstr "config" msgid "Poching a link" -msgstr "" +msgstr "Poching a link" msgid "read the documentation" -msgstr "" +msgstr "read the documentation" msgid "by filling this field" -msgstr "" +msgstr "by filling this field" msgid "poche it!" -msgstr "" +msgstr "poche it!" msgid "Updating poche" -msgstr "" +msgstr "Updating poche" msgid "your version" -msgstr "" +msgstr "your version" msgid "latest stable version" -msgstr "" +msgstr "latest stable version" msgid "a more recent stable version is available." -msgstr "" +msgstr "a more recent stable version is available." msgid "you are up to date." -msgstr "" +msgstr "you are up to date." msgid "latest dev version" -msgstr "" +msgstr "latest dev version" msgid "a more recent development version is available." -msgstr "" +msgstr "a more recent development version is available." msgid "Change your password" -msgstr "" +msgstr "Change your password" msgid "New password:" -msgstr "" +msgstr "New password:" msgid "Password" -msgstr "" +msgstr "Password" msgid "Repeat your new password:" -msgstr "" +msgstr "Repeat your new password:" msgid "Update" -msgstr "" +msgstr "Update" msgid "Import" -msgstr "" +msgstr "Import" msgid "Please execute the import script locally, it can take a very long time." msgstr "" +"Please execute the import script locally, it can take a very long time." msgid "More infos in the official doc:" -msgstr "" +msgstr "More infos in the official doc:" msgid "import from Pocket" -msgstr "" +msgstr "import from Pocket" msgid "import from Readability" -msgstr "" +msgstr "import from Readability" msgid "import from Instapaper" -msgstr "" +msgstr "import from Instapaper" msgid "Export your poche datas" -msgstr "" +msgstr "Export your poche datas" msgid "Click here" -msgstr "" +msgstr "Click here" msgid "to export your poche datas." -msgstr "" +msgstr "to export your poche datas." msgid "back to home" -msgstr "" +msgstr "back to home" msgid "installation" -msgstr "" +msgstr "installation" msgid "install your poche" -msgstr "" +msgstr "install your poche" msgid "" "poche is still not installed. Please fill the below form to install it. " "Don't hesitate to read the documentation " "on poche website." msgstr "" +"poche is still not installed. Please fill the below form to install it. " +"Don't hesitate to read the documentation " +"on poche website." msgid "Login" -msgstr "" +msgstr "Login" msgid "Repeat your password" -msgstr "" +msgstr "Repeat your password" msgid "Install" -msgstr "" +msgstr "Install" msgid "back to top" -msgstr "" +msgstr "back to top" msgid "favoris" -msgstr "" +msgstr "favoris" msgid "archive" -msgstr "" +msgstr "archive" msgid "unread" -msgstr "" +msgstr "unread" msgid "by date asc" -msgstr "" +msgstr "by date asc" msgid "by date" -msgstr "" +msgstr "by date" msgid "by date desc" -msgstr "" +msgstr "by date desc" msgid "by title asc" -msgstr "" +msgstr "by title asc" msgid "by title" -msgstr "" +msgstr "by title" msgid "by title desc" -msgstr "" +msgstr "by title desc" msgid "No link available here!" -msgstr "" +msgstr "No link available here!" msgid "toggle mark as read" -msgstr "" +msgstr "toggle mark as read" msgid "toggle favorite" -msgstr "" +msgstr "toggle favorite" msgid "delete" -msgstr "" +msgstr "delete" msgid "original" -msgstr "" +msgstr "original" msgid "results" -msgstr "" +msgstr "results" msgid "tweet" -msgstr "" +msgstr "tweet" msgid "email" -msgstr "" +msgstr "email" msgid "shaarli" -msgstr "" +msgstr "shaarli" msgid "flattr" -msgstr "" +msgstr "flattr" msgid "this article appears wrong?" -msgstr "" +msgstr "this article appears wrong?" msgid "create an issue" -msgstr "" +msgstr "create an issue" msgid "or" -msgstr "" +msgstr "or" msgid "contact us by mail" -msgstr "" +msgstr "contact us by mail" msgid "plop" -msgstr "" +msgstr "plop" msgid "home" -msgstr "" +msgstr "home" msgid "favorites" -msgstr "" +msgstr "favorites" msgid "logout" -msgstr "" +msgstr "logout" msgid "powered by" -msgstr "" +msgstr "powered by" msgid "debug mode is on so cache is off." -msgstr "" +msgstr "debug mode is on so cache is off." msgid "your poche version:" -msgstr "" +msgstr "your poche version:" msgid "storage:" -msgstr "" +msgstr "storage:" msgid "login to your poche" -msgstr "" +msgstr "login to your poche" msgid "you are in demo mode, some features may be disabled." -msgstr "" +msgstr "you are in demo mode, some features may be disabled." msgid "Stay signed in" -msgstr "" +msgstr "Stay signed in" msgid "(Do not check on public computers)" -msgstr "" +msgstr "(Do not check on public computers)" msgid "Sign in" -msgstr "" +msgstr "Sign in" diff --git a/locale/es_ES.utf8/LC_MESSAGES/es_ES.utf8.mo b/locale/es_ES.utf8/LC_MESSAGES/es_ES.utf8.mo index aa3d4182983b823b24687f0737a999b8964fcb8b..0122cebcd3a0c67a4192bd5122caf02429ee2779 100644 GIT binary patch delta 1791 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 V@uDr8N+KMmPBM7-v&Yq@{sT$bTgCtY diff --git a/locale/es_ES.utf8/LC_MESSAGES/es_ES.utf8.po b/locale/es_ES.utf8/LC_MESSAGES/es_ES.utf8.po index 236297d..225cc52 100644 --- a/locale/es_ES.utf8/LC_MESSAGES/es_ES.utf8.po +++ b/locale/es_ES.utf8/LC_MESSAGES/es_ES.utf8.po @@ -1,382 +1,230 @@ -# -# Translators: -# Nitche , 2013 msgid "" msgstr "" -"Project-Id-Version: poche\n" -"POT-Creation-Date: 2013-08-06 08:35+0100\n" -"PO-Revision-Date: 2013-08-16 19:09+0100\n" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" "Last-Translator: Nicolas Lœuillet \n" -"Language-Team: Spanish (http://www.transifex.com/projects/p/poche/language/" -"es/)\n" +"Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 1.5.4\n" -"X-Poedit-Basepath: /\n" -"X-Poedit-KeywordsList: _;gettext;gettext_noop\n" -"X-Poedit-SourceCharset: UTF-8\n" -"X-Poedit-SearchPath-0: /var/www/poche-i18n\n" -#: /var/www/poche-i18n/index.php:43 -msgid "poche, a read it later open source system" -msgstr "poche, a read it later open source system" - -#: /var/www/poche-i18n/inc/poche/Poche.class.php:101 -msgid "the link has been added successfully" -msgstr "el enlace a sido agregado con éxito" - -#: /var/www/poche-i18n/inc/poche/Poche.class.php:104 -msgid "error during insertion : the link wasn't added" -msgstr "error en la inserción : el enlace no ha sido agregado" - -#: /var/www/poche-i18n/inc/poche/Poche.class.php:109 -msgid "error during fetching content : the link wasn't added" -msgstr "" -"error durante la recuperación del contenido : el enlace no a sido agregado" - -#: /var/www/poche-i18n/inc/poche/Poche.class.php:119 -msgid "the link has been deleted successfully" -msgstr "el enlace a sido suprimido con éxito" - -#: /var/www/poche-i18n/inc/poche/Poche.class.php:123 -msgid "the link wasn't deleted" -msgstr "el enlace no ha sido suprimido" - -#: /var/www/poche-i18n/inc/poche/Tools.class.php:18 -msgid "Oops, it seems you don't have PHP 5." -msgstr "Parece que PHP 5 no está instalado" - -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:32 -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:70 -#: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:50 msgid "config" msgstr "configuración" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:46 -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:31 -#: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:26 -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:34 -msgid "home" -msgstr "inicio" - -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:54 -#: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:34 -msgid "favorites" -msgstr "favoritos" - -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:62 -#: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:42 -msgid "archive" -msgstr "archivos" - -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:74 -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:76 -#: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:54 -#: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:56 -msgid "logout" -msgstr "desconexión " - -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:87 -msgid "Bookmarklet" -msgstr "Bookmarklet" - -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:91 -msgid "" -"Thanks to the bookmarklet, you will be able to easily add a link to your " -"poche." +msgid "Poching a link" msgstr "" -"Gracias a tu bookmarklet, puedes agregar fácilmente un enlace en tu bolsillo" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:93 -msgid "Have a look to this documentation:" -msgstr "échale un ojo a la documentación :" - -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:97 -msgid "Drag & drop this link to your bookmarks bar and have fun with poche." +msgid "read the documentation" +msgstr "" + +msgid "by filling this field" msgstr "" -"Arrastra y suelta ese enlace en tu barra de favoritos en tu navegador y " -"disfruta de tu poche." -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:103 msgid "poche it!" msgstr "pochéalo!" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:108 msgid "Updating poche" msgstr "Actualizar" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:113 msgid "your version" msgstr "su versión" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:119 msgid "latest stable version" msgstr "ultima versión estable" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:125 msgid "a more recent stable version is available." -msgstr "una versión estable más reciente está disponible" +msgstr "una versión estable más reciente está disponible." -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:128 -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:142 msgid "you are up to date." -msgstr "estás al día" +msgstr "estás al día." -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:133 msgid "latest dev version" msgstr "ultima versión de desarollo" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:139 msgid "a more recent development version is available." -msgstr "una versión de desarollo más reciente está disponible" +msgstr "una versión de desarollo más reciente está disponible." -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:150 msgid "Change your password" msgstr "Modificar tu contraseña" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:157 msgid "New password:" msgstr "Nueva contraseña :" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:161 -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:171 -#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:60 -#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:68 msgid "Password" msgstr "Contraseña" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:167 msgid "Repeat your new password:" msgstr "Repetir la nueva contraseña :" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:177 msgid "Update" msgstr "Poner al día" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:193 msgid "Import" msgstr "Importar" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:197 msgid "Please execute the import script locally, it can take a very long time." msgstr "" "Gracias por ejecutar la importación en local, esto puede demorar un tiempo" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:201 msgid "More infos in the official doc:" msgstr "Más información en la documentación oficial :" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:206 msgid "import from Pocket" -msgstr "la importación desde Pocket está terminada" +msgstr "importación desde Pocket" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:210 msgid "import from Readability" -msgstr "la importación desde Readability está terminada" +msgstr "importación desde Readability" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:214 msgid "import from Instapaper" -msgstr "Importar desde Instapaper" +msgstr "importación desde Instapaper" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:220 msgid "Export your poche datas" msgstr "Exportar sus datos de poche" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:224 msgid "Click here" msgstr "Haga clic aquí" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:226 msgid "to export your poche datas." -msgstr "Para exportar sus datos de poche" +msgstr "para exportar sus datos de poche." -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:46 -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:139 -#: /var/www/poche-i18n/cache/30/97/b548692380c89d047a16cec7af79.php:22 msgid "back to home" msgstr "volver a la pagina de inicio" -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:50 -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:147 -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:119 -msgid "toggle mark as read" -msgstr "marcar como leído" - -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:60 -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:157 -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:129 -msgid "toggle favorite" -msgstr "favorito" - -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:70 -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:167 -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:139 -msgid "delete" -msgstr "suprimir" - -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:82 -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:179 -msgid "tweet" -msgstr "tweetear" - -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:93 -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:190 -msgid "email" -msgstr "enviar por mail" - -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:109 -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:125 -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:153 -msgid "original" -msgstr "original" - -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:143 -msgid "back to top" -msgstr "volver arriba" - -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:198 -msgid "this article appears wrong?" -msgstr "este articulo no se ve bien ?" - -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:200 -msgid "create an issue" -msgstr "crear un ticket" - -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:202 -msgid "or" -msgstr "o" - -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:206 -msgid "contact us by mail" -msgstr "contactarnos por mail" - -#: /var/www/poche-i18n/cache/88/8a/ee3b7080c13204391c14947a0c2c.php:22 -msgid "powered by" -msgstr "propulsado por" - -#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:31 msgid "installation" msgstr "instalacion" -#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:42 msgid "install your poche" msgstr "instala tu poche" -#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:47 msgid "" "poche is still not installed. Please fill the below form to install it. " -"Don't hesitate to read " -"the documentation on poche website." +"Don't hesitate to read the documentation " +"on poche website." msgstr "" "poche todavia no està instalado. Gracias de llenar los campos siguientes " -"para instalarlo. No dudes de leer la documentacion en el sitio de poche." +"para instalarlo. No dudes de leer la " +"documentacion en el sitio de poche." -#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:53 -#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:55 msgid "Login" msgstr "Nombre de usuario" -#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:67 msgid "Repeat your password" -msgstr "repita su contraseña" +msgstr "Repita su contraseña" -#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:74 msgid "Install" msgstr "Instalar" -#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:31 -#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:42 +msgid "back to top" +msgstr "volver arriba" + +msgid "favoris" +msgstr "" + +msgid "archive" +msgstr "archivos" + +msgid "unread" +msgstr "" + +msgid "by date asc" +msgstr "por fecha ascendiente" + +msgid "by date" +msgstr "por fecha" + +msgid "by date desc" +msgstr "por fecha descendiente" + +msgid "by title asc" +msgstr "por titulo ascendiente" + +msgid "by title" +msgstr "por fecha" + +msgid "by title desc" +msgstr "por fecha descendiente" + +msgid "No link available here!" +msgstr "" + +msgid "toggle mark as read" +msgstr "marcar como leído" + +msgid "toggle favorite" +msgstr "favorito" + +msgid "delete" +msgstr "suprimir" + +msgid "original" +msgstr "original" + +msgid "results" +msgstr "" + +msgid "tweet" +msgstr "tweetear" + +msgid "email" +msgstr "enviar por mail" + +msgid "shaarli" +msgstr "shaarli" + +msgid "flattr" +msgstr "flattr" + +msgid "this article appears wrong?" +msgstr "este articulo no se ve bien ?" + +msgid "create an issue" +msgstr "crear un ticket" + +msgid "or" +msgstr "o" + +msgid "contact us by mail" +msgstr "contactarnos por mail" + +msgid "plop" +msgstr "plop" + +msgid "home" +msgstr "inicio" + +msgid "favorites" +msgstr "favoritos" + +msgid "logout" +msgstr "desconexión" + +msgid "powered by" +msgstr "propulsado por" + +msgid "debug mode is on so cache is off." +msgstr "" + +msgid "your poche version:" +msgstr "" + +msgid "storage:" +msgstr "" + msgid "login to your poche" msgstr "conectarse a tu poche" -#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:48 msgid "you are in demo mode, some features may be disabled." msgstr "" "este es el modo de demostración, algunas funcionalidades pueden estar " "desactivadas." -#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:80 msgid "Stay signed in" msgstr "seguir conectado" -#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:86 msgid "(Do not check on public computers)" msgstr "(no marcar en un ordenador publico)" -#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:93 msgid "Sign in" msgstr "conectarse" - -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:55 -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:57 -msgid "by date asc" -msgstr "por fecha ascendiente" - -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:59 -msgid "by date" -msgstr "por fecha" - -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:65 -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:67 -msgid "by date desc" -msgstr "por fecha descendiente" - -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:75 -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:77 -msgid "by title asc" -msgstr "por titulo ascendiente" - -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:79 -msgid "by title" -msgstr "por titulo" - -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:85 -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:87 -msgid "by title desc" -msgstr "por titulo descendiente" - -#~ msgid "Please choose between Pocket & Readabilty :" -#~ msgstr "Merci de choisir entre Pocket & Readability :" - -#~ msgid "Bye bye Pocket, let's go !" -#~ msgstr "Bye bye Pocket, en route !" - -#~ msgid "Bye bye Readability, let's go !" -#~ msgstr "Bye bye Readability, en route !" - -#~ msgid "Welcome to poche !" -#~ msgstr "Bienvenue dans poche !" - -#~ msgid "Error with the import." -#~ msgstr "Erreur durant l'import." - -#~ msgid "Wrong token." -#~ msgstr "Mauvais jeton." - -#~ msgid "Login failed !" -#~ msgstr "Connexion échouée." - -#~ msgid "your password has been updated" -#~ msgstr "Votre mot de passe a été mis à jour. " - -#~ msgid "in demo mode, you can't update password" -#~ msgstr "En mode démo, le mot de passe ne peut être modifié." - -#~ msgid "" -#~ "your password can't be empty and you have to repeat it in the second field" -#~ msgstr "" -#~ "Votre mot de passe ne peut être vide et vous devez le répéter dans le " -#~ "second champ." - -#~ msgid "error during url preparation : the link wasn't added" -#~ msgstr "erreur durant l'insertion : le lien n'a pas été ajouté" - -#~ msgid "error during url preparation : the link is not valid" -#~ msgstr "erreur durant la préparation de l'URL : le lien n'est pas valide" - -#~ msgid "TEST" -#~ msgstr "NICOLAS" 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 ec72b830d244d5fe0ce9d0a68a46e8744324de4c..e3baaaa106b1d4fb619fb71aa530325e87dd765b 100644 GIT binary patch literal 4813 zcma);O^h5z6@V)wU|4<<$6(BF%KUijurq7NPB80#{1*$aS=Q?aAw*Q$T{F|!p6;f) zdUn?w5DEtla0vl%La`JgHYf@ZB!mzmFbW`%gOPILU@06BIdMSZf&_f8x@Ww*wh^tV z`MUmJz4z+9zH$FO-%&j0DIcUPzDX$qzj+UTJomjtsgJ;d!U9Q&m&Fy2`KVjgtFfk;Qi3Rd!dKB z;n$n~=b)VT1;`faCHOY@%clPoD5`uF?u37WvfkgI=;L2aeFu|7u02rt4?>ae9NYoF z2t}R(Vj{HynX0ZrS^r7+Jp2aarw(EyvC}dBWZy@j$oF`|9+dex`~X~S_%xJr{us)> zFGD%sYf$$8Gdu)eZ~AwlWEuA$6#0+CyY5ozGjK2UIT~gCA*4w?1wRbG4`u&fL6P@& za67yXr{Q0q$bB!y5Pk1~G^t17Nq7Z{Uwjwtfj@xazpp|W_XfNV{u9c$ZTyK}?Sx0* zC*XeAgQA!3K{>}WQ1<;96#4!LWxdxROR3kP*zNC7?Jp@sC|BF7kEYN8u4D;~$5? zu1){bQ2gc^lyf}`#cy7KFTfmggLWqp5>Z;SpIxU-HPlayCQ{IuUu~`7~vQB7QD9J5Tu}MeMSN@+rz$ zis)j#0Kg5>rLL@2AN9 zYEwk-`ziY<@`zvD9p3PBD0UJXoutU~af%Q&E?MOBLkTgCP>RcyIi?Z6k!rWwVMJGt6C5s+!*NmKyJ!3a4wV-F5ju2TvCBuH1TUHsr_?<|BjoC#~O;wY#9tS*7~?zL=evNir^3*sjB!p5cX`)J>JJYkXDmasIK8bK%Q*gUnsaG5q z@PtBWd;1X5p|96t#@P1b`oK7XLdhjEvGOYx^Hy1?pnGjXh~a7t^5ACEc-VkNaKj1- z@ya#5M3hQOxl3_JjVD!wXi#oQXd~PObu^c4R>rxB6U@8(2^;zLg}D7#eQ{^?)cj`` z+ouskJg0qzg+g0`gHaboNi3<|1O*_TpNB5ZG?3yp;H<&$rLp%(`04`P{|?(gU4`JBOy!-pop@ zCRcEIoi0&Mm1(jAe(tSgi;zq95%lAPNP_Nik8K9z8!o?uPb-P!%ay&_CI>W`B#bLb z2U#{+$6PWrT&6mqaJ$1rM@xd`a$30!(hwb6Ekb;oH26U3wSkf{nAa#bN}cAOUw5m1xVhOc6f68Ckw&QKA0z*v}% z_$H|aHwo!Y)E1JR=!dCEcUsd|C%d4tJc~rLrF0HQ>m5~AMdA1)aktHWliWAfP2*;< zEh>^pxEGreVACs>gi1p;kig3rsvPy|8>pJ>UtB>kQbXPHEDPsLU$&(%ItwAM38a89K;Gq(*HssH%ZG<9&y1b~;aM-Ws12-XvMnY|f+6GU1-s6pN1xMlVn>y5g0X?`1LjV8( literal 5706 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\n" -"Language: Français\n" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: Nicolas Lœuillet \n" +"Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.5.7\n" -"X-Poedit-KeywordsList: _;gettext;gettext_noop\n" -"X-Poedit-Basepath: /\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Poedit-SourceCharset: UTF-8\n" -"X-Poedit-SearchPath-0: /var/www/poche-i18n\n" +"X-Generator: Poedit 1.5.4\n" -#: /var/www/poche-i18n/index.php:43 -msgid "poche, a read it later open source system" -msgstr "poche, a read it later open source system" - -#: /var/www/poche-i18n/inc/poche/Poche.class.php:101 -msgid "the link has been added successfully" -msgstr "le lien a été ajouté avec succès" - -#: /var/www/poche-i18n/inc/poche/Poche.class.php:104 -msgid "error during insertion : the link wasn't added" -msgstr "erreur durant l'insertion : le lien n'a pas été ajouté" - -#: /var/www/poche-i18n/inc/poche/Poche.class.php:109 -msgid "error during fetching content : the link wasn't added" -msgstr "erreur durant la récupération du contenu : le lien n'a pas été ajouté" - -#: /var/www/poche-i18n/inc/poche/Poche.class.php:119 -msgid "the link has been deleted successfully" -msgstr "le lien a été supprimé avec succès" - -#: /var/www/poche-i18n/inc/poche/Poche.class.php:123 -msgid "the link wasn't deleted" -msgstr "le lien n'a pas été supprimé" - -#: /var/www/poche-i18n/inc/poche/Tools.class.php:18 -msgid "Oops, it seems you don't have PHP 5." -msgstr "Oups, il semblerait que PHP 5 ne soit pas installé. " - -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:32 -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:70 -#: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:50 msgid "config" -msgstr "config" +msgstr "configuration" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:46 -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:31 -#: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:26 -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:34 -msgid "home" -msgstr "accueil" +msgid "Poching a link" +msgstr "Pocher un lien" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:54 -#: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:34 -msgid "favorites" -msgstr "favoris" +msgid "read the documentation" +msgstr "lisez la documentation" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:62 -#: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:42 -msgid "archive" -msgstr "archives" +msgid "by filling this field" +msgstr "en remplissant ce champ" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:74 -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:76 -#: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:54 -#: /var/www/poche-i18n/cache/76/a4/e7c21f2e0ba29104fc654cd8ba41.php:56 -msgid "logout" -msgstr "déconnexion" - -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:87 -msgid "Bookmarklet" -msgstr "Bookmarklet" - -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:91 -msgid "" -"Thanks to the bookmarklet, you will be able to easily add a link to your " -"poche." -msgstr "" -"Grâce au bookmarklet, vous pouvez ajouter facilement un lien dans votre " -"poche." - -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:93 -msgid "Have a look to this documentation:" -msgstr "Jetez un œil à la documentation :" - -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:97 -msgid "Drag & drop this link to your bookmarks bar and have fun with poche." -msgstr "" -"Glissez / déposez ce lien dans votre barre de favoris de votre navigateur et " -"prenez du bon temps avec poche." - -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:103 msgid "poche it!" -msgstr "poche-le !" +msgstr "pochez-le !" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:108 msgid "Updating poche" msgstr "Mettre à jour poche" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:113 msgid "your version" msgstr "votre version" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:119 msgid "latest stable version" msgstr "dernière version stable" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:125 msgid "a more recent stable version is available." msgstr "une version stable plus récente est disponible." -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:128 -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:142 msgid "you are up to date." msgstr "vous êtes à jour." -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:133 msgid "latest dev version" msgstr "dernière version de développement" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:139 msgid "a more recent development version is available." msgstr "une version de développement plus récente est disponible." -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:150 msgid "Change your password" msgstr "Modifier votre mot de passe" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:157 msgid "New password:" msgstr "Nouveau mot de passe :" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:161 -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:171 -#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:60 -#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:68 msgid "Password" msgstr "Mot de passe" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:167 msgid "Repeat your new password:" -msgstr "Répétez le nouveau mot de passe :" +msgstr "Répétez votre nouveau mot de passe :" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:177 msgid "Update" msgstr "Mettre à jour" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:193 msgid "Import" -msgstr "Import" +msgstr "Importer" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:197 msgid "Please execute the import script locally, it can take a very long time." -msgstr "Merci d'exécuter l'import en local, cela peut prendre du temps. " +msgstr "Merci d'exécuter l'import en local, cela peut prendre du temps." -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:201 msgid "More infos in the official doc:" -msgstr "Plus d'infos sur la documentation officielle :" +msgstr "Plus d'infos sur la documentation officielle" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:206 msgid "import from Pocket" -msgstr "l'import depuis Pocket est terminé." +msgstr "import depuis Pocket" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:210 msgid "import from Readability" -msgstr "l'import depuis Readability est terminé." +msgstr "import depuis Readability" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:214 msgid "import from Instapaper" -msgstr "Import depuis Instapaper" +msgstr "import depuis Instapaper" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:220 msgid "Export your poche datas" msgstr "Exporter vos données de poche" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:224 msgid "Click here" msgstr "Cliquez-ici" -#: /var/www/poche-i18n/cache/c9/b0/845a8dc93165e6c00b6b43068799.php:226 msgid "to export your poche datas." msgstr "pour exporter vos données de poche." -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:46 -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:139 -#: /var/www/poche-i18n/cache/30/97/b548692380c89d047a16cec7af79.php:22 msgid "back to home" msgstr "retour à l'accueil" -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:50 -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:147 -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:119 -msgid "toggle mark as read" -msgstr "marquer comme lu" - -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:60 -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:157 -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:129 -msgid "toggle favorite" -msgstr "favori" - -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:70 -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:167 -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:139 -msgid "delete" -msgstr "supprimer" - -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:82 -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:179 -msgid "tweet" -msgstr "tweeter" - -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:93 -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:190 -msgid "email" -msgstr "envoyer par email" - -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:109 -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:125 -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:153 -msgid "original" -msgstr "original" - -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:143 -msgid "back to top" -msgstr "retour en haut de page" - -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:198 -msgid "this article appears wrong?" -msgstr "cet article s'affiche mal ?" - -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:200 -msgid "create an issue" -msgstr "créer un ticket" - -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:202 -msgid "or" -msgstr "ou" - -#: /var/www/poche-i18n/cache/7a/1e/68e6b4aec1301ae024cc85232e7c.php:206 -msgid "contact us by mail" -msgstr "contactez-nous par email" - -#: /var/www/poche-i18n/cache/88/8a/ee3b7080c13204391c14947a0c2c.php:22 -msgid "powered by" -msgstr "propulsé par" - -#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:31 msgid "installation" msgstr "installation" -#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:42 msgid "install your poche" msgstr "installez votre poche" -#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:47 msgid "" "poche is still not installed. Please fill the below form to install it. " -"Don't hesitate to read " -"the documentation on poche website." +"Don't hesitate to read the documentation " +"on poche website." msgstr "" -"poche n'est pas encore installé. Merci de remplir les champs ci-dessous pour " -"l'installer. N'hésitez pas à lire la documentation sur le site de poche." +"poche n'est pas encore installé. Merci de remplir le formulaire suivant pour " +"l'installer. N'hésitez pas à lire la " +"documentation sur le site de poche." -#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:53 -#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:55 msgid "Login" msgstr "Nom d'utilisateur" -#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:67 msgid "Repeat your password" msgstr "Répétez votre mot de passe" -#: /var/www/poche-i18n/cache/d4/28/e0d08991ec2d8a7b133505e7c651.php:74 msgid "Install" msgstr "Installer" -#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:31 -#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:42 -msgid "login to your poche" -msgstr "Se connecter à votre poche" +msgid "back to top" +msgstr "retour en haut de page" -#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:48 -msgid "you are in demo mode, some features may be disabled." -msgstr "" -"vous êtes en mode démo, certaines fonctionnalités sont peut-être désactivées." +msgid "favoris" +msgstr "favoris" -#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:80 -msgid "Stay signed in" -msgstr "rester connecté" +msgid "archive" +msgstr "archive" -#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:86 -msgid "(Do not check on public computers)" -msgstr "(à ne pas cocher sur un ordinateur public)" +msgid "unread" +msgstr "non lus" -#: /var/www/poche-i18n/cache/ae/26/05eb67771213c16bd8c9aaf2d2c4.php:93 -msgid "Sign in" -msgstr "Se connecter" - -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:55 -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:57 msgid "by date asc" msgstr "par date asc" -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:59 msgid "by date" msgstr "par date" -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:65 -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:67 msgid "by date desc" msgstr "par date desc" -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:75 -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:77 msgid "by title asc" msgstr "par titre asc" -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:79 msgid "by title" msgstr "par titre" -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:85 -#: /var/www/poche-i18n/cache/dd/a8/530129765655dcde0a70a31a78b6.php:87 msgid "by title desc" msgstr "par titre desc" -#~ msgid "Please choose between Pocket & Readabilty :" -#~ msgstr "Merci de choisir entre Pocket & Readability :" +msgid "No link available here!" +msgstr "Aucun lien n'est disponible ici !" -#~ msgid "Bye bye Pocket, let's go !" -#~ msgstr "Bye bye Pocket, en route !" +msgid "toggle mark as read" +msgstr "marquer comme lu / non lu" -#~ msgid "Bye bye Readability, let's go !" -#~ msgstr "Bye bye Readability, en route !" +msgid "toggle favorite" +msgstr "marquer comme favori" -#~ msgid "Welcome to poche !" -#~ msgstr "Bienvenue dans poche !" +msgid "delete" +msgstr "supprimer" -#~ msgid "Error with the import." -#~ msgstr "Erreur durant l'import." +msgid "original" +msgstr "original" -#~ msgid "Wrong token." -#~ msgstr "Mauvais jeton." +msgid "results" +msgstr "résultats" -#~ msgid "Login failed !" -#~ msgstr "Connexion échouée." +msgid "tweet" +msgstr "tweet" -#~ msgid "your password has been updated" -#~ msgstr "Votre mot de passe a été mis à jour. " +msgid "email" +msgstr "email" -#~ msgid "in demo mode, you can't update password" -#~ msgstr "En mode démo, le mot de passe ne peut être modifié." +msgid "shaarli" +msgstr "shaarli" -#~ msgid "" -#~ "your password can't be empty and you have to repeat it in the second field" -#~ msgstr "" -#~ "Votre mot de passe ne peut être vide et vous devez le répéter dans le " -#~ "second champ." +msgid "flattr" +msgstr "flattr" -#~ msgid "error during url preparation : the link wasn't added" -#~ msgstr "erreur durant l'insertion : le lien n'a pas été ajouté" +msgid "this article appears wrong?" +msgstr "cet article s'affiche mal ?" -#~ msgid "error during url preparation : the link is not valid" -#~ msgstr "erreur durant la préparation de l'URL : le lien n'est pas valide" +msgid "create an issue" +msgstr "créez un ticket" -#~ msgid "TEST" -#~ msgstr "NICOLAS" +msgid "or" +msgstr "ou" + +msgid "contact us by mail" +msgstr "contactez-nous par email" + +msgid "plop" +msgstr "plop" + +msgid "home" +msgstr "accueil" + +msgid "favorites" +msgstr "favoris" + +msgid "logout" +msgstr "déconnexion" + +msgid "powered by" +msgstr "propulsé par" + +msgid "debug mode is on so cache is off." +msgstr "le mode de debug est actif, le cache est donc désactivé." + +msgid "your poche version:" +msgstr "votre version de poche :" + +msgid "storage:" +msgstr "stockage :" + +msgid "login to your poche" +msgstr "se connecter à votre poche" + +msgid "you are in demo mode, some features may be disabled." +msgstr "" +"vous êtes en mode démo, certaines fonctionnalités peuvent être désactivées." + +msgid "Stay signed in" +msgstr "Rester connecté" + +msgid "(Do not check on public computers)" +msgstr "(ne pas cocher sur un ordinateur public)" + +msgid "Sign in" +msgstr "Se connecter" From 084ec2a63df90b775195ad874f8fc0d7fbefbc93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Thu, 12 Sep 2013 14:26:30 +0200 Subject: [PATCH 28/52] change strings for gettext --- tpl/config.twig | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tpl/config.twig b/tpl/config.twig index 7078887..f125c99 100644 --- a/tpl/config.twig +++ b/tpl/config.twig @@ -6,11 +6,11 @@ {% endblock %} {% block content %}

    {% trans "Poching a link" %}

    -

    You can poche a link by several methods: (?)

    +

    {% trans "You can poche a link by several methods:" %} (?)

    {% trans "Updating poche" %}

    @@ -51,9 +51,9 @@

    {% trans "Please execute the import script locally, it can take a very long time." %}

    {% trans "More infos in the official doc:" %} inthepoche.com

    {% trans "Export your poche datas" %}

    From b9523a0ba09b5641e93fcd8300dd1a9f5145da2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Thu, 12 Sep 2013 19:28:59 +0200 Subject: [PATCH 29/52] fix bug #209: titles with colon bad parsed --- inc/poche/PocheReadability.php | 46 ++++++++++++++++++++++++++++++++++ inc/poche/Url.class.php | 2 +- inc/poche/config.inc.php | 10 ++------ 3 files changed, 49 insertions(+), 9 deletions(-) create mode 100644 inc/poche/PocheReadability.php diff --git a/inc/poche/PocheReadability.php b/inc/poche/PocheReadability.php new file mode 100644 index 0000000..48ae90d --- /dev/null +++ b/inc/poche/PocheReadability.php @@ -0,0 +1,46 @@ +getInnerText($this->dom->getElementsByTagName('title')->item(0)); + } catch(Exception $e) {} + + if (preg_match('/ [\|\-] /', $curTitle)) + { + $curTitle = preg_replace('/(.*)[\|\-] .*/i', '$1', $origTitle); + + if (count(explode(' ', $curTitle)) < 3) { + $curTitle = preg_replace('/[^\|\-]*[\|\-](.*)/i', '$1', $origTitle); + } + } + else if(strlen($curTitle) > 150 || strlen($curTitle) < 15) + { + $hOnes = $this->dom->getElementsByTagName('h1'); + if($hOnes->length == 1) + { + $curTitle = $this->getInnerText($hOnes->item(0)); + } + } + + $curTitle = trim($curTitle); + + if (count(explode(' ', $curTitle)) <= 4) { + $curTitle = $origTitle; + } + + $articleTitle = $this->dom->createElement('h1'); + $articleTitle->innerHTML = $curTitle; + + return $articleTitle; + } +} \ No newline at end of file diff --git a/inc/poche/Url.class.php b/inc/poche/Url.class.php index 5a89301..600a216 100644 --- a/inc/poche/Url.class.php +++ b/inc/poche/Url.class.php @@ -354,7 +354,7 @@ class Url } if (isset($splink)) { // Build DOM tree from HTML - $readability = new Readability($html, $url); + $readability = new PocheReadability($html, $url); $xpath = new DOMXPath($readability->dom); // Loop through single_page_link xpath expressions $single_page_url = null; diff --git a/inc/poche/config.inc.php b/inc/poche/config.inc.php index 4552669..aaa26af 100755 --- a/inc/poche/config.inc.php +++ b/inc/poche/config.inc.php @@ -20,6 +20,7 @@ require_once __DIR__ . '/../../inc/poche/Url.class.php'; require_once __DIR__ . '/../../inc/3rdparty/class.messages.php'; require_once __DIR__ . '/../../inc/poche/Poche.class.php'; require_once __DIR__ . '/../../inc/3rdparty/Readability.php'; +require_once __DIR__ . '/../../inc/poche/PocheReadability.php'; require_once __DIR__ . '/../../inc/3rdparty/Encoding.php'; require_once __DIR__ . '/../../inc/poche/Database.class.php'; require_once __DIR__ . '/../../vendor/autoload.php'; @@ -47,11 +48,4 @@ if (!ini_get('date.timezone') || !@date_default_timezone_set(ini_get('date.timez date_default_timezone_set('UTC'); } -$poche = new Poche(); -#XSRF protection with token -// if (!empty($_POST)) { -// if (!Session::isToken($_POST['token'])) { -// die(_('Wrong token')); -// } -// unset($_SESSION['tokens']); -// } \ No newline at end of file +$poche = new Poche(); \ No newline at end of file From 1a08e7b6f6f4dead5556435033e8ac7634144ae0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Fri, 13 Sep 2013 09:01:33 +0200 Subject: [PATCH 30/52] titles with colon bad parsed --- inc/3rdparty/content-extractor/ContentExtractor.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/3rdparty/content-extractor/ContentExtractor.php b/inc/3rdparty/content-extractor/ContentExtractor.php index db371c6..2687839 100644 --- a/inc/3rdparty/content-extractor/ContentExtractor.php +++ b/inc/3rdparty/content-extractor/ContentExtractor.php @@ -138,7 +138,7 @@ class ContentExtractor } // load and parse html - $this->readability = new Readability($html, $url); + $this->readability = new PocheReadability($html, $url); // we use xpath to find elements in the given HTML document // see http://en.wikipedia.org/wiki/XPath_1.0 From 48207b6814eeaef30a0baf64c3ed1e1d148de6fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Fri, 13 Sep 2013 10:29:03 +0200 Subject: [PATCH 31/52] remove poche.js --- tpl/js/poche.js | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 tpl/js/poche.js diff --git a/tpl/js/poche.js b/tpl/js/poche.js deleted file mode 100644 index c2e02f9..0000000 --- a/tpl/js/poche.js +++ /dev/null @@ -1,2 +0,0 @@ -function showinput(){ -$('#inputform').fadeIn('fast');} \ No newline at end of file From 10ab20d8e21b2fa3f4d8e86909a7cb4d0d9a84d2 Mon Sep 17 00:00:00 2001 From: NumEricR Date: Mon, 26 Aug 2013 22:21:22 +0200 Subject: [PATCH 32/52] Fix missing lang in html tag of update pages --- install/update.php | 2 +- install/update_to_1beta3.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/install/update.php b/install/update.php index 1deaf7f..9548d33 100644 --- a/install/update.php +++ b/install/update.php @@ -10,7 +10,7 @@ $store = new Database(); - + updating poche diff --git a/install/update_to_1beta3.php b/install/update_to_1beta3.php index 8c93af6..e0da159 100644 --- a/install/update_to_1beta3.php +++ b/install/update_to_1beta3.php @@ -10,7 +10,7 @@ $old_salt = '464v54gLLw928uz4zUBqkRJeiPY68zCX'; - + updating poche From 1b2abab6ddbb3460b8981a296fe04477a42801b3 Mon Sep 17 00:00:00 2001 From: NumEricR Date: Mon, 26 Aug 2013 22:25:03 +0200 Subject: [PATCH 33/52] Add lang attribute in html tag --- inc/poche/Tools.class.php | 5 +++++ index.php | 1 + tpl/layout.twig | 1 + 3 files changed, 7 insertions(+) diff --git a/inc/poche/Tools.class.php b/inc/poche/Tools.class.php index 3a792d4..1ab90be 100644 --- a/inc/poche/Tools.class.php +++ b/inc/poche/Tools.class.php @@ -248,4 +248,9 @@ class Tools fclose($fp); } } + + public static function getDocLanguage($userlanguage) { + $lang = explode('.', $userlanguage); + return str_replace('_', '-', $lang[0]); + } } \ No newline at end of file diff --git a/index.php b/index.php index 7b775c4..52a400a 100644 --- a/index.php +++ b/index.php @@ -50,6 +50,7 @@ elseif (isset($_GET['plainurl']) && !empty($_GET['plainurl'])) { # vars to send to templates $tpl_vars = array( + 'lang' => Tools::getDocLanguage($poche->user->getConfigValue('language')), 'referer' => $referer, 'view' => $view, 'poche_url' => Tools::getPocheUrl(), diff --git a/tpl/layout.twig b/tpl/layout.twig index 07ca231..bb20075 100644 --- a/tpl/layout.twig +++ b/tpl/layout.twig @@ -4,6 +4,7 @@ + From d081f272b0b63cdf86ab7666747b63dbff7f068e Mon Sep 17 00:00:00 2001 From: NumEricR Date: Mon, 26 Aug 2013 22:27:51 +0200 Subject: [PATCH 34/52] Use dynamic lang value in IE conditional comments --- tpl/layout.twig | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/tpl/layout.twig b/tpl/layout.twig index bb20075..fec7054 100644 --- a/tpl/layout.twig +++ b/tpl/layout.twig @@ -1,9 +1,8 @@ - - - - - + + + + From a8778dc23e60e65b47e2aae5d4cdf92660ee4c02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Tue, 17 Sep 2013 13:27:16 +0200 Subject: [PATCH 35/52] fix bug #105: Scroll position save / sync --- tpl/js/restoreScroll.js | 25 +++++++++++++++++++++++++ tpl/view.twig | 19 +++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 tpl/js/restoreScroll.js diff --git a/tpl/js/restoreScroll.js b/tpl/js/restoreScroll.js new file mode 100644 index 0000000..331c9e1 --- /dev/null +++ b/tpl/js/restoreScroll.js @@ -0,0 +1,25 @@ +function supportsLocalStorage() { + try { + return 'localStorage' in window && window['localStorage'] !== null; + } catch (e) { + return false; + } +} + +function savePercent(id, percent) { + if (!supportsLocalStorage()) { return false; } + localStorage["poche.article." + id + ".percent"] = percent; + return true; +} + +function retrievePercent(id) { + if (!supportsLocalStorage()) { return false; } + + var bheight = $(document).height(); + var percent = localStorage["poche.article." + id + ".percent"]; + var scroll = bheight * percent; + + $('html,body').animate({scrollTop: scroll}, 'fast'); + + return true; +} \ No newline at end of file diff --git a/tpl/view.twig b/tpl/view.twig index 2b6d91d..f9405f4 100644 --- a/tpl/view.twig +++ b/tpl/view.twig @@ -37,4 +37,23 @@

    {% trans "this article appears wrong?" %} {% trans "create an issue" %} {% trans "or" %} {% trans "contact us by mail" %}

    + + {% endblock %} \ No newline at end of file From f6597c7cb90e9bfa96f01f5f78f98cd72696da55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Tue, 17 Sep 2013 14:48:16 +0200 Subject: [PATCH 36/52] fix bug #127: update session class --- inc/3rdparty/Session.class.php | 283 +++++++++++++++++++++++++-------- inc/poche/Poche.class.php | 1 + inc/poche/config.inc.php | 10 +- 3 files changed, 223 insertions(+), 71 deletions(-) diff --git a/inc/3rdparty/Session.class.php b/inc/3rdparty/Session.class.php index 3162f50..08126ba 100644 --- a/inc/3rdparty/Session.class.php +++ b/inc/3rdparty/Session.class.php @@ -1,136 +1,279 @@ $value) { - $_SESSION[$key] = $value; - } - if ($login==$login_test && $password==$password_test){ - // generate unique random number to sign forms (HMAC) - $_SESSION['uid'] = sha1(uniqid('',true).'_'.mt_rand()); - $_SESSION['info']=Session::_allInfos(); - $_SESSION['username']=$login; - // Set session expiration. - $_SESSION['expires_on']=time()+Session::$inactivity_timeout; - return true; + foreach ($pValues as $key => $value) { + $_SESSION[$key] = $value; + } + + return true; + } + self::banLoginFailed(); } + return false; } - // Force logout + /** + * Unset SESSION variable to force logout + */ public static function logout() { - unset($_SESSION['uid'],$_SESSION['info'],$_SESSION['expires_on'],$_SESSION['tokens'], $_SESSION['login'], $_SESSION['pass'], $_SESSION['poche_user']); + unset($_SESSION['uid'], $_SESSION['ip'], $_SESSION['expires_on']); } - // Make sure user is logged in. + /** + * Make sure user is logged in. + * + * @return true|false True if user is logged in, false otherwise + */ public static function isLogged() { if (!isset ($_SESSION['uid']) - || $_SESSION['info']!=Session::_allInfos() - || time()>=$_SESSION['expires_on']){ - Session::logout(); + || (self::$disableSessionProtection === false + && $_SESSION['ip'] !== self::_allIPs()) + || time() >= $_SESSION['expires_on']) { + self::logout(); + return false; } // User accessed a page : Update his/her session expiration date. - $_SESSION['expires_on']=time()+Session::$inactivity_timeout; + $_SESSION['expires_on'] = time() + self::$inactivityTimeout; + if (!empty($_SESSION['longlastingsession'])) { + $_SESSION['expires_on'] += $_SESSION['longlastingsession']; + } + return true; } - // Returns a token. - public static function getToken() + /** + * Create a token, store it in SESSION and return it + * + * @param string $salt to prevent birthday attack + * + * @return string Token created + */ + public static function getToken($salt = '') { - if (!isset($_SESSION['tokens'])){ + if (!isset($_SESSION['tokens'])) { $_SESSION['tokens']=array(); } // We generate a random string and store it on the server side. - $rnd = sha1(uniqid('',true).'_'.mt_rand()); + $rnd = sha1(uniqid('', true).'_'.mt_rand().$salt); $_SESSION['tokens'][$rnd]=1; + return $rnd; } - // Tells if a token is ok. Using this function will destroy the token. - // return true if token is ok. + /** + * Tells if a token is ok. Using this function will destroy the token. + * + * @param string $token Token to test + * + * @return true|false True if token is correct, false otherwise + */ public static function isToken($token) { - if (isset($_SESSION['tokens'][$token])) - { + if (isset($_SESSION['tokens'][$token])) { unset($_SESSION['tokens'][$token]); // Token is used: destroy it. + return true; // Token is ok. } + return false; // Wrong token, or already used. } -} \ No newline at end of file + + /** + * Signal a failed login. Will ban the IP if too many failures: + */ + public static function banLoginFailed() + { + if (self::$banFile !== '') { + $ip = $_SERVER["REMOTE_ADDR"]; + $gb = $GLOBALS['IPBANS']; + + if (!isset($gb['FAILURES'][$ip])) { + $gb['FAILURES'][$ip] = 0; + } + $gb['FAILURES'][$ip]++; + if ($gb['FAILURES'][$ip] > (self::$banAfter - 1)) { + $gb['BANS'][$ip]= time() + self::$banDuration; + } + + $GLOBALS['IPBANS'] = $gb; + file_put_contents(self::$banFile, ""); + } + } + + /** + * Signals a successful login. Resets failed login counter. + */ + public static function banLoginOk() + { + if (self::$banFile !== '') { + $ip = $_SERVER["REMOTE_ADDR"]; + $gb = $GLOBALS['IPBANS']; + unset($gb['FAILURES'][$ip]); unset($gb['BANS'][$ip]); + $GLOBALS['IPBANS'] = $gb; + file_put_contents(self::$banFile, ""); + } + } + + /** + * Ban init + */ + public static function banInit() + { + if (self::$banFile !== '') { + if (!is_file(self::$banFile)) { + file_put_contents(self::$banFile, "array(), 'BANS'=>array()), true).";\n?>"); + } + include self::$banFile; + } + } + + /** + * Checks if the user CAN login. If 'true', the user can try to login. + * + * @return boolean true if user is banned, false otherwise + */ + public static function banCanLogin() + { + if (self::$banFile !== '') { + $ip = $_SERVER["REMOTE_ADDR"]; + $gb = $GLOBALS['IPBANS']; + if (isset($gb['BANS'][$ip])) { + // User is banned. Check if the ban has expired: + if ($gb['BANS'][$ip] <= time()) { + // Ban expired, user can try to login again. + unset($gb['FAILURES'][$ip]); + unset($gb['BANS'][$ip]); + file_put_contents(self::$banFile, ""); + + return true; // Ban has expired, user can login. + } + + return false; // User is banned. + } + } + + return true; // User is not banned. + } +} diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php index 9db4a03..2f0f703 100644 --- a/inc/poche/Poche.class.php +++ b/inc/poche/Poche.class.php @@ -93,6 +93,7 @@ class Poche private function init() { Tools::initPhp(); + Session::$sessionName = 'poche'; Session::init(); if (isset($_SESSION['poche_user']) && $_SESSION['poche_user'] != array()) { diff --git a/inc/poche/config.inc.php b/inc/poche/config.inc.php index aaa26af..9247c29 100755 --- a/inc/poche/config.inc.php +++ b/inc/poche/config.inc.php @@ -48,4 +48,12 @@ if (!ini_get('date.timezone') || !@date_default_timezone_set(ini_get('date.timez date_default_timezone_set('UTC'); } -$poche = new Poche(); \ No newline at end of file +$poche = new Poche(); + +#XSRF protection with token +if (!empty($_POST)) { + if (!Session::isToken($_POST['token'])) { + die(_('Wrong token')); + } + unset($_SESSION['tokens']); +} \ No newline at end of file From 0d64be15de12cd949fc9b9d2b8352a1815da965a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Wed, 18 Sep 2013 09:25:28 +0200 Subject: [PATCH 37/52] remove csrf check --- inc/poche/config.inc.php | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/inc/poche/config.inc.php b/inc/poche/config.inc.php index 9247c29..aaa26af 100755 --- a/inc/poche/config.inc.php +++ b/inc/poche/config.inc.php @@ -48,12 +48,4 @@ if (!ini_get('date.timezone') || !@date_default_timezone_set(ini_get('date.timez date_default_timezone_set('UTC'); } -$poche = new Poche(); - -#XSRF protection with token -if (!empty($_POST)) { - if (!Session::isToken($_POST['token'])) { - die(_('Wrong token')); - } - unset($_SESSION['tokens']); -} \ No newline at end of file +$poche = new Poche(); \ No newline at end of file From 705250b93dc71ae91d3c305b51e7a20611873805 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Fri, 20 Sep 2013 09:32:49 +0200 Subject: [PATCH 38/52] fixes with new session class --- inc/3rdparty/Session.class.php | 2 +- inc/poche/Poche.class.php | 9 --------- 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/inc/3rdparty/Session.class.php b/inc/3rdparty/Session.class.php index 08126ba..df913a0 100644 --- a/inc/3rdparty/Session.class.php +++ b/inc/3rdparty/Session.class.php @@ -136,7 +136,7 @@ class Session */ public static function logout() { - unset($_SESSION['uid'], $_SESSION['ip'], $_SESSION['expires_on']); + unset($_SESSION['uid'],$_SESSION['ip'],$_SESSION['expires_on'],$_SESSION['tokens'], $_SESSION['login'], $_SESSION['pass'], $_SESSION['poche_user']); } /** diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php index 2f0f703..8770c7f 100644 --- a/inc/poche/Poche.class.php +++ b/inc/poche/Poche.class.php @@ -331,16 +331,7 @@ class Poche if ($user != array()) { # Save login into Session Session::login($user['username'], $user['password'], $_POST['login'], Tools::encodeString($_POST['password'] . $_POST['login']), array('poche_user' => new User($user))); - $this->messages->add('s', _('welcome to your poche')); - if (!empty($_POST['longlastingsession'])) { - $_SESSION['longlastingsession'] = 31536000; - $_SESSION['expires_on'] = time() + $_SESSION['longlastingsession']; - session_set_cookie_params($_SESSION['longlastingsession']); - } else { - session_set_cookie_params(0); - } - session_regenerate_id(true); Tools::logm('login successful'); Tools::redirect($referer); } From 00dbaf90bc44ef3ed0abaebb15307756e054a027 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Fri, 20 Sep 2013 10:21:39 +0200 Subject: [PATCH 39/52] merge #224 --- .gitignore | 2 +- .gitmodules | 5 +- inc/3rdparty/site_config | 1 - inc/poche/Database.class.php | 16 +- inc/poche/Poche.class.php | 311 ++++++++++++++---- inc/poche/Tools.class.php | 40 +-- inc/poche/config.inc.php | 77 +++-- inc/poche/config.inc.php.new | 56 ++++ inc/poche/global.inc.php | 72 ++++ index.php | 62 ++-- themes | 1 + tpl/_bookmarklet.twig | 3 - tpl/_footer.twig | 4 - tpl/_head.twig | 12 - tpl/_menu.twig | 7 - tpl/_messages.twig | 1 - tpl/_top.twig | 7 - tpl/config.twig | 61 ---- tpl/css/knacss.css | 1 - tpl/css/messages.css | 13 - tpl/css/print.css | 19 -- tpl/css/style-light.css | 55 ---- tpl/css/style.css | 300 ----------------- tpl/error.twig | 6 - tpl/export.twig | 1 - tpl/home.twig | 49 --- .../apple-touch-icon-144x144-precomposed.png | Bin 7349 -> 0 bytes .../apple-touch-icon-72x72-precomposed.png | Bin 6168 -> 0 bytes tpl/img/apple-touch-icon.png | Bin 5803 -> 0 bytes tpl/img/favicon.ico | Bin 346 -> 0 bytes tpl/img/light/backtotop.png | Bin 326 -> 0 bytes tpl/img/light/checkmark-off.png | Bin 277 -> 0 bytes tpl/img/light/checkmark-on.png | Bin 235 -> 0 bytes tpl/img/light/down.png | Bin 216 -> 0 bytes tpl/img/light/envelop.png | Bin 285 -> 0 bytes tpl/img/light/flattr.png | Bin 3521 -> 0 bytes tpl/img/light/left.png | Bin 196 -> 0 bytes tpl/img/light/remove.png | Bin 252 -> 0 bytes tpl/img/light/shaarli.png | Bin 729 -> 0 bytes tpl/img/light/star-off.png | Bin 314 -> 0 bytes tpl/img/light/star-on.png | Bin 281 -> 0 bytes tpl/img/light/top.png | Bin 212 -> 0 bytes tpl/img/light/twitter.png | Bin 297 -> 0 bytes tpl/img/logo.png | Bin 1350 -> 0 bytes tpl/img/messages/close.png | Bin 662 -> 0 bytes tpl/img/messages/cross.png | Bin 655 -> 0 bytes tpl/img/messages/help.png | Bin 786 -> 0 bytes tpl/img/messages/tick.png | Bin 537 -> 0 bytes tpl/img/messages/warning.png | Bin 666 -> 0 bytes tpl/install.twig | 28 -- tpl/js/jquery-2.0.3.min.js | 6 - tpl/js/restoreScroll.js | 25 -- tpl/layout.twig | 31 -- tpl/login.twig | 32 -- tpl/view.twig | 59 ---- 55 files changed, 479 insertions(+), 884 deletions(-) delete mode 160000 inc/3rdparty/site_config create mode 100755 inc/poche/config.inc.php.new create mode 100644 inc/poche/global.inc.php create mode 160000 themes delete mode 100644 tpl/_bookmarklet.twig delete mode 100644 tpl/_footer.twig delete mode 100644 tpl/_head.twig delete mode 100644 tpl/_menu.twig delete mode 100644 tpl/_messages.twig delete mode 100644 tpl/_top.twig delete mode 100644 tpl/config.twig delete mode 100644 tpl/css/knacss.css delete mode 100755 tpl/css/messages.css delete mode 100644 tpl/css/print.css delete mode 100644 tpl/css/style-light.css delete mode 100644 tpl/css/style.css delete mode 100644 tpl/error.twig delete mode 100644 tpl/export.twig delete mode 100644 tpl/home.twig delete mode 100644 tpl/img/apple-touch-icon-144x144-precomposed.png delete mode 100644 tpl/img/apple-touch-icon-72x72-precomposed.png delete mode 100644 tpl/img/apple-touch-icon.png delete mode 100644 tpl/img/favicon.ico delete mode 100755 tpl/img/light/backtotop.png delete mode 100644 tpl/img/light/checkmark-off.png delete mode 100644 tpl/img/light/checkmark-on.png delete mode 100644 tpl/img/light/down.png delete mode 100755 tpl/img/light/envelop.png delete mode 100644 tpl/img/light/flattr.png delete mode 100755 tpl/img/light/left.png delete mode 100644 tpl/img/light/remove.png delete mode 100644 tpl/img/light/shaarli.png delete mode 100644 tpl/img/light/star-off.png delete mode 100644 tpl/img/light/star-on.png delete mode 100755 tpl/img/light/top.png delete mode 100755 tpl/img/light/twitter.png delete mode 100644 tpl/img/logo.png delete mode 100755 tpl/img/messages/close.png delete mode 100755 tpl/img/messages/cross.png delete mode 100755 tpl/img/messages/help.png delete mode 100755 tpl/img/messages/tick.png delete mode 100755 tpl/img/messages/warning.png delete mode 100644 tpl/install.twig delete mode 100644 tpl/js/jquery-2.0.3.min.js delete mode 100644 tpl/js/restoreScroll.js delete mode 100644 tpl/layout.twig delete mode 100644 tpl/login.twig delete mode 100644 tpl/view.twig diff --git a/.gitignore b/.gitignore index 25818a8..b73c4b4 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,4 @@ composer.phar db/poche.sqlite output phpdoc* -inc/poche/myconfig.inc.php \ No newline at end of file +inc/poche/config.inc.php \ No newline at end of file diff --git a/.gitmodules b/.gitmodules index fcc2e52..9e7ad72 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "inc/3rdparty/site_config"] path = inc/3rdparty/site_config - url = git://github.com/inthepoche/site_config.git + url = git@github.com:inthepoche/site_config.git +[submodule "themes"] + path = themes + url = git@github.com:inthepoche/poche-themes.git diff --git a/inc/3rdparty/site_config b/inc/3rdparty/site_config deleted file mode 160000 index fe9f0d3..0000000 --- a/inc/3rdparty/site_config +++ /dev/null @@ -1 +0,0 @@ -Subproject commit fe9f0d3f60d44a8701f3ecab0c4077a4ed39bfe8 diff --git a/inc/poche/Database.class.php b/inc/poche/Database.class.php index 84916b8..4d66499 100644 --- a/inc/poche/Database.class.php +++ b/inc/poche/Database.class.php @@ -60,11 +60,15 @@ class Database { $id_user = intval($this->getLastId($sequence)); $sql = 'INSERT INTO users_config ( user_id, name, value ) VALUES (?, ?, ?)'; - $params = array($id_user, 'pager', '10'); + $params = array($id_user, 'pager', PAGINATION); $query = $this->executeQuery($sql, $params); $sql = 'INSERT INTO users_config ( user_id, name, value ) VALUES (?, ?, ?)'; - $params = array($id_user, 'language', 'en_EN.UTF8'); + $params = array($id_user, 'language', LANG); + $query = $this->executeQuery($sql, $params); + + $sql = 'INSERT INTO users_config ( user_id, name, value ) VALUES (?, ?, ?)'; + $params = array($id_user, 'theme', DEFAULT_THEME); $query = $this->executeQuery($sql, $params); return TRUE; @@ -101,10 +105,16 @@ class Database { return $user; } - public function updatePassword($id, $password) + public function updatePassword($userId, $password) { $sql_update = "UPDATE users SET password=? WHERE id=?"; $params_update = array($password, $id); + $this->updateUserConfig($userId, 'password', $password); + } + + public function updateUserConfig($userId, $key, $value) { + $sql_update = "UPDATE users_config SET `value`=? WHERE `user_id`=? AND `name`=?"; + $params_update = array($value, $userId, $key); $query = $this->executeQuery($sql_update, $params_update); } diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php index 8770c7f..67fbd52 100644 --- a/inc/poche/Poche.class.php +++ b/inc/poche/Poche.class.php @@ -10,86 +10,54 @@ class Poche { + public static $canRenderTemplates = true; + public static $configFileAvailable = true; + public $user; public $store; public $tpl; public $messages; public $pagination; + + private $currentTheme = ''; + private $notInstalledMessage = ''; + + # @todo make this dynamic (actually install themes and save them in the database including author information et cetera) + private $installedThemes = array( + 'default' => array('requires' => array()), + 'dark' => array('requires' => array('default')), + 'dmagenta' => array('requires' => array('default')), + 'solarized' => array('requires' => array('default')), + 'solarized-dark' => array('requires' => array('default')) + ); - function __construct() + public function __construct() { - $this->initTpl(); - if (!$this->checkBeforeInstall()) { - exit; + if (! $this->configFileIsAvailable()) { + return; } - $this->store = new Database(); + $this->init(); + + if (! $this->themeIsInstalled()) { + return; + } + + $this->initTpl(); + + if (! $this->systemIsInstalled()) { + return; + } + + $this->store = new Database(); $this->messages = new Messages(); # installation - if(!$this->store->isInstalled()) - { + if (! $this->store->isInstalled()) { $this->install(); } } - - /** - * all checks before installation. - * @return boolean - */ - private function checkBeforeInstall() - { - $msg = ''; - $allIsGood = TRUE; - - if (!is_writable(CACHE)) { - Tools::logm('you don\'t have write access on cache directory'); - die('You don\'t have write access on cache directory.'); - } - else if (file_exists('./install/update.php') && !DEBUG_POCHE) { - $msg = '

    setup

    It\'s your first time here? Please copy /install/poche.sqlite in db folder. Then, delete install folder.
    If you have already installed poche, an update is needed by clicking here.

    '; - $allIsGood = FALSE; - } - else if (file_exists('./install') && !DEBUG_POCHE) { - $msg = '

    setup

    If you want to update your poche, you just have to delete /install folder.
    To install your poche with sqlite, copy /install/poche.sqlite in /db and delete the folder /install. you have to delete the /install folder before using poche.

    '; - $allIsGood = FALSE; - } - else if (STORAGE == 'sqlite' && !is_writable(STORAGE_SQLITE)) { - Tools::logm('you don\'t have write access on sqlite file'); - $msg = '

    error

    You don\'t have write access on sqlite file.

    '; - $allIsGood = FALSE; - } - - if (!$allIsGood) { - echo $this->tpl->render('error.twig', array( - 'msg' => $msg - )); - } - - return $allIsGood; - } - - private function initTpl() - { - # template engine - $loader = new Twig_Loader_Filesystem(TPL); - if (DEBUG_POCHE) { - $twig_params = array(); - } - else { - $twig_params = array('cache' => CACHE); - } - $this->tpl = new Twig_Environment($loader, $twig_params); - $this->tpl->addExtension(new Twig_Extensions_Extension_I18n()); - # filter to display domain name of an url - $filter = new Twig_SimpleFilter('getDomain', 'Tools::getDomain'); - $this->tpl->addFilter($filter); - - # filter for reading time - $filter = new Twig_SimpleFilter('getReadingTime', 'Tools::getReadingTime'); - $this->tpl->addFilter($filter); - } - + private function init() { Tools::initPhp(); @@ -98,8 +66,7 @@ class Poche if (isset($_SESSION['poche_user']) && $_SESSION['poche_user'] != array()) { $this->user = $_SESSION['poche_user']; - } - else { + } else { # fake user, just for install & login screens $this->user = new User(); $this->user->setConfig($this->getDefaultConfig()); @@ -114,13 +81,149 @@ class Poche # Pagination $this->pagination = new Paginator($this->user->getConfigValue('pager'), 'p'); + + # Set up theme + $themeDirectory = $this->user->getConfigValue('theme'); + + if ($themeDirectory === false) { + $themeDirectory = DEFAULT_THEME; + } + + $this->currentTheme = $themeDirectory; + } + + public function configFileIsAvailable() { + if (! self::$configFileAvailable) { + $this->notInstalledMessage = 'You have to rename inc/poche/config.inc.php.new to inc/poche/config.inc.php.'; + + return false; + } + + return true; + } + + public function themeIsInstalled() { + # Twig is an absolute requirement for Poche to function. Abort immediately if the Composer installer hasn't been run yet + if (! self::$canRenderTemplates) { + $this->notInstalledMessage = 'Twig does not seem to be installed. Please initialize the Composer installation to automatically fetch dependencies. Have a look at the documentation.'; + + return false; + } + + # Check if the selected theme and its requirements are present + if (! is_dir(THEME . '/' . $this->getTheme())) { + $this->notInstalledMessage = 'The currently selected theme (' . $this->getTheme() . ') does not seem to be properly installed (Missing directory: ' . THEME . '/' . $this->getTheme() . ')'; + + self::$canRenderTemplates = false; + + return false; + } + + foreach ($this->installedThemes[$this->getTheme()]['requires'] as $requiredTheme) { + if (! is_dir(THEME . '/' . $requiredTheme)) { + $this->notInstalledMessage = 'The required "' . $requiredTheme . '" theme is missing for the current theme (' . $this->getTheme() . ')'; + + self::$canRenderTemplates = false; + + return false; + } + } + + return true; + } + + /** + * all checks before installation. + * @todo move HTML to template + * @return boolean + */ + public function systemIsInstalled() + { + $msg = ''; + + $configSalt = defined('SALT') ? constant('SALT') : ''; + + if (empty($configSalt)) { + $msg = '

    error

    You have not yet filled in the SALT value in the config.inc.php file.

    '; + } else if (! is_writable(CACHE)) { + Tools::logm('you don\'t have write access on cache directory'); + $msg = '

    error

    You don\'t have write access on cache directory.

    '; + } else if (STORAGE == 'sqlite' && ! file_exists(STORAGE_SQLITE)) { + Tools::logm('sqlite file doesn\'t exist'); + $msg = '

    error

    sqlite file doesn\'t exist, you can find it in install folder.

    '; + } else if (file_exists(ROOT . '/install/update.php') && ! DEBUG_POCHE) { + $msg = '

    setup

    It\'s your first time here? Please copy /install/poche.sqlite in db folder. Then, delete install folder.
    If you have already installed poche, an update is needed by clicking here.

    '; + } else if (is_dir(ROOT . '/install') && ! DEBUG_POCHE) { + $msg = '

    setup

    If you want to update your poche, you just have to delete /install folder.
    To install your poche with sqlite, copy /install/poche.sqlite in /db and delete the folder /install. you have to delete the /install folder before using poche.

    '; + } else if (STORAGE == 'sqlite' && ! is_writable(STORAGE_SQLITE)) { + Tools::logm('you don\'t have write access on sqlite file'); + $msg = '

    error

    You don\'t have write access on sqlite file.

    '; + } + + if (! empty($msg)) { + $this->notInstalledMessage = $msg; + + return false; + } + + return true; + } + + public function getNotInstalledMessage() { + return $this->notInstalledMessage; + } + + private function initTpl() + { + $loaderChain = new Twig_Loader_Chain(); + + # add the current theme as first to the loader chain so Twig will look there first for overridden template files + try { + $loaderChain->addLoader(new Twig_Loader_Filesystem(THEME . '/' . $this->getTheme())); + } catch (Twig_Error_Loader $e) { + # @todo isInstalled() should catch this, inject Twig later + die('The currently selected theme (' . $this->getTheme() . ') does not seem to be properly installed (' . THEME . '/' . $this->getTheme() .' is missing)'); + } + + # add all required themes to the loader chain + foreach ($this->installedThemes[$this->getTheme()]['requires'] as $requiredTheme) { + try { + $loaderChain->addLoader(new Twig_Loader_Filesystem(THEME . '/' . DEFAULT_THEME)); + } catch (Twig_Error_Loader $e) { + # @todo isInstalled() should catch this, inject Twig later + die('The required "' . $requiredTheme . '" theme is missing for the current theme (' . $this->getTheme() . ')'); + } + } + + if (DEBUG_POCHE) { + $twig_params = array(); + } else { + $twig_params = array('cache' => CACHE); + } + + $this->tpl = new Twig_Environment($loaderChain, $twig_params); + $this->tpl->addExtension(new Twig_Extensions_Extension_I18n()); + + # filter to display domain name of an url + $filter = new Twig_SimpleFilter('getDomain', 'Tools::getDomain'); + $this->tpl->addFilter($filter); + + # filter for reading time + $filter = new Twig_SimpleFilter('getReadingTime', 'Tools::getReadingTime'); + $this->tpl->addFilter($filter); + + # filter for simple filenames in config view + $filter = new Twig_SimpleFilter('getPrettyFilename', function($string) { return str_replace(ROOT, '', $string); }); + $this->tpl->addFilter($filter); } private function install() { Tools::logm('poche still not installed'); echo $this->tpl->render('install.twig', array( - 'token' => Session::getToken() + 'token' => Session::getToken(), + 'theme' => $this->getTheme(), + 'poche_url' => Tools::getPocheUrl() )); if (isset($_GET['install'])) { if (($_POST['password'] == $_POST['password_repeat']) @@ -140,13 +243,41 @@ class Poche } exit(); } + + public function getTheme() { + return $this->currentTheme; + } + + public function getInstalledThemes() { + $handle = opendir(THEME); + $themes = array(); + + while (($theme = readdir($handle)) !== false) { + # Themes are stored in a directory, so all directory names are themes + # @todo move theme installation data to database + if (! is_dir(THEME . '/' . $theme) || in_array($theme, array('..', '.'))) { + continue; + } + + $current = false; + + if ($theme === $this->getTheme()) { + $current = true; + } + + $themes[] = array('name' => $theme, 'current' => $current); + } + + return $themes; + } public function getDefaultConfig() - { + { return array( 'pager' => PAGINATION, 'language' => LANG, - ); + 'theme' => DEFAULT_THEME + ); } /** @@ -231,7 +362,9 @@ class Poche $prod = $this->getPocheVersion('prod'); $compare_dev = version_compare(POCHE_VERSION, $dev); $compare_prod = version_compare(POCHE_VERSION, $prod); + $themes = $this->getInstalledThemes(); $tpl_vars = array( + 'themes' => $themes, 'dev' => $dev, 'prod' => $prod, 'compare_dev' => $compare_dev, @@ -316,6 +449,44 @@ class Poche } } } + + public function updateTheme() + { + # no data + if (empty($_POST['theme'])) { + } + + # we are not going to change it to the current theme... + if ($_POST['theme'] == $this->getTheme()) { + $this->messages->add('w', _('still using the "' . $this->getTheme() . '" theme!')); + Tools::redirect('?view=config'); + } + + $themes = $this->getInstalledThemes(); + $actualTheme = false; + + foreach ($themes as $theme) { + if ($theme['name'] == $_POST['theme']) { + $actualTheme = true; + break; + } + } + + if (! $actualTheme) { + $this->messages->add('e', _('that theme does not seem to be installed')); + Tools::redirect('?view=config'); + } + + $this->store->updateUserConfig($this->user->getId(), 'theme', $_POST['theme']); + $this->messages->add('s', _('you have changed your theme preferences')); + + $currentConfig = $_SESSION['poche_user']->config; + $currentConfig['theme'] = $_POST['theme']; + + $_SESSION['poche_user']->setConfig($currentConfig); + + Tools::redirect('?view=config'); + } /** * checks if login & password are correct and save the user in session. diff --git a/inc/poche/Tools.class.php b/inc/poche/Tools.class.php index 1ab90be..8eb988f 100644 --- a/inc/poche/Tools.class.php +++ b/inc/poche/Tools.class.php @@ -84,9 +84,9 @@ class Tools public static function getTplFile($view) { - $tpl_file = 'home.twig'; - switch ($view) - { + $default_tpl = 'home.twig'; + + switch ($view) { case 'install': $tpl_file = 'install.twig'; break; @@ -102,9 +102,20 @@ class Tools case 'view': $tpl_file = 'view.twig'; break; + + case 'login': + $tpl_file = 'login.twig'; + break; + + case 'error': + $tpl_file = 'error.twig'; + break; + default: - break; + $tpl_file = $default_tpl; + break; } + return $tpl_file; } @@ -228,27 +239,6 @@ class Tools return $minutes; } - - public static function createMyConfig() - { - $myconfig_file = './inc/poche/myconfig.inc.php'; - - if (!is_writable('./inc/poche/')) { - self::logm('you don\'t have write access to create ./inc/poche/myconfig.inc.php'); - die('You don\'t have write access to create ./inc/poche/myconfig.inc.php.'); - } - - if (!file_exists($myconfig_file)) - { - $fp = fopen($myconfig_file, 'w'); - fwrite($fp, ' + * @author Nicolas Lœuillet * @copyright 2013 * @license http://www.wtfpl.net/ see COPYING file */ -require_once __DIR__ . '/../../inc/poche/define.inc.php'; +define ('SALT', ''); # put a strong string here +define ('LANG', 'en_EN.utf8'); -# /!\ Be careful if you change the lines below /!\ -if (!file_exists(__DIR__ . '/../../vendor/autoload.php')) { - die('Twig does not seem installed. Have a look at the documentation.'); -} +define ('STORAGE', 'sqlite'); # postgres, mysql or sqlite -require_once __DIR__ . '/../../inc/poche/User.class.php'; -require_once __DIR__ . '/../../inc/poche/Url.class.php'; -require_once __DIR__ . '/../../inc/3rdparty/class.messages.php'; -require_once __DIR__ . '/../../inc/poche/Poche.class.php'; -require_once __DIR__ . '/../../inc/3rdparty/Readability.php'; -require_once __DIR__ . '/../../inc/poche/PocheReadability.php'; -require_once __DIR__ . '/../../inc/3rdparty/Encoding.php'; -require_once __DIR__ . '/../../inc/poche/Database.class.php'; -require_once __DIR__ . '/../../vendor/autoload.php'; -require_once __DIR__ . '/../../inc/3rdparty/simple_html_dom.php'; -require_once __DIR__ . '/../../inc/3rdparty/paginator.php'; -require_once __DIR__ . '/../../inc/3rdparty/Session.class.php'; +define ('STORAGE_SQLITE', ROOT . '/db/poche.sqlite'); # if you are using sqlite, where the database file is located -require_once __DIR__ . '/../../inc/3rdparty/simplepie/SimplePieAutoloader.php'; -require_once __DIR__ . '/../../inc/3rdparty/simplepie/SimplePie/Core.php'; -require_once __DIR__ . '/../../inc/3rdparty/content-extractor/ContentExtractor.php'; -require_once __DIR__ . '/../../inc/3rdparty/content-extractor/SiteConfig.php'; -require_once __DIR__ . '/../../inc/3rdparty/humble-http-agent/HumbleHttpAgent.php'; -require_once __DIR__ . '/../../inc/3rdparty/humble-http-agent/SimplePie_HumbleHttpAgent.php'; -require_once __DIR__ . '/../../inc/3rdparty/humble-http-agent/CookieJar.php'; -require_once __DIR__ . '/../../inc/3rdparty/feedwriter/FeedItem.php'; -require_once __DIR__ . '/../../inc/3rdparty/feedwriter/FeedWriter.php'; -require_once __DIR__ . '/../../inc/3rdparty/feedwriter/DummySingleItemFeed.php'; -require_once __DIR__ . '/../../inc/3rdparty/FlattrItem.class.php'; +# only for postgres & mysql +define ('STORAGE_SERVER', 'localhost'); +define ('STORAGE_DB', 'poche'); +define ('STORAGE_USER', 'poche'); +define ('STORAGE_PASSWORD', 'poche'); -if (DOWNLOAD_PICTURES) { - require_once __DIR__ . '/../../inc/poche/pochePictures.php'; -} +################################################################################# +# Do not trespass unless you know what you are doing +################################################################################# -if (!ini_get('date.timezone') || !@date_default_timezone_set(ini_get('date.timezone'))) { - date_default_timezone_set('UTC'); -} +define ('MODE_DEMO', FALSE); +define ('DEBUG_POCHE', true); +define ('DOWNLOAD_PICTURES', FALSE); +define ('CONVERT_LINKS_FOOTNOTES', FALSE); +define ('REVERT_FORCED_PARAGRAPH_ELEMENTS', FALSE); +define ('SHARE_TWITTER', TRUE); +define ('SHARE_MAIL', TRUE); +define ('SHARE_SHAARLI', FALSE); +define ('SHAARLI_URL', 'http://myshaarliurl.com'); +define ('FLATTR', TRUE); +define ('FLATTR_API', 'https://api.flattr.com/rest/v2/things/lookup/?url='); +define ('NOT_FLATTRABLE', '0'); +define ('FLATTRABLE', '1'); +define ('FLATTRED', '2'); +define ('ABS_PATH', 'assets/'); -$poche = new Poche(); \ No newline at end of file +define ('DEFAULT_THEME', 'default'); + +define ('THEME', ROOT . '/themes'); +define ('LOCALE', ROOT . '/locale'); +define ('CACHE', ROOT . '/cache'); + +define ('PAGINATION', '10'); + +define ('POCHE_VERSION', '1.0-beta5'); + +define ('IMPORT_POCKET_FILE', ROOT . '/ril_export.html'); +define ('IMPORT_READABILITY_FILE', ROOT . '/readability'); +define ('IMPORT_INSTAPAPER_FILE', ROOT . '/instapaper-export.html'); \ No newline at end of file diff --git a/inc/poche/config.inc.php.new b/inc/poche/config.inc.php.new new file mode 100755 index 0000000..5c304d1 --- /dev/null +++ b/inc/poche/config.inc.php.new @@ -0,0 +1,56 @@ + + * @copyright 2013 + * @license http://www.wtfpl.net/ see COPYING file + */ + +define ('SALT', ''); # put a strong string here +define ('LANG', 'en_EN.utf8'); + +define ('STORAGE', 'sqlite'); # postgres, mysql or sqlite + +define ('STORAGE_SQLITE', ROOT . '/db/poche.sqlite'); # if you are using sqlite, where the database file is located + +# only for postgres & mysql +define ('STORAGE_SERVER', 'localhost'); +define ('STORAGE_DB', 'poche'); +define ('STORAGE_USER', 'poche'); +define ('STORAGE_PASSWORD', 'poche'); + +################################################################################# +# Do not trespass unless you know what you are doing +################################################################################# + +define ('MODE_DEMO', FALSE); +define ('DEBUG_POCHE', true); +define ('DOWNLOAD_PICTURES', FALSE); +define ('CONVERT_LINKS_FOOTNOTES', FALSE); +define ('REVERT_FORCED_PARAGRAPH_ELEMENTS', FALSE); +define ('SHARE_TWITTER', TRUE); +define ('SHARE_MAIL', TRUE); +define ('SHARE_SHAARLI', FALSE); +define ('SHAARLI_URL', 'http://myshaarliurl.com'); +define ('FLATTR', TRUE); +define ('FLATTR_API', 'https://api.flattr.com/rest/v2/things/lookup/?url='); +define ('NOT_FLATTRABLE', '0'); +define ('FLATTRABLE', '1'); +define ('FLATTRED', '2'); +define ('ABS_PATH', 'assets/'); + +define ('DEFAULT_THEME', 'default'); + +define ('THEME', ROOT . '/themes'); +define ('LOCALE', ROOT . '/locale'); +define ('CACHE', ROOT . '/cache'); + +define ('PAGINATION', '10'); + +define ('POCHE_VERSION', '1.0-beta5'); + +define ('IMPORT_POCKET_FILE', ROOT . '/ril_export.html'); +define ('IMPORT_READABILITY_FILE', ROOT . '/readability'); +define ('IMPORT_INSTAPAPER_FILE', ROOT . '/instapaper-export.html'); \ No newline at end of file diff --git a/inc/poche/global.inc.php b/inc/poche/global.inc.php new file mode 100644 index 0000000..2437d06 --- /dev/null +++ b/inc/poche/global.inc.php @@ -0,0 +1,72 @@ + + * @copyright 2013 + * @license http://www.wtfpl.net/ see COPYING file + */ + +# the poche system root directory (/inc) +define('INCLUDES', dirname(__FILE__) . '/..'); + +# the poche root directory +define('ROOT', INCLUDES . '/..'); + +require_once INCLUDES . '/poche/Tools.class.php'; +require_once INCLUDES . '/poche/User.class.php'; +require_once INCLUDES . '/poche/Url.class.php'; +require_once INCLUDES . '/3rdparty/class.messages.php'; +require_once INCLUDES . '/poche/Poche.class.php'; + +require_once INCLUDES . '/3rdparty/Readability.php'; +require_once INCLUDES . '/poche/PocheReadability.php'; + +require_once INCLUDES . '/3rdparty/Encoding.php'; +require_once INCLUDES . '/poche/Database.class.php'; +require_once INCLUDES . '/3rdparty/simple_html_dom.php'; +require_once INCLUDES . '/3rdparty/paginator.php'; +require_once INCLUDES . '/3rdparty/Session.class.php'; + +require_once INCLUDES . '/3rdparty/simplepie/SimplePieAutoloader.php'; +require_once INCLUDES . '/3rdparty/simplepie/SimplePie/Core.php'; +require_once INCLUDES . '/3rdparty/content-extractor/ContentExtractor.php'; +require_once INCLUDES . '/3rdparty/content-extractor/SiteConfig.php'; +require_once INCLUDES . '/3rdparty/humble-http-agent/HumbleHttpAgent.php'; +require_once INCLUDES . '/3rdparty/humble-http-agent/SimplePie_HumbleHttpAgent.php'; +require_once INCLUDES . '/3rdparty/humble-http-agent/CookieJar.php'; +require_once INCLUDES . '/3rdparty/feedwriter/FeedItem.php'; +require_once INCLUDES . '/3rdparty/feedwriter/FeedWriter.php'; +require_once INCLUDES . '/3rdparty/feedwriter/DummySingleItemFeed.php'; +require_once INCLUDES . '/3rdparty/FlattrItem.class.php'; + +# Composer its autoloader for automatically loading Twig +if (! file_exists(ROOT . '/vendor/autoload.php')) { + Poche::$canRenderTemplates = false; +} else { + require_once ROOT . '/vendor/autoload.php'; +} + +# system configuration; database credentials et cetera +if (! file_exists(INCLUDES . '/poche/config.inc.php')) { + Poche::$configFileAvailable = false; +} else { + require_once INCLUDES . '/poche/config.inc.php'; +} + +if (Poche::$configFileAvailable && DOWNLOAD_PICTURES) { + require_once INCLUDES . '/poche/pochePictures.php'; +} + +if (!ini_get('date.timezone') || !@date_default_timezone_set(ini_get('date.timezone'))) { + date_default_timezone_set('UTC'); +} + +#XSRF protection with token +if (!empty($_POST)) { + if (!Session::isToken($_POST['token'])) { + die(_('Wrong token')); + } + unset($_SESSION['token']); +} \ No newline at end of file diff --git a/index.php b/index.php index 52a400a..4aebfe1 100644 --- a/index.php +++ b/index.php @@ -8,13 +8,11 @@ * @license http://www.wtfpl.net/ see COPYING file */ -if (file_exists(__DIR__ . '/inc/poche/myconfig.inc.php')) { - require_once __DIR__ . '/inc/poche/myconfig.inc.php'; -} -require_once './inc/poche/Tools.class.php'; -Tools::createMyConfig(); +require_once 'inc/poche/global.inc.php'; -include dirname(__FILE__).'/inc/poche/config.inc.php'; +# Start Poche +$poche = new Poche(); +$notInstalledMessage = $poche -> getNotInstalledMessage(); # Parse GET & REFERER vars $referer = empty($_SERVER['HTTP_REFERER']) ? '' : $_SERVER['HTTP_REFERER']; @@ -24,47 +22,57 @@ $id = Tools::checkVar('id'); $_SESSION['sort'] = Tools::checkVar('sort', 'id'); $url = new Url((isset ($_GET['url'])) ? $_GET['url'] : ''); +# vars to _always_ send to templates +$tpl_vars = array( + 'referer' => $referer, + 'view' => $view, + 'poche_url' => Tools::getPocheUrl(), + 'title' => _('poche, a read it later open source system'), + 'token' => Session::getToken(), + 'theme' => $poche->getTheme() +); + +if (! empty($notInstalledMessage)) { + if (! Poche::$canRenderTemplates || ! Poche::$configFileAvailable) { + # We cannot use Twig to display the error message + die($notInstalledMessage); + } else { + # Twig is installed, put the error message in the template + $tpl_file = Tools::getTplFile('error'); + $tpl_vars = array_merge($tpl_vars, array('msg' => $poche->getNotInstalledMessage())); + echo $poche->tpl->render($tpl_file, $tpl_vars); + exit; + } +} + # poche actions if (isset($_GET['login'])) { # hello you $poche->login($referer); -} -elseif (isset($_GET['logout'])) { +} elseif (isset($_GET['logout'])) { # see you soon ! $poche->logout(); -} -elseif (isset($_GET['config'])) { +} elseif (isset($_GET['config'])) { # Update password $poche->updatePassword(); -} -elseif (isset($_GET['import'])) { +} elseif (isset($_GET['import'])) { $import = $poche->import($_GET['from']); -} -elseif (isset($_GET['export'])) { +} elseif (isset($_GET['export'])) { $poche->export(); +} elseif (isset($_GET['updatetheme'])) { + $poche->updateTheme(); } elseif (isset($_GET['plainurl']) && !empty($_GET['plainurl'])) { $plain_url = new Url(base64_encode($_GET['plainurl'])); $poche->action('add', $plain_url); } -# vars to send to templates -$tpl_vars = array( - 'lang' => Tools::getDocLanguage($poche->user->getConfigValue('language')), - 'referer' => $referer, - 'view' => $view, - 'poche_url' => Tools::getPocheUrl(), - 'title' => _('poche, a read it later open source system'), - 'token' => Session::getToken(), -); - if (Session::isLogged()) { $poche->action($action, $url, $id); $tpl_file = Tools::getTplFile($view); $tpl_vars = array_merge($tpl_vars, $poche->displayView($view, $id)); -} -else { - $tpl_file = 'login.twig'; +} else { + $tpl_file = Tools::getTplFile('login'); } # because messages can be added in $poche->action(), we have to add this entry now (we can add it before) diff --git a/themes b/themes new file mode 160000 index 0000000..e124e42 --- /dev/null +++ b/themes @@ -0,0 +1 @@ +Subproject commit e124e4241ab374f2d825891377e5c4011d48edf0 diff --git a/tpl/_bookmarklet.twig b/tpl/_bookmarklet.twig deleted file mode 100644 index 2f3b2d1..0000000 --- a/tpl/_bookmarklet.twig +++ /dev/null @@ -1,3 +0,0 @@ - \ No newline at end of file diff --git a/tpl/_footer.twig b/tpl/_footer.twig deleted file mode 100644 index 6891756..0000000 --- a/tpl/_footer.twig +++ /dev/null @@ -1,4 +0,0 @@ -
    -

    {% trans "powered by" %} poche

    - {% if constant('DEBUG_POCHE') == 1 %}

    {% trans "debug mode is on so cache is off." %} {% trans "your poche version:" %}{{constant('POCHE_VERSION')}}. {% trans "storage:" %} {{constant('STORAGE')}}

    {% endif %} -
    \ No newline at end of file diff --git a/tpl/_head.twig b/tpl/_head.twig deleted file mode 100644 index cab317a..0000000 --- a/tpl/_head.twig +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/tpl/_menu.twig b/tpl/_menu.twig deleted file mode 100644 index 523d63c..0000000 --- a/tpl/_menu.twig +++ /dev/null @@ -1,7 +0,0 @@ - \ No newline at end of file diff --git a/tpl/_messages.twig b/tpl/_messages.twig deleted file mode 100644 index 679aa09..0000000 --- a/tpl/_messages.twig +++ /dev/null @@ -1 +0,0 @@ - {{ messages | raw }} \ No newline at end of file diff --git a/tpl/_top.twig b/tpl/_top.twig deleted file mode 100644 index dc20081..0000000 --- a/tpl/_top.twig +++ /dev/null @@ -1,7 +0,0 @@ -
    -

    - {% if view == 'home' %}{% block logo %}logo poche{% endblock %} - {% else %}{{ block('logo') }} - {% endif %} -

    -
    \ No newline at end of file diff --git a/tpl/config.twig b/tpl/config.twig deleted file mode 100644 index f125c99..0000000 --- a/tpl/config.twig +++ /dev/null @@ -1,61 +0,0 @@ -{% extends "layout.twig" %} - -{% block title %}{% trans "config" %}{% endblock %} -{% block menu %} -{% include '_menu.twig' %} -{% endblock %} -{% block content %} -

    {% trans "Poching a link" %}

    -

    {% trans "You can poche a link by several methods:" %} (?)

    - - -

    {% trans "Updating poche" %}

    - - -

    {% trans "Change your password" %}

    -
    -
    -
    - - -
    -
    - - -
    -
    - -
    -
    - - -
    - -

    {% trans "Import" %}

    -

    {% trans "Please execute the import script locally, it can take a very long time." %}

    -

    {% trans "More infos in the official doc:" %} inthepoche.com

    - - -

    {% trans "Export your poche datas" %}

    -

    {% trans "Click here" %} {% trans "to export your poche datas." %}

    -{% endblock %} \ No newline at end of file diff --git a/tpl/css/knacss.css b/tpl/css/knacss.css deleted file mode 100644 index ca0696b..0000000 --- a/tpl/css/knacss.css +++ /dev/null @@ -1 +0,0 @@ -html{font-size:62.5%}body{font-family:"Century Gothic",helvetica,arial,sans-serif;font-size:1.4em;line-height:1.5;color:#000;background-color:#FFF}p,ul,ol,dl,blockquote,pre,td,th,label,textarea,caption,details,figure,hgroup{margin:.75em 0 0;font-size:1em;line-height:1.5}h1,.h1-like{margin:.8077em 0 0 0;font-size:1.8571em;font-weight:normal;line-height:1.6154em}h2,.h2-like{margin:.875em 0 0 0;font-size:1.7143em;font-weight:normal;line-height:1.75em}h3,.h3-like{margin:.9545em 0 0 0;font-size:1.5714em;font-weight:normal;line-height:1.909em}h4,.h4-like{margin:1.05em 0 0 0;font-size:1.4286em;font-weight:normal;line-height:1.05em}h5,.h5-like{margin:1.1667em 0 0 0;font-size:1.2857em;font-weight:normal;line-height:1.1667em}h6,.h6-like{margin:1.3125em 0 0 0;font-size:1.1429em;font-weight:normal;line-height:1.3125em}.smaller{font-size:.7143em}.small{font-size:.8571em}.big{font-size:1.1429em}.bigger{font-size:1.2857em}.biggest{font-size:1.4286em}html,body,textarea,figure,label{margin:0;padding:0}ul,ol{padding-left:2em}code,pre,samp,kbd{font-family:consolas,'DejaVu Sans Mono',courier,monospace;line-height:1em;white-space:pre-wrap}code,kbd,mark{border-radius:2px}em{font-style:italic}strong{font-weight:bold}kbd{padding:0 2px;border:1px solid #999}code{padding:2px 4px;color:#B11;background:rgba(0,0,0,.04)}mark{padding:2px 4px;background:#FF0}table{margin-bottom:1.5em}p:first-child,ul:first-child,ol:first-child,dl:first-child,blockquote:first-child,pre:first-child,h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,h6:first-child{margin-top:0}li p,li ul,li ol{margin-top:0;margin-bottom:0}img,table,td,blockquote,code,pre,textarea,input,video{max-width:100%}div,textarea,table,td,th,code,pre,samp{word-wrap:break-word;-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;-o-hyphens:auto;hyphens:auto}img{height:auto;vertical-align:middle}#map_canvas img,.gmnoprint img{max-width:none}a img{border:0}body > script{display:none !important}.skip-links{position:absolute}.skip-links a{position:absolute;left:-7000px;padding:.5em;text-decoration:none;color:#FFF;background:#000}.skip-links a:focus{position:static}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mod,.item{overflow:hidden}.row{display:table;width:100%;table-layout:fixed}.row > *,.col{display:table-cell;vertical-align:top}.clear,.line,.row{clear:both}.clearfix:after,.line:after,.mod:after{content:"";display:table;clear:both}.left{float:left}img.left{margin-right:1em}.right{float:right}img.right{margin-left:1em}img.left,img.right{margin-bottom:5px}.center{margin-right:auto;margin-left:auto}.txtleft{text-align:left}.txtright{text-align:right}.txtcenter{text-align:center}.inbl{display:inline-block;margin-right:-.25em;vertical-align:top}.w10{width:10%}.w20{width:20%}.w25{width:25%}.w30{width:30%}.w33{width:33.333%}.w40{width:40%}.w50{width:50%}.w60{width:60%}.w66{width:66.666%}.w70{width:70%}.w75{width:75%}.w80{width:80%}.w90{width:90%}.w100{width:100%}.w50p{width:50px}.w100p{width:100px}.w150p{width:150px}.w200p{width:200px}.w300p{width:300px}.w400p{width:400px}.w500p{width:500px}.w600p{width:600px}.w700p{width:700px}.w800p{width:800px}.w960p{width:960px}.mw960p{max-width:960px}.m-reset,.ma0{margin:0 !important}.p-reset,.pa0{padding:0 !important}.ma1,.mas{margin:10px !important}.ma2,.mam{margin:20px !important}.ma3,.mal{margin:30px !important}.pa1,.pas{padding:10px}.pa2,.pam{padding:20px}.pa3,.pal{padding:30px}.mt0,.mtn{margin-top:0 !important}.mt1,.mts{margin-top:10px !important}.mt2,.mtm{margin-top:20px !important}.mt3,.mtl{margin-top:30px !important}.mr0,.mrn{margin-right:0}.mr1,.mrs{margin-right:10px}.mr2,.mrm{margin-right:20px}.mr3,.mrl{margin-right:30px}.mb0,.mbn{margin-bottom:0 !important}.mb1,.mbs{margin-bottom:10px !important}.mb2,.mbm{margin-bottom:20px !important}.mb3,.mbl{margin-bottom:30px !important}.ml0,.mln{margin-left:0}.ml1,.mls{margin-left:10px}.ml2,.mlm{margin-left:20px}.ml3,.mll{margin-left:30px}.pt0,.ptn{padding-top:0}.pt1,.pts{padding-top:10px}.pt2,.ptm{padding-top:20px}.pt3,.ptl{padding-top:30px}.pr0,.prn{padding-right:0}.pr1,.prs{padding-right:10px}.pr2,.prm{padding-right:20px}.pr3,.prl{padding-right:30px}.pb0,.pbn{padding-bottom:0}.pb1,.pbs{padding-bottom:10px}.pb2,.pbm{padding-bottom:20px}.pb3,.pbl{padding-bottom:30px}.pl0,.pln{padding-left:0}.pl1,.pls{padding-left:10px}.pl2,.plm{padding-left:20px}.pl3,.pll{padding-left:30px}.visually-hidden{position:absolute;left:-7000px;overflow:hidden}[dir=rtl] .visually-hidden{right:-7000px;left:auto}.desktop-hidden{display:none}form,fieldset{border:none}input,button,select,label,.btn{font-family:inherit;vertical-align:middle}textarea{font-family:inherit;resize:vertical}.ie67 .clearfix,.ie67 .line,.ie67 .mod,.ie67 .row,.ie67 .col{zoom:1}.ie67 .btn,.ie67 .col,.ie67 .inbl{display:inline;zoom:1}.ie8 img{width:auto}@media print{p,blockquote{orphans:2;widows:2}blockquote,ul,ol{page-break-inside:avoid}h1,h2,h3,caption{page-break-after:avoid}}@media(orientation:landscape)and(max-device-width:768px){html,body{-webkit-text-size-adjust:100%}}[class*=grid] > *{float:left}[class*=grid] > * + *{margin-left:2%}.grid2 > *{width:49%}.grid3 > *{width:32%}.grid4 > *{width:23.5%}.grid5 > *{width:18.4%}.grid6 > *{width:15%}.grid2-1 > *:first-child,.grid1-2 > * + *{width:66%}.grid1-2 > *:first-child,.grid2-1 > * + *{width:32%}.grid1-3 > *:first-child,.grid3-1 > * + *{width:23.5%}.grid3-1 > *:first-child,.grid1-3 > * + *{width:74.5%}table,.table{max-width:100%;border-collapse:collapse;table-layout:fixed;vertical-align:top}table{width:100%}.table{display:table}caption{padding:10px;font-style:italic;color:#555}table{border:1px solid #CCC}tr > * + *{border-left:1px solid #CCC}th,td{padding:.3em .8em;border-bottom:1px solid #CCC;text-align:left}td{color:#333}.alternate{border:0}.alternate tbody{border:1px solid #CCC}.alternate thead tr > * + *{border-left:0}.alternate tbody tr > * + *{border-left:1px solid #CCC}.alternate-vert{border:0;border-right:1px solid #CCC}.alternate-vert tr >:first-child{border-bottom:0}.alternate-vert tr > * + *{border-top:1px solid #CCC}.striped tbody tr:nth-child(odd){background:#EEE;background:rgba(0,0,0,.05)}.striped-vert tr >:first-child{background:#EEE;background:rgba(0,0,0,.05)}.btn{display:inline-block}label{display:inline-block;vertical-align:middle;cursor:pointer}legend{border:0;white-space:normal}button,input,select{margin:0;font-family:"Century Gothic",helvetica,arial,sans-serif;font-size:100%;vertical-align:middle}textarea{min-height:5em;overflow:auto;font-size:1.75em;vertical-align:top;resize:vertical}}ol.styled{counter-reset:styled}ol.styled > li{counter-increment:styled;margin-bottom:.3em;list-style-type:none}ol.styled > li:before{content:counter(styled);display:inline-block;width:1em;height:1em;margin-right:.4em;padding:2px;border-radius:50%;text-align:center;text-indent:-.1em;font-size:.9em;line-height:1;vertical-align:middle;color:#FFF;background:rgba(0,0,0,.5)}@media(min-width:1280px){.large-hidden,.tablet-hidden{display:none !important}.large-visible{display:block !important}.large-no-float{float:none}.large-inbl{display:inline-block;float:none;vertical-align:top}.large-row{display:table;width:100% !important;table-layout:fixed}.large-col{display:table-cell;vertical-align:top}.large-w25{width:25% !important}.large-w33{width:33.3333% !important}.large-w50{width:50% !important}.large-w66{width:66.6666% !important}.large-w75{width:75% !important}.large-w100{display:block !important;float:none !important;clear:none !important;width:auto !important;margin-right:0 !important;margin-left:0 !important;border:0}.large-ma0,.large-man{margin:0 !important}}@media(max-width:768px){.w60,.w66,.w70,.w75,.w80,.w90,.w100,.w600p,.w700p,.w800p,.w960p,.mw960p,.medium-wauto{width:auto}.medium-hidden,.tablet-hidden{display:none !important}.medium-visible{display:block !important}.medium-no-float{float:none}.medium-inbl{display:inline-block;float:none;vertical-align:top}.medium-row{display:table;width:100% !important;table-layout:fixed}.medium-col{display:table-cell;vertical-align:top}.medium-w25{width:25% !important}.medium-w33{width:33.3333% !important}.medium-w50{width:50% !important}.medium-w66{width:66.6666% !important}.medium-w75{width:75% !important}.medium-w100{display:block !important;float:none !important;clear:none !important;width:auto !important;margin-right:0 !important;margin-left:0 !important;border:0}.medium-ma0,.medium-man{margin:0 !important}.grid4 > *{width:49% !important}.grid4 >:first-child + * + *{margin-left:0 !important}.grid6 > *{width:32% !important}.grid6 >:first-child + * + * + *{margin-left:0 !important}}@media(max-width:640px){.mod,.item,.col,fieldset{display:block !important;float:none !important;clear:none !important;width:auto !important;margin-right:0 !important;margin-left:0 !important;border:0}.w30,.w33,.w40,.w50,.w300p,.w400p,.w500p{width:auto}.row{display:block !important;width:100% !important}.tiny-hidden,.phone-hidden{display:none !important}.tiny-visible{display:block !important}.tiny-no-float{float:none}.tiny-inbl{display:inline-block;float:none;vertical-align:top}.tiny-row{display:table;width:100% !important;table-layout:fixed}.tiny-col{display:table-cell;vertical-align:top}th,td{display:block !important;width:auto !important;text-align:left !important}thead{display:none}.tiny-w25{width:25% !important}.tiny-w33{width:33.3333% !important}.tiny-w50{width:50% !important}.tiny-w66{width:66.6666% !important}.tiny-w75{width:75% !important}.tiny-w100{display:block !important;float:none !important;clear:none !important;width:auto !important;margin-right:0 !important;margin-left:0 !important;border:0}.tiny-ma0,.tiny-man{margin:0 !important}} \ No newline at end of file diff --git a/tpl/css/messages.css b/tpl/css/messages.css deleted file mode 100755 index 9222bb8..0000000 --- a/tpl/css/messages.css +++ /dev/null @@ -1,13 +0,0 @@ -.messages { width: 400px; -moz-border-radius: 4px; border-radius: 4px; display: block; padding: 10px 0; margin: 10px auto 10px; clear: both; } -.messages a.closeMessage { margin: -14px -8px 0 0; display:none; width: 16px; height: 16px; float: right; background: url(../img/messages/close.png) no-repeat; } -/*.messages:hover a.closeMessage { visibility:visible; }*/ -.messages p { margin: 3px 0 3px 10px !important; padding: 0 10px 0 23px !important; font-size: 14px; line-height: 16px; } -.messages.error { border: 1px solid #C42608; color: #c00 !important; background: #FFF0EF; } -.messages.error p { background: url(../img/messages/cross.png ) no-repeat 0px 50%; color:#c00 !important; } -.messages.success {background: #E0FBCC; border: 1px solid #6DC70C; } -.messages.success p { background: url(../img/messages/tick.png) no-repeat 0px 50%; color: #2B6301 !important; } -.messages.warning { background: #FFFCD3; border: 1px solid #EBCD41; color: #000; } -.messages.warning p { background: url(../img/messages/warning.png ) no-repeat 0px 50%; color: #5F4E01; } -.messages.information, .messages.info { background: #DFEBFB; border: 1px solid #82AEE7; } -.messages.information p, .messages.info p { background: url(../img/messages/help.png ) no-repeat 0px 50%; color: #064393; } -.messages.information a { text-decoration: underline; } \ No newline at end of file diff --git a/tpl/css/print.css b/tpl/css/print.css deleted file mode 100644 index a3b0a59..0000000 --- a/tpl/css/print.css +++ /dev/null @@ -1,19 +0,0 @@ -body > header, -body > footer, -a.top_link, -div.tools, -header div -{ - display: none !important; -} - -article -{ - border: none !important; -} - -div.vieworiginal a::after -{ - margin-left: 5px; - content: "("attr(href)")"; -} diff --git a/tpl/css/style-light.css b/tpl/css/style-light.css deleted file mode 100644 index a85961c..0000000 --- a/tpl/css/style-light.css +++ /dev/null @@ -1,55 +0,0 @@ -a.back span { - background: url('../img/light/left.png'); -} - -a.top span { - background: url('../img/light/top.png'); -} - -a.fav span { - background: url('../img/light/star-on.png'); -} -a.fav span:hover { - background: url('../img/light/star-off.png'); -} - -a.fav-off span { - background: url('../img/light/star-off.png'); -} -a.fav-off span:hover { - background: url('../img/light/star-on.png'); -} - -a.archive span { - background: url('../img/light/checkmark-on.png'); -} -a.archive span:hover { - background: url('../img/light/checkmark-off.png'); -} - -a.archive-off span { - background: url('../img/light/checkmark-off.png'); -} -a.archive-off span:hover { - background: url('../img/light/checkmark-on.png'); -} - -a.twitter span { - background: url('../img/light/twitter.png'); -} - -a.shaarli span { - background: url('../img/light/shaarli.png'); -} - -a.flattr span { - background: url('../img/light/flattr.png'); -} - -a.email span { - background: url('../img/light/envelop.png'); -} - -a.delete span { - background: url('../img/light/remove.png'); -} \ No newline at end of file diff --git a/tpl/css/style.css b/tpl/css/style.css deleted file mode 100644 index d60b443..0000000 --- a/tpl/css/style.css +++ /dev/null @@ -1,300 +0,0 @@ -body { - font-size: 16px; - font-family: 'Roboto', Verdana, Geneva, sans-serif; - margin: 10px; - color: #000; -} - -header { - text-align: center; -} - -header h1 { - font-size: 1.3em; -} - -a, a:hover, a:visited { - color: #000; -} - -.bouton { - background-color: #000; - color: #fff; - border: none; - border-radius: 2px; -} -.bouton:hover { - background-color: #222; - color: #f1f1f1; - cursor: pointer; -} - -#main { - margin: 0 auto; -} - -#main #links { - padding: 0; - list-style-type: none; - text-align: center; - font-size: 0.9em; -} - -#main #links li { - display: inline; -} - -#main #links li .current { - background-color: #000; - color: #fff; - -webkit-border-radius: 2px; - border-radius: 2px; -} - -#main #sort { - padding: 0; - list-style-type: none; - text-align: center; - opacity: 0.5; -} - -#main #sort li { - display: inline; - font-size: 0.9em; -} - -#main #sort img:hover { - cursor: pointer; -} - -#links a { - text-decoration: none; - padding: 5px 10px; -} -#links a:hover { - background-color: #040707; - color: #F1F1F1; - -webkit-border-radius: 2px; - border-radius: 2px; -} - -/*** ***/ -/*** LINKS DISPLAY ***/ - -#main .tool { - text-decoration: none; - cursor: pointer; -} - -#main #content { - margin-top: 20px; -} - -#main #content h2 { - font-size: 1.3em; - text-decoration: none; -} - -#main #content .entrie { - border-bottom: 1px dashed #222; -} -/* First entry */ -#main #content .results + .entrie { - clear: both; -} - -#main .entrie .tools { - list-style-type: none; -} - -#main .entrie .tools + p { - min-height: 5.5em; -} - -/* -#main .entrie .tools li { - display: inline; -} -*/ - -.tools { - float: right; - text-align: right; - opacity: 0.5; -} - -.tools p { - font-size: 0.8em; -} - -/* -.tools ul { - padding: 0; margin: 0; - list-style-type: none; -} - -.tools ul li { - line-height: 20px; -} - -.tools .tool { - cursor: pointer; -}*/ - -#main .entrie .tools .tool span, #article .tools .tool span { - display: inline-block; - width: 16px; - height: 16px; - /* Hide textual content */ - text-indent: -9999px; - text-align: left; - overflow: hidden; -} - - -/*** ***/ -/*** ARTICLE PAGE ***/ - -#article { - margin: 0 auto; -} - -#article header, #article article { - border-bottom: 1px solid #222; -} - -#article header { - text-align: left; -} - -#article header a { - text-decoration: none; -} - -.vieworiginal a, .vieworiginal a:hover, .vieworiginal a:visited { - text-decoration: none; - color: #888; -} - -.backhome { - display: inline; -} - -#article .tools { - position: relative; - display: inline; - top: 0; - right: 0; - width: 100%; -} - -#article .tools ul li { - display: inline; -} - - -.results { - overflow: hidden; - padding-bottom: 20px; - padding-top: 10px; -} - -.nb-results { - float: left; - font-size: 0.9em; - line-height: 24px; - vertical-align: middle; -} - -/* Pagination */ -.pagination { - float: right; - text-align: right; -} -.pagination a { - border: 1px solid #d5d5d5; - color: #333; - font-size: 11px; - font-weight: bold; - height: 25px; - padding: 4px 8px; - text-decoration: none; - margin: 2px; -} -.pagination a:hover, .pagination a:active { - background-color: #efefef; -} -.pagination .current { - background-color: #ccc; - border: 1px solid #d5d5d5; - color: #000; - font-size: 11px; - font-weight: bold; - height: 25px; - padding: 4px 8px; - text-decoration: none; - margin: 2px; -} -.pagination .disabled { - display: none; -} - -#bookmarklet { - padding: 5px; - border: 1px dashed #808080; - background: #fff; - cursor: move; -} - -.top_link { - position: fixed; - right: 15px; - bottom: 15px; - display: none; - padding: 20px; - background: #ccc; - -moz-border-radius: 40px; - -webkit-border-radius: 40px; - border-radius: 40px; - opacity: 0.9; - z-index: 2000; -} - -footer { - clear: both; -} - -.reading-time { - font-size: 0.8em; -} - -#inputform { - display: none; - text-align: center; - max-width: 300px; - margin-left: auto; - margin-right: auto; - margin-top: 5px; - padding-bottom: 5px; - background-color: rgba(0, 0, 0, 0.9); - opacity: 0.8; - color: #fff; - border-radius: 3px; -} - -a.back span, -a.top span, -a.fav span, -a.fav span:hover, -a.fav-off span, -a.fav-off span:hover, -a.archive span, -a.archive span:hover, -a.archive-off span, -a.archive-off span:hover, -a.twitter span, -a.flattr span, -a.email span, -a.delete span { - background-repeat: no-repeat; -} diff --git a/tpl/error.twig b/tpl/error.twig deleted file mode 100644 index c829d12..0000000 --- a/tpl/error.twig +++ /dev/null @@ -1,6 +0,0 @@ -{% extends "layout.twig" %} -{% block title %}{% trans "plop" %}{% endblock %} -{% block content %} - {{ msg|raw }} -

    Don't forget the documentation.

    -{% endblock %} \ No newline at end of file diff --git a/tpl/export.twig b/tpl/export.twig deleted file mode 100644 index 4adb954..0000000 --- a/tpl/export.twig +++ /dev/null @@ -1 +0,0 @@ -{{ export }} \ No newline at end of file diff --git a/tpl/home.twig b/tpl/home.twig deleted file mode 100644 index 771c36c..0000000 --- a/tpl/home.twig +++ /dev/null @@ -1,49 +0,0 @@ -{% extends "layout.twig" %} -{% block title %} -{% if view == 'fav' %} -{% trans "favoris" %} -{% elseif view == 'archive' %} -{% trans "archive" %} -{% else %} -{% trans "unread" %} -{% endif %} -{% endblock %} -{% block menu %} -{% include '_menu.twig' %} -{% endblock %} -{% block precontent %} - {% if entries|length > 1 %} -
      -
    • {% trans {% trans "by date" %} {% trans
    • -
    • {% trans {% trans "by title" %} {% trans
    • -
    - {% endif %} -{% endblock %} -{% block content %} - {% if entries is empty %} -

    {% trans "No link available here!" %}

    - {% else %} - {% block pager %} - {% if nb_results > 1 %} -
    -
    {{ nb_results }} {% trans "results" %}
    - {{ page_links | raw }} -
    - {% endif %} - {% endblock %} - {% for entry in entries %} -
    -

    {{ entry.title|raw }}

    - -

    {{ entry.content|striptags|slice(0, 300) }}...

    -

    {{ entry.url | e | getDomain }}

    -
    - {% endfor %} - {% endif %} - {{ block('pager') }} -{% endblock %} \ No newline at end of file diff --git a/tpl/img/apple-touch-icon-144x144-precomposed.png b/tpl/img/apple-touch-icon-144x144-precomposed.png deleted file mode 100644 index 557b479ce45e19e9513bf125c325a081aa4a368c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7349 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 diff --git a/tpl/img/apple-touch-icon-72x72-precomposed.png b/tpl/img/apple-touch-icon-72x72-precomposed.png deleted file mode 100644 index e167d3a41c6577ba6ae753e917b4a2c66b3448ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6168 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 WIVhejFZ~Y;9|liXKbLh*2~7ZPAbNuU diff --git a/tpl/img/light/checkmark-off.png b/tpl/img/light/checkmark-off.png deleted file mode 100644 index 3db5a06dcd7363c83917c69084578a91d9e83f8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 277 zcmV+w0qXvVP)Sx4TwMk{g2sY7UU3=nH`Q}-@DIo+2YSD`+;8? zQ*)my0KS=^)V-b~aQG>3t$L}-se%X}1oHe)RZ&oAB3E5{`_hMbP0wCcxB%%cqW(369sx~Tq4bhlmlSW||c&wEM&96}ron$9Vg|PW% zOJ>vEb3hXkkMB)MI3|eAJ4?bIjKV_#{~RQD6Me*P^J|bgNMBcW$=FHE)l|jRhQ?Em ba?45FHN00000NkvXXu0mjfOIUFO diff --git a/tpl/img/light/checkmark-on.png b/tpl/img/light/checkmark-on.png deleted file mode 100644 index cd3abb2c0b501af84a0f7db7f46bee779bc1af27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 235 zcmV6*fU zMhVQyX>4hb0POOG9vOrHrX8AX0=_+nMzQH^MZJXx5}I`a1Llxjvj@<1>O3&r$y-6| loP+?oPS2apj{b=uU;!3~Dp8U??J@uW002ovPDHLkV1nu1T@wHR diff --git a/tpl/img/light/down.png b/tpl/img/light/down.png deleted file mode 100644 index b9d536a7cabbd3e404dc187a2e2844562e07fbb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`^F3W0LoEE?PEO==FyLvmWb|ti ze(+=mqxwU(J?goe&RPl9>t?28-`_sH?9-dar{uqIe_~&>_0>EEk>Z)9_6iqeGViTc z^Aiy5VB9F(AoP6klgQ`2?G1bfZ)zVYUGRwQr{u+U1~Gvk>j}PdLW+!!uI|vE{?M93 zQKaDFRbLtA4`*6C{{5;j&puSusi>m0O-3U|@y_N%E6M9q|4yz5?L5mlagv(gyMmSN QK&LWzy85}Sb4q9e0C^WwoB#j- diff --git a/tpl/img/light/envelop.png b/tpl/img/light/envelop.png deleted file mode 100755 index 6be1c88643a86d3eb0cde7c06b9668e4575c3424..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 285 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 vHe0Nz9DoX*JP z(EQz**ZfF2rx|m?EZznwd8Um_nrsT$`#7$=U^pV*VcL*#R-rjDPQlxF6C-6 z96tW_$O=eej1`*Ay&|na@q(!MhNa9C*0ws>Ft&?3DBka%Q@3Ghc?3h^XQnEj#3e2P yFFp%3;Gr^aQKjnemVeoYIb6Mw<&;$S~ic^{Z diff --git a/tpl/img/light/shaarli.png b/tpl/img/light/shaarli.png deleted file mode 100644 index 1eb30f60b99a02ba18054447ff4bc969c0ee7455..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 729 zcmV;~0w(>5P)5r00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGt^#A}F^#Lb9$`k+q02*{fSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+qQF!XYv0006=Nkl^^$ z4%o_Tr_*`sc?U>(g2ob-d5zDd!C)X#AP@k(UQhQ@sl?j&f${+*BNmGdM8>i_D5qdB z2!%ocn$0H6W-}srz208|4u=CwCKJeJvtYN|0jV40U2z!gb1s)7r`>J`^Z6Xc<1zI6 zeJ~o0pj0ZMTrNYkT7`DI4a?<{e527QtLQx|;$}1&kyY4u?dJ z#bVHEwLm75!KKY!uScyRd5iK4tDr$XM8d~VC`3*UhXZgQV6)lKyI!vYZX#u6@cDc! zL7T`7__r90x9xN~uwJi0qtVa?GO(#LupsGln(ou-l=_#;<>$@B00KOYgTa6tPNx%{ z>|0R};c%E1>w?8%L3*iFs$qNrw(*LsYo$`5z9W$c8{iR3k7IS$7K;UHwHoaL+fHoZ z-EUi|R;$IROrrBAe9rOy1_N9%8-Ak<6TCp%H5+}B-Ofz0gCQZd)~)flmSB}wWUiKCCU>>F8OpOjmXmz=?OT@F&KwLeHQY}zW9<)A#_*ek9WwgWlte9UXsIhY+_$l$gY zux2pqkZpMOkk{cKtAZWF5&4BVY!ety_^ApklepAtAg;sUb#(HIYQ=zBrcL4=hAe9& zQxvNdgpxU8jLn!G7XF*p5YE#0>4Qn*JEj1hH|hxu$|h*DVCecPY_LE;!=7;& z+g*kUE_NZG6im7t@31LsYwz-Bxunp&Vb=qOfDp!23{wgwI5J&X!0vF1aXRCIEA8t9 d@49PbF-*=;omiMR`vcIg44$rjF6*2UngFHXU;F?7 diff --git a/tpl/img/light/top.png b/tpl/img/light/top.png deleted file mode 100755 index 954a8c0acbb221eb20d04d6184d3317c9604adf6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`vproLLoEE?PJYPi;K0-R-Yh}L z?7)+r11dQV@t4$c*ZUobpMJvm{%@_)>6edB)&AL*Wqe)zlJci}j4F4EGgNsM1rM|@ zE#&yfAbU^aW?|Gj?hdveA3Pq;Wz>Cn$btDHg9O{I3%rRuZ&Mg*G862Mh&(gP{N%fCG>)9Do9t0>A+hkifmBZJN=N4Vqlq{@%ZTzil@7 zb7UR!3-P8xE}Vs@&C3xWxEEFlv5Ddr%X5^27NxL6fCYp)AwsoLMEs;!g8&t7mH>Gt z9PK_lYiq!%+#TGt83&A)*2EC3BGn1agsXF~)n<_(rovu;OQh1Ur+{(qTA+H}LxiU^ zj>CVz)2utXF!p~H@YUM_>`P%I%o9!?mcuKV5w^galZXHp+a8VW+b25#s?vY>55i=s va$d(=g$@d9kD0+oa-S)d`_V#@^zGmcO~NR#w(5?(00000NkvXXu0mjfYC3)} diff --git a/tpl/img/logo.png b/tpl/img/logo.png deleted file mode 100644 index 5305c77da81f12b03c1d5b5ea491dec7cd22f5d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1350 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 A&j0`b diff --git a/tpl/install.twig b/tpl/install.twig deleted file mode 100644 index 6e85e5c..0000000 --- a/tpl/install.twig +++ /dev/null @@ -1,28 +0,0 @@ -{% extends "layout.twig" %} -{% block title %}{% trans "installation" %}{% endblock %} -{% block content %} -
    -
    -

    {% trans "install your poche" %}

    -

    - {% trans "poche is still not installed. Please fill the below form to install it. Don't hesitate to read the documentation on poche website." %} -

    -

    - - -

    -

    - - -

    -

    - - -

    -

    - -

    -
    - -
    -{% endblock %} \ No newline at end of file diff --git a/tpl/js/jquery-2.0.3.min.js b/tpl/js/jquery-2.0.3.min.js deleted file mode 100644 index 2be209d..0000000 --- a/tpl/js/jquery-2.0.3.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/*! jQuery v2.0.3 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license -//@ sourceMappingURL=jquery-2.0.3.min.map -*/ -(function(e,undefined){var t,n,r=typeof undefined,i=e.location,o=e.document,s=o.documentElement,a=e.jQuery,u=e.$,l={},c=[],p="2.0.3",f=c.concat,h=c.push,d=c.slice,g=c.indexOf,m=l.toString,y=l.hasOwnProperty,v=p.trim,x=function(e,n){return new x.fn.init(e,n,t)},b=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,w=/\S+/g,T=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,k=/^-ms-/,N=/-([\da-z])/gi,E=function(e,t){return t.toUpperCase()},S=function(){o.removeEventListener("DOMContentLoaded",S,!1),e.removeEventListener("load",S,!1),x.ready()};x.fn=x.prototype={jquery:p,constructor:x,init:function(e,t,n){var r,i;if(!e)return this;if("string"==typeof e){if(r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:T.exec(e),!r||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof x?t[0]:t,x.merge(this,x.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:o,!0)),C.test(r[1])&&x.isPlainObject(t))for(r in t)x.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return i=o.getElementById(r[2]),i&&i.parentNode&&(this.length=1,this[0]=i),this.context=o,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?n.ready(e):(e.selector!==undefined&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return d.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,t,n,r,i,o,s=arguments[0]||{},a=1,u=arguments.length,l=!1;for("boolean"==typeof s&&(l=s,s=arguments[1]||{},a=2),"object"==typeof s||x.isFunction(s)||(s={}),u===a&&(s=this,--a);u>a;a++)if(null!=(e=arguments[a]))for(t in e)n=s[t],r=e[t],s!==r&&(l&&r&&(x.isPlainObject(r)||(i=x.isArray(r)))?(i?(i=!1,o=n&&x.isArray(n)?n:[]):o=n&&x.isPlainObject(n)?n:{},s[t]=x.extend(l,o,r)):r!==undefined&&(s[t]=r));return s},x.extend({expando:"jQuery"+(p+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=a),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){(e===!0?--x.readyWait:x.isReady)||(x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(o,[x]),x.fn.trigger&&x(o).trigger("ready").off("ready")))},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray,isWindow:function(e){return null!=e&&e===e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[m.call(e)]||"object":typeof e},isPlainObject:function(e){if("object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!y.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(t){return!1}return!0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||o;var r=C.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:JSON.parse,parseXML:function(e){var t,n;if(!e||"string"!=typeof e)return null;try{n=new DOMParser,t=n.parseFromString(e,"text/xml")}catch(r){t=undefined}return(!t||t.getElementsByTagName("parsererror").length)&&x.error("Invalid XML: "+e),t},noop:function(){},globalEval:function(e){var t,n=eval;e=x.trim(e),e&&(1===e.indexOf("use strict")?(t=o.createElement("script"),t.text=e,o.head.appendChild(t).parentNode.removeChild(t)):n(e))},camelCase:function(e){return e.replace(k,"ms-").replace(N,E)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,s=j(e);if(n){if(s){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(s){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:function(e){return null==e?"":v.call(e)},makeArray:function(e,t){var n=t||[];return null!=e&&(j(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:g.call(t,e,n)},merge:function(e,t){var n=t.length,r=e.length,i=0;if("number"==typeof n)for(;n>i;i++)e[r++]=t[i];else while(t[i]!==undefined)e[r++]=t[i++];return e.length=r,e},grep:function(e,t,n){var r,i=[],o=0,s=e.length;for(n=!!n;s>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,s=j(e),a=[];if(s)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(a[a.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(a[a.length]=r);return f.apply([],a)},guid:1,proxy:function(e,t){var n,r,i;return"string"==typeof t&&(n=e[t],t=e,e=n),x.isFunction(e)?(r=d.call(arguments,2),i=function(){return e.apply(t||this,r.concat(d.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):undefined},access:function(e,t,n,r,i,o,s){var a=0,u=e.length,l=null==n;if("object"===x.type(n)){i=!0;for(a in n)x.access(e,t,a,n[a],!0,o,s)}else if(r!==undefined&&(i=!0,x.isFunction(r)||(s=!0),l&&(s?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(x(e),n)})),t))for(;u>a;a++)t(e[a],n,s?r:r.call(e[a],a,t(e[a],n)));return i?e:l?t.call(e):u?t(e[0],n):o},now:Date.now,swap:function(e,t,n,r){var i,o,s={};for(o in t)s[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=s[o];return i}}),x.ready.promise=function(t){return n||(n=x.Deferred(),"complete"===o.readyState?setTimeout(x.ready):(o.addEventListener("DOMContentLoaded",S,!1),e.addEventListener("load",S,!1))),n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function j(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}t=x(o),function(e,undefined){var t,n,r,i,o,s,a,u,l,c,p,f,h,d,g,m,y,v="sizzle"+-new Date,b=e.document,w=0,T=0,C=st(),k=st(),N=st(),E=!1,S=function(e,t){return e===t?(E=!0,0):0},j=typeof undefined,D=1<<31,A={}.hasOwnProperty,L=[],q=L.pop,H=L.push,O=L.push,F=L.slice,P=L.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",W="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",$=W.replace("w","w#"),B="\\["+M+"*("+W+")"+M+"*(?:([*^$|!~]?=)"+M+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+$+")|)|)"+M+"*\\]",I=":("+W+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+B.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=RegExp("^"+M+"*,"+M+"*"),X=RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=RegExp(M+"*[+~]"),Y=RegExp("="+M+"*([^\\]'\"]*)"+M+"*\\]","g"),V=RegExp(I),G=RegExp("^"+$+"$"),J={ID:RegExp("^#("+W+")"),CLASS:RegExp("^\\.("+W+")"),TAG:RegExp("^("+W.replace("w","w*")+")"),ATTR:RegExp("^"+B),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:RegExp("^(?:"+R+")$","i"),needsContext:RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Q=/^[^{]+\{\s*\[native \w/,K=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,Z=/^(?:input|select|textarea|button)$/i,et=/^h\d$/i,tt=/'|\\/g,nt=RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),rt=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{O.apply(L=F.call(b.childNodes),b.childNodes),L[b.childNodes.length].nodeType}catch(it){O={apply:L.length?function(e,t){H.apply(e,F.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function ot(e,t,r,i){var o,s,a,u,l,f,g,m,x,w;if((t?t.ownerDocument||t:b)!==p&&c(t),t=t||p,r=r||[],!e||"string"!=typeof e)return r;if(1!==(u=t.nodeType)&&9!==u)return[];if(h&&!i){if(o=K.exec(e))if(a=o[1]){if(9===u){if(s=t.getElementById(a),!s||!s.parentNode)return r;if(s.id===a)return r.push(s),r}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(a))&&y(t,s)&&s.id===a)return r.push(s),r}else{if(o[2])return O.apply(r,t.getElementsByTagName(e)),r;if((a=o[3])&&n.getElementsByClassName&&t.getElementsByClassName)return O.apply(r,t.getElementsByClassName(a)),r}if(n.qsa&&(!d||!d.test(e))){if(m=g=v,x=t,w=9===u&&e,1===u&&"object"!==t.nodeName.toLowerCase()){f=gt(e),(g=t.getAttribute("id"))?m=g.replace(tt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",l=f.length;while(l--)f[l]=m+mt(f[l]);x=U.test(e)&&t.parentNode||t,w=f.join(",")}if(w)try{return O.apply(r,x.querySelectorAll(w)),r}catch(T){}finally{g||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,r,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>i.cacheLength&&delete t[e.shift()],t[n]=r}return t}function at(e){return e[v]=!0,e}function ut(e){var t=p.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function lt(e,t){var n=e.split("|"),r=e.length;while(r--)i.attrHandle[n[r]]=t}function ct(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function pt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return at(function(t){return t=+t,at(function(n,r){var i,o=e([],n.length,t),s=o.length;while(s--)n[i=o[s]]&&(n[i]=!(r[i]=n[i]))})})}s=ot.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},n=ot.support={},c=ot.setDocument=function(e){var t=e?e.ownerDocument||e:b,r=t.defaultView;return t!==p&&9===t.nodeType&&t.documentElement?(p=t,f=t.documentElement,h=!s(t),r&&r.attachEvent&&r!==r.top&&r.attachEvent("onbeforeunload",function(){c()}),n.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ut(function(e){return e.appendChild(t.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=ut(function(e){return e.innerHTML="
    ",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),n.getById=ut(function(e){return f.appendChild(e).id=v,!t.getElementsByName||!t.getElementsByName(v).length}),n.getById?(i.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},i.filter.ID=function(e){var t=e.replace(nt,rt);return function(e){return e.getAttribute("id")===t}}):(delete i.find.ID,i.filter.ID=function(e){var t=e.replace(nt,rt);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),i.find.TAG=n.getElementsByTagName?function(e,t){return typeof t.getElementsByTagName!==j?t.getElementsByTagName(e):undefined}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},i.find.CLASS=n.getElementsByClassName&&function(e,t){return typeof t.getElementsByClassName!==j&&h?t.getElementsByClassName(e):undefined},g=[],d=[],(n.qsa=Q.test(t.querySelectorAll))&&(ut(function(e){e.innerHTML="",e.querySelectorAll("[selected]").length||d.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll(":checked").length||d.push(":checked")}),ut(function(e){var n=t.createElement("input");n.setAttribute("type","hidden"),e.appendChild(n).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&d.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||d.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),d.push(",.*:")})),(n.matchesSelector=Q.test(m=f.webkitMatchesSelector||f.mozMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&ut(function(e){n.disconnectedMatch=m.call(e,"div"),m.call(e,"[s!='']:x"),g.push("!=",I)}),d=d.length&&RegExp(d.join("|")),g=g.length&&RegExp(g.join("|")),y=Q.test(f.contains)||f.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},S=f.compareDocumentPosition?function(e,r){if(e===r)return E=!0,0;var i=r.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(r);return i?1&i||!n.sortDetached&&r.compareDocumentPosition(e)===i?e===t||y(b,e)?-1:r===t||y(b,r)?1:l?P.call(l,e)-P.call(l,r):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,n){var r,i=0,o=e.parentNode,s=n.parentNode,a=[e],u=[n];if(e===n)return E=!0,0;if(!o||!s)return e===t?-1:n===t?1:o?-1:s?1:l?P.call(l,e)-P.call(l,n):0;if(o===s)return ct(e,n);r=e;while(r=r.parentNode)a.unshift(r);r=n;while(r=r.parentNode)u.unshift(r);while(a[i]===u[i])i++;return i?ct(a[i],u[i]):a[i]===b?-1:u[i]===b?1:0},t):p},ot.matches=function(e,t){return ot(e,null,null,t)},ot.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&c(e),t=t.replace(Y,"='$1']"),!(!n.matchesSelector||!h||g&&g.test(t)||d&&d.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(i){}return ot(t,p,null,[e]).length>0},ot.contains=function(e,t){return(e.ownerDocument||e)!==p&&c(e),y(e,t)},ot.attr=function(e,t){(e.ownerDocument||e)!==p&&c(e);var r=i.attrHandle[t.toLowerCase()],o=r&&A.call(i.attrHandle,t.toLowerCase())?r(e,t,!h):undefined;return o===undefined?n.attributes||!h?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null:o},ot.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},ot.uniqueSort=function(e){var t,r=[],i=0,o=0;if(E=!n.detectDuplicates,l=!n.sortStable&&e.slice(0),e.sort(S),E){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return e},o=ot.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=o(t);return n},i=ot.selectors={cacheLength:50,createPseudo:at,match:J,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(nt,rt),e[3]=(e[4]||e[5]||"").replace(nt,rt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||ot.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&ot.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return J.CHILD.test(e[0])?null:(e[3]&&e[4]!==undefined?e[2]=e[4]:n&&V.test(n)&&(t=gt(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(nt,rt).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=C[e+" "];return t||(t=RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&C(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=ot.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),s="last"!==e.slice(-4),a="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,p,f,h,d,g=o!==s?"nextSibling":"previousSibling",m=t.parentNode,y=a&&t.nodeName.toLowerCase(),x=!u&&!a;if(m){if(o){while(g){p=t;while(p=p[g])if(a?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;d=g="only"===e&&!d&&"nextSibling"}return!0}if(d=[s?m.firstChild:m.lastChild],s&&x){c=m[v]||(m[v]={}),l=c[e]||[],h=l[0]===w&&l[1],f=l[0]===w&&l[2],p=h&&m.childNodes[h];while(p=++h&&p&&p[g]||(f=h=0)||d.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[w,h,f];break}}else if(x&&(l=(t[v]||(t[v]={}))[e])&&l[0]===w)f=l[1];else while(p=++h&&p&&p[g]||(f=h=0)||d.pop())if((a?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(x&&((p[v]||(p[v]={}))[e]=[w,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||ot.error("unsupported pseudo: "+e);return r[v]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?at(function(e,n){var i,o=r(e,t),s=o.length;while(s--)i=P.call(e,o[s]),e[i]=!(n[i]=o[s])}):function(e){return r(e,0,n)}):r}},pseudos:{not:at(function(e){var t=[],n=[],r=a(e.replace(z,"$1"));return r[v]?at(function(e,t,n,i){var o,s=r(e,null,i,[]),a=e.length;while(a--)(o=s[a])&&(e[a]=!(t[a]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:at(function(e){return function(t){return ot(e,t).length>0}}),contains:at(function(e){return function(t){return(t.textContent||t.innerText||o(t)).indexOf(e)>-1}}),lang:at(function(e){return G.test(e||"")||ot.error("unsupported lang: "+e),e=e.replace(nt,rt).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!i.pseudos.empty(e)},header:function(e){return et.test(e.nodeName)},input:function(e){return Z.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},i.pseudos.nth=i.pseudos.eq;for(t in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})i.pseudos[t]=pt(t);for(t in{submit:!0,reset:!0})i.pseudos[t]=ft(t);function dt(){}dt.prototype=i.filters=i.pseudos,i.setFilters=new dt;function gt(e,t){var n,r,o,s,a,u,l,c=k[e+" "];if(c)return t?0:c.slice(0);a=e,u=[],l=i.preFilter;while(a){(!n||(r=_.exec(a)))&&(r&&(a=a.slice(r[0].length)||a),u.push(o=[])),n=!1,(r=X.exec(a))&&(n=r.shift(),o.push({value:n,type:r[0].replace(z," ")}),a=a.slice(n.length));for(s in i.filter)!(r=J[s].exec(a))||l[s]&&!(r=l[s](r))||(n=r.shift(),o.push({value:n,type:s,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?ot.error(e):k(e,u).slice(0)}function mt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function yt(e,t,n){var i=t.dir,o=n&&"parentNode"===i,s=T++;return t.first?function(t,n,r){while(t=t[i])if(1===t.nodeType||o)return e(t,n,r)}:function(t,n,a){var u,l,c,p=w+" "+s;if(a){while(t=t[i])if((1===t.nodeType||o)&&e(t,n,a))return!0}else while(t=t[i])if(1===t.nodeType||o)if(c=t[v]||(t[v]={}),(l=c[i])&&l[0]===p){if((u=l[1])===!0||u===r)return u===!0}else if(l=c[i]=[p],l[1]=e(t,n,a)||r,l[1]===!0)return!0}}function vt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,s=[],a=0,u=e.length,l=null!=t;for(;u>a;a++)(o=e[a])&&(!n||n(o,r,i))&&(s.push(o),l&&t.push(a));return s}function bt(e,t,n,r,i,o){return r&&!r[v]&&(r=bt(r)),i&&!i[v]&&(i=bt(i,o)),at(function(o,s,a,u){var l,c,p,f=[],h=[],d=s.length,g=o||Ct(t||"*",a.nodeType?[a]:a,[]),m=!e||!o&&t?g:xt(g,f,e,a,u),y=n?i||(o?e:d||r)?[]:s:m;if(n&&n(m,y,a,u),r){l=xt(y,h),r(l,[],a,u),c=l.length;while(c--)(p=l[c])&&(y[h[c]]=!(m[h[c]]=p))}if(o){if(i||e){if(i){l=[],c=y.length;while(c--)(p=y[c])&&l.push(m[c]=p);i(null,y=[],l,u)}c=y.length;while(c--)(p=y[c])&&(l=i?P.call(o,p):f[c])>-1&&(o[l]=!(s[l]=p))}}else y=xt(y===s?y.splice(d,y.length):y),i?i(null,s,y,u):O.apply(s,y)})}function wt(e){var t,n,r,o=e.length,s=i.relative[e[0].type],a=s||i.relative[" "],l=s?1:0,c=yt(function(e){return e===t},a,!0),p=yt(function(e){return P.call(t,e)>-1},a,!0),f=[function(e,n,r){return!s&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;o>l;l++)if(n=i.relative[e[l].type])f=[yt(vt(f),n)];else{if(n=i.filter[e[l].type].apply(null,e[l].matches),n[v]){for(r=++l;o>r;r++)if(i.relative[e[r].type])break;return bt(l>1&&vt(f),l>1&&mt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&wt(e.slice(l,r)),o>r&&wt(e=e.slice(r)),o>r&&mt(e))}f.push(n)}return vt(f)}function Tt(e,t){var n=0,o=t.length>0,s=e.length>0,a=function(a,l,c,f,h){var d,g,m,y=[],v=0,x="0",b=a&&[],T=null!=h,C=u,k=a||s&&i.find.TAG("*",h&&l.parentNode||l),N=w+=null==C?1:Math.random()||.1;for(T&&(u=l!==p&&l,r=n);null!=(d=k[x]);x++){if(s&&d){g=0;while(m=e[g++])if(m(d,l,c)){f.push(d);break}T&&(w=N,r=++n)}o&&((d=!m&&d)&&v--,a&&b.push(d))}if(v+=x,o&&x!==v){g=0;while(m=t[g++])m(b,y,l,c);if(a){if(v>0)while(x--)b[x]||y[x]||(y[x]=q.call(f));y=xt(y)}O.apply(f,y),T&&!a&&y.length>0&&v+t.length>1&&ot.uniqueSort(f)}return T&&(w=N,u=C),b};return o?at(a):a}a=ot.compile=function(e,t){var n,r=[],i=[],o=N[e+" "];if(!o){t||(t=gt(e)),n=t.length;while(n--)o=wt(t[n]),o[v]?r.push(o):i.push(o);o=N(e,Tt(i,r))}return o};function Ct(e,t,n){var r=0,i=t.length;for(;i>r;r++)ot(e,t[r],n);return n}function kt(e,t,r,o){var s,u,l,c,p,f=gt(e);if(!o&&1===f.length){if(u=f[0]=f[0].slice(0),u.length>2&&"ID"===(l=u[0]).type&&n.getById&&9===t.nodeType&&h&&i.relative[u[1].type]){if(t=(i.find.ID(l.matches[0].replace(nt,rt),t)||[])[0],!t)return r;e=e.slice(u.shift().value.length)}s=J.needsContext.test(e)?0:u.length;while(s--){if(l=u[s],i.relative[c=l.type])break;if((p=i.find[c])&&(o=p(l.matches[0].replace(nt,rt),U.test(u[0].type)&&t.parentNode||t))){if(u.splice(s,1),e=o.length&&mt(u),!e)return O.apply(r,o),r;break}}}return a(e,f)(o,t,!h,r,U.test(e)),r}n.sortStable=v.split("").sort(S).join("")===v,n.detectDuplicates=E,c(),n.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(p.createElement("div"))}),ut(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||lt("type|href|height|width",function(e,t,n){return n?undefined:e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ut(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||lt("value",function(e,t,n){return n||"input"!==e.nodeName.toLowerCase()?undefined:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||lt(R,function(e,t,n){var r;return n?undefined:(r=e.getAttributeNode(t))&&r.specified?r.value:e[t]===!0?t.toLowerCase():null}),x.find=ot,x.expr=ot.selectors,x.expr[":"]=x.expr.pseudos,x.unique=ot.uniqueSort,x.text=ot.getText,x.isXMLDoc=ot.isXML,x.contains=ot.contains}(e);var D={};function A(e){var t=D[e]={};return x.each(e.match(w)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?D[e]||A(e):x.extend({},e);var t,n,r,i,o,s,a=[],u=!e.once&&[],l=function(p){for(t=e.memory&&p,n=!0,s=i||0,i=0,o=a.length,r=!0;a&&o>s;s++)if(a[s].apply(p[0],p[1])===!1&&e.stopOnFalse){t=!1;break}r=!1,a&&(u?u.length&&l(u.shift()):t?a=[]:c.disable())},c={add:function(){if(a){var n=a.length;(function s(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&c.has(n)||a.push(n):n&&n.length&&"string"!==r&&s(n)})})(arguments),r?o=a.length:t&&(i=n,l(t))}return this},remove:function(){return a&&x.each(arguments,function(e,t){var n;while((n=x.inArray(t,a,n))>-1)a.splice(n,1),r&&(o>=n&&o--,s>=n&&s--)}),this},has:function(e){return e?x.inArray(e,a)>-1:!(!a||!a.length)},empty:function(){return a=[],o=0,this},disable:function(){return a=u=t=undefined,this},disabled:function(){return!a},lock:function(){return u=undefined,t||c.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!a||n&&!u||(t=t||[],t=[e,t.slice?t.slice():t],r?u.push(t):l(t)),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!n}};return c},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var s=o[0],a=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=a&&a.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[s+"With"](this===r?n.promise():this,a?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var s=o[2],a=o[3];r[o[1]]=s.add,a&&s.add(function(){n=a},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=s.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=d.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),s=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?d.call(arguments):r,n===a?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},a,u,l;if(r>1)for(a=Array(r),u=Array(r),l=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(s(t,l,n)).fail(o.reject).progress(s(t,u,a)):--i;return i||o.resolveWith(l,n),o.promise()}}),x.support=function(t){var n=o.createElement("input"),r=o.createDocumentFragment(),i=o.createElement("div"),s=o.createElement("select"),a=s.appendChild(o.createElement("option"));return n.type?(n.type="checkbox",t.checkOn=""!==n.value,t.optSelected=a.selected,t.reliableMarginRight=!0,t.boxSizingReliable=!0,t.pixelPosition=!1,n.checked=!0,t.noCloneChecked=n.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!a.disabled,n=o.createElement("input"),n.value="t",n.type="radio",t.radioValue="t"===n.value,n.setAttribute("checked","t"),n.setAttribute("name","t"),r.appendChild(n),t.checkClone=r.cloneNode(!0).cloneNode(!0).lastChild.checked,t.focusinBubbles="onfocusin"in e,i.style.backgroundClip="content-box",i.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===i.style.backgroundClip,x(function(){var n,r,s="padding:0;margin:0;border:0;display:block;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box",a=o.getElementsByTagName("body")[0];a&&(n=o.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",a.appendChild(n).appendChild(i),i.innerHTML="",i.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%",x.swap(a,null!=a.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===i.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(i,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(i,null)||{width:"4px"}).width,r=i.appendChild(o.createElement("div")),r.style.cssText=i.style.cssText=s,r.style.marginRight=r.style.width="0",i.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),a.removeChild(n))}),t):t}({});var L,q,H=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,O=/([A-Z])/g;function F(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=x.expando+Math.random()}F.uid=1,F.accepts=function(e){return e.nodeType?1===e.nodeType||9===e.nodeType:!0},F.prototype={key:function(e){if(!F.accepts(e))return 0;var t={},n=e[this.expando];if(!n){n=F.uid++;try{t[this.expando]={value:n},Object.defineProperties(e,t)}catch(r){t[this.expando]=n,x.extend(e,t)}}return this.cache[n]||(this.cache[n]={}),n},set:function(e,t,n){var r,i=this.key(e),o=this.cache[i];if("string"==typeof t)o[t]=n;else if(x.isEmptyObject(o))x.extend(this.cache[i],t);else for(r in t)o[r]=t[r];return o},get:function(e,t){var n=this.cache[this.key(e)];return t===undefined?n:n[t]},access:function(e,t,n){var r;return t===undefined||t&&"string"==typeof t&&n===undefined?(r=this.get(e,t),r!==undefined?r:this.get(e,x.camelCase(t))):(this.set(e,t,n),n!==undefined?n:t)},remove:function(e,t){var n,r,i,o=this.key(e),s=this.cache[o];if(t===undefined)this.cache[o]={};else{x.isArray(t)?r=t.concat(t.map(x.camelCase)):(i=x.camelCase(t),t in s?r=[t,i]:(r=i,r=r in s?[r]:r.match(w)||[])),n=r.length;while(n--)delete s[r[n]]}},hasData:function(e){return!x.isEmptyObject(this.cache[e[this.expando]]||{})},discard:function(e){e[this.expando]&&delete this.cache[e[this.expando]]}},L=new F,q=new F,x.extend({acceptData:F.accepts,hasData:function(e){return L.hasData(e)||q.hasData(e)},data:function(e,t,n){return L.access(e,t,n)},removeData:function(e,t){L.remove(e,t)},_data:function(e,t,n){return q.access(e,t,n)},_removeData:function(e,t){q.remove(e,t)}}),x.fn.extend({data:function(e,t){var n,r,i=this[0],o=0,s=null;if(e===undefined){if(this.length&&(s=L.get(i),1===i.nodeType&&!q.get(i,"hasDataAttrs"))){for(n=i.attributes;n.length>o;o++)r=n[o].name,0===r.indexOf("data-")&&(r=x.camelCase(r.slice(5)),P(i,r,s[r]));q.set(i,"hasDataAttrs",!0)}return s}return"object"==typeof e?this.each(function(){L.set(this,e)}):x.access(this,function(t){var n,r=x.camelCase(e);if(i&&t===undefined){if(n=L.get(i,e),n!==undefined)return n;if(n=L.get(i,r),n!==undefined)return n;if(n=P(i,r,undefined),n!==undefined)return n}else this.each(function(){var n=L.get(this,r);L.set(this,r,t),-1!==e.indexOf("-")&&n!==undefined&&L.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){L.remove(this,e)})}});function P(e,t,n){var r;if(n===undefined&&1===e.nodeType)if(r="data-"+t.replace(O,"-$1").toLowerCase(),n=e.getAttribute(r),"string"==typeof n){try{n="true"===n?!0:"false"===n?!1:"null"===n?null:+n+""===n?+n:H.test(n)?JSON.parse(n):n}catch(i){}L.set(e,t,n)}else n=undefined;return n}x.extend({queue:function(e,t,n){var r;return e?(t=(t||"fx")+"queue",r=q.get(e,t),n&&(!r||x.isArray(n)?r=q.access(e,t,x.makeArray(n)):r.push(n)),r||[]):undefined},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),s=function(){x.dequeue(e,t) -};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,s,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return q.get(e,n)||q.access(e,n,{empty:x.Callbacks("once memory").add(function(){q.remove(e,[t+"queue",n])})})}}),x.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),n>arguments.length?x.queue(this[0],e):t===undefined?this:this.each(function(){var n=x.queue(this,e,t);x._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=x.Deferred(),o=this,s=this.length,a=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=undefined),e=e||"fx";while(s--)n=q.get(o[s],e+"queueHooks"),n&&n.empty&&(r++,n.empty.add(a));return a(),i.promise(t)}});var R,M,W=/[\t\r\n\f]/g,$=/\r/g,B=/^(?:input|select|textarea|button)$/i;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[x.propFix[e]||e]})},addClass:function(e){var t,n,r,i,o,s=0,a=this.length,u="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];a>s;s++)if(n=this[s],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(W," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,s=0,a=this.length,u=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];a>s;s++)if(n=this[s],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(W," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,i=0,o=x(this),s=e.match(w)||[];while(t=s[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===r||"boolean"===n)&&(this.className&&q.set(this,"__className__",this.className),this.className=this.className||e===!1?"":q.get(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(W," ").indexOf(t)>=0)return!0;return!1},val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=x.isFunction(e),this.each(function(n){var i;1===this.nodeType&&(i=r?e.call(this,n,x(this).val()):e,null==i?i="":"number"==typeof i?i+="":x.isArray(i)&&(i=x.map(i,function(e){return null==e?"":e+""})),t=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&t.set(this,i,"value")!==undefined||(this.value=i))});if(i)return t=x.valHooks[i.type]||x.valHooks[i.nodeName.toLowerCase()],t&&"get"in t&&(n=t.get(i,"value"))!==undefined?n:(n=i.value,"string"==typeof n?n.replace($,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,s=o?null:[],a=o?i+1:r.length,u=0>i?a:o?i:0;for(;a>u;u++)if(n=r[u],!(!n.selected&&u!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),s=i.length;while(s--)r=i[s],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,t,n){var i,o,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===r?x.prop(e,t,n):(1===s&&x.isXMLDoc(e)||(t=t.toLowerCase(),i=x.attrHooks[t]||(x.expr.match.bool.test(t)?M:R)),n===undefined?i&&"get"in i&&null!==(o=i.get(e,t))?o:(o=x.find.attr(e,t),null==o?undefined:o):null!==n?i&&"set"in i&&(o=i.set(e,n,t))!==undefined?o:(e.setAttribute(t,n+""),n):(x.removeAttr(e,t),undefined))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(w);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)&&(e[r]=!1),e.removeAttribute(n)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,t,n){var r,i,o,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return o=1!==s||!x.isXMLDoc(e),o&&(t=x.propFix[t]||t,i=x.propHooks[t]),n!==undefined?i&&"set"in i&&(r=i.set(e,n,t))!==undefined?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){return e.hasAttribute("tabindex")||B.test(e.nodeName)||e.href?e.tabIndex:-1}}}}),M={set:function(e,t,n){return t===!1?x.removeAttr(e,n):e.setAttribute(n,n),n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,t){var n=x.expr.attrHandle[t]||x.find.attr;x.expr.attrHandle[t]=function(e,t,r){var i=x.expr.attrHandle[t],o=r?undefined:(x.expr.attrHandle[t]=undefined)!=n(e,t,r)?t.toLowerCase():null;return x.expr.attrHandle[t]=i,o}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,t){return x.isArray(t)?e.checked=x.inArray(x(e).val(),t)>=0:undefined}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var I=/^key/,z=/^(?:mouse|contextmenu)|click/,_=/^(?:focusinfocus|focusoutblur)$/,X=/^([^.]*)(?:\.(.+)|)$/;function U(){return!0}function Y(){return!1}function V(){try{return o.activeElement}catch(e){}}x.event={global:{},add:function(e,t,n,i,o){var s,a,u,l,c,p,f,h,d,g,m,y=q.get(e);if(y){n.handler&&(s=n,n=s.handler,o=s.selector),n.guid||(n.guid=x.guid++),(l=y.events)||(l=y.events={}),(a=y.handle)||(a=y.handle=function(e){return typeof x===r||e&&x.event.triggered===e.type?undefined:x.event.dispatch.apply(a.elem,arguments)},a.elem=e),t=(t||"").match(w)||[""],c=t.length;while(c--)u=X.exec(t[c])||[],d=m=u[1],g=(u[2]||"").split(".").sort(),d&&(f=x.event.special[d]||{},d=(o?f.delegateType:f.bindType)||d,f=x.event.special[d]||{},p=x.extend({type:d,origType:m,data:i,handler:n,guid:n.guid,selector:o,needsContext:o&&x.expr.match.needsContext.test(o),namespace:g.join(".")},s),(h=l[d])||(h=l[d]=[],h.delegateCount=0,f.setup&&f.setup.call(e,i,g,a)!==!1||e.addEventListener&&e.addEventListener(d,a,!1)),f.add&&(f.add.call(e,p),p.handler.guid||(p.handler.guid=n.guid)),o?h.splice(h.delegateCount++,0,p):h.push(p),x.event.global[d]=!0);e=null}},remove:function(e,t,n,r,i){var o,s,a,u,l,c,p,f,h,d,g,m=q.hasData(e)&&q.get(e);if(m&&(u=m.events)){t=(t||"").match(w)||[""],l=t.length;while(l--)if(a=X.exec(t[l])||[],h=g=a[1],d=(a[2]||"").split(".").sort(),h){p=x.event.special[h]||{},h=(r?p.delegateType:p.bindType)||h,f=u[h]||[],a=a[2]&&RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=o=f.length;while(o--)c=f[o],!i&&g!==c.origType||n&&n.guid!==c.guid||a&&!a.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(f.splice(o,1),c.selector&&f.delegateCount--,p.remove&&p.remove.call(e,c));s&&!f.length&&(p.teardown&&p.teardown.call(e,d,m.handle)!==!1||x.removeEvent(e,h,m.handle),delete u[h])}else for(h in u)x.event.remove(e,h+t[l],n,r,!0);x.isEmptyObject(u)&&(delete m.handle,q.remove(e,"events"))}},trigger:function(t,n,r,i){var s,a,u,l,c,p,f,h=[r||o],d=y.call(t,"type")?t.type:t,g=y.call(t,"namespace")?t.namespace.split("."):[];if(a=u=r=r||o,3!==r.nodeType&&8!==r.nodeType&&!_.test(d+x.event.triggered)&&(d.indexOf(".")>=0&&(g=d.split("."),d=g.shift(),g.sort()),c=0>d.indexOf(":")&&"on"+d,t=t[x.expando]?t:new x.Event(d,"object"==typeof t&&t),t.isTrigger=i?2:3,t.namespace=g.join("."),t.namespace_re=t.namespace?RegExp("(^|\\.)"+g.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=undefined,t.target||(t.target=r),n=null==n?[t]:x.makeArray(n,[t]),f=x.event.special[d]||{},i||!f.trigger||f.trigger.apply(r,n)!==!1)){if(!i&&!f.noBubble&&!x.isWindow(r)){for(l=f.delegateType||d,_.test(l+d)||(a=a.parentNode);a;a=a.parentNode)h.push(a),u=a;u===(r.ownerDocument||o)&&h.push(u.defaultView||u.parentWindow||e)}s=0;while((a=h[s++])&&!t.isPropagationStopped())t.type=s>1?l:f.bindType||d,p=(q.get(a,"events")||{})[t.type]&&q.get(a,"handle"),p&&p.apply(a,n),p=c&&a[c],p&&x.acceptData(a)&&p.apply&&p.apply(a,n)===!1&&t.preventDefault();return t.type=d,i||t.isDefaultPrevented()||f._default&&f._default.apply(h.pop(),n)!==!1||!x.acceptData(r)||c&&x.isFunction(r[d])&&!x.isWindow(r)&&(u=r[c],u&&(r[c]=null),x.event.triggered=d,r[d](),x.event.triggered=undefined,u&&(r[c]=u)),t.result}},dispatch:function(e){e=x.event.fix(e);var t,n,r,i,o,s=[],a=d.call(arguments),u=(q.get(this,"events")||{})[e.type]||[],l=x.event.special[e.type]||{};if(a[0]=e,e.delegateTarget=this,!l.preDispatch||l.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),t=0;while((i=s[t++])&&!e.isPropagationStopped()){e.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(o.namespace))&&(e.handleObj=o,e.data=o.data,r=((x.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,a),r!==undefined&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return l.postDispatch&&l.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,r,i,o,s=[],a=t.delegateCount,u=e.target;if(a&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!==this;u=u.parentNode||this)if(u.disabled!==!0||"click"!==e.type){for(r=[],n=0;a>n;n++)o=t[n],i=o.selector+" ",r[i]===undefined&&(r[i]=o.needsContext?x(i,this).index(u)>=0:x.find(i,this,null,[u]).length),r[i]&&r.push(o);r.length&&s.push({elem:u,handlers:r})}return t.length>a&&s.push({elem:this,handlers:t.slice(a)}),s},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,t){var n,r,i,s=t.button;return null==e.pageX&&null!=t.clientX&&(n=e.target.ownerDocument||o,r=n.documentElement,i=n.body,e.pageX=t.clientX+(r&&r.scrollLeft||i&&i.scrollLeft||0)-(r&&r.clientLeft||i&&i.clientLeft||0),e.pageY=t.clientY+(r&&r.scrollTop||i&&i.scrollTop||0)-(r&&r.clientTop||i&&i.clientTop||0)),e.which||s===undefined||(e.which=1&s?1:2&s?3:4&s?2:0),e}},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,s=e,a=this.fixHooks[i];a||(this.fixHooks[i]=a=z.test(i)?this.mouseHooks:I.test(i)?this.keyHooks:{}),r=a.props?this.props.concat(a.props):this.props,e=new x.Event(s),t=r.length;while(t--)n=r[t],e[n]=s[n];return e.target||(e.target=o),3===e.target.nodeType&&(e.target=e.target.parentNode),a.filter?a.filter(e,s):e},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==V()&&this.focus?(this.focus(),!1):undefined},delegateType:"focusin"},blur:{trigger:function(){return this===V()&&this.blur?(this.blur(),!1):undefined},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&x.nodeName(this,"input")?(this.click(),!1):undefined},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==undefined&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)},x.Event=function(e,t){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.getPreventDefault&&e.getPreventDefault()?U:Y):this.type=e,t&&x.extend(this,t),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,undefined):new x.Event(e,t)},x.Event.prototype={isDefaultPrevented:Y,isPropagationStopped:Y,isImmediatePropagationStopped:Y,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=U,e&&e.preventDefault&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=U,e&&e.stopPropagation&&e.stopPropagation()},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=U,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&o.addEventListener(e,r,!0)},teardown:function(){0===--n&&o.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,t,n,r,i){var o,s;if("object"==typeof e){"string"!=typeof t&&(n=n||t,t=undefined);for(s in e)this.on(s,t,n,e[s],i);return this}if(null==n&&null==r?(r=t,n=t=undefined):null==r&&("string"==typeof t?(r=n,n=undefined):(r=n,n=t,t=undefined)),r===!1)r=Y;else if(!r)return this;return 1===i&&(o=r,r=function(e){return x().off(e),o.apply(this,arguments)},r.guid=o.guid||(o.guid=x.guid++)),this.each(function(){x.event.add(this,e,r,n,t)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,x(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return(t===!1||"function"==typeof t)&&(n=t,t=undefined),n===!1&&(n=Y),this.each(function(){x.event.remove(this,e,n,t)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];return n?x.event.trigger(e,t,n,!0):undefined}});var G=/^.[^:#\[\.,]*$/,J=/^(?:parents|prev(?:Until|All))/,Q=x.expr.match.needsContext,K={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t=x(e,this),n=t.length;return this.filter(function(){var e=0;for(;n>e;e++)if(x.contains(this,t[e]))return!0})},not:function(e){return this.pushStack(et(this,e||[],!0))},filter:function(e){return this.pushStack(et(this,e||[],!1))},is:function(e){return!!et(this,"string"==typeof e&&Q.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],s=Q.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(s?s.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?g.call(x(e),this[0]):g.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function Z(e,t){while((e=e[t])&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return Z(e,"nextSibling")},prev:function(e){return Z(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return e.contentDocument||x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(K[e]||x.unique(i),J.test(e)&&i.reverse()),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,t,n){var r=[],i=n!==undefined;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&x(e).is(n))break;r.push(e)}return r},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function et(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(G.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return g.call(t,e)>=0!==n})}var tt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,nt=/<([\w:]+)/,rt=/<|&#?\w+;/,it=/<(?:script|style|link)/i,ot=/^(?:checkbox|radio)$/i,st=/checked\s*(?:[^=]|=\s*.checked.)/i,at=/^$|\/(?:java|ecma)script/i,ut=/^true\/(.*)/,lt=/^\s*\s*$/g,ct={option:[1,""],thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};ct.optgroup=ct.option,ct.tbody=ct.tfoot=ct.colgroup=ct.caption=ct.thead,ct.th=ct.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===undefined?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||o).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=pt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=pt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(mt(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&dt(mt(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++)1===e.nodeType&&(x.cleanData(mt(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var t=this[0]||{},n=0,r=this.length;if(e===undefined&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!it.test(e)&&!ct[(nt.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(tt,"<$1>");try{for(;r>n;n++)t=this[n]||{},1===t.nodeType&&(x.cleanData(mt(t,!1)),t.innerHTML=e);t=0}catch(i){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=f.apply([],e);var r,i,o,s,a,u,l=0,c=this.length,p=this,h=c-1,d=e[0],g=x.isFunction(d);if(g||!(1>=c||"string"!=typeof d||x.support.checkClone)&&st.test(d))return this.each(function(r){var i=p.eq(r);g&&(e[0]=d.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(r=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),i=r.firstChild,1===r.childNodes.length&&(r=i),i)){for(o=x.map(mt(r,"script"),ft),s=o.length;c>l;l++)a=r,l!==h&&(a=x.clone(a,!0,!0),s&&x.merge(o,mt(a,"script"))),t.call(this[l],a,l);if(s)for(u=o[o.length-1].ownerDocument,x.map(o,ht),l=0;s>l;l++)a=o[l],at.test(a.type||"")&&!q.access(a,"globalEval")&&x.contains(u,a)&&(a.src?x._evalUrl(a.src):x.globalEval(a.textContent.replace(lt,"")))}return this}}),x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=[],i=x(e),o=i.length-1,s=0;for(;o>=s;s++)n=s===o?this:this.clone(!0),x(i[s])[t](n),h.apply(r,n.get());return this.pushStack(r)}}),x.extend({clone:function(e,t,n){var r,i,o,s,a=e.cloneNode(!0),u=x.contains(e.ownerDocument,e);if(!(x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(s=mt(a),o=mt(e),r=0,i=o.length;i>r;r++)yt(o[r],s[r]);if(t)if(n)for(o=o||mt(e),s=s||mt(a),r=0,i=o.length;i>r;r++)gt(o[r],s[r]);else gt(e,a);return s=mt(a,"script"),s.length>0&&dt(s,!u&&mt(e,"script")),a},buildFragment:function(e,t,n,r){var i,o,s,a,u,l,c=0,p=e.length,f=t.createDocumentFragment(),h=[];for(;p>c;c++)if(i=e[c],i||0===i)if("object"===x.type(i))x.merge(h,i.nodeType?[i]:i);else if(rt.test(i)){o=o||f.appendChild(t.createElement("div")),s=(nt.exec(i)||["",""])[1].toLowerCase(),a=ct[s]||ct._default,o.innerHTML=a[1]+i.replace(tt,"<$1>")+a[2],l=a[0];while(l--)o=o.lastChild;x.merge(h,o.childNodes),o=f.firstChild,o.textContent=""}else h.push(t.createTextNode(i));f.textContent="",c=0;while(i=h[c++])if((!r||-1===x.inArray(i,r))&&(u=x.contains(i.ownerDocument,i),o=mt(f.appendChild(i),"script"),u&&dt(o),n)){l=0;while(i=o[l++])at.test(i.type||"")&&n.push(i)}return f},cleanData:function(e){var t,n,r,i,o,s,a=x.event.special,u=0;for(;(n=e[u])!==undefined;u++){if(F.accepts(n)&&(o=n[q.expando],o&&(t=q.cache[o]))){if(r=Object.keys(t.events||{}),r.length)for(s=0;(i=r[s])!==undefined;s++)a[i]?x.event.remove(n,i):x.removeEvent(n,i,t.handle);q.cache[o]&&delete q.cache[o]}delete L.cache[n[L.expando]]}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}});function pt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function ft(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function ht(e){var t=ut.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function dt(e,t){var n=e.length,r=0;for(;n>r;r++)q.set(e[r],"globalEval",!t||q.get(t[r],"globalEval"))}function gt(e,t){var n,r,i,o,s,a,u,l;if(1===t.nodeType){if(q.hasData(e)&&(o=q.access(e),s=q.set(t,o),l=o.events)){delete s.handle,s.events={};for(i in l)for(n=0,r=l[i].length;r>n;n++)x.event.add(t,i,l[i][n])}L.hasData(e)&&(a=L.access(e),u=x.extend({},a),L.set(t,u))}}function mt(e,t){var n=e.getElementsByTagName?e.getElementsByTagName(t||"*"):e.querySelectorAll?e.querySelectorAll(t||"*"):[];return t===undefined||t&&x.nodeName(e,t)?x.merge([e],n):n}function yt(e,t){var n=t.nodeName.toLowerCase();"input"===n&&ot.test(e.type)?t.checked=e.checked:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}x.fn.extend({wrapAll:function(e){var t;return x.isFunction(e)?this.each(function(t){x(this).wrapAll(e.call(this,t))}):(this[0]&&(t=x(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this)},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var vt,xt,bt=/^(none|table(?!-c[ea]).+)/,wt=/^margin/,Tt=RegExp("^("+b+")(.*)$","i"),Ct=RegExp("^("+b+")(?!px)[a-z%]+$","i"),kt=RegExp("^([+-])=("+b+")","i"),Nt={BODY:"block"},Et={position:"absolute",visibility:"hidden",display:"block"},St={letterSpacing:0,fontWeight:400},jt=["Top","Right","Bottom","Left"],Dt=["Webkit","O","Moz","ms"];function At(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Dt.length;while(i--)if(t=Dt[i]+n,t in e)return t;return r}function Lt(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function qt(t){return e.getComputedStyle(t,null)}function Ht(e,t){var n,r,i,o=[],s=0,a=e.length;for(;a>s;s++)r=e[s],r.style&&(o[s]=q.get(r,"olddisplay"),n=r.style.display,t?(o[s]||"none"!==n||(r.style.display=""),""===r.style.display&&Lt(r)&&(o[s]=q.access(r,"olddisplay",Rt(r.nodeName)))):o[s]||(i=Lt(r),(n&&"none"!==n||!i)&&q.set(r,"olddisplay",i?n:x.css(r,"display"))));for(s=0;a>s;s++)r=e[s],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[s]||"":"none"));return e}x.fn.extend({css:function(e,t){return x.access(this,function(e,t,n){var r,i,o={},s=0;if(x.isArray(t)){for(r=qt(e),i=t.length;i>s;s++)o[t[s]]=x.css(e,t[s],!1,r);return o}return n!==undefined?x.style(e,t,n):x.css(e,t)},e,t,arguments.length>1)},show:function(){return Ht(this,!0)},hide:function(){return Ht(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){Lt(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=vt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,s,a=x.camelCase(t),u=e.style;return t=x.cssProps[a]||(x.cssProps[a]=At(u,a)),s=x.cssHooks[t]||x.cssHooks[a],n===undefined?s&&"get"in s&&(i=s.get(e,!1,r))!==undefined?i:u[t]:(o=typeof n,"string"===o&&(i=kt.exec(n))&&(n=(i[1]+1)*i[2]+parseFloat(x.css(e,t)),o="number"),null==n||"number"===o&&isNaN(n)||("number"!==o||x.cssNumber[a]||(n+="px"),x.support.clearCloneStyle||""!==n||0!==t.indexOf("background")||(u[t]="inherit"),s&&"set"in s&&(n=s.set(e,n,r))===undefined||(u[t]=n)),undefined)}},css:function(e,t,n,r){var i,o,s,a=x.camelCase(t);return t=x.cssProps[a]||(x.cssProps[a]=At(e.style,a)),s=x.cssHooks[t]||x.cssHooks[a],s&&"get"in s&&(i=s.get(e,!0,n)),i===undefined&&(i=vt(e,t,r)),"normal"===i&&t in St&&(i=St[t]),""===n||n?(o=parseFloat(i),n===!0||x.isNumeric(o)?o||0:i):i}}),vt=function(e,t,n){var r,i,o,s=n||qt(e),a=s?s.getPropertyValue(t)||s[t]:undefined,u=e.style;return s&&(""!==a||x.contains(e.ownerDocument,e)||(a=x.style(e,t)),Ct.test(a)&&wt.test(t)&&(r=u.width,i=u.minWidth,o=u.maxWidth,u.minWidth=u.maxWidth=u.width=a,a=s.width,u.width=r,u.minWidth=i,u.maxWidth=o)),a};function Ot(e,t,n){var r=Tt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function Ft(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,s=0;for(;4>o;o+=2)"margin"===n&&(s+=x.css(e,n+jt[o],!0,i)),r?("content"===n&&(s-=x.css(e,"padding"+jt[o],!0,i)),"margin"!==n&&(s-=x.css(e,"border"+jt[o]+"Width",!0,i))):(s+=x.css(e,"padding"+jt[o],!0,i),"padding"!==n&&(s+=x.css(e,"border"+jt[o]+"Width",!0,i)));return s}function Pt(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=qt(e),s=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=vt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Ct.test(i))return i;r=s&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+Ft(e,t,n||(s?"border":"content"),r,o)+"px"}function Rt(e){var t=o,n=Nt[e];return n||(n=Mt(e,t),"none"!==n&&n||(xt=(xt||x("