mirror of
https://github.com/Athou/commafeed.git
synced 2026-03-21 21:37:29 +00:00
starring support (#43)
This commit is contained in:
@@ -37,6 +37,7 @@ public class Entry implements Serializable {
|
|||||||
entry.setUrl(feedEntry.getUrl());
|
entry.setUrl(feedEntry.getUrl());
|
||||||
|
|
||||||
entry.setRead(status.isRead());
|
entry.setRead(status.isRead());
|
||||||
|
entry.setStarred(status.isStarred());
|
||||||
|
|
||||||
entry.setFeedName(status.getSubscription().getTitle());
|
entry.setFeedName(status.getSubscription().getTitle());
|
||||||
entry.setFeedId(String.valueOf(status.getSubscription().getId()));
|
entry.setFeedId(String.valueOf(status.getSubscription().getId()));
|
||||||
|
|||||||
@@ -212,6 +212,19 @@
|
|||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#feed-accordion .star {
|
||||||
|
text-decoration: none;
|
||||||
|
padding: 0px 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#feed-accordion .icon-star-yellow {
|
||||||
|
color: gold;
|
||||||
|
}
|
||||||
|
|
||||||
|
#feed-accordion .icon-star-empty {
|
||||||
|
color: #555;
|
||||||
|
}
|
||||||
|
|
||||||
/* admin */
|
/* admin */
|
||||||
.admin .users-table {
|
.admin .users-table {
|
||||||
height: 400px;
|
height: 400px;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<li>
|
<li>
|
||||||
<div ng-mouseenter="hovered=node" ng-mouseleave="hovered=null" class="pointer">
|
<div ng-mouseenter="hovered=node" ng-mouseleave="hovered=null" class="pointer" ui-if="showLabel">
|
||||||
<div class="dropdown pull-right">
|
<div class="dropdown pull-right">
|
||||||
<a data-toggle="dropdown" class="pull-right">
|
<a data-toggle="dropdown" class="pull-right">
|
||||||
<i ng-class="{'icon-chevron-down': hovered==node && node.id != 'all'}" class="icon"></i>
|
<i ng-class="{'icon-chevron-down': hovered==node && node.id != 'all'}" class="icon"></i>
|
||||||
@@ -13,19 +13,19 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<span class="fldr" ng-click="toggleCategory(node)">
|
<span class="fldr">
|
||||||
<i ng-class="{'icon-caret-right': !node.expanded, 'icon-caret-down': node.expanded}"></i>
|
<i ng-class="{'icon-caret-right': !node.expanded, 'icon-caret-down': node.expanded}" ng-click="toggleCategory(node)" ng-show="showChildren"></i>
|
||||||
</span>
|
</span>
|
||||||
<span ng-click="categoryClicked(node.id)">
|
<span ng-click="categoryClicked(node.id)">
|
||||||
<span ng-class="{selected: (node.id == selectedId && selectedType == 'category'), unread: unreadCount({category:node})}">{{formatCategoryName(node)}}
|
<span ng-class="{selected: (node.id == selectedId && selectedType == 'category'), unread: unreadCount({category:node})}">{{formatCategoryName(node)}}
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<ul ng-show="node.expanded" class="indent">
|
<ul ng-show="node.expanded && showChildren" ng-class="{indent: showLabel}">
|
||||||
<recursive>
|
<recursive>
|
||||||
<category ng-repeat="child in node.children" ng-show="settingsService.settings.showRead == true || unreadCount({category:node}) > 0"
|
<category ng-repeat="child in node.children" ng-show="settingsService.settings.showRead == true || unreadCount({category:node}) > 0"
|
||||||
node="child" selected-type="selectedType"
|
node="child" selected-type="selectedType"
|
||||||
selected-id="selectedId"
|
selected-id="selectedId" show-label="true" show-children="true"
|
||||||
unread-count="unreadCount({category:category})">
|
unread-count="unreadCount({category:category})">
|
||||||
</category>
|
</category>
|
||||||
</recursive>
|
</recursive>
|
||||||
|
|||||||
@@ -99,6 +99,11 @@ function($scope, $timeout, $stateParams, $window, $location, $state, $route, Cat
|
|||||||
$scope.selectedType = $stateParams._type;
|
$scope.selectedType = $stateParams._type;
|
||||||
$scope.selectedId = $stateParams._id;
|
$scope.selectedId = $stateParams._id;
|
||||||
|
|
||||||
|
$scope.starred = {
|
||||||
|
id: 'starred',
|
||||||
|
name: 'Starred'
|
||||||
|
};
|
||||||
|
|
||||||
$scope.$on('$stateChangeSuccess', function() {
|
$scope.$on('$stateChangeSuccess', function() {
|
||||||
$scope.selectedType = $stateParams._type;
|
$scope.selectedType = $stateParams._type;
|
||||||
$scope.selectedId = $stateParams._id;
|
$scope.selectedId = $stateParams._id;
|
||||||
@@ -339,6 +344,18 @@ function($scope, $stateParams, $http, $route, $window, EntryService, SettingsSer
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
$scope.star = function(entry, star, event) {
|
||||||
|
event.preventDefault();
|
||||||
|
event.stopPropagation();
|
||||||
|
if (entry.starred != star) {
|
||||||
|
entry.starred = star;
|
||||||
|
EntryService.star({
|
||||||
|
id : entry.id,
|
||||||
|
starred : star
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
$scope.isOpen = false;
|
$scope.isOpen = false;
|
||||||
$scope.entryClicked = function(entry, event) {
|
$scope.entryClicked = function(entry, event) {
|
||||||
|
|||||||
@@ -95,6 +95,8 @@ module.directive('category', [ function() {
|
|||||||
node : '=',
|
node : '=',
|
||||||
selectedType : '=',
|
selectedType : '=',
|
||||||
selectedId : '=',
|
selectedId : '=',
|
||||||
|
showLabel : '=',
|
||||||
|
showChildren : '=',
|
||||||
unreadCount : '&'
|
unreadCount : '&'
|
||||||
},
|
},
|
||||||
restrict : 'E',
|
restrict : 'E',
|
||||||
|
|||||||
@@ -186,6 +186,12 @@ function($resource, $http) {
|
|||||||
params : {
|
params : {
|
||||||
_method : 'mark'
|
_method : 'mark'
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
star : {
|
||||||
|
method : 'POST',
|
||||||
|
params : {
|
||||||
|
_method : 'star'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
var res = $resource('rest/entry/:_method', {}, actions);
|
var res = $resource('rest/entry/:_method', {}, actions);
|
||||||
|
|||||||
@@ -1,6 +1,12 @@
|
|||||||
<div class="css-treeview" ng-controller="CategoryTreeCtrl">
|
<div class="css-treeview" ng-controller="CategoryTreeCtrl">
|
||||||
<ul>
|
<ul>
|
||||||
<category node="CategoryService.subscriptions"
|
<category node="CategoryService.subscriptions" show-label="true" show-children="false"
|
||||||
|
selected-type="selectedType" selected-id="selectedId"
|
||||||
|
unread-count="unreadCount(category)"> </category>
|
||||||
|
<category node="starred" show-label="true" show-children="false"
|
||||||
|
selected-type="selectedType" selected-id="selectedId"
|
||||||
|
unread-count="unreadCount(category)"> </category>
|
||||||
|
<category node="CategoryService.subscriptions" show-label="false" show-children="true"
|
||||||
selected-type="selectedType" selected-id="selectedId"
|
selected-type="selectedType" selected-id="selectedId"
|
||||||
unread-count="unreadCount(category)"> </category>
|
unread-count="unreadCount(category)"> </category>
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
@@ -9,6 +9,10 @@
|
|||||||
<a href="{{entry.url}}" target="_blank" class="entry-heading" ng-click="noop($event)" ng-mouseup="entryClicked(entry, $event)"
|
<a href="{{entry.url}}" target="_blank" class="entry-heading" ng-click="noop($event)" ng-mouseup="entryClicked(entry, $event)"
|
||||||
ng-class="{open: current == entry, closed: current != entry}">
|
ng-class="{open: current == entry, closed: current != entry}">
|
||||||
<span class="feed-name">
|
<span class="feed-name">
|
||||||
|
<span class="star" ng-mouseup="star(entry, !entry.starred, $event)">
|
||||||
|
<i ng-class="{'icon-star icon-star-yellow': entry.starred, 'icon-star-empty': !entry.starred}"
|
||||||
|
class="pointer"></i>
|
||||||
|
</span>
|
||||||
<favicon url="entry.feedUrl" />
|
<favicon url="entry.feedUrl" />
|
||||||
{{entry.feedName}}
|
{{entry.feedName}}
|
||||||
</span>
|
</span>
|
||||||
|
|||||||
Reference in New Issue
Block a user