diff -r 31d226269d2f -r 4797a4a88533 includes/clientside/static/preformat.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/includes/clientside/static/preformat.js Tue Mar 30 11:37:00 2010 -0400 @@ -0,0 +1,94 @@ +// +// Add the wrappers for preformatted tags within content. +// + +addOnloadHook(function() + { + preformat_process_all(); + }); + +function preformat_process_all() +{ + var aec = document.getElementById('ajaxEditContainer'); + if ( !aec ) + return false; + var pres = aec.getElementsByTagName('pre'); + for ( var i = 0; i < pres.length; i++ ) + { + if ( pres[i].hasButtonPanel ) + continue; + pres[i].hasButtonPanel = true; + + var btnp = document.createElement('div'); + btnp.mypre = pres[i]; + btnp.className = 'preformat-panel'; + btnp.appendChild(document.createTextNode($lang.get('onpage_pre_lbl_code'))); + btnp.appendChild(document.createTextNode(' <')); + var a_sel = document.createElement('a'); + a_sel.href = '#'; + a_sel.onclick = function() + { + preformat_handle_select_click(this.parentNode); + return false; + }; + a_sel.appendChild(document.createTextNode($lang.get('onpage_pre_btn_select'))); + btnp.appendChild(a_sel); + btnp.appendChild(document.createTextNode('> <')); + var a_pop = document.createElement('a'); + a_pop.href = '#'; + a_pop.onclick = function() + { + preformat_handle_popup_click(this.parentNode); + return false; + }; + a_pop.appendChild(document.createTextNode($lang.get('onpage_pre_btn_popup'))); + btnp.appendChild(a_pop); + btnp.appendChild(document.createTextNode('>')); + pres[i].parentNode.insertBefore(btnp, pres[i]); + } +} + +function preformat_handle_select_click(btnp) +{ + var pre = btnp.mypre; + select_element(pre); +} + +function preformat_handle_popup_click(btnp) +{ + var pre = btnp.mypre; + var text = pre.innerHTML; + var newwin = window.open('about:blank', 'codepopwin', 'width=800,height=600,status=no,toolbars=no,toolbar=no,address=no,scroll=yes'); + newwin.document.open(); + newwin.document.write('
' + text + ''); + newwin.document.write(''); + newwin.document.close(); +} + +function select_element(element) +{ + if (IE) + { + // IE + var range = document.body.createTextRange(); + range.moveToElementText(element); + range.select(); + } + else if (is_Gecko || is_Opera) + { + // Mozilla/Opera + var selection = window.getSelection(); + var range = document.createRange(); + range.selectNodeContents(element); + selection.removeAllRanges(); + selection.addRange(range); + } + else if (is_Webkit) + { + // Safari (Chrome?) + var selection = window.getSelection(); + selection.setBaseAndExtent(element, 0, element, 1); + } +} +