From 22a3794c51088ccfa889be0a3ff90be211ababbd Mon Sep 17 00:00:00 2001 From: psychobunny Date: Thu, 21 Nov 2013 16:47:32 -0500 Subject: [PATCH] closes #525 --- public/src/modules/composer.js | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/public/src/modules/composer.js b/public/src/modules/composer.js index dae501565d..54402ef55a 100644 --- a/public/src/modules/composer.js +++ b/public/src/modules/composer.js @@ -210,13 +210,17 @@ define(['taskbar'], function(taskbar) { selectionEnd = postContentEl.selectionEnd, selectionLength = selectionEnd - selectionStart; + function insertIntoInput(element, value) { + var start = postContentEl.selectionStart; + element.value = element.value.slice(0, start) + value + element.value.slice(start, element.value.length); + postContentEl.selectionStart = postContentEl.selectionEnd = start + value.length; + } + switch(iconClass) { case 'icon-bold': if (selectionStart === selectionEnd) { // Nothing selected - postContentEl.value = postContentEl.value + '**bolded text**'; - postContentEl.selectionStart = cursorEnd+2; - postContentEl.selectionEnd = postContentEl.value.length - 2; + insertIntoInput(postContentEl, "**bolded text**"); } else { // Text selected postContentEl.value = postContentEl.value.slice(0, selectionStart) + '**' + postContentEl.value.slice(selectionStart, selectionEnd) + '**' + postContentEl.value.slice(selectionEnd); @@ -227,9 +231,7 @@ define(['taskbar'], function(taskbar) { case 'icon-italic': if (selectionStart === selectionEnd) { // Nothing selected - postContentEl.value = postContentEl.value + '*italicised text*'; - postContentEl.selectionStart = cursorEnd+1; - postContentEl.selectionEnd = postContentEl.value.length - 1; + insertIntoInput(postContentEl, "*italicised text*"); } else { // Text selected postContentEl.value = postContentEl.value.slice(0, selectionStart) + '*' + postContentEl.value.slice(selectionStart, selectionEnd) + '*' + postContentEl.value.slice(selectionEnd); @@ -239,16 +241,12 @@ define(['taskbar'], function(taskbar) { break; case 'icon-list': // Nothing selected - postContentEl.value = postContentEl.value + "\n\n* list item"; - postContentEl.selectionStart = cursorEnd+4; - postContentEl.selectionEnd = postContentEl.value.length; + insertIntoInput(postContentEl, "\n\n* list item"); break; case 'icon-link': if (selectionStart === selectionEnd) { // Nothing selected - postContentEl.value = postContentEl.value + '[link text](link url)'; - postContentEl.selectionStart = cursorEnd+12; - postContentEl.selectionEnd = postContentEl.value.length - 1; + insertIntoInput(postContentEl, "[link text](link url)"); } else { // Text selected postContentEl.value = postContentEl.value.slice(0, selectionStart) + '[' + postContentEl.value.slice(selectionStart, selectionEnd) + '](link url)' + postContentEl.value.slice(selectionEnd); @@ -258,6 +256,7 @@ define(['taskbar'], function(taskbar) { break; } }); + window.addEventListener('resize', function() { if (composer.active !== undefined) composer.reposition(composer.active); });