User:Bawolff/test-mode.js

/*globals api, escapeQuotesHTML, addPortletLink, importScriptURI, wgPageName, addOnloadHook, wgNamespaceNumber, sortables_init,  createCollapseButtons, createNavigationBarToggleButton, window, wgAction, ajaxPreviewExec  */

//Script to re-render page with context title 'test -'. See test-mode for why this is useful. //Script by Bawolff, feel free to ask if you have any questions.

//To install add importScript('User:Bawolff/test-mode.js') to special:mypage/monobook.js (replace monobook with skin if you use different skin).

//Known issue: tags don't work (since they add css to head, which doesn't get picked up). Perhaps fixed on next wmf update. // Only works on vector and monobook. YMMV on other skins. //could have better support for edit mode.

//---

mw.loader.load('http://en.wikinews.org/w/index.php?title=User:Bawolff/mwapilib2.js&action=raw&ctype=text/javascript&smaxage=259200');

var testMode = { init: function { //if (mw.config.get('wgAction') === 'edit') return; //doesn't work in non-show preview edit. if (mw.config.get('wgNamespaceNumber') === -1) return; //no special

var editing = false; if ((mw.config.get('wgAction') === 'submit' || mw.config.get('wgAction') === 'edit')) { editing = true;

//add show preview with test mode. var button = document.createElement('button'); button.type = 'button'; button.id = 'testModePreviewButton'; button.onclick = function { testMode.exec(true); }; button.appendChild(document.createTextNode('Preview in testing mode')); var prev = document.getElementById('wpDiff'); prev.parentNode.insertBefore(button, prev); }

mw.util.addPortletLink('p-tb', 'javascript:testMode.exec(' + editing + ')%3Bvoid%200', 'Display in test mode', 'testModePreviewSidebarLink', 'View page using alternative templates that are being tested. See template:Test-mode for details.');

}, exec: function (editing) { var testNumb = prompt('Which test mode do you wish to use? (1, 2 or 3)', '1'); var contextTitle = 'Test' + (testNumb? testNumb: '1') + '-'; var page; if (editing) page = document.getElementById('wpTextbox1').value; //use edit box else page = '';

api(page).parse(contextTitle).lift(this.display, testNumb, editing).exec; return; }, display: function (text, mode, editing) { var body = document.getElementById('wikiPreview'); body = body ? body : document.getElementById('bodyContent'); body.style.display = 'block'; var titleMsg = ' (Testing mode ' + escapeQuotesHTML(mode) + '. &lt;source&gt; tags and anything else that adds dynamic css/js may not display properly.'; if (!editing) titleMsg += ' Reload for normal view.';  titleMsg += ') '; var warn = document.getElementById('testModeWarning'); if (warn) { warn.innerHTML = titleMsg; } else { var title = document.getElementById('firstHeading'); title.innerHTML += ' ' + titleMsg + ' '; } body.innerHTML = text;

//call various js hooks (stolen from user:js/ajaxPreview) sortables_init; if (window.createCollapseButtons){//en.wp  createCollapseButtons; createNavigationBarToggleButton; }  if (window.ajaxPreviewExec) ajaxPreviewExec(body);

} }

addOnloadHook(testMode.init);