diff --git a/src/main/java/com/commafeed/frontend/rest/RESTApplication.java b/src/main/java/com/commafeed/frontend/rest/RESTApplication.java index 6679cf4b..09916954 100644 --- a/src/main/java/com/commafeed/frontend/rest/RESTApplication.java +++ b/src/main/java/com/commafeed/frontend/rest/RESTApplication.java @@ -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; } } diff --git a/src/main/java/com/commafeed/frontend/rest/resources/EntriesREST.java b/src/main/java/com/commafeed/frontend/rest/resources/EntriesREST.java index c8c26cb2..5e608366 100644 --- a/src/main/java/com/commafeed/frontend/rest/resources/EntriesREST.java +++ b/src/main/java/com/commafeed/frontend/rest/resources/EntriesREST.java @@ -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; diff --git a/src/main/java/com/commafeed/frontend/rest/resources/SessionREST.java b/src/main/java/com/commafeed/frontend/rest/resources/SessionREST.java new file mode 100644 index 00000000..a61ac923 --- /dev/null +++ b/src/main/java/com/commafeed/frontend/rest/resources/SessionREST.java @@ -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; + } +} diff --git a/src/main/java/com/commafeed/frontend/rest/resources/SubscriptionsREST.java b/src/main/java/com/commafeed/frontend/rest/resources/SubscriptionsREST.java index 94e0c698..08a13a69 100644 --- a/src/main/java/com/commafeed/frontend/rest/resources/SubscriptionsREST.java +++ b/src/main/java/com/commafeed/frontend/rest/resources/SubscriptionsREST.java @@ -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) diff --git a/src/main/webapp/directives/subscribe.html b/src/main/webapp/directives/subscribe.html index c309b589..fc6c0e91 100644 --- a/src/main/webapp/directives/subscribe.html +++ b/src/main/webapp/directives/subscribe.html @@ -9,6 +9,7 @@ Subscribe
  • Import
  • +
  • New category
  • @@ -44,7 +45,7 @@
    @@ -66,9 +67,39 @@ +
    + +
    + + +
    +
    \ No newline at end of file diff --git a/src/main/webapp/directives/toolbar.html b/src/main/webapp/directives/toolbar.html index 00dc2459..638126a4 100644 --- a/src/main/webapp/directives/toolbar.html +++ b/src/main/webapp/directives/toolbar.html @@ -10,10 +10,10 @@
    - + {{session.name}} diff --git a/src/main/webapp/js/directives.js b/src/main/webapp/js/directives.js index 135a0220..0d55e395 100644 --- a/src/main/webapp/js/directives.js +++ b/src/main/webapp/js/directives.js @@ -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() { diff --git a/src/main/webapp/js/services.js b/src/main/webapp/js/services.js index 2deeca14..64682625 100644 --- a/src/main/webapp/js/services.js +++ b/src/main/webapp/js/services.js @@ -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 = {}