summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBernhard Posselt <dev@bernhard-posselt.com>2014-11-21 13:53:36 +0100
committerBernhard Posselt <dev@bernhard-posselt.com>2014-11-21 13:53:47 +0100
commit8ddead06277f7c863fe048e9990d4c9ce0c24424 (patch)
tree699416065dcf10871bf416164f36f1d05a03a480
parent3306d28e2d45fa03c2ca5b93de45ad59e7aad3f0 (diff)
fix #660
-rw-r--r--CHANGELOG.md2
-rw-r--r--composer.json2
-rw-r--r--composer.lock16
-rw-r--r--css/explore.css4
-rw-r--r--css/news-owncloud7.min.css2
-rw-r--r--css/news.min.css2
-rw-r--r--db/feed.php1
-rw-r--r--explore/sites.en.json8
-rw-r--r--js/build/app.js23
-rw-r--r--js/build/app.min.js4
-rw-r--r--js/controller/ExploreController.js10
-rw-r--r--js/service/FeedResource.js13
-rw-r--r--js/tests/unit/controller/ExploreControllerSpec.js8
-rw-r--r--js/tests/unit/service/FeedResourceSpec.js5
-rw-r--r--templates/part.content.explore.php6
-rw-r--r--tests/unit/db/FeedTest.php3
-rw-r--r--vendor/autoload.php2
-rw-r--r--vendor/composer/autoload_real.php10
-rw-r--r--vendor/composer/installed.json12
-rw-r--r--vendor/fguillot/picofeed/lib/PicoFeed/Parser/Atom.php5
-rw-r--r--vendor/fguillot/picofeed/lib/PicoFeed/Reader/Reader.php4
-rw-r--r--vendor/fguillot/picofeed/tests/Parser/AtomParserTest.php5
-rw-r--r--vendor/fguillot/picofeed/tests/fixtures/youtube.xml979
23 files changed, 1079 insertions, 47 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a1ba0b146..0c7cca57c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,8 @@ owncloud-news (4.2.0)
* **Bugfix**: Fix compact view in firefox 34
* **Bugfix**: Show spinner when autopaging
* **Bugfix**: Remove race condition when fetching articles that sometimes shows read articles if the user clicks show on only unread and the article request finishes first before the settings request is finished
+* **Bugfix**: Ignore Atom updated tag if it is earlier than the published tag
+* **Bugfix**: Do not log errors that a subscription could not be found when http cache says nothing changed
owncloud-news (4.1.3)
* **Enhancement**: Fade out folders and feeds instead of just hiding them when the unread count drops to 0 and only unread articles should be shown
diff --git a/composer.json b/composer.json
index a35672b65..8d852e167 100644
--- a/composer.json
+++ b/composer.json
@@ -32,6 +32,6 @@
"require": {
"pear/net_url2": "~2.1",
"ezyang/htmlpurifier": "~4.6",
- "fguillot/picofeed": "~0.1.0"
+ "fguillot/picofeed": "dev-master"
}
}
diff --git a/composer.lock b/composer.lock
index f8a96a493..2a06a0a1a 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
- "hash": "3cbce8173a1c93656be80baf11715718",
+ "hash": "20b66066a8d4a6802ecf6399590ef15b",
"packages": [
{
"name": "ezyang/htmlpurifier",
@@ -53,16 +53,16 @@
},
{
"name": "fguillot/picofeed",
- "version": "v0.1.0",
+ "version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/fguillot/picoFeed.git",
- "reference": "d36a878e912a04c15f49da97e8d627280ae6918c"
+ "reference": "e3e5bb1b09eaf8799761128bcf4f31e06f5bd432"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/fguillot/picoFeed/zipball/d36a878e912a04c15f49da97e8d627280ae6918c",
- "reference": "d36a878e912a04c15f49da97e8d627280ae6918c",
+ "url": "https://api.github.com/repos/fguillot/picoFeed/zipball/e3e5bb1b09eaf8799761128bcf4f31e06f5bd432",
+ "reference": "e3e5bb1b09eaf8799761128bcf4f31e06f5bd432",
"shasum": ""
},
"require": {
@@ -86,7 +86,7 @@
],
"description": "Modern library to write or read feeds (RSS/Atom)",
"homepage": "http://fguillot.github.io/picoFeed",
- "time": "2014-11-08 14:43:27"
+ "time": "2014-11-21 00:59:35"
},
{
"name": "pear/net_url2",
@@ -156,7 +156,9 @@
"packages-dev": [],
"aliases": [],
"minimum-stability": "stable",
- "stability-flags": [],
+ "stability-flags": {
+ "fguillot/picofeed": 20
+ },
"prefer-stable": false,
"platform": [],
"platform-dev": []
diff --git a/css/explore.css b/css/explore.css
index be2eae94a..bfa4d892d 100644
--- a/css/explore.css
+++ b/css/explore.css
@@ -57,6 +57,10 @@
padding: 0 0 15px 35px;
}
+#explore .explore-section h3 a:hover {
+ text-decoration: underline;
+}
+
#explore .explore-logo {
text-align: center;
margin-top: 25px;
diff --git a/css/news-owncloud7.min.css b/css/news-owncloud7.min.css
index 8d35daf5c..7293d6e8a 100644
--- a/css/news-owncloud7.min.css
+++ b/css/news-owncloud7.min.css
@@ -1 +1 @@
-#app-navigation .active.with-menu>a,#app-navigation .with-counter>a{padding-right:50px}#app-navigation .active.with-menu.with-counter>a{padding-right:90px}#app-navigation>.with-icon ul li.app-navigation-entry-loading>a,#app-navigation>.with-icon ul li>a{padding-left:68px;background-position:44px center}#app-navigation .selected,#app-navigation .selected a,#app-navigation li:hover>a{background-color:#ddd}#app-navigation .app-navigation-entry-loading a,#app-navigation .with-icon a{padding-left:44px;background-size:16px 16px;background-position:14px center;background-repeat:no-repeat}#app-navigation .collapsible.open{background-image:linear-gradient(top,#eee 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#eee 0,#f5f5f5 100%);background-image:-moz-linear-gradient(top,#eee 0,#f5f5f5 100%);background-image:-webkit-linear-gradient(top,#eee 0,#f5f5f5 100%);background-image:-ms-linear-gradient(top,#eee 0,#f5f5f5 100%)}#app-navigation>ul .collapsible.open:hover{box-shadow:inset 0 0 3px #ddd}#app-navigation>ul .collapsible.open ul{display:block}#app-navigation .app-navigation-entry-deleted{display:inline-block;height:44px;width:100%}#app-navigation .app-navigation-entry-deleted-description{padding-left:12px;position:relative;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:inline-block;width:201px;width:calc(100% - 49px);line-height:44px;float:left}#app-navigation .app-navigation-entry-deleted-button{margin:0;height:44px;width:44px;line-height:44px;border:0;display:inline-block;background-color:transparent;opacity:.5}#app-navigation .app-navigation-entry-deleted-button:hover{opacity:1}#app-navigation .app-navigation-entry-utils{position:absolute;top:0;right:0;z-index:10}#app-navigation .app-navigation-entry-utils ul{display:block!important}#app-navigation .app-navigation-entry-utils li{float:left;width:44px!important;height:44px;line-height:44px}#app-navigation .active>.app-navigation-entry-utils li{display:inline-block}#app-navigation .app-navigation-entry-utils button{height:38px;width:38px;line-height:38px;float:left}#app-navigation .app-navigation-entry-utils-menu-button{display:none}#app-navigation .app-navigation-entry-utils-menu-button button{border:0;opacity:.5;background-color:transparent;background-repeat:no-repeat;background-position:center;background-image:url(../img/7/more.svg)}#app-navigation .app-navigation-entry-utils-menu-button:focus button,#app-navigation .app-navigation-entry-utils-menu-button:hover button{background-color:transparent;opacity:1}#app-navigation .app-navigation-entry-utils-counter{overflow:hidden;text-overflow:hidden;text-align:right;font-size:9pt;width:38px;line-height:44px;padding:0 10px}#app-navigation .app-navigation-entry-menu ul,#app-navigation .app-navigation-entry-utils ul{list-style-type:none}#app-navigation .app-navigation-entry-menu{display:none;position:absolute;background-color:#eee;color:#333;border-radius:3px 0 3px 3px;z-index:110;margin:-5px 14px 5px 10px;right:0;border:1px solid #bbb;-webkit-filter:drop-shadow(0 0 5px rgba(150,150,150,.75));-moz-filter:drop-shadow(0 0 5px rgba(150,150,150,.75));-ms-filter:drop-shadow(0 0 5px rgba(150,150,150,.75));-o-filter:drop-shadow(0 0 5px rgba(150,150,150,.75));filter:drop-shadow(0 0 5px rgba(150,150,150,.75))}#app-navigation .app-navigation-entry-menu.open{display:block}#app-navigation .app-navigation-entry-menu:after,#app-navigation .app-navigation-entry-menu:before{bottom:100%;right:0;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}#app-navigation .app-navigation-entry-menu:after{border-color:rgba(238,238,238,0);border-bottom-color:#eee;border-width:10px;margin-left:-10px}#app-navigation .app-navigation-entry-menu:before{border-color:rgba(187,187,187,0);border-bottom-color:#bbb;border-width:11px;margin-left:-11px}#app-navigation .app-navigation-entry-menu ul{display:block!important}#app-navigation .app-navigation-entry-menu li{float:left;width:38px!important}#app-navigation .app-navigation-entry-menu li button{float:right;width:36px!important;height:36px;line-height:36px;border:0;opacity:.5;background-color:transparent}#app-navigation .app-navigation-entry-menu li button:focus,#app-navigation .app-navigation-entry-menu li button:hover{opacity:1;background-color:transparent}#app-navigation .app-navigation-entry-edit{padding-left:5px;padding-right:5px;display:inline-block;height:39px;width:100%}#app-navigation .app-navigation-entry-edit input{border-bottom-right-radius:0;border-top-right-radius:0;width:204px;width:calc(100% - 36px);padding:5px;margin-right:0;height:38px;float:left;border:1px solid rgba(190,190,190,.9)}#app-navigation .app-navigation-entry-edit button,#app-navigation .app-navigation-entry-edit input[type=submit]{width:36px;height:38px;float:left}#app-navigation .app-navigation-entry-edit .icon-checkmark{border-bottom-left-radius:0;border-top-left-radius:0;border-left:0;margin-right:0}#app-content{z-index:25}#app-settings,#expanddiv{z-index:15}#global-loading{width:100%;height:100%}#undo-container{position:fixed;top:0;width:100%;text-align:center;z-index:101;line-height:1.2}#undo{z-index:101;background-color:#fc4;border:0;padding:0 .7em .3em;display:none;position:relative;top:0;border-bottom-left-radius:1em;border-bottom-right-radius:1em}#undo a{font-weight:700}#undo a:hover{text-decoration:underline}#app-content .no-feeds-available{text-align:center;color:#333;font-size:16pt;min-height:100%;height:100%;width:100%;display:table}#app-content .no-feeds-available p{vertical-align:middle;display:table-cell}#app-content-wrapper,#articles{height:100%}#cron-warning{background-color:#fc0;text-align:center;width:100%;padding:10px;font-size:13pt}#cron-warning li,#cron-warning p{line-height:1.5}#cron-warning a{color:#00f}#cron-warning a:hover{text-decoration:underline}#app-content.loading-content{background:url(../img/loading.gif) calc(50% - 16px) calc(50% - 16px) no-repeat}#app-content.loading-content>*{display:none}#app-content:not(.explore) #articles:after{content:'';display:block;height:100%;background-repeat:no-repeat}#app-content .autopaging:#articles:after{content:'';background-image:url(../img/loading.gif);background-position:calc(50% - 16px) calc(50% - 16px)}.pull-to-refresh{height:0;overflow:hidden;text-align:center;background-image:-moz-linear-gradient(top,#eee 0,#fefefe 100%);background-image:-webkit-linear-gradient(top,#eee 0,#fefefe 100%);background-image:-ms-linear-gradient(top,#eee 0,#fefefe 100%);background-image:linear-gradient(top,#eee 0,#fefefe 100%)}.pull-to-refresh.show-pull-to-refresh{transition:all .5s ease;padding-top:10px;height:44px}#app-content .only-in-expanded{display:block}#app-content .compact .only-in-expanded,#app-content .only-in-compact{display:none}#app-content .compact .only-in-compact{display:block}#app-content .item{cursor:default;border-bottom:1px solid #eee;background-image:linear-gradient(top,#f8f8f8 0,#fff 84px)}#app-content .item:last-child{border-bottom:0}#app-content .utils{width:100%;line-height:52px;box-sizing:border-box;padding:15px 50px 0 15px}#app-content .compact .utils{cursor:pointer;padding-top:0}#app-content .utils ul{height:40px;list-style-type:none;display:flex;margin:0;padding:0}#app-content .open .utils ul{height:auto}#app-content .utils ul>li{min-width:0}#app-content .util-spacer{width:20px}#app-content .compact .util-spacer{width:19px}#app-content .utils li{line-height:40px;vertical-align:middle}#app-content .utils li:last-child{padding-right:0}#app-content .utils li:first-child{padding-left:0}#app-content .utils .util{padding:0 6px}#app-content .utils .external,#app-content .utils button{padding:0;margin:0;height:40px;width:40px;border:0;float:left;background-color:transparent;background-repeat:no-repeat;background-size:25px;background-position:center}#app-content .utils .external,#app-content .utils .icon-toggle,#app-content .utils .menu button{display:inline-block;opacity:.3}#app-content .utils .external:hover,#app-content .utils .icon-toggle.keep-unread,#app-content .utils .icon-toggle:hover,#app-content .utils .menu button:hover{opacity:1}#app-content .utils .star{background-image:url(../img/inactive_star.svg)}#app-content .utils .star:hover,#app-content .utils .starred{background-image:url(../img/active_star.svg)}#app-content .utils .title{width:100%;padding-left:45px;background-position:10px 10px;background-size:20px 20px;background-repeat:no-repeat}#app-content .feed-view .utils .title{background:none!important;padding-left:10px}#app-content .utils .title h1 a{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:100%;line-height:40px;display:inline-block;color:#222;font-weight:700;font-size:16px}#app-content .open .utils .title h1 a{overflow:auto;white-space:normal}#app-content .read .utils .title h1 a{font-weight:400;color:#888}#app-content .utils .date{padding:0 15px;margin-right:25px}#app-content .heading{padding:25px 0 10px}#app-content .heading h1{font-size:19px;margin-right:182px;word-wrap:break-word}#app-content .heading a{font-weight:700;color:#000}#app-content .heading a:hover{text-decoration:underline}#app-content .heading .date{float:right;display:inline-block;font-size:15px}#app-content .read .heading a{font-weight:400!important;color:#888}#app-content .feed-view .source{display:none}#app-content .article{min-height:69px;padding:0 50px 50px}#app-content .compact .article{display:none}#app-content .open .article{display:block}#app-content .subtitle{color:#aaa;font-size:15px;width:100%;padding-bottom:25px}#app-content .subtitle a{color:#aaa}#app-content .subtitle a:hover{text-decoration:underline}#app-content .date{color:#aaa;white-space:nowrap}#app-content .author{color:#aaa;font-size:15px}#app-content .author a{color:inherit}#app-content .author a:hover{text-decoration:underline}#app-content .enclosure{padding:20px 0;text-align:center;max-width:770px;margin-bottom:15px}#app-content .enclosure audio,#app-content .enclosure img,#app-content .enclosure video{width:100%}#app-content .enclosure video{background-color:#000}#app-content .enclosure-error{line-height:1.5;height:40px}#app-content .body{max-width:770px;font-size:14px;clear:both;overflow-x:auto}#app-content .body p{line-height:1.5;margin:7px 0 14px}#app-content .body img,#app-content .body table{max-width:100%;height:auto;overflow:auto;word-wrap:break-word;white-space:normal}#app-content .body>div :first-child>img:first-child,#app-content .body>div>img:first-child{padding:0 14px 0 0;float:left}#app-content .body h1,#app-content .body h2{font-size:17px;font-weight:700;color:#222;margin:21px 0 0}#app-content .body h3{font-size:15px;font-weight:700;color:#222;margin:21px 0 0;text-decoration:underline}#app-content .body h4,#app-content .body h5,#app-content .body h6{font-weight:700}#app-content .body>div{margin:7px 0}#app-content .body a{color:#00f;text-decoration:underline}#app-content .body ul{margin:7px 0;padding-left:14px;list-style-type:disc}#app-content .body ol{margin:7px 0;padding-left:21px}#app-content .body ul li{cursor:default;line-height:21px}#app-content .body pre{padding:7px 7px 7px 14px;background-color:#dadada;border:1px solid #ccc;margin:7px 0 14px;overflow-y:auto}#app-content .body pre::-webkit-scrollbar{height:10px}#app-content .body pre::-webkit-scrollbar-thumb{background:#333}#app-content .body pre::-webkit-scrollbar-track-piece{background:#ddd}#app-content .body code,#app-content .body pre{font-family:monospace;font-size:16px}#app-content .body blockquote{border-left:1px solid #d2d2d2;margin:25px 0;padding:0 0 0 15px;font-style:italic}#app-content .body em{font-style:italic;opacity:1}#app-content .custom-heise-de .body p>span:first-child{display:inline-block;float:left;margin-right:10px;padding:6px 0}#app-content .custom-slashdot-org .body div>i{display:block;border-left:1px solid #d2d2d2;margin:25px 0;padding:0 0 0 15px}@media (max-width:770px){#app-content .utils .date{display:none}#app-shortcuts th:first-child{padding-left:44px}}@media (max-width:600px){#app-content .heading .date{display:none}#app-content .heading h1{margin-right:0}#app-content .utils{padding-right:15px}#app-content .article{padding-right:15px;padding-left:44px}}#app-shortcuts table{border-collapse:collapse;width:100%;white-space:normal}#app-shortcuts tr:first-child{background-color:#f5f5f5}#app-shortcuts td,#app-shortcuts th{padding:10px}#app-shortcuts td{padding-right:15px}#app-shortcuts th{font-weight:700}#app-shortcuts td:first-child,#app-shortcuts th:first-child{text-align:right;font-weight:700;width:140px;-moz-box-sizing:content-box;box-sizing:content-box}#app-navigation .add-new .heading{height:44px;width:100%;padding:0 0 0 44px;background-position:14px center}#app-navigation .add-new .heading:hover{background-color:#ccc}#app-navigation .add-new .heading button{padding:0;line-height:44px;width:100%;border:0;margin:0;background:0 0;text-align:left;font-weight:400}#app-navigation .add-new-popup{display:none;padding:10px;box-shadow:inset 0 0 10px #dedede;border-top:1px solid #dedede;border-bottom:1px solid #dedede}#app-navigation input.ng-invalid{border:1px solid #d14}#app-navigation .add-new-popup input,#app-navigation .add-new-popup select{width:100%;height:36px;padding:5px;margin-right:0}#app-navigation #new-feed [name=folderName],#app-navigation .add-new-popup select{width:calc(100% - 36px);border-right:0;border-top-right-radius:0;border-bottom-right-radius:0;float:left}#app-navigation .add-new-popup .add-new-folder-primary{float:right;border-bottom-left-radius:0;border-top-left-radius:0;width:36px;height:36px;margin-left:0;margin-right:0}#app-navigation .add-new-popup .error{padding:0 0 10px}#app-navigation .icon-starred{background-image:url(../img/starred.png)}.icon-rss{background-image:url(../img/rss.svg)!important}#app-navigation .unread>a{font-weight:700}#app-navigation .entry-loading{background-image:url(../img/loading.gif)!important}#app-navigation input.entry-loading{background-size:20px}#app-navigation p.error{line-height:25px}#app-navigation .folder-rename-error{height:auto}#app-navigation .error-message{padding:15px;background-color:#DE1212;color:#fff;position:relative}#app-navigation .ui-state-disabled{opacity:1}#app-navigation .error-message .title{font-weight:700;padding-right:30px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#app-navigation .error-message button{top:0;right:0;position:absolute;margin:0;height:44px;width:44px;padding:15px;border:0;background-size:25px;background-color:transparent;background-image:url(../img/close.svg);background-repeat:no-repeat;background-position:right 5px top 5px;opacity:.9}#app-navigation .error-message button:hover{opacity:1}#app-navigation .animate-show.ng-hide-add,#app-navigation .animate-show.ng-hide-remove{transition:0s linear opacity}#app-navigation .animate-show.ng-hide-add-active,#app-navigation .animate-show.ng-hide-remove-active{transition:.2s linear opacity}#app-navigation .animate-show{opacity:1}#app-navigation .animate-show.ng-hide{opacity:0}#app-settings input[type=file]{position:absolute;left:-30000px}#app-settings .opened:hover{background-color:transparent!important}#app-settings-content{padding-bottom:25px}#app-settings-content h3{padding:5px 0;font-weight:700}#app-settings-content a{color:#00F;text-decoration:underline}#app-settings-content p{padding:2px 2px 2px 10px}.button-icon-label{background-position:10px center;background-size:16px;padding-left:25px}#app-settings .import-export h3{padding-top:15px;padding-bottom:5px}#app-settings .import-export a,#app-settings .import-export button{width:113px;height:30px;margin:0;vertical-align:middle;background-position:center}#app-settings .import-export a{display:inline-block}.explore #app-content-wrapper{height:100%}#explore{height:100%;width:100%}#explore h1{font-size:16pt;padding:30px 0;text-align:center}#explore .explore-section{padding:20px 45px}#explore .explore-section h2{color:#333;font-size:14pt;padding-bottom:10px}#explore .explore-section li{padding:20px 30px;margin:0 20px 20px 0;display:inline-block;vertical-align:top;width:300px;background-color:#f5f5f5;border:1px solid #ccc}#explore .explore-section h3{line-height:45px;height:45px;font-size:13pt;background-repeat:no-repeat;background-position:0 center;background-size:24px 24px;padding:0 0 15px 35px}#explore .explore-logo{text-align:center;margin-top:25px}#explore .explore-logo img{width:100%}#explore .explore-subscribe{padding-top:15px;text-align:right}#explore .explore-content{min-height:100px} \ No newline at end of file
+#app-navigation .active.with-menu>a,#app-navigation .with-counter>a{padding-right:50px}#app-navigation .active.with-menu.with-counter>a{padding-right:90px}#app-navigation>.with-icon ul li.app-navigation-entry-loading>a,#app-navigation>.with-icon ul li>a{padding-left:68px;background-position:44px center}#app-navigation .selected,#app-navigation .selected a,#app-navigation li:hover>a{background-color:#ddd}#app-navigation .app-navigation-entry-loading a,#app-navigation .with-icon a{padding-left:44px;background-size:16px 16px;background-position:14px center;background-repeat:no-repeat}#app-navigation .collapsible.open{background-image:linear-gradient(top,#eee 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#eee 0,#f5f5f5 100%);background-image:-moz-linear-gradient(top,#eee 0,#f5f5f5 100%);background-image:-webkit-linear-gradient(top,#eee 0,#f5f5f5 100%);background-image:-ms-linear-gradient(top,#eee 0,#f5f5f5 100%)}#app-navigation>ul .collapsible.open:hover{box-shadow:inset 0 0 3px #ddd}#app-navigation>ul .collapsible.open ul{display:block}#app-navigation .app-navigation-entry-deleted{display:inline-block;height:44px;width:100%}#app-navigation .app-navigation-entry-deleted-description{padding-left:12px;position:relative;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:inline-block;width:201px;width:calc(100% - 49px);line-height:44px;float:left}#app-navigation .app-navigation-entry-deleted-button{margin:0;height:44px;width:44px;line-height:44px;border:0;display:inline-block;background-color:transparent;opacity:.5}#app-navigation .app-navigation-entry-deleted-button:hover{opacity:1}#app-navigation .app-navigation-entry-utils{position:absolute;top:0;right:0;z-index:10}#app-navigation .app-navigation-entry-utils ul{display:block!important}#app-navigation .app-navigation-entry-utils li{float:left;width:44px!important;height:44px;line-height:44px}#app-navigation .active>.app-navigation-entry-utils li{display:inline-block}#app-navigation .app-navigation-entry-utils button{height:38px;width:38px;line-height:38px;float:left}#app-navigation .app-navigation-entry-utils-menu-button{display:none}#app-navigation .app-navigation-entry-utils-menu-button button{border:0;opacity:.5;background-color:transparent;background-repeat:no-repeat;background-position:center;background-image:url(../img/7/more.svg)}#app-navigation .app-navigation-entry-utils-menu-button:focus button,#app-navigation .app-navigation-entry-utils-menu-button:hover button{background-color:transparent;opacity:1}#app-navigation .app-navigation-entry-utils-counter{overflow:hidden;text-overflow:hidden;text-align:right;font-size:9pt;width:38px;line-height:44px;padding:0 10px}#app-navigation .app-navigation-entry-menu ul,#app-navigation .app-navigation-entry-utils ul{list-style-type:none}#app-navigation .app-navigation-entry-menu{display:none;position:absolute;background-color:#eee;color:#333;border-radius:3px 0 3px 3px;z-index:110;margin:-5px 14px 5px 10px;right:0;border:1px solid #bbb;-webkit-filter:drop-shadow(0 0 5px rgba(150,150,150,.75));-moz-filter:drop-shadow(0 0 5px rgba(150,150,150,.75));-ms-filter:drop-shadow(0 0 5px rgba(150,150,150,.75));-o-filter:drop-shadow(0 0 5px rgba(150,150,150,.75));filter:drop-shadow(0 0 5px rgba(150,150,150,.75))}#app-navigation .app-navigation-entry-menu.open{display:block}#app-navigation .app-navigation-entry-menu:after,#app-navigation .app-navigation-entry-menu:before{bottom:100%;right:0;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}#app-navigation .app-navigation-entry-menu:after{border-color:rgba(238,238,238,0);border-bottom-color:#eee;border-width:10px;margin-left:-10px}#app-navigation .app-navigation-entry-menu:before{border-color:rgba(187,187,187,0);border-bottom-color:#bbb;border-width:11px;margin-left:-11px}#app-navigation .app-navigation-entry-menu ul{display:block!important}#app-navigation .app-navigation-entry-menu li{float:left;width:38px!important}#app-navigation .app-navigation-entry-menu li button{float:right;width:36px!important;height:36px;line-height:36px;border:0;opacity:.5;background-color:transparent}#app-navigation .app-navigation-entry-menu li button:focus,#app-navigation .app-navigation-entry-menu li button:hover{opacity:1;background-color:transparent}#app-navigation .app-navigation-entry-edit{padding-left:5px;padding-right:5px;display:inline-block;height:39px;width:100%}#app-navigation .app-navigation-entry-edit input{border-bottom-right-radius:0;border-top-right-radius:0;width:204px;width:calc(100% - 36px);padding:5px;margin-right:0;height:38px;float:left;border:1px solid rgba(190,190,190,.9)}#app-navigation .app-navigation-entry-edit button,#app-navigation .app-navigation-entry-edit input[type=submit]{width:36px;height:38px;float:left}#app-navigation .app-navigation-entry-edit .icon-checkmark{border-bottom-left-radius:0;border-top-left-radius:0;border-left:0;margin-right:0}#app-content{z-index:25}#app-settings,#expanddiv{z-index:15}#global-loading{width:100%;height:100%}#undo-container{position:fixed;top:0;width:100%;text-align:center;z-index:101;line-height:1.2}#undo{z-index:101;background-color:#fc4;border:0;padding:0 .7em .3em;display:none;position:relative;top:0;border-bottom-left-radius:1em;border-bottom-right-radius:1em}#undo a{font-weight:700}#undo a:hover{text-decoration:underline}#app-content .no-feeds-available{text-align:center;color:#333;font-size:16pt;min-height:100%;height:100%;width:100%;display:table}#app-content .no-feeds-available p{vertical-align:middle;display:table-cell}#app-content-wrapper,#articles{height:100%}#cron-warning{background-color:#fc0;text-align:center;width:100%;padding:10px;font-size:13pt}#cron-warning li,#cron-warning p{line-height:1.5}#cron-warning a{color:#00f}#cron-warning a:hover{text-decoration:underline}#app-content.loading-content{background:url(../img/loading.gif) calc(50% - 16px) calc(50% - 16px) no-repeat}#app-content.loading-content>*{display:none}#app-content:not(.explore) #articles:after{content:'';display:block;height:100%;background-repeat:no-repeat}#app-content .autopaging:#articles:after{content:'';background-image:url(../img/loading.gif);background-position:calc(50% - 16px) calc(50% - 16px)}.pull-to-refresh{height:0;overflow:hidden;text-align:center;background-image:-moz-linear-gradient(top,#eee 0,#fefefe 100%);background-image:-webkit-linear-gradient(top,#eee 0,#fefefe 100%);background-image:-ms-linear-gradient(top,#eee 0,#fefefe 100%);background-image:linear-gradient(top,#eee 0,#fefefe 100%)}.pull-to-refresh.show-pull-to-refresh{transition:all .5s ease;padding-top:10px;height:44px}#app-content .only-in-expanded{display:block}#app-content .compact .only-in-expanded,#app-content .only-in-compact{display:none}#app-content .compact .only-in-compact{display:block}#app-content .item{cursor:default;border-bottom:1px solid #eee;background-image:linear-gradient(top,#f8f8f8 0,#fff 84px)}#app-content .item:last-child{border-bottom:0}#app-content .utils{width:100%;line-height:52px;box-sizing:border-box;padding:15px 50px 0 15px}#app-content .compact .utils{cursor:pointer;padding-top:0}#app-content .utils ul{height:40px;list-style-type:none;display:flex;margin:0;padding:0}#app-content .open .utils ul{height:auto}#app-content .utils ul>li{min-width:0}#app-content .util-spacer{width:20px}#app-content .compact .util-spacer{width:19px}#app-content .utils li{line-height:40px;vertical-align:middle}#app-content .utils li:last-child{padding-right:0}#app-content .utils li:first-child{padding-left:0}#app-content .utils .util{padding:0 6px}#app-content .utils .external,#app-content .utils button{padding:0;margin:0;height:40px;width:40px;border:0;float:left;background-color:transparent;background-repeat:no-repeat;background-size:25px;background-position:center}#app-content .utils .external,#app-content .utils .icon-toggle,#app-content .utils .menu button{display:inline-block;opacity:.3}#app-content .utils .external:hover,#app-content .utils .icon-toggle.keep-unread,#app-content .utils .icon-toggle:hover,#app-content .utils .menu button:hover{opacity:1}#app-content .utils .star{background-image:url(../img/inactive_star.svg)}#app-content .utils .star:hover,#app-content .utils .starred{background-image:url(../img/active_star.svg)}#app-content .utils .title{width:100%;padding-left:45px;background-position:10px 10px;background-size:20px 20px;background-repeat:no-repeat}#app-content .feed-view .utils .title{background:none!important;padding-left:10px}#app-content .utils .title h1 a{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:100%;line-height:40px;display:inline-block;color:#222;font-weight:700;font-size:16px}#app-content .open .utils .title h1 a{overflow:auto;white-space:normal}#app-content .read .utils .title h1 a{font-weight:400;color:#888}#app-content .utils .date{padding:0 15px;margin-right:25px}#app-content .heading{padding:25px 0 10px}#app-content .heading h1{font-size:19px;margin-right:182px;word-wrap:break-word}#app-content .heading a{font-weight:700;color:#000}#app-content .heading a:hover{text-decoration:underline}#app-content .heading .date{float:right;display:inline-block;font-size:15px}#app-content .read .heading a{font-weight:400!important;color:#888}#app-content .feed-view .source{display:none}#app-content .article{min-height:69px;padding:0 50px 50px}#app-content .compact .article{display:none}#app-content .open .article{display:block}#app-content .subtitle{color:#aaa;font-size:15px;width:100%;padding-bottom:25px}#app-content .subtitle a{color:#aaa}#app-content .subtitle a:hover{text-decoration:underline}#app-content .date{color:#aaa;white-space:nowrap}#app-content .author{color:#aaa;font-size:15px}#app-content .author a{color:inherit}#app-content .author a:hover{text-decoration:underline}#app-content .enclosure{padding:20px 0;text-align:center;max-width:770px;margin-bottom:15px}#app-content .enclosure audio,#app-content .enclosure img,#app-content .enclosure video{width:100%}#app-content .enclosure video{background-color:#000}#app-content .enclosure-error{line-height:1.5;height:40px}#app-content .body{max-width:770px;font-size:14px;clear:both;overflow-x:auto}#app-content .body p{line-height:1.5;margin:7px 0 14px}#app-content .body img,#app-content .body table{max-width:100%;height:auto;overflow:auto;word-wrap:break-word;white-space:normal}#app-content .body>div :first-child>img:first-child,#app-content .body>div>img:first-child{padding:0 14px 0 0;float:left}#app-content .body h1,#app-content .body h2{font-size:17px;font-weight:700;color:#222;margin:21px 0 0}#app-content .body h3{font-size:15px;font-weight:700;color:#222;margin:21px 0 0;text-decoration:underline}#app-content .body h4,#app-content .body h5,#app-content .body h6{font-weight:700}#app-content .body>div{margin:7px 0}#app-content .body a{color:#00f;text-decoration:underline}#app-content .body ul{margin:7px 0;padding-left:14px;list-style-type:disc}#app-content .body ol{margin:7px 0;padding-left:21px}#app-content .body ul li{cursor:default;line-height:21px}#app-content .body pre{padding:7px 7px 7px 14px;background-color:#dadada;border:1px solid #ccc;margin:7px 0 14px;overflow-y:auto}#app-content .body pre::-webkit-scrollbar{height:10px}#app-content .body pre::-webkit-scrollbar-thumb{background:#333}#app-content .body pre::-webkit-scrollbar-track-piece{background:#ddd}#app-content .body code,#app-content .body pre{font-family:monospace;font-size:16px}#app-content .body blockquote{border-left:1px solid #d2d2d2;margin:25px 0;padding:0 0 0 15px;font-style:italic}#app-content .body em{font-style:italic;opacity:1}#app-content .custom-heise-de .body p>span:first-child{display:inline-block;float:left;margin-right:10px;padding:6px 0}#app-content .custom-slashdot-org .body div>i{display:block;border-left:1px solid #d2d2d2;margin:25px 0;padding:0 0 0 15px}@media (max-width:770px){#app-content .utils .date{display:none}#app-shortcuts th:first-child{padding-left:44px}}@media (max-width:600px){#app-content .heading .date{display:none}#app-content .heading h1{margin-right:0}#app-content .utils{pa