MediaWiki:AFCHD-wizard.js

In this article, we will thoroughly explore MediaWiki:AFCHD-wizard.js, a topic that has captured the attention and interest of many people in recent times. MediaWiki:AFCHD-wizard.js is a topic that has generated debate and discussion in different areas, and it is important to understand its relevance and implications in today's society. Throughout this article, we will examine different perspectives on MediaWiki:AFCHD-wizard.js, addressing its most relevant aspects and analyzing its impact today. In addition, we will delve into its history, its evolution and its influence on various aspects of daily life. We hope that this article will provide a complete and enriching overview of MediaWiki:AFCHD-wizard.js, inviting readers to deepen their knowledge and understanding of this very relevant topic.
/**
 * Invoked via ]
 * on ]
 * 
 * Author: ]
 * Licence: MIT
 */

// <nowiki>
$.when($.ready, mw.loader.using()).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': ,
        '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)
    ]);
    $("#afchd-wizard-container").empty().append(fieldset.$element);
    $("#catlinks").remove();
    
    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, '&lt;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 ]'
            };
        }).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>