diff options
Diffstat (limited to 'js/build/app/services/businesslayer/folderbusinesslayer.js')
-rw-r--r-- | js/build/app/services/businesslayer/folderbusinesslayer.js | 241 |
1 files changed, 241 insertions, 0 deletions
diff --git a/js/build/app/services/businesslayer/folderbusinesslayer.js b/js/build/app/services/businesslayer/folderbusinesslayer.js new file mode 100644 index 000000000..126198429 --- /dev/null +++ b/js/build/app/services/businesslayer/folderbusinesslayer.js @@ -0,0 +1,241 @@ +// Generated by CoffeeScript 1.6.3 +/* + +ownCloud - News + +@author Bernhard Posselt +@copyright 2012 Bernhard Posselt dev@bernhard-posselt.com + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE +License as published by the Free Software Foundation; either +version 3 of the License, or any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU AFFERO GENERAL PUBLIC LICENSE for more details. + +You should have received a copy of the GNU Affero General Public +License along with this library. If not, see <http://www.gnu.org/licenses/>. +*/ + + +(function() { + var __hasProp = {}.hasOwnProperty, + __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; + + angular.module('News').factory('FolderBusinessLayer', [ + '_BusinessLayer', 'FolderModel', 'FeedBusinessLayer', 'Persistence', 'FeedType', 'ActiveFeed', 'ItemModel', 'ShowAll', '_ExistsError', 'OPMLParser', 'NewestItem', 'FeedModel', '$rootScope', function(_BusinessLayer, FolderModel, FeedBusinessLayer, Persistence, FeedType, ActiveFeed, ItemModel, ShowAll, _ExistsError, OPMLParser, NewestItem, FeedModel, $rootScope) { + var FolderBusinessLayer; + FolderBusinessLayer = (function(_super) { + __extends(FolderBusinessLayer, _super); + + function FolderBusinessLayer(_folderModel, _feedBusinessLayer, _showAll, activeFeed, persistence, _feedType, itemModel, _opmlParser, _newestItem, _feedModel, _$rootScope) { + this._folderModel = _folderModel; + this._feedBusinessLayer = _feedBusinessLayer; + this._showAll = _showAll; + this._feedType = _feedType; + this._opmlParser = _opmlParser; + this._newestItem = _newestItem; + this._feedModel = _feedModel; + this._$rootScope = _$rootScope; + FolderBusinessLayer.__super__.constructor.call(this, activeFeed, persistence, itemModel, this._feedType.Folder); + } + + FolderBusinessLayer.prototype.getById = function(folderId) { + return this._folderModel.getById(folderId); + }; + + FolderBusinessLayer.prototype["delete"] = function(folderId) { + var data, feed, feeds, folder, _i, _len, _ref, + _this = this; + feeds = []; + _ref = this._feedBusinessLayer.getFeedsOfFolder(folderId); + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + feed = _ref[_i]; + feeds.push(this._feedModel.removeById(feed.id)); + } + folder = this._folderModel.removeById(folderId); + data = { + undoCallback: function() { + return _this._persistence.restoreFolder(folderId, function() { + _this._persistence.getAllFeeds(); + return _this._persistence.getAllFolders(); + }); + }, + caption: folder.name + }; + this._$rootScope.$broadcast('undoMessage', data); + return this._persistence.deleteFolder(folderId); + }; + + FolderBusinessLayer.prototype.hasFeeds = function(folderId) { + return this._feedBusinessLayer.getFeedsOfFolder(folderId).length; + }; + + FolderBusinessLayer.prototype.open = function(folderId) { + var folder; + folder = this._folderModel.getById(folderId); + if (angular.isDefined(folder)) { + if (!folder.opened) { + folder.opened = true; + return this._persistence.openFolder(folder.id); + } + } + }; + + FolderBusinessLayer.prototype.toggleFolder = function(folderId) { + var folder; + folder = this._folderModel.getById(folderId); + if (angular.isDefined(folder)) { + folder.opened = !folder.opened; + if (folder.opened) { + return this._persistence.openFolder(folder.id); + } else { + return this._persistence.collapseFolder(folder.id); + } + } + }; + + FolderBusinessLayer.prototype.markRead = function(folderId) { + var feed, folder, item, newestItemId, _i, _j, _len, _len1, _ref, _ref1; + newestItemId = this._newestItem.getId(); + folder = this._folderModel.getById(folderId); + if (newestItemId !== 0 && angular.isDefined(folder)) { + _ref = this._feedBusinessLayer.getFeedsOfFolder(folderId); + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + feed = _ref[_i]; + feed.unreadCount = 0; + _ref1 = this._itemModel.getAll(); + for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { + item = _ref1[_j]; + if (item.feedId === feed.id) { + item.setRead(); + } + } + } + return this._persistence.setFolderRead(folderId, newestItemId); + } + }; + + FolderBusinessLayer.prototype.getUnreadCount = function(folderId) { + return this._feedBusinessLayer.getFolderUnreadCount(folderId); + }; + + FolderBusinessLayer.prototype.isVisible = function(folderId) { + var feed, _i, _len, _ref; + if (this._showAll.getShowAll()) { + return true; + } else { + if (this.isActive(folderId) || this._feedBusinessLayer.getFolderUnreadCount(folderId) > 0) { + return true; + } + if (this._activeFeed.getType() === this._feedType.Feed) { + _ref = this._feedBusinessLayer.getFeedsOfFolder(folderId); + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + feed = _ref[_i]; + if (feed.id === this._activeFeed.getId()) { + return true; + } + } + } + return false; + } + }; + + FolderBusinessLayer.prototype.getAll = function() { + return this._folderModel.getAll(); + }; + + FolderBusinessLayer.prototype.create = function(folderName, onSuccess, onFailure) { + var folder, success, + _this = this; + if (onSuccess == null) { + onSuccess = null; + } + if (onFailure == null) { + onFailure = null; + } + onSuccess || (onSuccess = function() {}); + onFailure || (onFailure = function() {}); + if (angular.isUndefined(folderName) || folderName.trim() === '') { + throw new Error('Folder name must not be empty'); + } + folderName = folderName.trim(); + if (this._folderModel.getByName(folderName)) { + throw new _ExistsError('Exists already'); + } + folder = { + name: folderName, + opened: true + }; + this._folderModel.add(folder); + success = function(response) { + if (response.status === 'error') { + folder.error = response.msg; + return onFailure(); + } else { + return onSuccess(response.data); + } + }; + return this._persistence.createFolder(folderName, 0, success); + }; + + FolderBusinessLayer.prototype.markErrorRead = function(folderName) { + return this._folderModel.removeByName(folderName); + }; + + FolderBusinessLayer.prototype["import"] = function(xml) { + var opml; + opml = this._opmlParser.parseXML(xml); + return this._importElement(opml, 0); + }; + + FolderBusinessLayer.prototype._importElement = function(opml, parentFolderId) { + var item, _i, _len, _ref, _results, + _this = this; + _ref = opml.getItems(); + _results = []; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + item = _ref[_i]; + _results.push((function(item) { + var error, folder; + if (item.isFolder()) { + try { + return _this.create(item.getName(), function(data) { + return _this._importElement(item, data.folders[0].id); + }); + } catch (_error) { + error = _error; + if (error instanceof _ExistsError) { + folder = _this._folderModel.getByName(item.getName()); + _this.open(folder.id); + return _this._importElement(item, folder.id); + } else { + return console.info(error); + } + } + } else { + try { + return _this._feedBusinessLayer.create(item.getUrl(), parentFolderId); + } catch (_error) { + error = _error; + if (!error instanceof _ExistsError) { + return console.info(error); + } + } + } + })(item)); + } + return _results; + }; + + return FolderBusinessLayer; + + })(_BusinessLayer); + return new FolderBusinessLayer(FolderModel, FeedBusinessLayer, ShowAll, ActiveFeed, Persistence, FeedType, ItemModel, OPMLParser, NewestItem, FeedModel, $rootScope); + } + ]); + +}).call(this); |