These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
1 | /* |
||
2 | * Copyright (c) 2015 |
||
3 | * |
||
4 | * This file is licensed under the Affero General Public License version 3 |
||
5 | * or later. |
||
6 | * |
||
7 | * See the COPYING-README file. |
||
8 | * |
||
9 | */ |
||
10 | |||
11 | (function() { |
||
12 | |||
13 | /** |
||
14 | * @class OCA.Activity.ActivityTabView |
||
15 | * @classdesc |
||
16 | * |
||
17 | * Displays activity information for a given file |
||
18 | * |
||
19 | */ |
||
20 | var ActivityTabView = OCA.Files.DetailTabView.extend(/** @lends OCA.Activity.ActivityTabView.prototype */ { |
||
21 | id: 'activityTabView', |
||
22 | className: 'activityTabView tab', |
||
23 | |||
24 | events: { |
||
25 | 'click .showMore': '_onClickShowMore' |
||
26 | }, |
||
27 | |||
28 | _loading: false, |
||
29 | _plugins: [], |
||
30 | |||
31 | initialize: function() { |
||
32 | this.collection = new OCA.Activity.ActivityCollection(); |
||
33 | this.collection.setObjectType('files'); |
||
34 | this.collection.on('request', this._onRequest, this); |
||
35 | this.collection.on('sync', this._onEndRequest, this); |
||
36 | this.collection.on('error', this._onError, this); |
||
37 | this.collection.on('add', this._onAddModel, this); |
||
38 | |||
39 | this._plugins = OC.Plugins.getPlugins('OCA.Activity.RenderingPlugins'); |
||
40 | _.each(this._plugins, function(plugin) { |
||
41 | if (_.isFunction(plugin.initialize)) { |
||
42 | plugin.initialize(); |
||
43 | } |
||
44 | }); |
||
45 | }, |
||
46 | |||
47 | template: function(data) { |
||
48 | return OCA.Activity.Templates['activitytabview'](data); |
||
0 ignored issues
–
show
|
|||
49 | }, |
||
50 | |||
51 | get$: function() { |
||
52 | return this.$el; |
||
53 | }, |
||
54 | |||
55 | getLabel: function() { |
||
56 | return t('activity', 'Activity'); |
||
57 | }, |
||
58 | |||
59 | getIcon: function() { |
||
60 | return 'icon-activity'; |
||
61 | }, |
||
62 | |||
63 | setFileInfo: function(fileInfo) { |
||
64 | this._fileInfo = fileInfo; |
||
65 | if (this._fileInfo) { |
||
66 | this.collection.setObjectId(this._fileInfo.get('id')); |
||
67 | this.collection.reset(); |
||
68 | this.collection.fetch(); |
||
69 | |||
70 | _.each(this._plugins, function(plugin) { |
||
71 | if (_.isFunction(plugin.setFileInfo)) { |
||
72 | plugin.setFileInfo('files', fileInfo.get('id')); |
||
73 | } |
||
74 | }); |
||
75 | } else { |
||
76 | this.collection.reset(); |
||
77 | |||
78 | _.each(this._plugins, function(plugin) { |
||
79 | if (_.isFunction(plugin.resetFileInfo)) { |
||
80 | plugin.resetFileInfo(); |
||
81 | } |
||
82 | }); |
||
83 | } |
||
84 | }, |
||
85 | |||
86 | _onError: function() { |
||
87 | var $emptyContent = this.$el.find('.emptycontent'); |
||
88 | $emptyContent.removeClass('hidden'); |
||
89 | $emptyContent.find('p').text(t('activity', 'An error occurred while loading activities')); |
||
90 | }, |
||
91 | |||
92 | _onRequest: function() { |
||
93 | if (this.collection.lastGivenId === 0) { |
||
94 | this.render(); |
||
95 | } |
||
96 | this.$el.find('.showMore').addClass('hidden'); |
||
97 | }, |
||
98 | |||
99 | _onEndRequest: function() { |
||
100 | this.$container.removeClass('hidden'); |
||
101 | this.$el.find('.loading').addClass('hidden'); |
||
102 | if (this.collection.length) { |
||
103 | this.$el.find('.emptycontent').addClass('hidden'); |
||
104 | } |
||
105 | if (this.collection.hasMore) { |
||
106 | this.$el.find('.showMore').removeClass('hidden'); |
||
107 | } |
||
108 | }, |
||
109 | |||
110 | _onClickShowMore: function() { |
||
111 | this.collection.fetch({ |
||
112 | reset: false |
||
113 | }); |
||
114 | }, |
||
115 | |||
116 | /** |
||
117 | * Format an activity model for display |
||
118 | * |
||
119 | * @param {OCA.Activity.ActivityModel} activity |
||
120 | * @return {Object} |
||
121 | */ |
||
122 | _formatItem: function(activity) { |
||
123 | |||
124 | var subject = activity.get('subject'), |
||
125 | subject_rich = activity.get('subject_rich'); |
||
126 | if (subject_rich[0].length > 1) { |
||
127 | subject = OCA.Activity.RichObjectStringParser.parseMessage(subject_rich[0], subject_rich[1]); |
||
128 | } |
||
129 | var message = activity.get('message'), |
||
130 | message_rich = activity.get('message_rich'); |
||
131 | if (message_rich[0].length > 1) { |
||
132 | message = OCA.Activity.RichObjectStringParser.parseMessage(message_rich[0], message_rich[1]); |
||
133 | } |
||
134 | |||
135 | var output = { |
||
136 | subject: subject, |
||
137 | formattedDate: activity.getRelativeDate(), |
||
138 | formattedDateTooltip: activity.getFullDate(), |
||
139 | timestamp: moment(activity.get('datetime')).valueOf(), |
||
140 | message: message, |
||
141 | icon: activity.get('icon') |
||
142 | }; |
||
143 | |||
144 | /** |
||
145 | * Disable previews in the rightside bar, |
||
146 | * it's always the same image anyway. |
||
147 | if (activity.has('previews')) { |
||
148 | output.previews = _.map(activity.get('previews'), function(data) { |
||
149 | return { |
||
150 | previewClass: data.isMimeTypeIcon ? 'preview-mimetype-icon': '', |
||
151 | source: data.source |
||
152 | }; |
||
153 | }); |
||
154 | } |
||
155 | */ |
||
156 | return output; |
||
157 | }, |
||
158 | |||
159 | activityTemplate: function(params) { |
||
160 | return OCA.Activity.Templates['activitytabview_activity'](params); |
||
0 ignored issues
–
show
|
|||
161 | }, |
||
162 | |||
163 | _onAddModel: function(model, collection, options) { |
||
164 | var $el = $(this.activityTemplate(this._formatItem(model))); |
||
165 | |||
166 | _.each(this._plugins, function(plugin) { |
||
167 | if (_.isFunction(plugin.prepareModelForDisplay)) { |
||
168 | plugin.prepareModelForDisplay(model, $el, 'ActivityTabView'); |
||
169 | } |
||
170 | }); |
||
171 | |||
172 | if (!_.isUndefined(options.at) && collection.length > 1) { |
||
173 | this.$container.find('li').eq(options.at).before($el); |
||
174 | } else { |
||
175 | this.$container.append($el); |
||
176 | } |
||
177 | |||
178 | this._postRenderItem($el); |
||
179 | }, |
||
180 | |||
181 | _postRenderItem: function($el) { |
||
182 | $el.find('.avatar').each(function() { |
||
183 | var element = $(this); |
||
184 | if (element.data('user-display-name')) { |
||
185 | element.avatar(element.data('user'), 21, undefined, false, undefined, element.data('user-display-name')); |
||
186 | } else { |
||
187 | element.avatar(element.data('user'), 21); |
||
188 | } |
||
189 | }); |
||
190 | $el.find('.avatar-name-wrapper').each(function() { |
||
191 | var element = $(this); |
||
192 | var avatar = element.find('.avatar'); |
||
193 | var label = element.find('strong'); |
||
194 | |||
195 | $.merge(avatar, label).contactsMenu(element.data('user'), 0, element); |
||
196 | }); |
||
197 | $el.find('.has-tooltip').tooltip({ |
||
198 | placement: 'bottom' |
||
199 | }); |
||
200 | }, |
||
201 | |||
202 | |||
203 | /** |
||
204 | * Renders this details view |
||
205 | */ |
||
206 | render: function() { |
||
207 | if (this._fileInfo) { |
||
208 | this.$el.html(this.template({ |
||
209 | emptyMessage: t('activity', 'No activity yet'), |
||
210 | moreLabel: t('activity', 'Load more activities') |
||
211 | })); |
||
212 | this.$container = this.$el.find('ul.activities'); |
||
213 | } |
||
214 | } |
||
215 | }); |
||
216 | |||
217 | OCA.Activity = OCA.Activity || {}; |
||
218 | OCA.Activity.ActivityTabView = ActivityTabView; |
||
219 | })(); |
||
220 |
You can rewrite this statement in dot notation: