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
|
/* global OC, OCA, Handlebars */
/**
* @copyright (c) 2016 Joas Schilling <coding@schilljs.com>
*
* @author Joas Schilling <coding@schilljs.com>
*
* This file is licensed under the Affero General Public License version 3 or
* later. See the COPYING file.
*/
(function(OC, OCA, Handlebars) {
OCA.SpreedMe.RichObjectStringParser = {
_userLocalTemplate: '' +
'<span class="atwho-inserted" contenteditable="false">' +
'<span class="mention-user avatar-name-wrapper {{#if isCurrentUser}}currentUser{{/if}}">' +
'<span class="avatar" ' +
'data-user-id="{{id}}" ' +
'data-user-display-name="{{name}}">' +
'</span>' +
'<strong>{{name}}</strong>' +
'</span>' +
'</span>',
_filePreviewTemplate: '' +
'<a href="{{link}}" class="filePreviewContainer" target="_blank" rel="noopener noreferrer">' +
'<span class="filePreview" data-file-id="{{id}}"></span>' +
'<strong>{{name}}</strong>' +
'</a>',
_unknownTemplate: '<strong>{{name}}</strong>',
_unknownLinkTemplate: '<a href="{{link}}" class="external" target="_blank" rel="noopener noreferrer"><strong>{{name}}</strong></a>',
/**
* @param {string} subject
* @param {Object} parameters
* @returns {string}
*/
parseMessage: function(subject, parameters) {
var self = this,
regex = /\{([a-z0-9-]+)\}/gi,
matches = subject.match(regex);
_.each(matches, function(parameter) {
parameter = parameter.substring(1, parameter.length - 1);
if (!parameters.hasOwnProperty(parameter) || !parameters[parameter]) {
// Malformed translation?
console.error('Potential malformed ROS string: parameter {' + parameter + '} was found in the string but is missing from the parameter list');
return;
}
var parsed = self.parseParameter(parameters[parameter]);
subject = subject.replace('{' + parameter + '}', parsed);
});
return subject;
},
/**
* @param {Object} parameter
* @param {string} parameter.type
* @param {string} parameter.id
* @param {string} parameter.name
* @param {string} parameter.link
*/
parseParameter: function(parameter) {
switch (parameter.type) {
case 'user':
if (!this.userLocalTemplate) {
this.userLocalTemplate = Handlebars.compile(this._userLocalTemplate);
}
if (!parameter.name) {
parameter.name = parameter.id;
}
if (OC.getCurrentUser().uid === parameter.id) {
parameter.isCurrentUser = true;
}
return this.userLocalTemplate(parameter);
case 'file':
if (!this.filePreviewTemplate) {
this.filePreviewTemplate = Handlebars.compile(this._filePreviewTemplate);
}
return this.filePreviewTemplate(parameter);
default:
if (!_.isUndefined(parameter.link)) {
if (!this.unknownLinkTemplate) {
this.unknownLinkTemplate = Handlebars.compile(this._unknownLinkTemplate);
}
return this.unknownLinkTemplate(parameter);
}
if (!this.unknownTemplate) {
this.unknownTemplate = Handlebars.compile(this._unknownTemplate);
}
return this.unknownTemplate(parameter);
}
}
};
})(OC, OCA, Handlebars);
|