forked from Archives/Athou_commafeed
add categories
This commit is contained in:
@@ -7,6 +7,7 @@ import javax.ws.rs.core.Application;
|
||||
|
||||
import com.commafeed.frontend.rest.resources.AdminUsersREST;
|
||||
import com.commafeed.frontend.rest.resources.EntriesREST;
|
||||
import com.commafeed.frontend.rest.resources.SessionREST;
|
||||
import com.commafeed.frontend.rest.resources.SettingsREST;
|
||||
import com.commafeed.frontend.rest.resources.SubscriptionsREST;
|
||||
import com.google.common.collect.Sets;
|
||||
@@ -23,6 +24,7 @@ public class RESTApplication extends Application {
|
||||
set.add(EntriesREST.class);
|
||||
set.add(SettingsREST.class);
|
||||
set.add(AdminUsersREST.class);
|
||||
set.add(SessionREST.class);
|
||||
return set;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ import com.google.common.collect.Maps;
|
||||
@Path("entries")
|
||||
public class EntriesREST extends AbstractREST {
|
||||
|
||||
private static final String ALL = "all";
|
||||
public static final String ALL = "all";
|
||||
|
||||
public enum Type {
|
||||
category, feed, entry;
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
package com.commafeed.frontend.rest.resources;
|
||||
|
||||
import javax.ws.rs.GET;
|
||||
import javax.ws.rs.Path;
|
||||
|
||||
import com.commafeed.backend.model.User;
|
||||
import com.commafeed.backend.model.UserRole;
|
||||
import com.commafeed.backend.model.UserRole.Role;
|
||||
import com.commafeed.frontend.model.UserModel;
|
||||
|
||||
@Path("session")
|
||||
public class SessionREST extends AbstractREST {
|
||||
|
||||
@Path("get")
|
||||
@GET
|
||||
public UserModel get() {
|
||||
User user = getUser();
|
||||
UserModel userModel = new UserModel();
|
||||
userModel.setId(user.getId());
|
||||
userModel.setName(user.getName());
|
||||
userModel.setEnabled(!user.isDisabled());
|
||||
for (UserRole role : userRoleService.findAll(user)) {
|
||||
if (role.getRole() == Role.ADMIN) {
|
||||
userModel.setAdmin(true);
|
||||
}
|
||||
}
|
||||
return userModel;
|
||||
}
|
||||
}
|
||||
@@ -91,6 +91,30 @@ public class SubscriptionsREST extends AbstractREST {
|
||||
return Response.ok(Status.OK).build();
|
||||
}
|
||||
|
||||
@Path("addCategory")
|
||||
@GET
|
||||
public Response addCategory(@QueryParam("name") String name,
|
||||
@QueryParam("parentId") String parentId) {
|
||||
Preconditions.checkNotNull(name);
|
||||
|
||||
FeedCategory cat = new FeedCategory();
|
||||
cat.setName(name);
|
||||
cat.setUser(getUser());
|
||||
if (parentId != null && !EntriesREST.ALL.equals(parentId)) {
|
||||
FeedCategory parent = new FeedCategory();
|
||||
parent.setId(Long.valueOf(parentId));
|
||||
cat.setParent(parent);
|
||||
}
|
||||
feedCategoryService.save(cat);
|
||||
return Response.ok().build();
|
||||
}
|
||||
|
||||
@GET
|
||||
@Path("deleteCategory")
|
||||
public Response deleteCategory(@QueryParam("id") Long id) {
|
||||
return Response.ok().build();
|
||||
}
|
||||
|
||||
@POST
|
||||
@Path("import")
|
||||
@Consumes(MediaType.MULTIPART_FORM_DATA)
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
<a ng-click="open()">Subscribe</a>
|
||||
</li>
|
||||
<li><a ng-click="openImport()">Import</a></li>
|
||||
<li><a ng-click="openCategory()">New category</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div modal="isOpen" close="close()" options="opts">
|
||||
@@ -44,7 +45,7 @@
|
||||
</div>
|
||||
</form>
|
||||
<div class="modal-footer">
|
||||
<button class="btn btn-warning cancel" ng-click="close()">Cancel</button>
|
||||
<button class="btn cancel" ng-click="close()">Cancel</button>
|
||||
<button class="btn btn-primary ok" type="submit">Save</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -66,9 +67,39 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-warning cancel" ng-click="closeImport()">Cancel</button>
|
||||
<button type="button" class="btn cancel" ng-click="closeImport()">Cancel</button>
|
||||
<button class="btn btn-primary ok" type="submit" upload-submit="uploadComplete(contents, completed)">Import</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div modal="isOpenCategory" close="closeCategory()" options="opts">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" ng-click="closeCategory()">×</button>
|
||||
<h4>New category</h4>
|
||||
</div>
|
||||
<form name="categoryForm" class="form-horizontal" ng-submit="saveCategory()">
|
||||
<div class="modal-body">
|
||||
<div class="control-group" ng-class="{error : !categoryForm.name.$valid}">
|
||||
<label class="control-label">Name</label>
|
||||
<div class="controls">
|
||||
<input type="text" name="name" ng-model="cat.name" required></input>
|
||||
<span class="help-block" ng-show="!categoryForm.name.$valid">Required</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" ng-class="{error : !categoryForm.category.$valid}">
|
||||
<label class="control-label">Category</label>
|
||||
<div class="controls">
|
||||
<select name="category" ng-model="cat.parentId" class="input-block-level" required>
|
||||
<option ng-repeat="cat in SubscriptionService.flatCategories" value="{{cat.id}}">{{cat.name}}</option>
|
||||
</select>
|
||||
<span class="help-block" ng-show="!categoryForm.category.$valid">Required</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn cancel" ng-click="closeCategory()">Cancel</button>
|
||||
<button class="btn btn-primary ok" type="submit">Save</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@@ -10,10 +10,10 @@
|
||||
<button type="button" class="btn" ng-click="markAllAsRead()"><i class="icon-ok"></i> Mark all as read</button>
|
||||
|
||||
<div class="btn-group">
|
||||
<a class="btn dropdown-toggle" data-toggle="dropdown" href="settings"><i class="icon-cog"></i><span class="caret"></span></a>
|
||||
<a class="btn dropdown-toggle" data-toggle="dropdown" href="settings"><i class="icon-cog"></i> {{session.name}} <span class="caret"></span></a>
|
||||
<ul class="dropdown-menu pull-right">
|
||||
<li><a href="settings"><i class="icon-wrench"></i> Settings</a></li>
|
||||
<li><a ng-click="toAdmin()"><i class="icon-edit"></i> Admin</a></li>
|
||||
<li ng-show="session.admin"><a ng-click="toAdmin()"><i class="icon-edit"></i> Admin</a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="logout"><i class="icon-user"></i> Logout</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -88,6 +88,22 @@ module.directive('subscribe', function(SubscriptionService) {
|
||||
SubscriptionService.init();
|
||||
$scope.closeImport();
|
||||
};
|
||||
|
||||
$scope.cat = {};
|
||||
|
||||
$scope.openCategory= function(){
|
||||
$scope.isOpenCategory = true;
|
||||
$scope.cat = {};
|
||||
};
|
||||
|
||||
$scope.closeCategory= function(){
|
||||
$scope.isOpenCategory = false;
|
||||
};
|
||||
|
||||
$scope.saveCategory = function() {
|
||||
SubscriptionService.addCategory($scope.cat);
|
||||
$scope.closeCategory();
|
||||
};
|
||||
}
|
||||
};
|
||||
});
|
||||
@@ -147,7 +163,7 @@ module.directive('category', function($compile) {
|
||||
});
|
||||
|
||||
module.directive('toolbar', function($stateParams, $route, $location,
|
||||
SettingsService, EntryService, SubscriptionService) {
|
||||
SettingsService, EntryService, SubscriptionService, SessionService) {
|
||||
return {
|
||||
scope : {},
|
||||
restrict : 'E',
|
||||
@@ -158,6 +174,8 @@ module.directive('toolbar', function($stateParams, $route, $location,
|
||||
function totalActiveAjaxRequests() {
|
||||
return ($http.pendingRequests.length + $.active);
|
||||
}
|
||||
|
||||
$scope.session = SessionService.get();
|
||||
|
||||
$scope.loading = true;
|
||||
$scope.$watch(totalActiveAjaxRequests, function() {
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
var module = angular.module('commafeed.services', [ 'ngResource' ]);
|
||||
|
||||
module.factory('SubscriptionService', [
|
||||
'$resource',
|
||||
'$http',
|
||||
function($resource, $http) {
|
||||
module.factory('SessionService', function($resource){
|
||||
return $resource('rest/session/get');
|
||||
});
|
||||
|
||||
module.factory('SubscriptionService', function($resource, $http) {
|
||||
|
||||
var flatten = function(category, parentName, array) {
|
||||
if (!array)
|
||||
@@ -50,6 +51,18 @@ module.factory('SubscriptionService', [
|
||||
params : {
|
||||
_method : 'collapse'
|
||||
}
|
||||
},
|
||||
addCategory : {
|
||||
method : 'GET',
|
||||
params : {
|
||||
_method : 'addCategory'
|
||||
}
|
||||
},
|
||||
deleteCategory : {
|
||||
method : 'GET',
|
||||
params : {
|
||||
_method : 'deleteCategory'
|
||||
}
|
||||
}
|
||||
};
|
||||
var s = {};
|
||||
@@ -98,12 +111,19 @@ module.factory('SubscriptionService', [
|
||||
id : id
|
||||
});
|
||||
};
|
||||
s.addCategory = function(cat, callback) {
|
||||
res.addCategory(cat, function(data) {
|
||||
s.init();
|
||||
if (callback)
|
||||
callback(data);
|
||||
});
|
||||
};
|
||||
s.collapse = res.collapse;
|
||||
s.init();
|
||||
return s;
|
||||
} ]);
|
||||
});
|
||||
|
||||
module.factory('EntryService', [ '$resource', '$http',
|
||||
module.factory('EntryService',
|
||||
function($resource, $http) {
|
||||
var actions = {
|
||||
get : {
|
||||
@@ -121,7 +141,7 @@ module.factory('EntryService', [ '$resource', '$http',
|
||||
};
|
||||
var res = $resource('rest/entries/:_method', {}, actions);
|
||||
return res;
|
||||
} ]);
|
||||
});
|
||||
|
||||
module.factory('SettingsService', function($resource) {
|
||||
var s = {}
|
||||
|
||||
Reference in New Issue
Block a user