Unsuccessful attempt at fixing "dismiss"/"close manager" buttons in ACL editor; non-breaking change to template API to allow plugins to add "normal" sidebar widgets in addition to the special "raw" block type, specified as the third parameter to $template->sidebar_widget(). Defaults to false, which is old behavior; new behavior (enabled by passing TRUE as the 3rd param) means that the content of the block is primarily block-level links.
// Javascript routines for the page editorif ( document.getElementById('mdgCss') ){ var css_url = document.getElementById('mdgCss').href;}else{ var css_url = scriptPath + '/includes/clientside/css/enano_shared.css';}var do_popups = ( is_Safari ) ? '' : ',inlinepopups';var _skin = ( typeof(tinymce_skin) == 'string' ) ? tinymce_skin : 'default';var editor_img_path = scriptPath + '/images/editor';// Idle time required for autosave, in secondsvar AUTOSAVE_TIMEOUT = 15;var AutosaveTimeoutObj = null;var enano_tinymce_options = { mode : "none", plugins : 'table,save,safari,pagebreak,style,layer,advhr,insertdatetime,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras' + do_popups, theme : 'advanced', skin : _skin, theme_advanced_resize_horizontal : false, theme_advanced_resizing : true, theme_advanced_toolbar_location : "top", theme_advanced_toolbar_align : "left", theme_advanced_buttons1 : "save,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,forecolor,backcolor,|,formatselect,|,fontselect,fontsizeselect", theme_advanced_buttons3_add_before : "tablecontrols,separator", theme_advanced_buttons3_add_after : "|,fullscreen", theme_advanced_statusbar_location : 'bottom', noneditable_noneditable_class : 'mce_readonly', content_css : css_url};var initTinyMCE = function(e){ if ( typeof(tinyMCE) == 'object' ) { if ( !KILL_SWITCH && !DISABLE_MCE ) { tinyMCE.init(enano_tinymce_options); } }}addOnloadHook(initTinyMCE);var editor_open = false;function ajaxEditor(revid){ if ( KILL_SWITCH ) return true; if ( editor_open ) return true; var rev_id_uri = ( revid ) ? '&revid=' + revid : ''; selectButtonMinor('edit'); selectButtonMajor('article'); setAjaxLoading(); ajaxGet(stdAjaxPrefix + '&_mode=getsource' + rev_id_uri, function() { if ( ajax.readyState == 4 && ajax.status == 200 ) { unsetAjaxLoading(); var response = String(ajax.responseText + ''); if ( response.substr(0, 1) != '{' ) { handle_invalid_json(response); return false; } response = parseJSON(response); if ( response.mode == 'error' ) { unselectAllButtonsMinor(); new messagebox(MB_OK | MB_ICONSTOP, $lang.get('editor_err_server'), response.error); return false; } if ( !response.auth_view_source ) { unselectAllButtonsMinor(); new messagebox(MB_OK | MB_ICONSTOP, $lang.get('editor_err_access_denied_title'), $lang.get('editor_err_access_denied_body')); return false; } // do we need to enter a captcha before saving the page? var captcha_hash = ( response.require_captcha ) ? response.captcha_id : false; ajaxBuildEditor((!response.auth_edit), response.time, response.allow_wysiwyg, captcha_hash, response.revid, response.undo_info, response); } });}function ajaxBuildEditor(readonly, timestamp, allow_wysiwyg, captcha_hash, revid, undo_info, response){ // Set flags // We don't want the fancy confirmation framework to trigger if the user is only viewing the page source if ( !readonly ) { editor_open = true; disableUnload(); } // Destroy existing contents of page container var edcon = document.getElementById('ajaxEditContainer'); for ( var i = edcon.childNodes.length - 1; i >= 0; i-- ) { edcon.removeChild(edcon.childNodes[i]); } var content = response.src; // // BUILD EDITOR // var heading = document.createElement('h3'); heading.style.cssFloat = 'left'; heading.style.styleFloat = 'left'; heading.style.marginTop = '0px'; heading.style.marginBottom = '0px'; heading.appendChild(document.createTextNode($lang.get('editor_msg_editor_heading'))); // Plaintext/wikitext toggler // Only build the editor if using TinyMCE is allowed. THIS IS WEAK // AND CANNOT BE MADE ANY STRONGER. if ( allow_wysiwyg ) { var toggler = document.createElement('p'); toggler.style.marginLeft = '0'; toggler.style.textAlign = 'right'; var span_wiki = document.createElement('span'); var span_mce = document.createElement('span'); span_wiki.id = 'enano_edit_btn_pt'; span_mce.id = 'enano_edit_btn_mce'; if ( readCookie('enano_editor_mode') == 'tinymce' ) { // Current selection is TinyMCE - make span_wiki have the link and span_mce be plaintext var a = document.createElement('a'); a.href = '#'; a.appendChild(document.createTextNode($lang.get('editor_btn_wikitext'))); span_wiki.appendChild(a); toggler.appendChild(span_wiki); toggler.appendChild(document.createTextNode(' | ')); span_mce.appendChild(document.createTextNode($lang.get('editor_btn_graphical'))); toggler.appendChild(span_mce); } else { // Current selection is wikitext - set span_wiki to plaintext and span_mce to link span_wiki.appendChild(document.createTextNode($lang.get('editor_btn_wikitext'))); toggler.appendChild(span_wiki); toggler.appendChild(document.createTextNode(' | ')); var a = document.createElement('a'); a.href = '#'; a.appendChild(document.createTextNode($lang.get('editor_btn_graphical'))); span_mce.appendChild(a); toggler.appendChild(span_mce); } } // Form (to allow submits from MCE to trigger a real save) var form = document.createElement('form'); form.action = 'javascript:void(0);'; form.onsubmit = function() { ajaxEditorSave(); return false; } // Draft notice if ( response.have_draft ) { var dn = document.createElement('div'); dn.className = 'warning-box'; dn.id = 'ajax_edit_draft_notice'; dn.innerHTML = '<b>' + $lang.get('editor_msg_have_draft_title') + '</b><br />'; dn.innerHTML += $lang.get('editor_msg_have_draft_body', { author: response.draft_author, time: response.draft_time }); } // Old-revision notice if ( revid > 0 ) { var oldrev_box = document.createElement('div'); oldrev_box.className = 'usermessage'; oldrev_box.appendChild(document.createTextNode($lang.get('editor_msg_editing_old_revision'))); } // Preview holder var preview_anchor = document.createElement('a'); preview_anchor.name = 'ajax_preview'; preview_anchor.id = 'ajax_preview'; var preview_container = document.createElement('div'); preview_container.id = 'enano_editor_preview'; preview_container.style.clear = 'left'; // Textarea containing the content var ta_wrapper = document.createElement('div'); ta_wrapper.style.margin = '10px 0'; // ta_wrapper.style.clear = 'both'; var textarea = document.createElement('textarea'); ta_wrapper.appendChild(textarea); textarea.id = 'ajaxEditArea'; textarea.rows = '20'; textarea.cols = '60'; textarea.style.width = '98.7%'; // Revision metadata controls var tblholder = document.createElement('div'); tblholder.className = 'tblholder'; var metatable = document.createElement('table'); metatable.setAttribute('border', '0'); metatable.setAttribute('cellspacing', '1'); metatable.setAttribute('cellpadding', '4'); if ( readonly ) { // Close Viewer button var toolbar = ''; var head = new templateParser(response.toolbar_templates.toolbar_start); var button = new templateParser(response.toolbar_templates.toolbar_button); var tail = new templateParser(response.toolbar_templates.toolbar_end); button.assign_bool({ show_title: true }); // Button: close button.assign_vars({ TITLE: $lang.get('editor_btn_closeviewer'), IMAGE: editor_img_path + '/discard.gif', FLAGS: 'href="#" onclick="ajaxReset(true); return false;"' }); toolbar += button.run(); } else { // First row: edit summary var tr1 = document.createElement('tr'); var td1_1 = document.createElement('td'); var td1_2 = document.createElement('td'); td1_1.className = 'row2'; td1_2.className = 'row1'; td1_2.style.width = '70%'; td1_1.appendChild(document.createTextNode($lang.get('editor_lbl_edit_summary'))); td1_1.appendChild(document.createElement('br')); var small = document.createElement('small'); small.appendChild(document.createTextNode($lang.get('editor_lbl_edit_summary_explain'))); td1_1.appendChild(small); var field_es = document.createElement('input'); field_es.id = 'enano_editor_field_summary'; field_es.type = 'text'; field_es.size = '40'; field_es.style.width = '96%'; if ( revid > 0 ) { undo_info.last_rev_id = revid; field_es.value = $lang.get('editor_reversion_edit_summary', undo_info); } td1_2.appendChild(field_es); tr1.appendChild(td1_1); tr1.appendChild(td1_2); // Second row: minor edit var tr2 = document.createElement('tr'); var td2_1 = document.createElement('td'); var td2_2 = document.createElement('td'); td2_1.className = 'row2'; td2_2.className = 'row1'; td2_1.appendChild(document.createTextNode($lang.get('editor_lbl_minor_edit'))); td2_1.appendChild(document.createElement('br')); var small = document.createElement('small'); small.appendChild(document.createTextNode($lang.get('editor_lbl_minor_edit_explain'))); td2_1.appendChild(small); var label = document.createElement('label'); var field_mi = document.createElement('input'); field_mi.id = 'enano_editor_field_minor'; field_mi.type = 'checkbox'; label.appendChild(field_mi); label.appendChild(document.createTextNode(' ')); label.appendChild(document.createTextNode($lang.get('editor_lbl_minor_edit_field'))); td2_2.appendChild(label); tr2.appendChild(td2_1); tr2.appendChild(td2_2); if ( captcha_hash ) { // generate captcha field (effectively third row) var tr4 = document.createElement('tr'); var td4_1 = document.createElement('td'); var td4_2 = document.createElement('td'); td4_1.className = 'row2'; td4_2.className = 'row1'; td4_1.appendChild(document.createTextNode($lang.get('editor_lbl_field_captcha'))); td4_1.appendChild(document.createElement('br')); var small2 = document.createElement('small'); small2.appendChild(document.createTextNode($lang.get('editor_msg_captcha_pleaseenter'))); small2.appendChild(document.createElement('br')); small2.appendChild(document.createElement('br')); small2.appendChild(document.createTextNode($lang.get('editor_msg_captcha_blind'))); td4_1.appendChild(small2); var img = document.createElement('img'); img.src = makeUrlNS('Special', 'Captcha/' + captcha_hash); img._captchaHash = captcha_hash; img.id = 'enano_editor_captcha_img'; img.onclick = function() { this.src = makeUrlNS('Special', 'Captcha/' + this._captchaHash + '/' + Math.floor(Math.random() * 100000)); } img.style.cursor = 'pointer'; td4_2.appendChild(img); td4_2.appendChild(document.createElement('br')); td4_2.appendChild(document.createTextNode($lang.get('editor_lbl_field_captcha_code') + ' ')); var input = document.createElement('input'); input.type = 'text'; input.id = 'enano_editor_field_captcha'; input._captchaHash = captcha_hash; input.size = '9'; td4_2.appendChild(input); tr4.appendChild(td4_1); tr4.appendChild(td4_2); } // Third row: controls var toolbar = ''; var head = new templateParser(response.toolbar_templates.toolbar_start); var button = new templateParser(response.toolbar_templates.toolbar_button); var label = new templateParser(response.toolbar_templates.toolbar_label); var tail = new templateParser(response.toolbar_templates.toolbar_end); button.assign_bool({ show_title: true }); toolbar += head.run(); // Button: Save button.assign_vars({ TITLE: $lang.get('editor_btn_save'), IMAGE: editor_img_path + '/save.gif', FLAGS: 'href="#" onclick="ajaxEditorSave(); return false;"' }); toolbar += button.run(); // Button: preview button.assign_vars({ TITLE: $lang.get('editor_btn_preview'), IMAGE: editor_img_path + '/preview.gif', FLAGS: 'href="#" onclick="ajaxEditorGenPreview(); return false;"' }); toolbar += button.run(); // Button: revert button.assign_vars({ TITLE: $lang.get('editor_btn_revert'), IMAGE: editor_img_path + '/revert.gif', FLAGS: 'href="#" onclick="ajaxEditorRevertToLatest(); return false;"' }); toolbar += button.run(); // Button: diff button.assign_vars({ TITLE: $lang.get('editor_btn_diff'), IMAGE: editor_img_path + '/diff.gif', FLAGS: 'href="#" onclick="ajaxEditorShowDiffs(); return false;"' }); toolbar += button.run(); // Button: cancel button.assign_vars({ TITLE: $lang.get('editor_btn_cancel'), IMAGE: editor_img_path + '/discard.gif', FLAGS: 'href="#" onclick="ajaxEditorCancel(); return false;"' }); toolbar += button.run(); // Separator label.assign_vars({ TITLE: ' ' }); toolbar += label.run(); // Button: Save draft button.assign_vars({ TITLE: $lang.get('editor_btn_savedraft'), IMAGE: editor_img_path + '/savedraft.gif', FLAGS: 'href="#" onclick="ajaxPerformAutosave(); return false;" id="ajax_edit_savedraft_btn"' }); toolbar += button.run(); toolbar += tail.run(); metatable.appendChild(tr1); metatable.appendChild(tr2); if ( captcha_hash ) { metatable.appendChild(tr4); } // metatable.appendChild(tr3); } tblholder.appendChild(metatable); // Edit disclaimer/notice if ( editNotice ) // This is set globally in {JS_DYNAMIC_VARS}. { var en_div = document.createElement('div'); en_div.innerHTML = editNotice; en_div.className = 'usermessage'; en_div.style.margin = '10px 0 0 0'; } // Put it all together... form.appendChild(heading); if ( allow_wysiwyg ) form.appendChild(toggler); if ( dn ) form.appendChild(dn); if ( oldrev_box ) form.appendChild(oldrev_box); form.appendChild(preview_anchor); form.appendChild(preview_container); form.appendChild(ta_wrapper); form.appendChild(tblholder); form.innerHTML += '<div style="margin: 10px 0 0 0;">' + toolbar + '</div>'; edcon.appendChild(form); if ( editNotice && !readonly ) { edcon.appendChild(en_div); } // more textarea attribs/init var textarea = document.getElementById('ajaxEditArea'); textarea.as_last_save = 0; textarea.content_orig = content; textarea.used_draft = false; textarea.onkeyup = function() { if ( this.needReset ) { var img = $('ajax_edit_savedraft_btn').object.getElementsByTagName('img')[0]; var lbl = $('ajax_edit_savedraft_btn').object.getElementsByTagName('span')[0]; img.src = editor_img_path + '/savedraft.gif'; lbl.innerHTML = $lang.get('editor_btn_savedraft'); } if ( AutosaveTimeoutObj ) clearTimeout(AutosaveTimeoutObj); AutosaveTimeoutObj = setTimeout('ajaxAutosaveDraft();', ( AUTOSAVE_TIMEOUT * 1000 )); } if ( readonly ) { textarea.className = 'mce_readonly'; textarea.setAttribute('readonly', 'readonly'); } // If the editor preference is tinymce, switch the editor to TinyMCE now if ( readCookie('enano_editor_mode') == 'tinymce' && allow_wysiwyg ) { $dynano('ajaxEditArea').switchToMCE(); } $dynano('ajaxEditArea').object.focus(); $dynano('ajaxEditArea').object._edTimestamp = timestamp; $dynano('ajaxEditArea').setContent(content); if ( allow_wysiwyg ) { if ( readCookie('enano_editor_mode') == 'tinymce' ) { var a = document.getElementById('enano_edit_btn_pt').getElementsByTagName('a')[0]; a.onclick = function() { ajaxSetEditorPlain(); return false; }; } else { var a = document.getElementById('enano_edit_btn_mce').getElementsByTagName('a')[0]; a.onclick = function() { ajaxSetEditorMCE(); return false; }; } } // Autosave every 5 minutes (m * s * ms) setInterval('ajaxPerformAutosave();', ( 5 * 60 * 1000 ));}function ajaxEditorSave(is_draft){ if ( !is_draft ) ajaxSetEditorLoading(); var ta_content = $('ajaxEditArea').getContent(); if ( !is_draft && ( ta_content == '' || ta_content == '<p></p>' || ta_content == '<p> </p>' ) ) { new messagebox(MB_OK|MB_ICONSTOP, $lang.get('editor_err_no_text_title'), $lang.get('editor_err_no_text_body')); ajaxUnSetEditorLoading(); return false; } if ( is_draft ) { // ajaxSetEditorLoading(); var img = $('ajax_edit_savedraft_btn').object.getElementsByTagName('img')[0]; var lbl = $('ajax_edit_savedraft_btn').object.getElementsByTagName('span')[0]; img.src = scriptPath + '/images/loading.gif'; var d = new Date(); var m = String(d.getMinutes()); if ( m.length < 2 ) m = '0' + m; var time = d.getHours() + ':' + m; lbl.innerHTML = $lang.get('editor_msg_draft_saving'); } var edit_summ = $('enano_editor_field_summary').object.value; if ( !edit_summ ) edit_summ = ''; var is_minor = ( $('enano_editor_field_minor').object.checked ) ? 1 : 0; var timestamp = $('ajaxEditArea').object._edTimestamp; var used_draft = $('ajaxEditArea').object.used_draft; var json_packet = { src: ta_content, summary: edit_summ, minor_edit: is_minor, time: timestamp, draft: ( is_draft == true ), used_draft: used_draft }; // Do we need to add captcha info? if ( document.getElementById('enano_editor_field_captcha') ) { var captcha_field = document.getElementById('enano_editor_field_captcha'); if ( captcha_field.value == '' ) { new messagebox(MB_OK|MB_ICONSTOP, $lang.get('editor_err_need_captcha_title'), $lang.get('editor_err_need_captcha_body')); ajaxUnSetEditorLoading(); return false; } json_packet.captcha_code = captcha_field.value; json_packet.captcha_id = captcha_field._captchaHash; } json_packet = ajaxEscape(toJSONString(json_packet)); ajaxPost(stdAjaxPrefix + '&_mode=savepage_json', 'r=' + json_packet, function() { if ( ajax.readyState == 4 && ajax.status == 200 ) { var response = String(ajax.responseText + ''); if ( response.substr(0, 1) != '{' ) { handle_invalid_json(response); return false; } response = parseJSON(response); // This will only be used if there was a lower-level error. if ( response.mode == 'error' ) { new messagebox(MB_OK | MB_ICONSTOP, $lang.get('editor_err_server'), response.error); return false; } // This will be used if the PageProcessor generated errors (usually security/permissions related) if ( response.mode == 'errors' ) { // This will be true if the user entered a captcha code incorrectly, thus // invalidating the code and requiring a new image to be generated. if ( response.new_captcha ) { // Generate the new captcha field var img = document.getElementById('enano_editor_captcha_img'); var input = document.getElementById('enano_editor_field_captcha'); if ( img && input ) { img._captchaHash = response.new_captcha; input._captchaHash = response.new_captcha; img.src = makeUrlNS('Special', 'Captcha/' + response.new_captcha); input.value = ''; } } var errors = '<ul><li>' + implode('</li><li>', response.errors) + '</li></ul>'; new messagebox(MB_OK | MB_ICONSTOP, $lang.get('editor_err_save_title'), $lang.get('editor_err_save_body') + errors); return false; } // If someone else got to the page first, warn the user if ( response.mode == 'obsolete' ) { // Update the local timestamp to allow override $('ajaxEditArea').object._edTimestamp = response.time; new messagebox(MB_OK | MB_ICONEXCLAMATION, $lang.get('editor_err_obsolete_title'), $lang.get('editor_err_obsolete_body', { author: response.author, timestamp: response.date_string, page_url: makeUrl(title, false, true) })); return false; } if ( response.mode == 'success' ) { if ( response.is_draft ) { document.getElementById('ajaxEditArea').used_draft = true; document.getElementById('ajaxEditArea').needReset = true; var img = $('ajax_edit_savedraft_btn').object.getElementsByTagName('img')[0]; var lbl = $('ajax_edit_savedraft_btn').object.getElementsByTagName('span')[0]; img.src = scriptPath + '/images/mini-info.png'; var d = new Date(); var m = String(d.getMinutes()); if ( m.length < 2 ) m = '0' + m; var time = d.getHours() + ':' + m; lbl.innerHTML = $lang.get('editor_msg_draft_saved', { time: time }); } else { // The save was successful; reset flags and make another request for the new page content ajaxUnSetEditorLoading(); setAjaxLoading(); editor_open = false; enableUnload(); changeOpac(0, 'ajaxEditContainer'); ajaxGet(stdAjaxPrefix + '&_mode=getpage&noheaders', function() { if ( ajax.readyState == 4 && ajax.status == 200 ) { unsetAjaxLoading(); selectButtonMajor('article'); unselectAllButtonsMinor(); document.getElementById('ajaxEditContainer').innerHTML = '<div class="usermessage">' + $lang.get('editor_msg_saved') + '</div>' + ajax.responseText; opacity('ajaxEditContainer', 0, 100, 1000); } }); } } } }, true);}function ajaxEditorGenPreview(){ ajaxSetEditorLoading(); var ta_content = $('ajaxEditArea').getContent(); ta_content = ajaxEscape(ta_content); if ( $('enano_editor_preview').object.innerHTML != '' ) { opacity('enano_editor_preview', 100, 0, 500); } ajaxPost(stdAjaxPrefix + '&_mode=preview', 'text=' + ta_content, function() { if ( ajax.readyState == 4 && ajax.status == 200 ) { ajaxUnSetEditorLoading(); changeOpac(0, 'enano_editor_preview'); $('enano_editor_preview').object.innerHTML = ajax.responseText; window.location.hash = '#ajax_preview'; opacity('enano_editor_preview', 0, 100, 500); } }, true);}function ajaxEditorRevertToLatest(){ var mb = new messagebox(MB_YESNO | MB_ICONQUESTION, $lang.get('editor_msg_revert_confirm_title'), $lang.get('editor_msg_revert_confirm_body')); mb.onclick['Yes'] = function() { setTimeout('ajaxEditorRevertToLatestReal();', 750); }}function ajaxEditorRevertToLatestReal(){ ajaxSetEditorLoading(); ajaxGet(stdAjaxPrefix + '&_mode=getsource', function() { if ( ajax.readyState == 4 && ajax.status == 200 ) { ajaxUnSetEditorLoading(); var response = String(ajax.responseText + ''); if ( response.substr(0, 1) != '{' ) { handle_invalid_json(response); return false; } response = parseJSON(response); if ( response.mode == 'error' ) { unselectAllButtonsMinor(); new messagebox(MB_OK | MB_ICONSTOP, $lang.get('editor_err_server'), response.error); return false; } if ( !response.auth_view_source ) { unselectAllButtonsMinor(); new messagebox(MB_OK | MB_ICONSTOP, $lang.get('editor_err_access_denied_title'), $lang.get('editor_err_access_denied_body')); return false; } $('ajaxEditArea').setContent(response.src); } }, true);}function ajaxEditorShowDiffs(){ ajaxSetEditorLoading(); var ta_content = $('ajaxEditArea').getContent(); ta_content = ajaxEscape(ta_content); if ( $('enano_editor_preview').object.innerHTML != '' ) { opacity('enano_editor_preview', 100, 0, 500); } ajaxPost(stdAjaxPrefix + '&_mode=diff_cur', 'text=' + ta_content, function() { if ( ajax.readyState == 4 && ajax.status == 200 ) { ajaxUnSetEditorLoading(); changeOpac(0, 'enano_editor_preview'); $('enano_editor_preview').object.innerHTML = ajax.responseText; window.location.hash = '#ajax_preview'; opacity('enano_editor_preview', 0, 100, 500); } }, true);}function ajaxEditorCancel(){ var mb = new messagebox(MB_YESNO | MB_ICONQUESTION, $lang.get('editor_msg_cancel_confirm_title'), $lang.get('editor_msg_cancel_confirm_body')); mb.onclick['Yes'] = function() { setAjaxLoading(); editor_open = false; enableUnload(); setTimeout('ajaxReset();', 750); }}function ajaxSetEditorMCE(){ if ( editor_loading ) return false; // Clear out existing buttons var span_wiki = $dynano('enano_edit_btn_pt').object; var span_mce = $dynano('enano_edit_btn_mce').object; span_wiki.removeChild(span_wiki.firstChild); span_mce.removeChild(span_mce.firstChild); // Rebuild control var a = document.createElement('a'); a.href = '#'; a.onclick = function() { ajaxSetEditorPlain(); return false; }; a.appendChild(document.createTextNode($lang.get('editor_btn_wikitext'))); span_wiki.appendChild(a); span_mce.appendChild(document.createTextNode($lang.get('editor_btn_graphical'))); // Swap editor $dynano('ajaxEditArea').switchToMCE(); // Remember the setting createCookie('enano_editor_mode', 'tinymce', 365);}function ajaxSetEditorPlain(){ if ( editor_loading ) return false; // Clear out existing buttons var span_wiki = $dynano('enano_edit_btn_pt').object; var span_mce = $dynano('enano_edit_btn_mce').object; span_wiki.removeChild(span_wiki.firstChild); span_mce.removeChild(span_mce.firstChild); // Rebuild control span_wiki.appendChild(document.createTextNode($lang.get('editor_btn_wikitext'))); var a = document.createElement('a'); a.href = '#'; a.onclick = function() { ajaxSetEditorMCE(); return false; }; a.appendChild(document.createTextNode($lang.get('editor_btn_graphical'))); span_mce.appendChild(a); // Swap editor $dynano('ajaxEditArea').destroyMCE(); // Remember the setting createCookie('enano_editor_mode', 'text', 365);}var editor_loading = false;function ajaxSetEditorLoading(){ var ed = tinyMCE.get('ajaxEditArea'); editor_loading = true; if ( ed ) { ed.setProgressState(1); } else { ed = document.getElementById('ajaxEditArea'); var blackout = document.createElement('div'); blackout.style.position = 'absolute'; blackout.style.top = $('ajaxEditArea').Top() + 'px'; blackout.style.left = $('ajaxEditArea').Left() + 'px'; blackout.style.width = $('ajaxEditArea').Width() + 'px'; blackout.style.height = $('ajaxEditArea').Height() + 'px'; blackout.style.backgroundColor = '#FFFFFF'; domObjChangeOpac(60, blackout); blackout.style.backgroundImage = 'url(' + scriptPath + '/includes/clientside/tinymce/themes/advanced/skins/default/img/progress.gif)'; blackout.style.backgroundPosition = 'center center'; blackout.style.backgroundRepeat = 'no-repeat'; blackout.id = 'enano_editor_blackout'; blackout.style.zIndex = getHighestZ() + 2; var body = document.getElementsByTagName('body')[0]; body.appendChild(blackout); }}function ajaxUnSetEditorLoading(){ editor_loading = false; var ed = tinyMCE.get('ajaxEditArea'); if ( ed ) { ed.setProgressState(0); } else { var blackout = document.getElementById('enano_editor_blackout'); var body = document.getElementsByTagName('body')[0]; body.removeChild(blackout); }}function ajaxAutosaveDraft(){ var aed = document.getElementById('ajaxEditArea'); if ( !aed ) return false; var last_save = aed.as_last_save; var now = unix_time(); if ( ( last_save + 120 ) < now && aed.value != aed.content_orig ) { ajaxPerformAutosave(); }}function ajaxPerformAutosave(){ var aed = document.getElementById('ajaxEditArea'); if ( !aed ) return false; var now = unix_time(); aed.as_last_save = now; var ta_content = $('ajaxEditArea').getContent(); if ( ta_content == '' || ta_content == '<p></p>' || ta_content == '<p> </p>' ) { return false; } ajaxEditorSave(true);}function ajaxEditorUseDraft(){ var aed = document.getElementById('ajaxEditArea'); if ( !aed ) return false; ajaxSetEditorLoading(); ajaxGet(stdAjaxPrefix + '&_mode=getsource&get_draft=1', function() { if ( ajax.readyState == 4 && ajax.status == 200 ) { ajaxUnSetEditorLoading(); var response = String(ajax.responseText + ''); if ( response.substr(0, 1) != '{' ) { handle_invalid_json(response); return false; } response = parseJSON(response); if ( response.mode == 'error' ) { unselectAllButtonsMinor(); new messagebox(MB_OK | MB_ICONSTOP, $lang.get('editor_err_server'), response.error); return false; } $('ajaxEditArea').setContent(response.src); $('ajaxEditArea').object.used_draft = true; var es = document.getElementById('enano_editor_field_summary'); if ( es.value == '' ) { es.value = response.edit_summary; } var dn = $('ajax_edit_draft_notice').object; dn.parentNode.removeChild(dn); } }, true);}