From 676b8dd18742875ae07827792ed88d2b5bb3afb7 Mon Sep 17 00:00:00 2001 From: Bernhard Posselt Date: Wed, 19 Nov 2014 15:54:32 +0100 Subject: first stab at recommended sites --- appinfo/application.php | 4 +- appinfo/routes.php | 2 +- controller/pagecontroller.php | 10 +++- css/content.css | 49 +--------------- css/explore.css | 67 ++++++++++++++++++++++ css/news-owncloud7.min.css | 2 +- css/news.min.css | 2 +- db/feedtype.php | 1 + explore/recommendedsites.php | 45 +++++++++++++++ explore/sites.en.json | 19 ++++++ js/Gruntfile.js | 6 +- js/app/Config.js | 12 +++- js/app/Run.js | 4 ++ js/build/app.js | 35 ++++++++++- js/build/app.min.js | 2 +- js/controller/ContentController.js | 6 +- js/controller/ExploreController.js | 15 +++++ js/controller/NavigationController.js | 5 ++ js/tests/unit/controller/AppControllerSpec.js | 12 +++- js/tests/unit/controller/ContentControllerSpec.js | 43 ++++++++++++++ .../unit/controller/NavigationControllerSpec.js | 18 +++++- recommendedsites/recommendedsites.php | 40 ------------- recommendedsites/sites.en.json | 18 ------ templates/index.php | 9 ++- templates/part.content.explore.php | 23 ++++++++ templates/part.content.firstrun.php | 17 ------ templates/part.content.php | 1 - templates/part.content.shortcuts.php | 2 + templates/part.navigation.explore.php | 5 ++ tests/unit/controller/PageControllerTest.php | 21 ++++++- 30 files changed, 348 insertions(+), 147 deletions(-) create mode 100644 css/explore.css create mode 100644 explore/recommendedsites.php create mode 100644 explore/sites.en.json create mode 100644 js/controller/ExploreController.js delete mode 100644 recommendedsites/recommendedsites.php delete mode 100644 recommendedsites/sites.en.json create mode 100644 templates/part.content.explore.php delete mode 100644 templates/part.content.firstrun.php create mode 100644 templates/part.navigation.explore.php diff --git a/appinfo/application.php b/appinfo/application.php index 11a38ad93..5415e8f24 100644 --- a/appinfo/application.php +++ b/appinfo/application.php @@ -62,7 +62,7 @@ use \OCA\News\ArticleEnhancer\GlobalArticleEnhancer; use \OCA\News\ArticleEnhancer\XPathArticleEnhancer; use \OCA\News\ArticleEnhancer\RegexArticleEnhancer; -use \OCA\News\RecommendedSites\RecommendedSites; +use \OCA\News\Explore\RecommendedSites; class Application extends App { @@ -514,7 +514,7 @@ class Application extends App { }); $container->registerService('RecommendedSites', function($c) { - return new RecommendedSites(__DIR__ . '/../recommendedsites'); + return new RecommendedSites(__DIR__ . '/../explore'); }); } diff --git a/appinfo/routes.php b/appinfo/routes.php index 9b03cb5b7..7b2028865 100644 --- a/appinfo/routes.php +++ b/appinfo/routes.php @@ -22,7 +22,7 @@ $application->registerRoutes($this, ['routes' => [ ['name' => 'page#settings', 'url' => '/settings', 'verb' => 'GET'], ['name' => 'page#update_settings', 'url' => '/settings', 'verb' => 'PUT'], ['name' => 'page#manifest', 'url' => '/manifest.webapp', 'verb' => 'GET'], -['name' => 'page#recommended', 'url' => '/recommended', 'verb' => 'GET'], +['name' => 'page#explore', 'url' => '/explore', 'verb' => 'GET'], // admin ['name' => 'admin#update', 'url' => '/admin', 'verb' => 'PUT'], diff --git a/controller/pagecontroller.php b/controller/pagecontroller.php index e7aea6bb1..d4e7fd0dc 100644 --- a/controller/pagecontroller.php +++ b/controller/pagecontroller.php @@ -23,7 +23,8 @@ use \OCP\AppFramework\Controller; use \OCA\News\Config\AppConfig; use \OCA\News\Config\Config; -use \OCA\News\RecommendedSites\RecommendedSites; +use \OCA\News\Explore\RecommendedSites; +use \OCA\News\Db\FeedType; class PageController extends Controller { @@ -174,10 +175,15 @@ class PageController extends Controller { * @NoAdminRequired * @NoCSRFRequired */ - public function recommended() { + public function explore() { $languageCode = $this->l10n->getLanguageCode(); $default = 'en'; + $this->settings->setUserValue($this->userId, $this->appName, + 'lastViewedFeedId', 0); + $this->settings->setUserValue($this->userId, $this->appName, + 'lastViewedFeedType', FeedType::EXPLORE); + return $this->recommendedSites->forLanguage($languageCode, $default); } diff --git a/css/content.css b/css/content.css index 97d23dd70..27bfca242 100644 --- a/css/content.css +++ b/css/content.css @@ -33,53 +33,6 @@ text-decoration: underline; } -/** - * First run styles - */ -#first-run { - display: none; - height: 100%; - width: 100%; -} - -.first-run #first-run { - display: block; -} - -#first-run > div { - width: 100%; - height: 100%; - display: table; -} - -#first-run > div > div { - display: table-row; -} - -#first-run > div > div > * { - display: table-cell; - vertical-align: middle; -} - - -#first-run .title h1 { - color: #222; - font-size: 18px; - text-align: center; -} - -#first-run .helper h1 { - color: #222; - font-size: 18px; - height: 44px; - padding-left: 45px; - background-position: 15px center; - background-image: url('../img/arrow.svg'); - background-repeat: no-repeat; -} -.first-run #app-content-wrapper { - height: 100%; -} /** * Content styles @@ -93,7 +46,7 @@ display: none; } -#app-content:not(.first-run):after { +#app-content:not(.explore):after { content: ''; display: block; height: 100%; diff --git a/css/explore.css b/css/explore.css new file mode 100644 index 000000000..a77f007a1 --- /dev/null +++ b/css/explore.css @@ -0,0 +1,67 @@ +/** + * ownCloud - News + * + * This file is licensed under the Affero General Public License version 3 or + * later. See the COPYING file. + * + * @author Bernhard Posselt + * @copyright Bernhard Posselt 2014 + */ + + +/** + * Explore styles + */ +.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: 30px; + margin: 10px; + display: inline-block; + vertical-align: top; + width: 300px; + background-color: #f5f5f5; +} + +#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-section img { + width: 100%; + margin-top: 25px; +} + +#explore .explore-subscribe { + padding-top: 15px; + text-align: right; +} \ No newline at end of file diff --git a/css/news-owncloud7.min.css b/css/news-owncloud7.min.css index 8177d849d..53e232d24 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}#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}#first-run{display:none;height:100%;width:100%}.first-run #first-run{display:block}#first-run>div{width:100%;height:100%;display:table}#first-run>div>div{display:table-row}#first-run>div>div>*{display:table-cell;vertical-align:middle}#first-run .title h1{color:#222;font-size:18px;text-align:center}#first-run .helper h1{color:#222;font-size:18px;height:44px;padding-left:45px;background-position:15px center;background-image:url(../img/arrow.svg);background-repeat:no-repeat}.first-run #app-content-wrapper{height:100%}#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(.first-run):after{content:'';display:block;height:100%}#app-content-wrapper.autopaging:after{content:'';background-image:url(../img/loading.gif) no-repeat;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 .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} \ 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}#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):after{content:'';display:block;height:100%}#app-content-wrapper.autopaging:after{content:'';background-image:url(../img/loading.gif) no-repeat;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 .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:30px;margin:10px;display:inline-block;vertical-align:top;width:300px;background-color:#f5f5f5}#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-section img{width:100%;margin-top:25px}#explore .explore-subscribe{padding-top:15px;text-align:right} \ No newline at end of file diff --git a/css/news.min.css b/css/news.min.css index 46f08902f..5fbc544e1 100644 --- a/css/news.min.css +++ b/css/news.min.css @@ -1 +1 @@ -#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}#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}#first-run{display:none;height:100%;width:100%}.first-run #first-run{display:block}#first-run>div{width:100%;height:100%;display:table}#first-run>div>div{display:table-row}#first-run>div>div>*{display:table-cell;vertical-align:middle}#first-run .title h1{color:#222;font-size:18px;text-align:center}#first-run .helper h1{color:#222;font-size:18px;height:44px;padding-left:45px;background-position:15px center;background-image:url(../img/arrow.svg);background-repeat:no-repeat}.first-run #app-content-wrapper{height:100%}#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(.first-run):after{content:'';display:block;height:100%}#app-content-wrapper.autopaging:after{content:'';background-image:url(../img/loading.gif) no-repeat;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 .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}#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}@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-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} \ No newline at end of file +#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}#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):after{content:'';display:block;height:100%}#app-content-wrapper.autopaging:after{content:'';background-image:url(../img/loading.gif) no-repeat;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 .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}#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}@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-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:30px;margin:10px;display:inline-block;vertical-align:top;width:300px;background-color:#f5f5f5}#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-section img{width:100%;margin-top:25px}#explore .explore-subscribe{padding-top:15px;text-align:right} \ No newline at end of file diff --git a/db/feedtype.php b/db/feedtype.php index d43948a3c..a630d80f4 100644 --- a/db/feedtype.php +++ b/db/feedtype.php @@ -20,4 +20,5 @@ class FeedType { const STARRED = 2; const SUBSCRIPTIONS = 3; const SHARED = 4; + const EXPLORE = 5; }; \ No newline at end of file diff --git a/explore/recommendedsites.php b/explore/recommendedsites.php new file mode 100644 index 000000000..7d63a8c60 --- /dev/null +++ b/explore/recommendedsites.php @@ -0,0 +1,45 @@ + + * @author Bernhard Posselt + * @copyright Alessandro Cosentino 2012 + * @copyright Bernhard Posselt 2012, 2014 + */ + +namespace OCA\News\Explore; + +class RecommendedSites { + + private $directory; + + /** + * @param string $directory the absolute path to where the recommendation + * config files lie without a trailing slash + */ + public function __construct($directory) { + $this->directory = $directory; + } + + + public function forLanguage($languageCode, $default='en') { + $file = $this->directory . '/sites.' . $languageCode . '.json'; + + if (!file_exists($file)) { + $file = $this->directory . '/sites.' . $default . '.json'; + } + + if (file_exists($file)) { + return json_decode(file_get_contents($file), true); + } else { + return []; + } + + } + + +} \ No newline at end of file diff --git a/explore/sites.en.json b/explore/sites.en.json new file mode 100644 index 000000000..2fec02f5b --- /dev/null +++ b/explore/sites.en.json @@ -0,0 +1,19 @@ +{ + "Tech": [ + { + "title": "ownCloud Planet", + "favicon": "http://owncloud.org/wp-content/themes/owncloudorgnew/assets/img/common/favicon.png", + "url": "http://owncloud.org/news/", + "description": "ownCloud Planet is a blog feed aggregator", + "image": "http://tuxanddroid.de/wp-content/uploads/2013/08/owncloud_logo.png", + "votes": 1000 + }, + { + "title": "Slashdot", + "favicon": "http://slashdot.org/favicon.ico", + "url": "http://slashdot.org", + "description": "Slashdot: News for nerds, stuff that matters", + "votes": 500 + } + ] +} \ No newline at end of file diff --git a/js/Gruntfile.js b/js/Gruntfile.js index 2f95aa5c3..254c73504 100644 --- a/js/Gruntfile.js +++ b/js/Gruntfile.js @@ -77,7 +77,8 @@ module.exports = function (grunt) { '../css/mobile.css', '../css/shortcuts.css', '../css/navigation.css', - '../css/settings.css' + '../css/settings.css', + '../css/explore.css' ]} }, news: { @@ -88,7 +89,8 @@ module.exports = function (grunt) { '../css/shortcuts.css', '../css/mobile.css',