From Wikipedia, the free encyclopedia
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]] for

 * [[Wikipedia:Requests_for_page_protection]]

 * 

 * Authors: [[User:Enterprisey]], [[User:SD0001]]

 */



/**

 * Fetch JSON page with 1-day caching

 */

function fetchJsonData(page) {

	return $.getJSON("/w/api.php?action=query&format=json&formatversion=2" + 

		"&titles=" + encodeURIComponent(page) + "&prop=revisions&rvprop=content" + 

		"&uselang=content&maxage=86400&smaxage=86400" // parameters to force caching

	).then(function(apiResponse) {

		return JSON.parse(apiResponse.query.pages0].revisions0].content);

	});

}



$.when(fetchJsonData("Wikipedia:Requests for page protection/Forms-configuration.json"), $.ready, mw.loader.using(['mediawiki.api', 'mediawiki.widgets', 'mediawiki.util'])).then(function(config) {

    if ((mw.config.get("wgPageName") !== "Wikipedia:Requests_for_page_protection/Increase/Form") &&

            (mw.config.get("wgPageName") !== "Wikipedia:Requests_for_page_protection/Decrease/Form") &&

            (mw.config.get("wgPageName") !== "Wikipedia:Requests_for_page_protection/Edit/Form")) {

        return;

    }

    var api = new mw.Api();

    var previewApi = new mw.Api();



    // either 'Increase', 'Decrease', or 'Edit'

    var subpage = (mw.config.get("wgPageName").indexOf('Increase') >= 0) ? 'Increase' : ((mw.config.get(

        "wgPageName").indexOf('Decrease') >= 0) ? 'Decrease' : 'Edit');

	var requestsPageTitle = 'Wikipedia:Requests_for_page_protection/' + subpage;

    config = configsubpage];



    var titleInput = new mw.widgets.TitleInputWidget({

        'showMissing': false,

        'required': true,

        'value': mw.util.getParamValue('prefillPage') || '',

    });

    var reasonInput = new OO.ui.MultilineTextInputWidget({

        'placeholder': config.reasonInputPlaceholder,

        'required': 'true'

    });

	var reasonPreview = new OO.ui.LabelWidget();

    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': config.reasonInputLabel,

            align: 'top'

        }),

        new OO.ui.FieldLayout(reasonPreview, {

            'label': 'Preview:',

            align: 'top'

        }),

        new OO.ui.FieldLayout(submitButton)

    ]);

    $("#mw-content-text").empty().append(fieldset.$element);



    function makeRequestText() {

	    var reason = reasonInput.getValue() + (

			(reasonInput.getValue().indexOf('~~' + '~~') >= 0)

			? ''

			: (' ~~' + '~~'));

        return config.template.replace(/\$title/g, titleInput.getValue()).replace(/\$reason/g, reason)

    }

    function updateForm() {

        var hasTitle = titleInput.getValue().trim().length > 0;

        var hasReason = reasonInput.getValue().trim().length > 0;

        

        var formEnabled = hasTitle && hasReason;

        submitButton.setDisabled(!formEnabled);

        var reasonOrRequest = (subpage === 'Edit') ? 'request' : 'reason';

        if (!hasTitle && !hasReason) submitButton.setLabel('Select page and enter ' + reasonOrRequest);

        else if (!hasTitle) submitButton.setLabel('Select page');

        else if (!hasReason) submitButton.setLabel('Enter ' + reasonOrRequest);

        else submitButton.setLabel('Submit request');

        

        if (formEnabled) {

			previewApi.abort();

			previewApi.parse(makeRequestText(), { 

				pst: true, 

				title: requestsPageTitle 

			}).then(function(text) {

				text = text.replace(/<script/g, '&lt;script');

				reasonPreview.$element.html(text);

			});

        }

    }

    titleInput.on('change', updateForm);

    reasonInput.on('change', updateForm);



    submitButton.on('click', function() {

        updateForm();

        if (submitButton.isDisabled()) {

            return;

        }



        submitButton.setDisabled(true);

        submitButton.setLabel('Submitting...');

        api.(requestsPageTitle, function() {

            return {

                appendtext: '\n\n' + makeRequestText(),

                summary: config.summary.replace(/\$title/g, titleInput.getValue())

            };

        }).then(function() {

            window.location.href = mw.util.getUrl(requestsPageTitle);

        });

    });

});
From Wikipedia, the free encyclopedia
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]] for

 * [[Wikipedia:Requests_for_page_protection]]

 * 

 * Authors: [[User:Enterprisey]], [[User:SD0001]]

 */



/**

 * Fetch JSON page with 1-day caching

 */

function fetchJsonData(page) {

	return $.getJSON("/w/api.php?action=query&format=json&formatversion=2" + 

		"&titles=" + encodeURIComponent(page) + "&prop=revisions&rvprop=content" + 

		"&uselang=content&maxage=86400&smaxage=86400" // parameters to force caching

	).then(function(apiResponse) {

		return JSON.parse(apiResponse.query.pages0].revisions0].content);

	});

}



$.when(fetchJsonData("Wikipedia:Requests for page protection/Forms-configuration.json"), $.ready, mw.loader.using(['mediawiki.api', 'mediawiki.widgets', 'mediawiki.util'])).then(function(config) {

    if ((mw.config.get("wgPageName") !== "Wikipedia:Requests_for_page_protection/Increase/Form") &&

            (mw.config.get("wgPageName") !== "Wikipedia:Requests_for_page_protection/Decrease/Form") &&

            (mw.config.get("wgPageName") !== "Wikipedia:Requests_for_page_protection/Edit/Form")) {

        return;

    }

    var api = new mw.Api();

    var previewApi = new mw.Api();



    // either 'Increase', 'Decrease', or 'Edit'

    var subpage = (mw.config.get("wgPageName").indexOf('Increase') >= 0) ? 'Increase' : ((mw.config.get(

        "wgPageName").indexOf('Decrease') >= 0) ? 'Decrease' : 'Edit');

	var requestsPageTitle = 'Wikipedia:Requests_for_page_protection/' + subpage;

    config = configsubpage];



    var titleInput = new mw.widgets.TitleInputWidget({

        'showMissing': false,

        'required': true,

        'value': mw.util.getParamValue('prefillPage') || '',

    });

    var reasonInput = new OO.ui.MultilineTextInputWidget({

        'placeholder': config.reasonInputPlaceholder,

        'required': 'true'

    });

	var reasonPreview = new OO.ui.LabelWidget();

    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': config.reasonInputLabel,

            align: 'top'

        }),

        new OO.ui.FieldLayout(reasonPreview, {

            'label': 'Preview:',

            align: 'top'

        }),

        new OO.ui.FieldLayout(submitButton)

    ]);

    $("#mw-content-text").empty().append(fieldset.$element);



    function makeRequestText() {

	    var reason = reasonInput.getValue() + (

			(reasonInput.getValue().indexOf('~~' + '~~') >= 0)

			? ''

			: (' ~~' + '~~'));

        return config.template.replace(/\$title/g, titleInput.getValue()).replace(/\$reason/g, reason)

    }

    function updateForm() {

        var hasTitle = titleInput.getValue().trim().length > 0;

        var hasReason = reasonInput.getValue().trim().length > 0;

        

        var formEnabled = hasTitle && hasReason;

        submitButton.setDisabled(!formEnabled);

        var reasonOrRequest = (subpage === 'Edit') ? 'request' : 'reason';

        if (!hasTitle && !hasReason) submitButton.setLabel('Select page and enter ' + reasonOrRequest);

        else if (!hasTitle) submitButton.setLabel('Select page');

        else if (!hasReason) submitButton.setLabel('Enter ' + reasonOrRequest);

        else submitButton.setLabel('Submit request');

        

        if (formEnabled) {

			previewApi.abort();

			previewApi.parse(makeRequestText(), { 

				pst: true, 

				title: requestsPageTitle 

			}).then(function(text) {

				text = text.replace(/<script/g, '&lt;script');

				reasonPreview.$element.html(text);

			});

        }

    }

    titleInput.on('change', updateForm);

    reasonInput.on('change', updateForm);



    submitButton.on('click', function() {

        updateForm();

        if (submitButton.isDisabled()) {

            return;

        }



        submitButton.setDisabled(true);

        submitButton.setLabel('Submitting...');

        api.(requestsPageTitle, function() {

            return {

                appendtext: '\n\n' + makeRequestText(),

                summary: config.summary.replace(/\$title/g, titleInput.getValue())

            };

        }).then(function() {

            window.location.href = mw.util.getUrl(requestsPageTitle);

        });

    });

});

Videos

Youtube | Vimeo | Bing

Websites

Google | Yahoo | Bing

Encyclopedia

Google | Yahoo | Bing

Facebook