MediaWiki:AFCHD-wizard.js

Opomba: Da bodo spremembe prišle do veljave, po objavi izpraznite predpomnilnik svojega brskalnika.

  • Firefox/Safari: Držite Shift in kliknite Znova naloži (Reload) ali pritisnite Ctrl + Shift + R ali Ctrl + R (⌘ + R v sistemu Mac)
  • Internet Explorer/Edge: Držite Ctrl + F5 in kliknite Osveži (Refresh) ali pritisnite Ctrl + F5
  • Google Chrome: Pritisnite Ctrl + Shift + R (⌘ + Shift + R v sistemu Mac)
  • Opera: Pritisnite Ctrl + F5.
/**
 * Invoked via [[mw:Snippets/Load JS and CSS by URL]]
 * on [[Wikipedia:WikiProject Articles for creation/Help desk/New question]]
 * 
 * Author: [[User:SD0001]]
 */

// <nowiki>
$.when($.ready, mw.loader.using(['mediawiki.api', 'mediawiki.util', 'mediawiki.widgets'])).then(function() {
    if (mw.config.get("wgPageName") !== "Wikipedija:Članki_za_ustvaritev/Forum_za_pomoč/Novo_vprašanje") 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': 'Povejte nam zakaj potrebujete pomoč',
        'required': true,
        'rows': 5
    });
    var previewLayout = new OO.ui.HorizontalLayout();
    var submitButton = new OO.ui.ButtonWidget({
        'label': 'Oddaj',
        'flags': ['progressive', 'primary'],
        'accesskey': 's'
    });
    var fieldset = new OO.ui.FieldsetLayout();
    fieldset.addItems([
        new OO.ui.FieldLayout(titleInput, {
            'label': 'Naslov strani:',
            align: 'top'
        }),
        new OO.ui.FieldLayout(reasonInput, {
            'label': 'Razlog za pomoč:',
            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('Izberite stran in vpišite razlog');
        else if (!hasTitle) submitButton.setLabel('Izberite stran');
        else if (!hasReason) submitButton.setLabel('Vpišite razlog');
        else submitButton.setLabel('Oddaj');
        
        if (formEnabled) {
			previewApi.abort();
			previewApi.parse(makeRequestText(), { 
				pst: true, 
				title: 'Wikipedija:Članki_za_ustvaritev/Forum_za_pomoč' 
			}).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 = '== Pregled predložitve uporabnika {{subst:REVISIONUSER}} z dne {{subst:#time:H:i, j. F Y}} ==' + 
        	'\n{{Lafc|username={{subst:REVISIONUSER}}|ts={{subst:#time:H:i, j. F Y}}|' + 
        	(mw.util.getParamValue('param') || '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 = "Sporočila niste oddali. Ste prepričani, da želite zapustiti stran? (Kliknite \"Oddaj\", da sporočilo oddate)";
        }
    };
    $(window).on('beforeunload', beforeUnloadHandler);

    submitButton.on('click', function() {
        submitButton.setDisabled(true);
        submitButton.setLabel('Oddajam...');
        $('.afchd-wizard-error').remove();
        api.edit('Wikipedija:Članki_za_ustvaritev/Forum_za_pomoč', function() {
            return {
                appendtext: '\n\n' + makeRequestText(),
                summary: 'Potrebujem pomoč z [[' + titleInput.getValue() + ']]'
            };
        }).then(function() {
        	$(window).off('beforeunload', beforeUnloadHandler);
            window.location.href = mw.util.getUrl('Wikipedija:Članki_za_ustvaritev/Forum_za_pomoč#footer');
        }).catch(function(e) {
        	submitButton.setDisabled(false);
        	submitButton.setLabel('Submit');
        	submitButton.$element.after(
        		$('<div>').css('color', 'red').text('Prišlo je do napake: ' + e).addClass('afchd-wizard-error')
        	);
        });
    });
});
// </nowiki>