From c4ebef7f27e1f58639faf4458240c652fcac6392 Mon Sep 17 00:00:00 2001 From: Nils Adermann Date: Sun, 26 Mar 2006 16:12:54 +0000 Subject: [PATCH] - some JS magic to make color bbcode work properly with selected text [Bug #1118] git-svn-id: file:///svn/phpbb/trunk@5730 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/styles/subSilver/template/editor.js | 40 ++++++++++++++++++----- 1 file changed, 31 insertions(+), 9 deletions(-) diff --git a/phpBB/styles/subSilver/template/editor.js b/phpBB/styles/subSilver/template/editor.js index c9809bb7ed..bbc89abcfb 100644 --- a/phpBB/styles/subSilver/template/editor.js +++ b/phpBB/styles/subSilver/template/editor.js @@ -66,22 +66,44 @@ function smiley(text) { } function bbfontstyle(bbopen, bbclose) { - if ((clientVer >= 4) && is_ie && is_win) { - theSelection = document.selection.createRange().text; - if (!theSelection) { - insert_text(bbopen + bbclose); + + theSelection = false; + document.forms[form_name].elements[text_name].focus(); + + if ((clientVer >= 4) && is_ie && is_win) + { + theSelection = document.selection.createRange().text; // Get text selection + if (theSelection) { + // Add tags around selection + document.selection.createRange().text = bbopen + theSelection + bbclose; document.forms[form_name].elements[text_name].focus(); + theSelection = ''; return; } - document.selection.createRange().text = bbopen + theSelection + bbclose; - document.forms[form_name].elements[text_name].focus(); - return; - } else { - insert_text(bbopen + bbclose); + } + else if (document.forms[form_name].elements[text_name].selectionEnd && (document.forms[form_name].elements[text_name].selectionEnd - document.forms[form_name].elements[text_name].selectionStart > 0)) + { + mozWrap(document.forms[form_name].elements[text_name], bbopen, bbclose); document.forms[form_name].elements[text_name].focus(); + theSelection = ''; return; } + + if (imageTag) { // Close image tag before adding + insert_text(bbtags[15]); + + lastValue = arraypop(bbcode) - 1; // Remove the close image tag from the list + document.forms[form_name].addbbcode14.value = "Img"; // Return button back to normal state + imageTag = false; + } + + // Open tag + insert_text(bbopen + bbclose); + + document.forms[form_name].elements[text_name].focus(); + storeCaret(document.forms[form_name].elements[text_name]); + return; } function insert_text(text) {