forked from Archives/Athou_commafeed
initial expanded view support (#62)
This commit is contained in:
@@ -22,6 +22,10 @@ public class UserSettings extends AbstractModel {
|
|||||||
asc, desc
|
asc, desc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public enum ViewMode {
|
||||||
|
title, expanded
|
||||||
|
}
|
||||||
|
|
||||||
@OneToOne
|
@OneToOne
|
||||||
@JoinColumn(name = "user_id", nullable = false)
|
@JoinColumn(name = "user_id", nullable = false)
|
||||||
private User user;
|
private User user;
|
||||||
@@ -34,6 +38,10 @@ public class UserSettings extends AbstractModel {
|
|||||||
@Column(nullable = false)
|
@Column(nullable = false)
|
||||||
private ReadingOrder readingOrder;
|
private ReadingOrder readingOrder;
|
||||||
|
|
||||||
|
@Enumerated(EnumType.STRING)
|
||||||
|
@Column(nullable = false)
|
||||||
|
private ViewMode viewMode;
|
||||||
|
|
||||||
private boolean showRead;
|
private boolean showRead;
|
||||||
|
|
||||||
private boolean socialButtons;
|
private boolean socialButtons;
|
||||||
@@ -90,4 +98,12 @@ public class UserSettings extends AbstractModel {
|
|||||||
this.socialButtons = socialButtons;
|
this.socialButtons = socialButtons;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ViewMode getViewMode() {
|
||||||
|
return viewMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setViewMode(ViewMode viewMode) {
|
||||||
|
this.viewMode = viewMode;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,9 @@ public class Settings implements Serializable {
|
|||||||
@ApiProperty(value = "user reads entries in ascending or descending order", allowableValues = "asc,desc", required = true)
|
@ApiProperty(value = "user reads entries in ascending or descending order", allowableValues = "asc,desc", required = true)
|
||||||
private String readingOrder;
|
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)
|
@ApiProperty(value = "user wants category and feeds with no unread entries shown", required = true)
|
||||||
private boolean showRead;
|
private boolean showRead;
|
||||||
|
|
||||||
@@ -70,4 +73,12 @@ public class Settings implements Serializable {
|
|||||||
this.socialButtons = socialButtons;
|
this.socialButtons = socialButtons;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getViewMode() {
|
||||||
|
return viewMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setViewMode(String viewMode) {
|
||||||
|
this.viewMode = viewMode;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import com.commafeed.backend.model.UserRole.Role;
|
|||||||
import com.commafeed.backend.model.UserSettings;
|
import com.commafeed.backend.model.UserSettings;
|
||||||
import com.commafeed.backend.model.UserSettings.ReadingMode;
|
import com.commafeed.backend.model.UserSettings.ReadingMode;
|
||||||
import com.commafeed.backend.model.UserSettings.ReadingOrder;
|
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.Settings;
|
||||||
import com.commafeed.frontend.model.UserModel;
|
import com.commafeed.frontend.model.UserModel;
|
||||||
import com.commafeed.frontend.model.request.ProfileModificationRequest;
|
import com.commafeed.frontend.model.request.ProfileModificationRequest;
|
||||||
@@ -39,12 +40,14 @@ public class UserREST extends AbstractResourceREST {
|
|||||||
if (settings != null) {
|
if (settings != null) {
|
||||||
s.setReadingMode(settings.getReadingMode().name());
|
s.setReadingMode(settings.getReadingMode().name());
|
||||||
s.setReadingOrder(settings.getReadingOrder().name());
|
s.setReadingOrder(settings.getReadingOrder().name());
|
||||||
|
s.setViewMode(settings.getViewMode().name());
|
||||||
s.setShowRead(settings.isShowRead());
|
s.setShowRead(settings.isShowRead());
|
||||||
s.setSocialButtons(settings.isSocialButtons());
|
s.setSocialButtons(settings.isSocialButtons());
|
||||||
s.setCustomCss(settings.getCustomCss());
|
s.setCustomCss(settings.getCustomCss());
|
||||||
} else {
|
} else {
|
||||||
s.setReadingMode(ReadingMode.unread.name());
|
s.setReadingMode(ReadingMode.unread.name());
|
||||||
s.setReadingOrder(ReadingOrder.desc.name());
|
s.setReadingOrder(ReadingOrder.desc.name());
|
||||||
|
s.setViewMode(ViewMode.title.name());
|
||||||
s.setShowRead(true);
|
s.setShowRead(true);
|
||||||
s.setSocialButtons(true);
|
s.setSocialButtons(true);
|
||||||
}
|
}
|
||||||
@@ -65,6 +68,7 @@ public class UserREST extends AbstractResourceREST {
|
|||||||
s.setReadingMode(ReadingMode.valueOf(settings.getReadingMode()));
|
s.setReadingMode(ReadingMode.valueOf(settings.getReadingMode()));
|
||||||
s.setReadingOrder(ReadingOrder.valueOf(settings.getReadingOrder()));
|
s.setReadingOrder(ReadingOrder.valueOf(settings.getReadingOrder()));
|
||||||
s.setShowRead(settings.isShowRead());
|
s.setShowRead(settings.isShowRead());
|
||||||
|
s.setViewMode(ViewMode.valueOf(settings.getViewMode()));
|
||||||
s.setCustomCss(settings.getCustomCss());
|
s.setCustomCss(settings.getCustomCss());
|
||||||
userSettingsDAO.saveOrUpdate(s);
|
userSettingsDAO.saveOrUpdate(s);
|
||||||
return Response.ok(Status.OK).build();
|
return Response.ok(Status.OK).build();
|
||||||
|
|||||||
@@ -269,6 +269,10 @@
|
|||||||
color: #555;
|
color: #555;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#feed-accordion.expanded .entry {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
/* admin */
|
/* admin */
|
||||||
.admin .users-table {
|
.admin .users-table {
|
||||||
height: 400px;
|
height: 400px;
|
||||||
|
|||||||
@@ -352,13 +352,13 @@ function($scope, $http, $state, $stateParams, $route, $location,
|
|||||||
|
|
||||||
$scope.session = ProfileService.get();
|
$scope.session = ProfileService.get();
|
||||||
$scope.ServerService = ServerService.get();
|
$scope.ServerService = ServerService.get();
|
||||||
|
$scope.settingsService = SettingsService;
|
||||||
|
|
||||||
$scope.loading = true;
|
$scope.loading = true;
|
||||||
$scope.$watch(totalActiveAjaxRequests, function() {
|
$scope.$watch(totalActiveAjaxRequests, function() {
|
||||||
$scope.loading = (totalActiveAjaxRequests() !== 0);
|
$scope.loading = (totalActiveAjaxRequests() !== 0);
|
||||||
});
|
});
|
||||||
|
|
||||||
$scope.settingsService = SettingsService;
|
|
||||||
$scope.$watch('settingsService.settings.readingMode', function(
|
$scope.$watch('settingsService.settings.readingMode', function(
|
||||||
newValue, oldValue) {
|
newValue, oldValue) {
|
||||||
if (newValue && oldValue && newValue != oldValue) {
|
if (newValue && oldValue && newValue != oldValue) {
|
||||||
@@ -371,6 +371,12 @@ function($scope, $http, $state, $stateParams, $route, $location,
|
|||||||
SettingsService.save();
|
SettingsService.save();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
$scope.$watch('settingsService.settings.viewMode', function(
|
||||||
|
newValue, oldValue) {
|
||||||
|
if (newValue && oldValue && newValue != oldValue) {
|
||||||
|
SettingsService.save();
|
||||||
|
}
|
||||||
|
});
|
||||||
$scope.refresh = function() {
|
$scope.refresh = function() {
|
||||||
if($stateParams._type == 'feed'){
|
if($stateParams._type == 'feed'){
|
||||||
FeedService.refresh({
|
FeedService.refresh({
|
||||||
@@ -404,10 +410,9 @@ function($scope, $http, $state, $stateParams, $route, $location,
|
|||||||
|
|
||||||
$scope.toggleOrder = function() {
|
$scope.toggleOrder = function() {
|
||||||
var settings = $scope.settingsService.settings;
|
var settings = $scope.settingsService.settings;
|
||||||
settings.readingOrder = settings.readingOrder == 'asc' ? 'desc'
|
settings.readingOrder = settings.readingOrder == 'asc' ? 'desc' : 'asc';
|
||||||
: 'asc';
|
|
||||||
};
|
};
|
||||||
|
|
||||||
$scope.toAdmin = function() {
|
$scope.toAdmin = function() {
|
||||||
$location.path('admin');
|
$location.path('admin');
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -10,6 +10,11 @@
|
|||||||
<i ng-class="{'icon-arrow-up' : settingsService.settings.readingOrder == 'asc', 'icon-arrow-down': settingsService.settings.readingOrder == 'desc'}"></i>
|
<i ng-class="{'icon-arrow-up' : settingsService.settings.readingOrder == 'asc', 'icon-arrow-down': settingsService.settings.readingOrder == 'desc'}"></i>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
|
<div class="btn-group" data-toggle="buttons-radio">
|
||||||
|
<button type="button" class="btn" ng-model="settingsService.settings.viewMode" btn-radio="'title'"><i class="icon-list"></i></button>
|
||||||
|
<button type="button" class="btn" ng-model="settingsService.settings.viewMode" btn-radio="'expanded'"><i class="icon-th-list"></i></button>
|
||||||
|
</div>
|
||||||
|
|
||||||
<button type="button" class="btn" ng-click="refresh()"><i class="icon-refresh"></i> Refresh</button>
|
<button type="button" class="btn" ng-click="refresh()"><i class="icon-refresh"></i> Refresh</button>
|
||||||
<button type="button" class="btn" ng-click="markAllAsRead()"><i class="icon-ok"></i> Mark all as read</button>
|
<button type="button" class="btn" ng-click="markAllAsRead()"><i class="icon-ok"></i> Mark all as read</button>
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,8 @@
|
|||||||
<h3><span>{{name}} </span><span ng-show="name && selectedType == 'category'"> »</span></h3>
|
<h3><span>{{name}} </span><span ng-show="name && selectedType == 'category'"> »</span></h3>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div infinite-scroll="loadMoreEntries()" infinite-scroll-disabled="busy || !settingsService.settings.readingMode" infinite-scroll-distance="1" id="feed-accordion">
|
<div infinite-scroll="loadMoreEntries()" infinite-scroll-disabled="busy || !settingsService.settings.readingMode" infinite-scroll-distance="1" id="feed-accordion"
|
||||||
|
ng-class="{'expanded' : settingsService.settings.viewMode == 'expanded' }">
|
||||||
<div ng-show="message && errorCount > 10">Error while loading this feed : {{message}}</div>
|
<div ng-show="message && errorCount > 10">Error while loading this feed : {{message}}</div>
|
||||||
<div ng-repeat="entry in entries" class="entry" scroll-to="isOpen && current == entry" scroll-to-offset="-58">
|
<div ng-repeat="entry in entries" class="entry" scroll-to="isOpen && current == entry" scroll-to-offset="-58">
|
||||||
<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)"
|
||||||
@@ -20,7 +21,7 @@
|
|||||||
<span class="entry-name" ng-class="{unread: entry.read == false, shrink: true}" ng-bind-html-unsafe="entry.title"></span>
|
<span class="entry-name" ng-class="{unread: entry.read == false, shrink: true}" ng-bind-html-unsafe="entry.title"></span>
|
||||||
|
|
||||||
</a>
|
</a>
|
||||||
<div class="entry-body" ui-if="isOpen && current == entry">
|
<div class="entry-body" ui-if="settingsService.settings.viewMode == 'expanded' || (isOpen && current == entry)">
|
||||||
<div>
|
<div>
|
||||||
<h4>
|
<h4>
|
||||||
<a href="{{entry.url}}" target="_blank" ng-bind-html-unsafe="entry.title"></a>
|
<a href="{{entry.url}}" target="_blank" ng-bind-html-unsafe="entry.title"></a>
|
||||||
|
|||||||
Reference in New Issue
Block a user