diff options
Diffstat (limited to 'phpBB/styles/subSilver/template/editor.js')
-rw-r--r-- | phpBB/styles/subSilver/template/editor.js | 309 |
1 files changed, 207 insertions, 102 deletions
diff --git a/phpBB/styles/subSilver/template/editor.js b/phpBB/styles/subSilver/template/editor.js index 5ccc210a3c..ef52b65998 100644 --- a/phpBB/styles/subSilver/template/editor.js +++ b/phpBB/styles/subSilver/template/editor.js @@ -1,5 +1,7 @@ -// bbCode control by subBlue design [ www.subBlue.com ] -// Includes unixsafe colour palette selector by SHS` +/** +* bbCode control by subBlue design [ www.subBlue.com ] +* Includes unixsafe colour palette selector by SHS` +*/ // Startup variables var imageTag = false; @@ -10,51 +12,74 @@ var theSelection = false; var clientPC = navigator.userAgent.toLowerCase(); // Get client info var clientVer = parseInt(navigator.appVersion); // Get browser version -var is_ie = ((clientPC.indexOf("msie") != -1) && (clientPC.indexOf("opera") == -1)); -var is_nav = ((clientPC.indexOf('mozilla')!=-1) && (clientPC.indexOf('spoofer')==-1) - && (clientPC.indexOf('compatible') == -1) && (clientPC.indexOf('opera')==-1) - && (clientPC.indexOf('webtv')==-1) && (clientPC.indexOf('hotjava')==-1)); +var is_ie = ((clientPC.indexOf('msie') != -1) && (clientPC.indexOf('opera') == -1)); +var is_nav = ((clientPC.indexOf('mozilla') != -1) && (clientPC.indexOf('spoofer') == -1) && (clientPC.indexOf('compatible') == -1) && (clientPC.indexOf('opera') == -1) && (clientPC.indexOf('webtv') == -1) && (clientPC.indexOf('hotjava') == -1)); -var is_win = ((clientPC.indexOf("win")!=-1) || (clientPC.indexOf("16bit") != -1)); -var is_mac = (clientPC.indexOf("mac")!=-1); +var is_win = ((clientPC.indexOf('win') != -1) || (clientPC.indexOf('16bit') != -1)); +var is_mac = (clientPC.indexOf('mac') != -1); -// Shows the help messages in the helpline window -function helpline(help) { - document.forms[form_name].helpbox.value = eval(help + "_help"); +/** +* Shows the help messages in the helpline window +*/ +function helpline(help) +{ + document.forms[form_name].helpbox.value = eval(help + '_help'); } -// Replacement for arrayname.length property -function getarraysize(thearray) { - for (i = 0; i < thearray.length; i++) { - if ((thearray[i] == "undefined") || (thearray[i] == "") || (thearray[i] == null)) +/** +* Replacement for arrayname.length property +*/ +function getarraysize(thearray) +{ + for (i = 0; i < thearray.length; i++) + { + if (thearray[i] == 'undefined' || thearray[i] == '' || thearray[i] == null) + { return i; } + } + return thearray.length; } -// Replacement for arrayname.push(value) not implemented in IE until version 5.5 -// Appends element to the array -function arraypush(thearray,value) { - thearray[ getarraysize(thearray) ] = value; +/** +* Replacement for arrayname.push(value) not implemented in IE until version 5.5 +* Appends element to the array +*/ +function arraypush(thearray,value) +{ + thearray[getarraysize(thearray)] = value; } -// Replacement for arrayname.pop() not implemented in IE until version 5.5 -// Removes and returns the last element of an array -function arraypop(thearray) { +/** +* Replacement for arrayname.pop() not implemented in IE until version 5.5 +* Removes and returns the last element of an array +*/ +function arraypop(thearray) +{ thearraysize = getarraysize(thearray); retval = thearray[thearraysize - 1]; delete thearray[thearraysize - 1]; + return retval; } -function smiley(text) { +/** +* Insert emoticon +*/ +function smiley(text) +{ text = ' ' + text + ' '; - if (document.forms[form_name].elements[text_name].createTextRange && document.forms[form_name].elements[text_name].caretPos) { + + if (document.forms[form_name].elements[text_name].createTextRange && document.forms[form_name].elements[text_name].caretPos) + { var caretPos = document.forms[form_name].elements[text_name].caretPos; caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? caretPos.text + text + ' ' : caretPos.text + text; document.forms[form_name].elements[text_name].focus(); - } else { + } + else + { var selStart = document.forms[form_name].elements[text_name].selectionStart; var selEnd = document.forms[form_name].elements[text_name].selectionEnd; @@ -65,15 +90,21 @@ function smiley(text) { } } -function bbfontstyle(bbopen, bbclose) { - +/** +* Apply bbcodes +*/ +function bbfontstyle(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) { + // Get text selection + theSelection = document.selection.createRange().text; + + if (theSelection) + { // Add tags around selection document.selection.createRange().text = bbopen + theSelection + bbclose; document.forms[form_name].elements[text_name].focus(); @@ -89,11 +120,16 @@ function bbfontstyle(bbopen, bbclose) { return; } - if (imageTag) { // Close image tag before adding + // Close image tag before adding + if (imageTag) + { 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 + // Remove the close image tag from the list + lastValue = arraypop(bbcode) - 1; + + // Return button back to normal state + document.forms[form_name].addbbcode14.value = 'Img'; imageTag = false; } @@ -106,6 +142,9 @@ function bbfontstyle(bbopen, bbclose) { return; } +/** +* Insert text at position +*/ function insert_text(text) { if (document.forms[form_name].elements[text_name].createTextRange && document.forms[form_name].elements[text_name].caretPos) @@ -128,20 +167,27 @@ function insert_text(text) } } -function attach_inline() { +/** +* Add inline attachment at position +*/ +function attach_inline() +{ insert_text('[attachment=' + document.forms[form_name].elements['attachments'].value + ']' + document.forms[form_name].elements['attachments'].options[document.forms[form_name].elements['attachments'].selectedIndex].text + '[/attachment]'); document.forms[form_name].elements[text_name].focus(); } -function addquote(post_id, username) { - +/** +* Add quote text to message +*/ +function addquote(post_id, username) +{ var message_name = 'message_' + post_id; var theSelection = ''; var divarea = false; if (document.all) { - eval("divarea = document.all." + message_name + ";"); + eval('divarea = document.all.' + message_name + ';'); } else { @@ -177,7 +223,7 @@ function addquote(post_id, username) { theSelection = divarea.firstChild.nodeValue; } } - + if (theSelection) { insert_text('[quote="' + username + '"]' + theSelection + '[/quote]'); @@ -186,39 +232,54 @@ function addquote(post_id, username) { return; } -function bbstyle(bbnumber) { - +/** +* bbstyle +*/ +function bbstyle(bbnumber) +{ donotinsert = false; theSelection = false; bblast = 0; document.forms[form_name].elements[text_name].focus(); - if (bbnumber == -1) { // Close all open tags & default button names - while (bbcode[0]) { + // Close all open tags & default button names + if (bbnumber == -1) + { + while (bbcode[0]) + { butnumber = arraypop(bbcode) - 1; document.forms[form_name].elements[text_name].value += bbtags[butnumber + 1]; buttext = eval('document.forms[form_name].addbbcode' + butnumber + '.value'); - if (buttext != "[*]") + + if (buttext != '[*]') { eval('document.forms[form_name].addbbcode' + butnumber + '.value ="' + buttext.substr(0,(buttext.length - 1)) + '"'); } } - document.forms[form_name].addbbcode10.value = "List"; - bbtags[10] = "[list]"; - document.forms[form_name].addbbcode12.value = "List="; - bbtags[12] = "[list=]"; - imageTag = false; // All tags are closed including image tags :D + + document.forms[form_name].addbbcode10.value = 'List'; + bbtags[10] = '[list]'; + + document.forms[form_name].addbbcode12.value = 'List='; + bbtags[12] = '[list=]'; + + // All tags are closed including image tags :D + imageTag = false; document.forms[form_name].elements[text_name].focus(); + return; } // [*] doesn't have an end tag - noEndTag = (bbtags[bbnumber] == "[*]") + noEndTag = (bbtags[bbnumber] == '[*]') if ((clientVer >= 4) && is_ie && is_win) { - theSelection = document.selection.createRange().text; // Get text selection - if (theSelection) { + // Get text selection + theSelection = document.selection.createRange().text; + + if (theSelection) + { // Add tags around selection document.selection.createRange().text = bbtags[bbnumber] + theSelection + ((!noEndTag) ? bbtags[bbnumber+1] : ''); document.forms[form_name].elements[text_name].focus(); @@ -235,92 +296,114 @@ function bbstyle(bbnumber) { } // Find last occurance of an open tag the same as the one just clicked - for (i = 0; i < bbcode.length; i++) { - if (bbcode[i] == bbnumber+1) { + for (i = 0; i < bbcode.length; i++) + { + if (bbcode[i] == bbnumber+1) + { bblast = i; donotinsert = true; } } - if ((bbnumber == 10) && (bbtags[10] != "[*]")) + if (bbnumber == 10 && bbtags[10] != '[*]') { if (donotinsert) { - document.forms[form_name].addbbcode12.value = "List="; + document.forms[form_name].addbbcode12.value = 'List='; tmp_help = o_help; o_help = e_help; e_help = tmp_help; - bbtags[12] = "[list=]"; + bbtags[12] = '[list=]'; } else { - document.forms[form_name].addbbcode12.value = "[*]"; + document.forms[form_name].addbbcode12.value = '[*]'; tmp_help = o_help; o_help = e_help; e_help = tmp_help; - bbtags[12] = "[*]"; + bbtags[12] = '[*]'; } } - if ((bbnumber == 12) && (bbtags[12] != "[*]")) + if (bbnumber == 12 && bbtags[12] != '[*]') { if (donotinsert) { - document.forms[form_name].addbbcode10.value = "List"; + document.forms[form_name].addbbcode10.value = 'List'; tmp_help = l_help; l_help = e_help; e_help = tmp_help; - bbtags[10] = "[list]"; + bbtags[10] = '[list]'; } else { - document.forms[form_name].addbbcode10.value = "[*]"; + document.forms[form_name].addbbcode10.value = '[*]'; tmp_help = l_help; l_help = e_help; e_help = tmp_help; - bbtags[10] = "[*]"; + bbtags[10] = '[*]'; } } - if (donotinsert) { // Close all open tags up to the one just clicked & default button names - while (bbcode[bblast]) { - butnumber = arraypop(bbcode) - 1; - if (bbtags[butnumber] != "[*]") - { - insert_text(bbtags[butnumber + 1]); - } - else - { - insert_text(bbtags[butnumber]); - } - buttext = eval('document.forms[form_name].addbbcode' + butnumber + '.value'); - if (bbtags[butnumber] != "[*]") - { - eval('document.forms[form_name].addbbcode' + butnumber + '.value ="' + buttext.substr(0,(buttext.length - 1)) + '"'); - } - imageTag = false; + // Close all open tags up to the one just clicked & default button names + if (donotinsert) + { + while (bbcode[bblast]) + { + butnumber = arraypop(bbcode) - 1; + + if (bbtags[butnumber] != '[*]') + { + insert_text(bbtags[butnumber + 1]); } - document.forms[form_name].elements[text_name].focus(); - return; - } else { // Open tags + else + { + insert_text(bbtags[butnumber]); + } + + buttext = eval('document.forms[form_name].addbbcode' + butnumber + '.value'); - if (imageTag && (bbnumber != 14)) { // Close image tag before adding another + if (bbtags[butnumber] != '[*]') + { + eval('document.forms[form_name].addbbcode' + butnumber + '.value ="' + buttext.substr(0,(buttext.length - 1)) + '"'); + } + imageTag = false; + } + document.forms[form_name].elements[text_name].focus(); + return; + } + else + { + // Open tags + + // Close image tag before adding another + if (imageTag && (bbnumber != 14)) + { 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 + // Remove the close image tag from the list + lastValue = arraypop(bbcode) - 1; + + // Return button back to normal state + document.forms[form_name].addbbcode14.value = 'Img'; imageTag = false; } // Open tag insert_text(bbtags[bbnumber]); - if ((bbnumber == 14) && (imageTag == false)) imageTag = 1; // Check to stop additional tags after an unclosed image tag - if (bbtags[bbnumber] != "[*]") + // Check to stop additional tags after an unclosed image tag + if (bbnumber == 14 && imageTag == false) { - arraypush(bbcode,bbnumber+1); + imageTag = 1; + } + + if (bbtags[bbnumber] != '[*]') + { + arraypush(bbcode, bbnumber + 1); eval('document.forms[form_name].addbbcode'+bbnumber+'.value += "*"'); } + document.forms[form_name].elements[text_name].focus(); return; } @@ -328,67 +411,90 @@ function bbstyle(bbnumber) { storeCaret(document.forms[form_name].elements[text_name]); } -// From http://www.massless.org/mozedit/ +/** +* From http://www.massless.org/mozedit/ +*/ function mozWrap(txtarea, open, close) { var selLength = txtarea.textLength; var selStart = txtarea.selectionStart; var selEnd = txtarea.selectionEnd; var scrollTop = txtarea.scrollTop; + if (selEnd == 1 || selEnd == 2) + { selEnd = selLength; + } var s1 = (txtarea.value).substring(0,selStart); var s2 = (txtarea.value).substring(selStart, selEnd) var s3 = (txtarea.value).substring(selEnd, selLength); + txtarea.value = s1 + open + s2 + close + s3; txtarea.selectionStart = selEnd + open.length + close.length; txtarea.selectionEnd = txtarea.selectionStart; txtarea.focus(); txtarea.scrollTop = scrollTop; + return; } -// Insert at Claret position. Code from -// http://www.faqts.com/knowledge_base/view.phtml/aid/1052/fid/130 -function storeCaret(textEl) { - if (textEl.createTextRange) { textEl.caretPos = document.selection.createRange().duplicate(); } +/** +* Insert at Claret position. Code from +* http://www.faqts.com/knowledge_base/view.phtml/aid/1052/fid/130 +*/ +function storeCaret(textEl) +{ + if (textEl.createTextRange) + { + textEl.caretPos = document.selection.createRange().duplicate(); + } } +/** +* Color pallette +*/ function colorPalette(dir, width, height) { var r = 0, g = 0, b = 0; var numberList = new Array(6); - numberList[0] = "00"; - numberList[1] = "40"; - numberList[2] = "80"; - numberList[3] = "BF"; - numberList[4] = "FF"; + + numberList[0] = '00'; + numberList[1] = '40'; + numberList[2] = '80'; + numberList[3] = 'BF'; + numberList[4] = 'FF'; + document.writeln('<table cellspacing="1" cellpadding="0" border="0">'); - for(r = 0; r < 5; r++) + + for (r = 0; r < 5; r++) { if (dir == 'h') { document.writeln('<tr>'); } - for(g = 0; g < 5; g++) + + for (g = 0; g < 5; g++) { if (dir == 'v') { document.writeln('<tr>'); } - for(b = 0; b < 5; b++) + + for (b = 0; b < 5; b++) { color = String(numberList[r]) + String(numberList[g]) + String(numberList[b]); document.write('<td bgcolor="#' + color + '">'); document.write('<a href="javascript:bbfontstyle(\'[color=#' + color + ']\', \'[/color]\');" onmouseover="helpline(\'s\');"><img src="images/spacer.gif" width="' + width + '" height="' + height + '" border="0" alt="#' + color + '" title="#' + color + '" /></a>'); document.writeln('</td>'); } + if (dir == 'v') { document.writeln('</tr>'); } } + if (dir == 'h') { document.writeln('</tr>'); @@ -396,4 +502,3 @@ function colorPalette(dir, width, height) } document.writeln('</table>'); } - |