MediaWiki:Gadget-CitizenMainPage.js

From IxWiki
Jump to navigation Jump to search

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
(function() {
    var toggleCitizenLayout = function(enable) {
        var api = new mw.Api();
        api.saveOption('UseCitizenMainPage', enable ? '1' : '0').done(function() {
            mw.notify('Main page layout preference updated. Refresh the page to see changes.');
        }).fail(function() {
            mw.notify('Failed to update preference. Please try again.', {type: 'error'});
        });
    };

    $(function() {
        var $body = $('body');
        if ($body.hasClass('page-Main_Page') || $body.hasClass('page-MediaWiki:Mainpage')) {
            var currentState = mw.user.options.get('UseCitizenMainPage') === '1';
            var $toggle = $('<div>')
                .css({
                    position: 'fixed',
                    top: '10px',
                    right: '10px',
                    zIndex: 1000,
                    background: 'white',
                    padding: '5px',
                    border: '1px solid black'
                })
                .append(
                    $('<label>')
                        .text('Use Citizen Layout ')
                        .append(
                            $('<input>')
                                .attr({
                                    type: 'checkbox',
                                    checked: currentState
                                })
                                .on('change', function() {
                                    toggleCitizenLayout(this.checked);
                                })
                        )
                );
            $body.append($toggle);
        }
    });
})();