/** * Invoked via * on * * Author: */
// $.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') ); }); }); }); //