summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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>