diff options
author | Bernhard Posselt <nukeawhale@gmail.com> | 2013-01-27 04:15:53 +0100 |
---|---|---|
committer | Bernhard Posselt <nukeawhale@gmail.com> | 2013-01-27 04:15:53 +0100 |
commit | ae7393db3d99a7ac223ae917129cccd9f49888e3 (patch) | |
tree | 7f54b72b0d01c38afd1378365a67e4f192922423 /coffee/controllers/itemcontroller.coffee | |
parent | 483784caa38bd6131405ac474347a215584e30a5 (diff) |
merged the angularjs branch
Diffstat (limited to 'coffee/controllers/itemcontroller.coffee')
-rw-r--r-- | coffee/controllers/itemcontroller.coffee | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/coffee/controllers/itemcontroller.coffee b/coffee/controllers/itemcontroller.coffee new file mode 100644 index 000000000..b3a7c9fe9 --- /dev/null +++ b/coffee/controllers/itemcontroller.coffee @@ -0,0 +1,93 @@ +### +# ownCloud - News app +# +# @author Bernhard Posselt +# Copyright (c) 2012 - Bernhard Posselt <nukeawhale@gmail.com> +# +# This file is licensed under the Affero General Public License version 3 or later. +# See the COPYING-README file +# +### + +angular.module('News').factory '_ItemController', ['Controller', (Controller) -> + + class ItemController extends Controller + + constructor: (@$scope, @itemModel, @activeFeed, @persistence, @feedModel, + @starredCount, @garbageRegistry, @showAll, @loading + @$rootScope, @feedType) -> + + @batchSize = 4 + @loaderQueue = 0 + + @$scope.getItems = (type, id) => + return @itemModel.getItemsByTypeAndId(type, id) + + @$scope.items = @itemModel.getItems() + @$scope.loading = @loading + + + @$scope.scroll = => + + @$scope.activeFeed = @activeFeed + + @$scope.$on 'read', (scope, params) => + @$scope.markRead(params.id, params.feed) + + + @$scope.loadFeed = (feedId) => + params = + id: feedId + type: @feedType.Feed + @$rootScope.$broadcast 'loadFeed', params + + + @$scope.markRead = (itemId, feedId) => + item = @itemModel.getItemById(itemId) + feed = @feedModel.getItemById(feedId) + + if not item.keptUnread && !item.isRead + item.isRead = true + feed.unreadCount -= 1 + + # this item will be completely deleted if showAll is false + if not @showAll.showAll + @garbageRegistry.register(item) + + @persistence.markRead(itemId, true) + + + @$scope.keepUnread = (itemId, feedId) => + item = @itemModel.getItemById(itemId) + feed = @feedModel.getItemById(feedId) + + + item.keptUnread = !item.keptUnread + + if item.isRead + item.isRead = false + feed.unreadCount += 1 + + @persistence.markRead(itemId, false) + + + @$scope.isKeptUnread = (itemId) => + return @itemModel.getItemById(itemId).keptUnread + + + @$scope.toggleImportant = (itemId) => + item = @itemModel.getItemById(itemId) + + # cache + @itemModel.setImportant(itemId, !item.isImportant) + + if item.isImportant + @starredCount.count += 1 + else + @starredCount.count -= 1 + + @persistence.setImportant(itemId, item.isImportant) + + + return ItemController +]
\ No newline at end of file |