From 9ded988c275e7baa7fffc8611ecb56a4084ab2f8 Mon Sep 17 00:00:00 2001 From: lavigor Date: Tue, 3 Jul 2018 02:47:19 +0300 Subject: [PATCH] [ticket/13713] Refactor JS PHPBB3-13713 --- phpBB/assets/javascript/editor.js | 61 +++++++++++++++++-------------- 1 file changed, 34 insertions(+), 27 deletions(-) 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) {