summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBernhard Posselt <dev@bernhard-posselt.com>2015-01-23 14:32:53 +0100
committerBernhard Posselt <dev@bernhard-posselt.com>2015-01-23 14:32:53 +0100
commitdf509a4b856472fa22fd6d43a212c9d21bd5b40f (patch)
treebe8be7824bd4ba3ee687c6e57d1383929360e505
parent5adeba1a560985173974c9ac98c624093055d669 (diff)
fix #711
-rw-r--r--CHANGELOG.md2
-rw-r--r--appinfo/database.xml6
-rw-r--r--appinfo/info.xml2
-rw-r--r--appinfo/routes.php1
-rw-r--r--controller/feedcontroller.php17
-rw-r--r--css/navigation.css11
-rw-r--r--css/news.min.css2
-rw-r--r--db/feed.php7
-rw-r--r--js/app/Config.js12
-rw-r--r--js/build/app.js52
-rw-r--r--js/build/app.min.js4
-rw-r--r--js/controller/ContentController.js20
-rw-r--r--js/controller/NavigationController.js5
-rw-r--r--js/service/FeedResource.js13
-rw-r--r--js/tests/unit/controller/ContentControllerSpec.js38
-rw-r--r--js/tests/unit/controller/NavigationControllerSpec.js26
-rw-r--r--js/tests/unit/service/FeedResourceSpec.js16
-rw-r--r--service/feedservice.php141
-rw-r--r--templates/part.navigation.feed.php17
-rw-r--r--tests/unit/controller/FeedControllerTest.php27
-rw-r--r--tests/unit/db/FeedTest.php4
-rw-r--r--tests/unit/service/FeedServiceTest.php31
22 files changed, 370 insertions, 84 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3671ae635..f3cefd296 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,7 +1,7 @@
owncloud-news (5.0.1)
* **Enhancement**: Show error messages when authentication or network related errors appear
* **Enhancement**: Show a pull to refresh area if you are at the very top and jump to the previous article using either page up or a jump to previous article shortcut. If this area is already visible reload the page
-
+* **Enhancement**: Make it possible to overwrite the global ordering for certain feeds
owncloud-news (5.0.0)
* **New dependency**: Bump required ownCloud version to 8
diff --git a/appinfo/database.xml b/appinfo/database.xml
index 688d04547..c2277d276 100644
--- a/appinfo/database.xml
+++ b/appinfo/database.xml
@@ -160,6 +160,12 @@
<default>false</default>
<notnull>true</notnull>
</field>
+ <field>
+ <name>ordering</name>
+ <type>integer</type>
+ <default>0</default>
+ <notnull>true</notnull>
+ </field>
<index>
<name>news_feeds_user_id_index</name>
diff --git a/appinfo/info.xml b/appinfo/info.xml
index b3a92468d..785e55da3 100644
--- a/appinfo/info.xml
+++ b/appinfo/info.xml
@@ -7,7 +7,7 @@
<author>Bernhard Posselt, Alessandro Cosentino, Jan-Christoph Borchardt</author>
<category>multimedia</category>
<licence>AGPL</licence>
- <version>5.0.0</version>
+ <version>5.0.1</version>
<namespace>News</namespace>
<!-- resources -->
diff --git a/appinfo/routes.php b/appinfo/routes.php
index 954656d2d..4900d3885 100644
--- a/appinfo/routes.php
+++ b/appinfo/routes.php
@@ -42,6 +42,7 @@ return ['routes' => [
['name' => 'feed#update', 'url' => '/feeds/{feedId}/update', 'verb' => 'POST'],
['name' => 'feed#active', 'url' => '/feeds/active', 'verb' => 'GET'],
['name' => 'feed#import', 'url' => '/feeds/import/articles', 'verb' => 'POST'],
+['name' => 'feed#ordering', 'url' => '/feeds/{feedId}/ordering', 'verb' => 'POST'],
// items
['name' => 'item#index', 'url' => '/items', 'verb' => 'GET'],
diff --git a/controller/feedcontroller.php b/controller/feedcontroller.php
index 3be802a34..46c2a5010 100644
--- a/controller/feedcontroller.php
+++ b/controller/feedcontroller.php
@@ -294,4 +294,21 @@ class FeedController extends Controller {
}
+ /**
+ * @NoAdminRequired
+ *
+ * @param int $feedId
+ * @param int $ordering
+ */
+ public function ordering ($feedId, $ordering) {
+ try {
+ $this->feedService->setOrdering($feedId, $ordering, $this->userId);
+ } catch(ServiceNotFoundException $ex) {
+ return $this->error($ex, Http::STATUS_NOT_FOUND);
+ }
+
+ return [];
+ }
+
+
} \ No newline at end of file
diff --git a/css/navigation.css b/css/navigation.css
index 4d82d1c98..cd8ef3f51 100644
--- a/css/navigation.css
+++ b/css/navigation.css
@@ -174,4 +174,15 @@
#app-navigation .animate-show.ng-hide {
opacity: 0;
+}
+
+#app-navigation .feed-no-ordering {
+ transform: rotate(270deg);
+}
+
+#app-navigation .feed-reverse-ordering {
+ transform: rotate(180deg);
+}
+
+#app-navigation .feed-normal-ordering {
} \ No newline at end of file
diff --git a/css/news.min.css b/css/news.min.css
index cf67c70ab..3ec5ccf19 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}#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)}#app-content .finished-auto-paging #articles:after{background-image:-o-linear-gradient(top,#eee 0,#FEFEFE 100%);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(to top,#eee 0,#FEFEFE 100%)}.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>ul>li:last-child{padding-right:0}#app-content .utils>ul>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:0 0!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: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-section h3 a:hover{text-decoration:underline}#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
+#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)}#app-content .finished-auto-paging #articles:after{background-image:-o-linear-gradient(top,#eee 0,#FEFEFE 100%);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(to top,#eee 0,#FEFEFE 100%)}.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>ul>li:last-child{padding-right:0}#app-content .utils>ul>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:0 0!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-navigation .feed-no-ordering{transform:rotate(270deg)}#app-navigation .feed-reverse-ordering{transform:rotate(180deg)}#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-section h3 a:hover{text-decoration:underline}#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
diff --git a/db/feed.php b/db/feed.php
index 5ee63fa71..395035c97 100644
--- a/db/feed.php
+++ b/db/feed.php
@@ -20,6 +20,8 @@ use \OCP\AppFramework\Db\Entity;
* @method void setId(integer $value)
* @method string getUserId()
* @method void setUserId(string $value)
+ * @method int getOrdering()
+ * @method void setOrdering(int $value)
* @method string getUrlHash()
* @method void setUrlHash(string $value)
* @method string getLocation()
@@ -66,6 +68,7 @@ class Feed extends Entity implements IAPI, \JsonSerializable {
protected $lastModified;
protected $etag;
protected $location;
+ protected $ordering;
public function __construct(){
$this->addType('parentId', 'integer');
@@ -75,6 +78,7 @@ class Feed extends Entity implements IAPI, \JsonSerializable {
$this->addType('preventUpdate', 'boolean');
$this->addType('deletedAt', 'integer');
$this->addType('articlesPerUpdate', 'integer');
+ $this->addType('ordering', 'integer');
}
@@ -96,7 +100,8 @@ class Feed extends Entity implements IAPI, \JsonSerializable {
'preventUpdate',
'deletedAt',
'articlesPerUpdate',
- 'location'
+ 'location',
+ 'ordering'
]);
$url = parse_url($this->link)['host'];
diff --git a/js/app/Config.js b/js/app/Config.js
index c6c511211..40a112a93 100644
--- a/js/app/Config.js
+++ b/js/app/Config.js
@@ -84,7 +84,8 @@ app.config(function ($routeProvider, $provide, $httpProvider) {
return {
// request to items also returns feeds
data: /* @ngInject */ function (
- $http, $route, $q, BASE_URL, ITEM_BATCH_SIZE, SettingsResource) {
+ $http, $route, $q, BASE_URL, ITEM_BATCH_SIZE, FEED_TYPE,
+ SettingsResource, FeedResource) {
var showAll = SettingsResource.get('showAll');
var oldestFirst = SettingsResource.get('oldestFirst');
@@ -107,6 +108,15 @@ app.config(function ($routeProvider, $provide,