diff --git a/src/main/java/com/commafeed/backend/model/UserSettings.java b/src/main/java/com/commafeed/backend/model/UserSettings.java index da3c83b7..9cadf855 100644 --- a/src/main/java/com/commafeed/backend/model/UserSettings.java +++ b/src/main/java/com/commafeed/backend/model/UserSettings.java @@ -22,6 +22,10 @@ public class UserSettings extends AbstractModel { asc, desc } + public enum ViewMode { + title, expanded + } + @OneToOne @JoinColumn(name = "user_id", nullable = false) private User user; @@ -34,6 +38,10 @@ public class UserSettings extends AbstractModel { @Column(nullable = false) private ReadingOrder readingOrder; + @Enumerated(EnumType.STRING) + @Column(nullable = false) + private ViewMode viewMode; + private boolean showRead; private boolean socialButtons; @@ -90,4 +98,12 @@ public class UserSettings extends AbstractModel { this.socialButtons = socialButtons; } + public ViewMode getViewMode() { + return viewMode; + } + + public void setViewMode(ViewMode viewMode) { + this.viewMode = viewMode; + } + } diff --git a/src/main/java/com/commafeed/frontend/model/Settings.java b/src/main/java/com/commafeed/frontend/model/Settings.java index 228a1888..feced11c 100644 --- a/src/main/java/com/commafeed/frontend/model/Settings.java +++ b/src/main/java/com/commafeed/frontend/model/Settings.java @@ -21,6 +21,9 @@ public class Settings implements Serializable { @ApiProperty(value = "user reads entries in ascending or descending order", allowableValues = "asc,desc", required = true) private String readingOrder; + @ApiProperty(value = "user viewing mode, either title-only or expande view", allowableValues = "title,expanded", required = true) + private String viewMode; + @ApiProperty(value = "user wants category and feeds with no unread entries shown", required = true) private boolean showRead; @@ -70,4 +73,12 @@ public class Settings implements Serializable { this.socialButtons = socialButtons; } + public String getViewMode() { + return viewMode; + } + + public void setViewMode(String viewMode) { + this.viewMode = viewMode; + } + } diff --git a/src/main/java/com/commafeed/frontend/rest/resources/UserREST.java b/src/main/java/com/commafeed/frontend/rest/resources/UserREST.java index 96b1bff8..7bc2f959 100644 --- a/src/main/java/com/commafeed/frontend/rest/resources/UserREST.java +++ b/src/main/java/com/commafeed/frontend/rest/resources/UserREST.java @@ -18,6 +18,7 @@ import com.commafeed.backend.model.UserRole.Role; import com.commafeed.backend.model.UserSettings; import com.commafeed.backend.model.UserSettings.ReadingMode; import com.commafeed.backend.model.UserSettings.ReadingOrder; +import com.commafeed.backend.model.UserSettings.ViewMode; import com.commafeed.frontend.model.Settings; import com.commafeed.frontend.model.UserModel; import com.commafeed.frontend.model.request.ProfileModificationRequest; @@ -39,12 +40,14 @@ public class UserREST extends AbstractResourceREST { if (settings != null) { s.setReadingMode(settings.getReadingMode().name()); s.setReadingOrder(settings.getReadingOrder().name()); + s.setViewMode(settings.getViewMode().name()); s.setShowRead(settings.isShowRead()); s.setSocialButtons(settings.isSocialButtons()); s.setCustomCss(settings.getCustomCss()); } else { s.setReadingMode(ReadingMode.unread.name()); s.setReadingOrder(ReadingOrder.desc.name()); + s.setViewMode(ViewMode.title.name()); s.setShowRead(true); s.setSocialButtons(true); } @@ -65,6 +68,7 @@ public class UserREST extends AbstractResourceREST { s.setReadingMode(ReadingMode.valueOf(settings.getReadingMode())); s.setReadingOrder(ReadingOrder.valueOf(settings.getReadingOrder())); s.setShowRead(settings.isShowRead()); + s.setViewMode(ViewMode.valueOf(settings.getViewMode())); s.setCustomCss(settings.getCustomCss()); userSettingsDAO.saveOrUpdate(s); return Response.ok(Status.OK).build(); diff --git a/src/main/webapp/css/app.css b/src/main/webapp/css/app.css index 4b97ae3d..d4d61dfd 100644 --- a/src/main/webapp/css/app.css +++ b/src/main/webapp/css/app.css @@ -269,6 +269,10 @@ color: #555; } +#feed-accordion.expanded .entry { + margin-bottom: 20px; +} + /* admin */ .admin .users-table { height: 400px; diff --git a/src/main/webapp/js/controllers.js b/src/main/webapp/js/controllers.js index c15ee808..3386f2e8 100644 --- a/src/main/webapp/js/controllers.js +++ b/src/main/webapp/js/controllers.js @@ -352,13 +352,13 @@ function($scope, $http, $state, $stateParams, $route, $location, $scope.session = ProfileService.get(); $scope.ServerService = ServerService.get(); - + $scope.settingsService = SettingsService; + $scope.loading = true; $scope.$watch(totalActiveAjaxRequests, function() { $scope.loading = (totalActiveAjaxRequests() !== 0); }); - - $scope.settingsService = SettingsService; + $scope.$watch('settingsService.settings.readingMode', function( newValue, oldValue) { if (newValue && oldValue && newValue != oldValue) { @@ -371,6 +371,12 @@ function($scope, $http, $state, $stateParams, $route, $location, SettingsService.save(); } }); + $scope.$watch('settingsService.settings.viewMode', function( + newValue, oldValue) { + if (newValue && oldValue && newValue != oldValue) { + SettingsService.save(); + } + }); $scope.refresh = function() { if($stateParams._type == 'feed'){ FeedService.refresh({ @@ -404,10 +410,9 @@ function($scope, $http, $state, $stateParams, $route, $location, $scope.toggleOrder = function() { var settings = $scope.settingsService.settings; - settings.readingOrder = settings.readingOrder == 'asc' ? 'desc' - : 'asc'; + settings.readingOrder = settings.readingOrder == 'asc' ? 'desc' : 'asc'; }; - + $scope.toAdmin = function() { $location.path('admin'); }; diff --git a/src/main/webapp/templates/_toolbar.html b/src/main/webapp/templates/_toolbar.html index 5c34d07a..5313bf4a 100644 --- a/src/main/webapp/templates/_toolbar.html +++ b/src/main/webapp/templates/_toolbar.html @@ -10,6 +10,11 @@ +