diff options
Diffstat (limited to 'phpBB/styles/subsilver2/template/editor.js')
| -rw-r--r-- | phpBB/styles/subsilver2/template/editor.js | 264 | 
1 files changed, 93 insertions, 171 deletions
diff --git a/phpBB/styles/subsilver2/template/editor.js b/phpBB/styles/subsilver2/template/editor.js index 151cf53ff1..93506b8d4a 100644 --- a/phpBB/styles/subsilver2/template/editor.js +++ b/phpBB/styles/subsilver2/template/editor.js @@ -11,18 +11,16 @@ var bbcodeEnabled = true;  // Check for Browser & Platform for PC & IE specific bits  // More details from: http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html  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_win = ((clientPC.indexOf('win') != -1) || (clientPC.indexOf('16bit') != -1)); +var clientVer = parseInt(navigator.appVersion, 10); // Get browser version +var is_ie = ((clientPC.indexOf('msie') !== -1) && (clientPC.indexOf('opera') === -1)); +var is_win = ((clientPC.indexOf('win') !== -1) || (clientPC.indexOf('16bit') !== -1));  var baseHeight;  /**  * Shows the help messages in the helpline window  */ -function helpline(help) -{ +function helpline(help) {  	document.forms[form_name].helpbox.value = help_line[help];  } @@ -30,27 +28,22 @@ function helpline(help)  * Fix a bug involving the TextRange object. From  * http://www.frostjedi.com/terra/scripts/demo/caretBug.html  */  -function initInsertions()  -{ +function initInsertions() {  	var doc; -	if (document.forms[form_name]) -	{ +	if (document.forms[form_name]) {  		doc = document; -	} -	else  -	{ +	} else {  		doc = opener.document;  	}  	var textarea = doc.forms[form_name].elements[text_name]; -	if (is_ie && typeof(baseHeight) != 'number') -	{	 + +	if (is_ie && typeof(baseHeight) !== 'number') {  		textarea.focus();  		baseHeight = doc.selection.createRange().duplicate().boundingHeight; -		if (!document.forms[form_name]) -		{ +		if (!document.forms[form_name]) {  			document.body.focus();  		}  	} @@ -59,14 +52,10 @@ function initInsertions()  /**  * bbstyle  */ -function bbstyle(bbnumber) -{	 -	if (bbnumber != -1) -	{ +function bbstyle(bbnumber) { +	if (bbnumber !== -1) {  		bbfontstyle(bbtags[bbnumber], bbtags[bbnumber+1]); -	}  -	else  -	{ +	} else {  		insert_text('[*]');  		document.forms[form_name].elements[text_name].focus();  	} @@ -75,36 +64,32 @@ function bbstyle(bbnumber)  /**  * Apply bbcodes  */ -function bbfontstyle(bbopen, bbclose) -{ +function bbfontstyle(bbopen, bbclose) {  	theSelection = false; -		 +  	var textarea = document.forms[form_name].elements[text_name];  	textarea.focus(); -	if ((clientVer >= 4) && is_ie && is_win) -	{ +	if ((clientVer >= 4) && is_ie && is_win) {  		// Get text selection  		theSelection = document.selection.createRange().text; -		if (theSelection) -		{ +		if (theSelection) {  			// Add tags around selection  			document.selection.createRange().text = bbopen + theSelection + bbclose;  			document.forms[form_name].elements[text_name].focus();  			theSelection = '';  			return;  		} -	} -	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)) -	{ +	} 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;  	} -	 +  	//The new position for the cursor after adding the bbcode  	var caret_pos = getCaretPosition(textarea).start;  	var new_pos = caret_pos + bbopen.length; @@ -114,14 +99,12 @@ function bbfontstyle(bbopen, bbclose)  	// Center the cursor when we don't have a selection  	// Gecko and proper browsers -	if (!isNaN(textarea.selectionStart)) -	{ +	if (!isNaN(textarea.selectionStart)) {  		textarea.selectionStart = new_pos;  		textarea.selectionEnd = new_pos; -	}	 +	}  	// IE -	else if (document.selection) -	{ +	else if (document.selection) {  		var range = textarea.createTextRange();   		range.move("character", new_pos);   		range.select(); @@ -135,62 +118,49 @@ function bbfontstyle(bbopen, bbclose)  /**  * Insert text at position  */ -function insert_text(text, spaces, popup) -{ +function insert_text(text, spaces, popup) {  	var textarea; -	 -	if (!popup)  -	{ + +	if (!popup) {  		textarea = document.forms[form_name].elements[text_name]; -	}  -	else  -	{ +	} else {  		textarea = opener.document.forms[form_name].elements[text_name];  	} -	if (spaces)  -	{ + +	if (spaces) {  		text = ' ' + text + ' ';  	}  	// Since IE9, IE also has textarea.selectionStart, but it still needs to be treated the old way.  	// Therefore we simply add a !is_ie here until IE fixes the text-selection completely. -	if (!isNaN(textarea.selectionStart) && !is_ie) -	{ +	if (!isNaN(textarea.selectionStart) && !is_ie) {  		var sel_start = textarea.selectionStart;  		var sel_end = textarea.selectionEnd;  		mozWrap(textarea, text, '');  		textarea.selectionStart = sel_start + text.length;  		textarea.selectionEnd = sel_end + text.length; -	}	 -	 -	else if (textarea.createTextRange && textarea.caretPos) -	{ -		if (baseHeight != textarea.caretPos.boundingHeight)  -		{ +	} else if (textarea.createTextRange && textarea.caretPos) { +		if (baseHeight !== textarea.caretPos.boundingHeight) {  			textarea.focus();  			storeCaret(textarea); -		}		 +		} +  		var caret_pos = textarea.caretPos; -		caret_pos.text = caret_pos.text.charAt(caret_pos.text.length - 1) == ' ' ? caret_pos.text + text + ' ' : caret_pos.text + text; -		 -	} -	else -	{ +		caret_pos.text = caret_pos.text.charAt(caret_pos.text.length - 1) === ' ' ? caret_pos.text + text + ' ' : caret_pos.text + text; +	} else {  		textarea.value = textarea.value + text;  	} -	if (!popup)  -	{ -		textarea.focus(); -	} 	 +	if (!popup) { +		textarea.focus(); +	}  }  /**  * Add inline attachment at position  */ -function attach_inline(index, filename) -{ +function attach_inline(index, filename) {  	insert_text('[attachment=' + index + ']' + filename + '[/attachment]');  	document.forms[form_name].elements[text_name].focus();  } @@ -198,79 +168,57 @@ function attach_inline(index, filename)  /**  * Add quote text to message  */ -function addquote(post_id, username, l_wrote) -{ +function addquote(post_id, username, l_wrote) {  	var message_name = 'message_' + post_id;  	var theSelection = '';  	var divarea = false; +	var i; -	if (l_wrote === undefined) -	{ +	if (l_wrote === undefined) {  		// Backwards compatibility  		l_wrote = 'wrote';  	} -	if (document.all) -	{ +	if (document.all) {  		divarea = document.all[message_name]; -	} -	else -	{ +	} else {  		divarea = document.getElementById(message_name);  	}  	// Get text selection - not only the post content :(  	// IE9 must use the document.selection method but has the *.getSelection so we just force no IE -	if (window.getSelection && !is_ie && !window.opera) -	{ +	if (window.getSelection && !is_ie && !window.opera) {  		theSelection = window.getSelection().toString(); -	} -	else if (document.getSelection && !is_ie) -	{ +	} else if (document.getSelection && !is_ie) {  		theSelection = document.getSelection(); -	} -	else if (document.selection) -	{ +	} else if (document.selection) {  		theSelection = document.selection.createRange().text;  	} -	if (theSelection == '' || typeof theSelection == 'undefined' || theSelection == null) -	{ -		if (divarea.innerHTML) -		{ +	if (theSelection === '' || typeof theSelection === 'undefined' || theSelection === null) { +		if (divarea.innerHTML) {  			theSelection = divarea.innerHTML.replace(/<br>/ig, '\n');  			theSelection = theSelection.replace(/<br\/>/ig, '\n');  			theSelection = theSelection.replace(/<\;/ig, '<');  			theSelection = theSelection.replace(/>\;/ig, '>');  			theSelection = theSelection.replace(/&\;/ig, '&');  			theSelection = theSelection.replace(/ \;/ig, ' '); -		} -		else if (document.all) -		{ +		} else if (document.all) {  			theSelection = divarea.innerText; -		} -		else if (divarea.textContent) -		{ +		} else if (divarea.textContent) {  			theSelection = divarea.textContent; -		} -		else if (divarea.firstChild.nodeValue) -		{ +		} else if (divarea.firstChild.nodeValue) {  			theSelection = divarea.firstChild.nodeValue;  		}  	} -	if (theSelection) -	{ -		if (bbcodeEnabled) -		{ +	if (theSelection) { +		if (bbcodeEnabled) {  			insert_text('[quote="' + username + '"]' + theSelection + '[/quote]'); -		} -		else -		{ +		} else {  			insert_text(username + ' ' + l_wrote + ':' + '\n');  			var lines = split_lines(theSelection); -			for (i = 0; i < lines.length; i++) -			{ +			for (i = 0; i < lines.length; i++) {  				insert_text('> ' + lines[i] + '\n');  			}  		} @@ -279,39 +227,32 @@ function addquote(post_id, username, l_wrote)  	return;  } - -function split_lines(text) -{ +function split_lines(text) {  	var lines = text.split('\n');  	var splitLines = new Array();  	var j = 0; -	for(i = 0; i < lines.length; i++) -	{ -		if (lines[i].length <= 80) -		{ +	var i; + +	for(i = 0; i < lines.length; i++) { +		if (lines[i].length <= 80) {  			splitLines[j] = lines[i];  			j++; -		} -		else -		{ +		} else {  			var line = lines[i]; -			do -			{ -				var splitAt = line.indexOf(' ', 80); -				 -				if (splitAt == -1) -				{ +			var splitAt; +			do { +				splitAt = line.indexOf(' ', 80); + +				if (splitAt === -1) {  					splitLines[j] = line;  					j++; -				} -				else -				{ +				} else {  					splitLines[j] = line.substring(0, splitAt);  					line = line.substring(splitAt);  					j++;  				}  			} -			while(splitAt != -1); +			while(splitAt !== -1);  		}  	}  	return splitLines; @@ -320,15 +261,13 @@ function split_lines(text)  /**  * From http://www.massless.org/mozedit/  */ -function mozWrap(txtarea, open, close) -{ -	var selLength = (typeof(txtarea.textLength) == 'undefined') ? txtarea.value.length : txtarea.textLength; +function mozWrap(txtarea, open, close) { +	var selLength = (typeof(txtarea.textLength) === 'undefined') ? txtarea.value.length : txtarea.textLength;  	var selStart = txtarea.selectionStart;  	var selEnd = txtarea.selectionEnd;  	var scrollTop = txtarea.scrollTop; -	if (selEnd == 1 || selEnd == 2)  -	{ +	if (selEnd === 1 || selEnd === 2) {  		selEnd = selLength;  	} @@ -349,10 +288,8 @@ function mozWrap(txtarea, open, close)  * Insert at Caret position. Code from  * http://www.faqts.com/knowledge_base/view.phtml/aid/1052/fid/130  */ -function storeCaret(textEl) -{ -	if (textEl.createTextRange) -	{ +function storeCaret(textEl) { +	if (textEl.createTextRange) {  		textEl.caretPos = document.selection.createRange().duplicate();  	}  } @@ -360,8 +297,7 @@ function storeCaret(textEl)  /**  * Color pallette  */ -function colorPalette(dir, width, height) -{ +function colorPalette(dir, width, height) {  	var r = 0, g = 0, b = 0;  	var numberList = new Array(6);  	var color = ''; @@ -374,85 +310,71 @@ function colorPalette(dir, width, height)  	document.writeln('<table cellspacing="1" cellpadding="0" border="0">'); -	for (r = 0; r < 5; r++) -	{ -		if (dir == 'h') -		{ +	for (r = 0; r < 5; r++) { +		if (dir === 'h') {  			document.writeln('<tr>');  		} -		for (g = 0; g < 5; g++) -		{ -			if (dir == 'v') -			{ +		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 + '" style="width: ' + width + 'px; height: ' + height + 'px;">');  				document.write('<a href="#" onclick="bbfontstyle(\'[color=#' + color + ']\', \'[/color]\'); return false;"><img src="images/spacer.gif" width="' + width + '" height="' + height + '" alt="#' + color + '" title="#' + color + '" /></a>');  				document.writeln('</td>');  			} -			if (dir == 'v') -			{ +			if (dir === 'v') {  				document.writeln('</tr>');  			}  		} -		if (dir == 'h') -		{ +		if (dir === 'h') {  			document.writeln('</tr>');  		}  	}  	document.writeln('</table>');  } -  /**  * Caret Position object  */ -function caretPosition() -{ +function caretPosition() {  	var start = null;  	var end = null;  } -  /**  * Get the caret position in an textarea  */ -function getCaretPosition(txtarea) -{ +function getCaretPosition(txtarea) {  	var caretPos = new caretPosition(); -	 +  	// simple Gecko/Opera way -	if(txtarea.selectionStart || txtarea.selectionStart == 0) -	{ +	if (txtarea.selectionStart || txtarea.selectionStart === 0) {  		caretPos.start = txtarea.selectionStart;  		caretPos.end = txtarea.selectionEnd;  	}  	// dirty and slow IE way -	else if(document.selection) -	{ +	else if (document.selection) {  		// get current selection  		var range = document.selection.createRange();  		// a new selection of the whole textarea  		var range_all = document.body.createTextRange();  		range_all.moveToElementText(txtarea); -		 +  		// calculate selection start point by moving beginning of range_all to beginning of range  		var sel_start; -		for (sel_start = 0; range_all.compareEndPoints('StartToStart', range) < 0; sel_start++) -		{		 +		for (sel_start = 0; range_all.compareEndPoints('StartToStart', range) < 0; sel_start++) {  			range_all.moveStart('character', 1);  		} -	 +  		txtarea.sel_start = sel_start; -	 +  		// we ignore the end value for IE, this is already dirty enough and we don't need it  		caretPos.start = txtarea.sel_start;  		caretPos.end = txtarea.sel_start;  | 
