/** * @copyright (c) 2016 Joas Schilling * * @author Joas Schilling * * This file is licensed under the Affero General Public License version 3 or * later. See the COPYING file. */ /* global OC, _, Handlebars, t, define */ define(function () { "use strict"; return { avatarsEnabled: true, _fileTemplate: '{{name}}', _userLocalTemplate: '
{{name}}
', _userRemoteTemplate: '{{name}}', _unknownTemplate: '{{name}}', _unknownLinkTemplate: '{{name}}', /** * @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); 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 'file': return this.parseFileParameter(parameter); case 'user': if (_.isUndefined(parameter.server)) { if (!this.userLocalTemplate) { this.userLocalTemplate = Handlebars.compile(this._userLocalTemplate); } return this.userLocalTemplate(parameter); } if (!this.userRemoteTemplate) { this.userRemoteTemplate = Handlebars.compile(this._userRemoteTemplate); } return this.userRemoteTemplate(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); } }, /** * @param {Object} parameter * @param {string} parameter.type * @param {string} parameter.id * @param {string} parameter.name * @param {string} parameter.path * @param {string} parameter.link */ parseFileParameter: function(parameter) { if (!this.fileTemplate) { this.fileTemplate = Handlebars.compile(this._fileTemplate); } var lastSlashPosition = parameter.path.lastIndexOf('/'), firstSlashPosition = parameter.path.indexOf('/'); parameter.path = parameter.path.substring(firstSlashPosition === 0 ? 1 : 0, lastSlashPosition); return this.fileTemplate(_.extend(parameter, { title: parameter.path.length === 0 ? '' : t('notifications', 'in {path}', parameter) })); } }; });