1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
###
# ownCloud news app
#
# @author Alessandro Cosentino
# @author Bernhard Posselt
# Copyright (c) 2012 - Alessandro Cosentino <cosenal@gmail.com>
# 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 '_SettingsController', ['Controller',
(Controller) ->
class SettingsController extends Controller
constructor: (@$scope, @$rootScope, @showAll, @persistence, @folderModel,
@feedModel, @opmlParser) ->
@add = false
@settings = false
@addingFeed = false
@addingFolder = false
@$scope.getFolders = =>
return @folderModel.getItems()
@$scope.getShowAll = =>
return @showAll.showAll
@$scope.setShowAll = (value) =>
@showAll.showAll = value
@persistence.showAll(value)
@$rootScope.$broadcast('triggerHideRead')
@$scope.toggleSettings = =>
@settings = !@settings
@$scope.toggleAdd = =>
@add = !@add
@$scope.addIsShown = =>
return @add
@$scope.settingsAreShown = =>
return @settings
@$scope.isAddingFeed = =>
return @addingFeed
@$scope.isAddingFolder = =>
return @addingFolder
@$scope.addFeed = (url, folder) =>
@$scope.feedEmptyError = false
@$scope.feedExistsError = false
@$scope.feedError = false
if url == undefined or url.trim() == ''
@$scope.feedEmptyError = true
else
url = url.trim()
for feed in @feedModel.getItems()
if url == feed.url # FIXME: can we really compare this
@$scope.feedExistsError = true
if not (@$scope.feedEmptyError or @$scope.feedExistsError)
if folder == undefined
folderId = 0
else
folderId = folder.id
@addingFeed = true
onSuccess = =>
@$scope.feedUrl = ''
@addingFeed = false
onError = =>
@$scope.feedError = true
@addingFeed = false
@persistence.createFeed(url, folderId, onSuccess, onError)
@$scope.addFolder = (name) =>
@$scope.folderEmptyError = false
@$scope.folderExistsError = false
if name == undefined or name.trim() == ''
@$scope.folderEmptyError = true
else
name = name.trim()
for folder in @folderModel.getItems()
if name.toLowerCase() == folder.name.toLowerCase()
@$scope.folderExistsError = true
if not (@$scope.folderEmptyError or @$scope.folderExistsError)
@addingFolder = true
onSuccess = =>
@$scope.folderName = ''
@addingFolder = false
@persistence.createFolder(name, onSuccess)
@$scope.$on 'readFile', (scope, fileContent) =>
structure = @opmlParser.parseXML(fileContent)
@parseOPMLStructure(structure)
@$scope.$on 'hidesettings', =>
@add = false
@settings = false
# recursively create folders
parseOPMLStructure: (structure, folderId=0) ->
for item in structure.getItems()
if item.isFolder()
onSuccess = (data) =>
console.log data
folderId = data.folders[0].id
@parseOPMLStructure(item, folderId)
@persistence.createFolder(item.getName(), onSuccess)
else
# FIXME: handle errors
onSuccess = ->
onError = ->
@persistence.createFeed(item.getUrl(), folderId, onSuccess, onError)
return SettingsController
]
|