View text source at Wikipedia
/*** Test Wikitext ***/
// Adds a link to conveniently test wikitext
// Documentation at [[en:w:User:BrandonXLF/TestWikitext]]
// By [[en:w:User:BrandonXLF]]
$.when(mw.loader.using('oojs-ui'), $.ready).then(function() {
mw.util.addPortletLink('p-cactions', mw.util.getUrl('Special:BlankPage/TestWikitext'), 'Test wikitext');
if (mw.config.get('wgPageName') === 'Special:BlankPage/TestWikitext') {
var preview = new OO.ui.ButtonInputWidget({
label: 'Test',
flags: [
'primary',
'progressive'
]
});
preview.on('click', function() {
output.empty().append(
new OO.ui.ProgressBarWidget({
progress: false
}).$element.css('min-width', '100%')
);
$.post(mw.config.get('wgScriptPath') + '/api.php', {
action: 'parse',
pst: 'true',
disableeditsection: 'true',
title: title.getValue() || 'Test Wikitext',
text: code.$input.textSelection('getContents'),
format: 'json',
prop: 'text|displaytitle|categorieshtml|limitreporthtml|indicators'
}).done(function(r) {
output.empty().append(
$('<div>')
.addClass('test-wikitext-header')
.append(
$('<div>')
.addClass('test-wikitext-indicators')
.append(
$.map(r.parse.indicators, function(indicator) {
return $('<div>')
.attr('id', 'mw-indicator-' + indicator.name)
.html(indicator['*']);
})
),
$('<h1>').html(r.parse.displaytitle)
),
r.parse.text['*'],
r.parse.categorieshtml['*'],
new OO.ui.PanelLayout({
expanded: false,
framed: true,
padded: true,
$content: $(r.parse.limitreporthtml['*'])
}).$element.css({
marginTop: '2em',
clear: 'both'
})
);
});
});
var title = new OO.ui.TextInputWidget({
value: localStorage.getItem('testwikitext-title'),
name: 'title',
placeholder: 'Title'
});
title.$element.css({
width: '100%',
maxWidth: '100%',
marginBottom: '1em'
});
title.on('change', function(value) {
localStorage.setItem('testwikitext-title', value);
});
var code = new OO.ui.MultilineTextInputWidget({
rows: 10,
maxRows: 20,
autosize: true,
name: 'wpTextbox1',
value: localStorage.getItem('testwikitext'),
placeholder: 'Wikitext'
});
code.$element.css({
width: '100%',
maxWidth: '100%',
marginBottom: '1em'
});
code.on('change', function(value) {
localStorage.setItem('testwikitext', value);
});
mw.hook('ext.CodeMirror.switch').add(function(enabled, el) {
if (!enabled) return;
el[0].CodeMirror.on('change', function(codeMirror) {
localStorage.setItem('testwikitext', codeMirror.getValue());
});
});
mw.loader.using('ext.wikiEditor', function() {
mw.addWikiEditor(code.$input);
mw.loader.load(['ext.TemplateWizard', 'ext.CodeMirror']);
});
var parent = $('<div>')
.attr('id', 'testwikitext')
.append(title.$element)
.append(code.$element)
.append(
$('<div>').append(preview.$element)
),
panel = new OO.ui.PanelLayout({
expanded: false,
framed: true,
padded: true,
$content: parent
}),
output = $('<div>');
document.title = 'Test Wikitext - ' + mw.config.get('wgSiteName');
$('#firstHeading').text('Test Wikitext');
$('#mw-content-text').empty().append(panel.$element, output);
}
mw.loader.addStyleTag(
'#testwikitext .wikiEditor-ui-view { border: none; }' +
'#testwikitext .wikiEditor-ui-top { border: 1px solid #a2a9b1; border-bottom: none; }' +
'#testwikitext .wikiEditor-ui .oo-ui-textInputWidget .oo-ui-inputWidget-input { font-family: monospace; border-radius: 0; }' +
'#testwikitext .CodeMirror { border: 1px solid #a2a9b1; }' +
'.test-wikitext-header { position: relative; }' +
'.test-wikitext-header .test-wikitext-indicators { position: absolute; right: 0; }'
);
});