MediaWiki:AFCHD-wizard.js
Appearance
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
/**
* Invoked via [[mw:Snippets/Load JS and CSS by URL]]
* on [[Wikipedia:WikiProject Articles for creation/Help desk/New question]]
*
* Author: [[User:SD0001]]
* Licence: MIT
*/
// <nowiki>
$.when($.ready, mw.loader.using(['mediawiki.api', 'mediawiki.util', 'mediawiki.widgets'])).then(function() {
if (mw.config.get("wgPageName") !== "Wikipedia:WikiProject_Articles_for_creation/Help_desk/New_question") return;
var api = new mw.Api();
var previewApi = new mw.Api();
var titleInput = new mw.widgets.TitleInputWidget({
'value': mw.util.getParamValue('page') || '',
'required': true
});
var reasonInput = new OO.ui.MultilineTextInputWidget({
'placeholder': 'Tell us why you are requesting assistance',
'required': true,
'rows': 5
});
var previewLayout = new OO.ui.HorizontalLayout();
var submitButton = new OO.ui.ButtonWidget({
'label': 'Submit request',
'flags': ['progressive', 'primary'],
'accesskey': 's'
});
var fieldset = new OO.ui.FieldsetLayout();
fieldset.addItems([
new OO.ui.FieldLayout(titleInput, {
'label': 'Page title:',
align: 'top'
}),
new OO.ui.FieldLayout(reasonInput, {
'label': 'Reason for requesting assistance:',
align: 'top'
}),
previewLayout,
new OO.ui.FieldLayout(submitButton)
]);
$("#mw-content-text").empty().append(fieldset.$element);
function updateForm() {
var hasTitle = titleInput.getValue().trim().length > 0;
var hasReason = reasonInput.getValue().trim().length > 0;
var formEnabled = hasTitle && hasReason;
submitButton.setDisabled(!formEnabled);
if (!hasTitle && !hasReason) submitButton.setLabel('Select page and enter reason');
else if (!hasTitle) submitButton.setLabel('Select page');
else if (!hasReason) submitButton.setLabel('Enter reason');
else submitButton.setLabel('Submit');
if (formEnabled) {
previewApi.abort();
previewApi.parse(makeRequestText(), {
pst: true,
title: 'Wikipedia:WikiProject_Articles_for_creation/Help_desk'
}).then(function(text) {
text = text.replace(/<script/g, '<script');
previewLayout.$element.html(text);
});
}
}
updateForm();
titleInput.on('change', updateForm);
reasonInput.on('change', updateForm);
function makeRequestText() {
var title = titleInput.getValue();
var text = '== {{subst:#time:H:i, j F Y}} review of submission by {{subst:REVISIONUSER}} ==' +
'\n{{Lafc|username={{subst:REVISIONUSER}}|ts={{subst:#time:H:i, j F Y}}|draft=' + title + '}}' +
'\n' + reasonInput.getValue() + (reasonInput.getValue().indexOf('~~~~') >= 0 ? '' : ' ~~~~');
return text;
}
var beforeUnloadHandler = function(e) {
var hasTitle = titleInput.getValue().trim().length > 0;
var hasReason = reasonInput.getValue().trim().length > 0;
if (hasTitle && hasReason) {
e.preventDefault();
return event.returnValue = "Are you sure you want to leave without submitting? (Click \"Submit\" to post)";
}
};
$(window).on('beforeunload', beforeUnloadHandler);
submitButton.on('click', function() {
submitButton.setDisabled(true);
submitButton.setLabel('Submitting...');
$('.afchd-wizard-error').remove();
api.edit('Wikipedia:WikiProject_Articles_for_creation/Help_desk', function() {
return {
appendtext: '\n\n' + makeRequestText(),
summary: 'Requesting assistance regarding [[' + titleInput.getValue() + ']]'
};
}).then(function() {
$(window).off('beforeunload', beforeUnloadHandler);
window.location.href = mw.util.getUrl('Wikipedia:WikiProject_Articles_for_creation/Help_desk#footer');
}).catch(function(e) {
submitButton.setDisabled(false);
submitButton.setLabel('Submit');
submitButton.$element.after(
$('<div>').css('color', 'red').text('An error occurred: ' + e).addClass('afchd-wizard-error')
);
});
});
});
// </nowiki>