diff --git a/phpBB/assets/javascript/editor.js b/phpBB/assets/javascript/editor.js
index 076b7fd7ff..66f9fb3444 100644
--- a/phpBB/assets/javascript/editor.js
+++ b/phpBB/assets/javascript/editor.js
@@ -385,36 +385,43 @@ function getCaretPosition(txtarea) {
}
(function($) {
- function mention_default_avatar(type) {
- return (type === 'group') ? '' : '';
- }
+ function Mentions() {
+ function defaultAvatar(type) {
+ return (type === 'group') ? '' : '';
+ }
- function handle_mentions(txtarea) {
- var $mentionDataContainer = $('[data-mention-url]'),
- mentionURL = $mentionDataContainer.data('mentionUrl'),
- mentionNamesLimit = $mentionDataContainer.data('mentionNamesLimit'),
- mentionTopicId = $mentionDataContainer.data('topicId');
- $(txtarea).atwho({
- at: "@",
- displayTpl: function(data) {
- var avatar = (data.avatar.src) ? "
" : mention_default_avatar(data.avatar.type),
- rank = (data.rank) ? "" + data.rank + "" : '';
- return "
" + avatar + "" + data.name + rank + "";
- },
- insertTpl: "[mention ${param}=${id}]${name}[/mention]",
- limit: mentionNamesLimit,
- callbacks: {
- remoteFilter: function(query, callback) {
- $.getJSON(mentionURL, {keyword: query, topic_id: mentionTopicId}, function (data) {
- callback(data)
- });
+ this.isEnabled = function() {
+ return $('[data-mention-url]').length;
+ };
+
+ this.handle = function(txtarea) {
+ let $mentionDataContainer = $('[data-mention-url]'),
+ mentionURL = $mentionDataContainer.data('mentionUrl'),
+ mentionNamesLimit = $mentionDataContainer.data('mentionNamesLimit'),
+ mentionTopicId = $mentionDataContainer.data('topicId');
+ $(txtarea).atwho({
+ at: "@",
+ displayTpl: function(data) {
+ let avatar = (data.avatar.src) ? "
" : defaultAvatar(data.avatar.type),
+ rank = (data.rank) ? "" + data.rank + "" : '';
+ return "" + avatar + "" + data.name + rank + "";
+ },
+ insertTpl: "[mention ${param}=${id}]${name}[/mention]",
+ limit: mentionNamesLimit,
+ callbacks: {
+ remoteFilter: function(query, callback) {
+ $.getJSON(mentionURL, {keyword: query, topic_id: mentionTopicId}, function (data) {
+ callback(data)
+ });
+ }
}
- }
- });
+ });
+ };
}
+ phpbb.mentions = new Mentions();
$(document).ready(function() {
- var doc, textarea;
+ let doc, textarea;
// find textarea, make sure browser supports necessary functions
if (document.forms[form_name]) {
@@ -439,8 +446,8 @@ function getCaretPosition(txtarea) {
phpbb.showDragNDrop(textarea);
}
- if ($('[data-mention-url]').length) {
- handle_mentions(textarea);
+ if (phpbb.mentions.isEnabled()) {
+ phpbb.mentions.handle(textarea);
}
$('textarea').on('keydown', function (e) {