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
|
/*
* Copyright (c) 2016 Vincent Petry <pvince81@owncloud.com>
*
* This file is licensed under the Affero General Public License version 3
* or later.
*
* See the COPYING-README file.
*
*/
(function() {
_.extend(OC.Files.Client, {
PROPERTY_COMMENTS_UNREAD: '{' + OC.Files.Client.NS_OWNCLOUD + '}comments-unread'
})
OCA.Comments = _.extend({}, OCA.Comments)
if (!OCA.Comments) {
/**
* @namespace
*/
OCA.Comments = {}
}
/**
* @namespace
*/
OCA.Comments.FilesPlugin = {
ignoreLists: [
'trashbin',
'files.public'
],
_formatCommentCount: function(count) {
return OCA.Comments.Templates['filesplugin']({
count: count,
countMessage: n('comments', '%n unread comment', '%n unread comments', count),
iconUrl: OC.imagePath('core', 'actions/comment')
})
},
attach: function(fileList) {
var self = this
if (this.ignoreLists.indexOf(fileList.id) >= 0) {
return
}
fileList.registerTabView(new OCA.Comments.CommentsTabView('commentsTabView'))
var oldGetWebdavProperties = fileList._getWebdavProperties
fileList._getWebdavProperties = function() {
var props = oldGetWebdavProperties.apply(this, arguments)
props.push(OC.Files.Client.PROPERTY_COMMENTS_UNREAD)
return props
}
fileList.filesClient.addFileInfoParser(function(response) {
var data = {}
var props = response.propStat[0].properties
var commentsUnread = props[OC.Files.Client.PROPERTY_COMMENTS_UNREAD]
if (!_.isUndefined(commentsUnread) && commentsUnread !== '') {
data.commentsUnread = parseInt(commentsUnread, 10)
}
return data
})
fileList.$el.addClass('has-comments')
var oldCreateRow = fileList._createRow
fileList._createRow = function(fileData) {
var $tr = oldCreateRow.apply(this, arguments)
if (fileData.commentsUnread) {
$tr.attr('data-comments-unread', fileData.commentsUnread)
}
return $tr
}
// register "comment" action for reading comments
fileList.fileActions.registerAction({
name: 'Comment',
displayName: function(context) {
if (context && context.$file) {
var unread = parseInt(context.$file.data('comments-unread'), 10)
if (unread >= 0) {
return n('comments', '1 new comment', '{unread} new comments', unread, { unread: unread })
}
}
return t('comments', 'Comment')
},
mime: 'all',
order: -140,
iconClass: 'icon-comment',
permissions: OC.PERMISSION_READ,
type: OCA.Files.FileActions.TYPE_INLINE,
render: function(actionSpec, isDefault, context) {
var $file = context.$file
var unreadComments = $file.data('comments-unread')
if (unreadComments) {
var $actionLink = $(self._formatCommentCount(unreadComments))
context.$file.find('a.name>span.fileactions').append($actionLink)
return $actionLink
}
return ''
},
actionHandler: function(fileName, context) {
context.$file.find('.action-comment').tooltip('hide')
// open sidebar in comments section
context.fileList.showDetailsView(fileName, 'comments')
}
})
// add attribute to "elementToFile"
var oldElementToFile = fileList.elementToFile
fileList.elementToFile = function($el) {
var fileInfo = oldElementToFile.apply(this, arguments)
var commentsUnread = $el.data('comments-unread')
if (commentsUnread) {
fileInfo.commentsUnread = commentsUnread
}
return fileInfo
}
}
}
})()
OC.Plugins.register('OCA.Files.FileList', OCA.Comments.FilesPlugin)
|