From 2be528494a4563db4eb1a01ee7711d384acc20e4 Mon Sep 17 00:00:00 2001 From: Hincu Petru Date: Sat, 29 Mar 2014 10:56:03 +0000 Subject: [PATCH] Fix jquery.mentionInput.js plugin --- lib/assets/javascripts/jquery.mentionsInput.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/lib/assets/javascripts/jquery.mentionsInput.js b/lib/assets/javascripts/jquery.mentionsInput.js index 6fcfa40be..17dca0f81 100644 --- a/lib/assets/javascripts/jquery.mentionsInput.js +++ b/lib/assets/javascripts/jquery.mentionsInput.js @@ -6,6 +6,11 @@ * Using underscore.js * * License: MIT License - http://www.opensource.org/licenses/mit-license.php + * + * Modifcations for Diaspora: + * + * Prevent replacing the wrong text by marking the replacement position with a special character + * Don't add a space after inserting a mention */ (function ($, _, undefined) { @@ -69,6 +74,7 @@ var autocompleteItemCollection = {}; var inputBuffer = []; var currentDataQuery = ''; + var mentionChar = "\u200B"; // zero width space settings = $.extend(true, {}, defaultSettings, settings ); @@ -114,13 +120,13 @@ _.each(mentionsCollection, function (mention) { var textSyntax = settings.templates.mentionItemSyntax(mention); - syntaxMessage = syntaxMessage.replace(mention.value, textSyntax); + syntaxMessage = syntaxMessage.replace(mentionChar + mention.value, textSyntax); }); var mentionText = utils.htmlEncode(syntaxMessage); _.each(mentionsCollection, function (mention) { - var formattedMention = _.extend({}, mention, {value: utils.htmlEncode(mention.value)}); + var formattedMention = _.extend({}, mention, {value: mentionChar + utils.htmlEncode(mention.value)}); var textSyntax = settings.templates.mentionItemSyntax(formattedMention); var textHighlight = settings.templates.mentionItemHighlight(formattedMention); @@ -170,7 +176,7 @@ hideAutoComplete(); // Mentions & syntax message - var updatedMessageText = start + mention.value + end; + var updatedMessageText = start + mentionChar + mention.value + end; elmInputBox.val(updatedMessageText); updateValues();