includes/clientside/static/preformat.js
author Dan Fuhry <dan@enanocms.org>
Wed, 29 Dec 2010 13:25:32 -0500
changeset 1332 12286b3ee214
parent 1231 4797a4a88533
permissions -rw-r--r--
Added some more hooks to the page editing pipeline. It should now be possible to add controls to the page editor, send the data from them out to the server, and process them on the server side.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1231
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
     1
//
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
     2
// Add the wrappers for preformatted tags within content.
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
     3
//
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
     4
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
     5
addOnloadHook(function()
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
     6
	{
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
     7
		preformat_process_all();
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
     8
	});
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
     9
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    10
function preformat_process_all()
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    11
{
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    12
	var aec = document.getElementById('ajaxEditContainer');
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    13
	if ( !aec )
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    14
		return false;
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    15
	var pres = aec.getElementsByTagName('pre');
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    16
	for ( var i = 0; i < pres.length; i++ )
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    17
	{
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    18
		if ( pres[i].hasButtonPanel )
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    19
			continue;
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    20
		pres[i].hasButtonPanel = true;
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    21
		
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    22
		var btnp = document.createElement('div');
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    23
		btnp.mypre = pres[i];
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    24
		btnp.className = 'preformat-panel';
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    25
		btnp.appendChild(document.createTextNode($lang.get('onpage_pre_lbl_code')));
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    26
		btnp.appendChild(document.createTextNode(' <'));
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    27
		var a_sel = document.createElement('a');
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    28
		a_sel.href = '#';
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    29
		a_sel.onclick = function()
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    30
			{
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    31
				preformat_handle_select_click(this.parentNode);
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    32
				return false;
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    33
			};
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    34
		a_sel.appendChild(document.createTextNode($lang.get('onpage_pre_btn_select')));
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    35
		btnp.appendChild(a_sel);
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    36
		btnp.appendChild(document.createTextNode('> <'));
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    37
		var a_pop = document.createElement('a');
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    38
		a_pop.href = '#';
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    39
		a_pop.onclick = function()
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    40
			{
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    41
				preformat_handle_popup_click(this.parentNode);
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    42
				return false;
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    43
			};
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    44
		a_pop.appendChild(document.createTextNode($lang.get('onpage_pre_btn_popup')));
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    45
		btnp.appendChild(a_pop);
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    46
		btnp.appendChild(document.createTextNode('>'));
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    47
		pres[i].parentNode.insertBefore(btnp, pres[i]);
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    48
	}
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    49
}
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    50
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    51
function preformat_handle_select_click(btnp)
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    52
{
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    53
	var pre = btnp.mypre;
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    54
	select_element(pre);
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    55
}
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    56
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    57
function preformat_handle_popup_click(btnp)
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    58
{
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    59
	var pre = btnp.mypre;
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    60
	var text = pre.innerHTML;
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    61
	var newwin = window.open('about:blank', 'codepopwin', 'width=800,height=600,status=no,toolbars=no,toolbar=no,address=no,scroll=yes');
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    62
	newwin.document.open();
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    63
	newwin.document.write('<html><head><title>' + $lang.get('onpage_pre_popup_title') + '</title></head><body>');
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    64
	newwin.document.write('<pre>' + text + '</pre>');
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    65
	newwin.document.write('</body></html>');
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    66
	newwin.document.close();
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    67
}
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    68
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    69
function select_element(element)
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    70
{
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    71
	if (IE)
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    72
	{
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    73
		// IE
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    74
		var range = document.body.createTextRange();
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    75
		range.moveToElementText(element);
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    76
		range.select();
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    77
	}
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    78
	else if (is_Gecko || is_Opera)
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    79
	{
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    80
		// Mozilla/Opera
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    81
		var selection = window.getSelection();
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    82
		var range = document.createRange();
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    83
		range.selectNodeContents(element);
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    84
		selection.removeAllRanges();
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    85
		selection.addRange(range);
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    86
	}
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    87
	else if (is_Webkit)
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    88
	{
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    89
		// Safari (Chrome?)
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    90
		var selection = window.getSelection();
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    91
		selection.setBaseAndExtent(element, 0, element, 1);
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    92
	}
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    93
}
4797a4a88533 Added selection and popup for <pre> tags within wikitext. Also fixed more bugs found in the HTML paragraph parser (mostly self-closing tags e.g. <hr />).
Dan
parents:
diff changeset
    94