summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCesar Enrique Garcia Dabo <enrique@engarda.org>2020-04-11 02:21:56 +0200
committerBenjamin Brahmer <info@b-brahmer.de>2020-04-23 12:37:24 +0200
commit5b4f3d29e4800f12297092ba6b6813581de77169 (patch)
tree69a25e4c8d9468b91f7dd3f506532d6caca9555c
parenta69ec8edd84511dfd760b6911ded8fdeea8c5aaa (diff)
Always show the unread articles.
The unread articles folder will always be visible, regardless of the "Show all" setting. If that setting is on, then an additional "All articles" folder will be show as before, but it doesn't substitute the "Uread articles" one. A new URL /apps/news/#/items/unread is also created that jumps to the unread articles. Signed-off-by: Cesar Enrique Garcia Dabo <cquike@arcor.de>
-rw-r--r--js/app/Config.js9
-rw-r--r--js/app/Run.js10
-rw-r--r--lib/Db/FeedType.php1
-rw-r--r--lib/Db/ItemMapper.php2
-rw-r--r--templates/part.navigation.unreadfeed.php41
5 files changed, 52 insertions, 11 deletions
diff --git a/js/app/Config.js b/js/app/Config.js
index 3b808063d..f7c62e7ae 100644
--- a/js/app/Config.js
+++ b/js/app/Config.js
@@ -16,7 +16,8 @@ app.config(function ($routeProvider, $provide, $httpProvider, $locationProvider)
STARRED: 2,
SUBSCRIPTIONS: 3,
SHARED: 4,
- EXPLORE: 5
+ EXPLORE: 5,
+ UNREAD: 6
};
// default hashPrefix changed in angular 1.6 to '!'
@@ -190,6 +191,12 @@ app.config(function ($routeProvider, $provide, $httpProvider, $locationProvider)
resolve: getItemResolve(feedType.STARRED),
type: feedType.STARRED
})
+ .when('/items/unread', {
+ controller: 'ContentController as Content',
+ templateUrl: 'content.html',
+ resolve: getItemResolve(feedType.UNREAD),
+ type: feedType.UNREAD
+ })
.when('/items/feeds/:id', {
controller: 'ContentController as Content',
templateUrl: 'content.html',
diff --git a/js/app/Run.js b/js/app/Run.js
index 0500faa35..1a1572864 100644
--- a/js/app/Run.js
+++ b/js/app/Run.js
@@ -17,7 +17,7 @@ app.run(function ($rootScope, $location, $http, $q, $interval, $route, Loading,
// listen to keys in returned queries to automatically distribute the
// incoming values to models
Publisher.subscribe(ItemResource).toChannels(['items', 'newestItemId',
- 'starred']);
+ 'starred', 'unread']);
Publisher.subscribe(FolderResource).toChannels(['folders']);
Publisher.subscribe(FeedResource).toChannels(['feeds']);
Publisher.subscribe(SettingsResource).toChannels(['settings']);
@@ -49,12 +49,16 @@ app.run(function ($rootScope, $location, $http, $q, $interval, $route, Loading,
url = '/explore';
break;
+ case FEED_TYPE.UNREAD:
+ url = '/items/unread';
+ break;
+
default:
url = '/items';
}
// only redirect if url is empty or faulty
- if (!/^\/items(\/(starred|explore|feeds\/\d+|folders\/\d+))?\/?$/
+ if (!/^\/items(\/(starred|unread|explore|feeds\/\d+|folders\/\d+))?\/?$/
.test(path)) {
$location.path(url);
}
@@ -126,4 +130,4 @@ app.run(function ($rootScope, $location, $http, $q, $interval, $route, Loading,
$location.path('/items');
});
-}); \ No newline at end of file
+});
diff --git a/lib/Db/FeedType.php b/lib/Db/FeedType.php
index 23adbefb3..bf487992c 100644
--- a/lib/Db/FeedType.php
+++ b/lib/Db/FeedType.php
@@ -21,4 +21,5 @@ class FeedType
const SUBSCRIPTIONS = 3;
const SHARED = 4;
const EXPLORE = 5;
+ const UNREAD = 6;
}
diff --git a/lib/Db/ItemMapper.php b/lib/Db/ItemMapper.php
index 82a38d67d..f0442aee9 100644
--- a/lib/Db/ItemMapper.php
+++ b/lib/Db/ItemMapper.php
@@ -64,7 +64,7 @@ class ItemMapper extends NewsMapper
if (isset($type) && $type === FeedType::STARRED) {
$sql = 'AND `items`.`starred` = ';
$sql .= $this->db->quote(true, IQueryBuilder::PARAM_BOOL) . ' ';
- } elseif (!$showAll) {
+ } elseif (!$showAll || $type === FeedType::UNREAD) {
$sql .= 'AND `items`.`unread` = ';
$sql .= $this->db->quote(true, IQueryBuilder::PARAM_BOOL) . ' ';
}
diff --git a/templates/part.navigation.unreadfeed.php b/templates/part.navigation.unreadfeed.php
index a5de750d2..902365c68 100644
--- a/templates/part.navigation.unreadfeed.php
+++ b/templates/part.navigation.unreadfeed.php
@@ -4,14 +4,10 @@
}"
class="subscriptions-feed with-counter with-menu">
- <a class="icon-rss" ng-href="#/items/" ng-if="!Navigation.isShowAll()">
+ <a class="icon-rss" ng-href="#/items/unread" >
<?php p($l->t('Unread articles'))?>
</a>
- <a class="icon-rss" ng-href="#/items/" ng-if="Navigation.isShowAll()">
- <?php p($l->t('All articles'))?>
- </a>
-
<div class="app-navigation-entry-utils" ng-show="Navigation.isUnread()">
<ul>
<li class="app-navigation-entry-utils-counter"
@@ -38,4 +34,37 @@
</ul>
</div>
-</li> \ No newline at end of file
+</li>
+
+<li ng-class="{
+ active: Navigation.isSubscriptionsActive(),
+ unread: Navigation.isUnread()
+ }"
+ class="all-subscriptions-feed with-counter with-menu">
+
+ <a class="icon-rss" ng-href="#/items/" ng-if="Navigation.isShowAll()">
+ <?php p($l->t('All articles'))?>
+ </a>
+
+ <div class="app-navigation-entry-utils" ng-if="Navigation.isShowAll()">
+ <ul>
+ <li class="app-navigation-entry-utils-menu-button">
+ <button
+ ng-click="optionsId = (optionsId == 'all' ? -1 : 'all')">
+ </button>
+ </li>
+ </ul>
+ </div>
+
+ <div class="app-navigation-entry-menu" ng-if="navigation.isShowAll()">
+ <ul>
+ <li class="mark-read">
+ <button ng-click="Navigation.markRead()">
+ <span class="icon-checkmark"></span>
+ <span><?php p($l->t('Mark read')); ?></span>
+ </button>
+ </li>
+ </ul>
+ </div>
+
+</li>