1
0
mirror of https://github.com/e107inc/e107.git synced 2025-07-26 09:20:28 +02:00

Bugtracker #3562 - if not inserting a bbcode, delete any selected text

This commit is contained in:
e107steved
2007-01-19 20:47:04 +00:00
parent 32ae7b2690
commit 6aee73b773

View File

@@ -5,9 +5,9 @@
| e107 website system - Javascript File. | e107 website system - Javascript File.
| |
| $Source: /cvs_backup/e107_0.8/e107_files/e107.js,v $ | $Source: /cvs_backup/e107_0.8/e107_files/e107.js,v $
| $Revision: 1.2 $ | $Revision: 1.3 $
| $Date: 2007-01-17 13:04:50 $ | $Date: 2007-01-19 20:47:04 $
| $Author: mrpete $ | $Author: e107steved $
+----------------------------------------------------------------------------+ +----------------------------------------------------------------------------+
*/ */
@@ -205,6 +205,17 @@ function mozWrap(txtarea, open, close){
return; return;
} }
function mozSwap(txtarea, newtext){
var selLength = txtarea.textLength;
var selStart = txtarea.selectionStart;
var selEnd = txtarea.selectionEnd;
if (selEnd == 1 || selEnd == 2) selEnd = selLength;
var s1 = (txtarea.value).substring(0,selStart);
var s3 = (txtarea.value).substring(selEnd, selLength);
txtarea.value = s1 + newtext + s3;
return;
}
function storeCaret (textAr){ function storeCaret (textAr){
e107_selectedInputArea = textAr; e107_selectedInputArea = textAr;
if (textAr.createTextRange){ if (textAr.createTextRange){
@@ -212,20 +223,39 @@ function storeCaret (textAr){
} }
} }
function addtext(text, emote){ function addtext(text, emote)
if (window.e107_selectedInputArea){ {
if (window.e107_selectedInputArea)
{
var ta = e107_selectedInputArea; var ta = e107_selectedInputArea;
if (emote != true){ if (emote != true)
{ // Split if its a paired bbcode
val = text.split(']['); val = text.split('][');
} if (val[0] == text) val[1] = '';
else { val = text; } }
else
{
val = text;
}
if ((clientVer >= 4) && is_ie && is_win){ if ((clientVer >= 4) && is_ie && is_win)
{
theSelection = document.selection.createRange().text; /* wrap selected text */ theSelection = document.selection.createRange().text; /* wrap selected text */
if (theSelection) { if (theSelection)
if (emote != true){ {
if (emote != true)
{
if (val[1] == '')
{ // Single piece of text
document.selection.createRange().text = val[0];
}
else
{ // bbcode
document.selection.createRange().text = val[0] +']' + theSelection + '[' + val[1]; document.selection.createRange().text = val[0] +']' + theSelection + '[' + val[1];
} else { }
}
else
{
document.selection.createRange().text = val + theSelection; document.selection.createRange().text = val + theSelection;
} }
ta.focus(); ta.focus();
@@ -233,26 +263,45 @@ function addtext(text, emote){
return; return;
} }
}else if (ta.selectionEnd && (ta.selectionEnd - ta.selectionStart > 0)){ }
if (emote != true){ else
if (ta.selectionEnd && (ta.selectionEnd - ta.selectionStart > 0))
{ // Selected text here
if (emote != true)
{
if (val[1] != '')
{ // BBCode to wrap
mozWrap(ta, val[0] +']', '[' + val[1]); /* wrap selected text */ mozWrap(ta, val[0] +']', '[' + val[1]); /* wrap selected text */
} else { }
else
{ // Single piece of text to insert, and delete any selected text
mozSwap(ta, text); /* wrap selected text */
}
}
else
{
mozWrap(ta, val, ''); /* wrap selected text */ mozWrap(ta, val, ''); /* wrap selected text */
} }
return; return;
} }
text = ' ' + text + ' '; text = ' ' + text + ' ';
if (ta.createTextRange && e107_selectedRange) { if (ta.createTextRange && e107_selectedRange)
{
var caretPos = e107_selectedRange; /* IE */ var caretPos = e107_selectedRange; /* IE */
caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? caretPos.text + text + ' ' : caretPos.text + text; caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? caretPos.text + text + ' ' : caretPos.text + text;
} else if (ta.selectionStart || ta.selectionStart == '0') { /* Moz */ }
else
if (ta.selectionStart || ta.selectionStart == '0')
{ /* Moz */
var startPos = ta.selectionStart; var startPos = ta.selectionStart;
var endPos = ta.selectionEnd; var endPos = ta.selectionEnd;
var charb4 = ta.value.charAt(endPos-1); var charb4 = ta.value.charAt(endPos-1);
ta.value = ta.value.substring(0, endPos)+ text + ta.value.substring(endPos); ta.value = ta.value.substring(0, endPos)+ text + ta.value.substring(endPos);
} else { }
else
{
ta.value += text; ta.value += text;
} }
ta.focus(); ta.focus();
} }
} }