User:Tbarbe3/common.js

importArticles({   type: 'script',    articles: [        'u:dev:MediaWiki:QuickDelete/code.js',    ] }); importArticles({   type: 'script',    articles: [        'u:dev:MediaWiki:AjaxBatchDelete.js',    ] }); importArticles({   type: 'script',    articles: [        'u:dev:MediaWiki:ThemeToggler.js',    ] }); importArticles({   type: 'script',    articles: [        'u:dev:MediaWiki:MultiUpload.js',    ] }); /** * Mass Rename * @description Rename pages quickly. * @author Ozuzanna */ mw.loader.using('mediawiki.api', function {    if ( window.MassRenameLoaded || !/sysop|content-moderator|bot|bot-global|staff|helper|wiki-manager|global-discussions-moderator|content-volunteer|content-team-member|soap/.test(mw.config.get('wgUserGroups').join) ) {       return;    }    window.MassRenameLoaded = true;    var i18n,        placement,        renameModal,        preloads = 3,        paused = false;    /**     * @method formHtml     * @description Creates the modal HTML     */    function formHtml  {        return $(' ', { 'class': 'WikiaForm' }).append( $(' ').append(               $(' ', { text: i18n.msg('instructions').plain }),               $(' ', {                    text: i18n.msg('instructions2').plain }),               $(' ', {                    'for': 'redirect-check', text: i18n.msg('redirect').plain }).append( $(' ', {                       type: 'checkbox',                        id: 'redirect-check'                    }) ),               $(' '),                $(' ', {                    'for': 'file-pattern', text: 'File Pattern:' }).append( $(' ', {                       type: 'text',                        name: 'file-pattern',                        id: 'file-pattern'                    }) ),               $(' ', {                    'for': 'exclude-check', text: 'Exclude?:' }).append( $(' ', {                       type: 'checkbox',                        id: 'exclude-check'                    }) ),               $(' '),                $(' ', {                    'for': 'match-regex', text: 'Match Pattern:' }).append( $(' ', {                       type: 'text',                        name: 'match-regex',                        id: 'match-regex'                    }) ),               $(' ', {                    'for': 'replace-string', text: 'Replace With:' }).append( $(' ', {                       type: 'text',                        name: 'replace-string',                        id: 'replace-string'                    }) ),               $(' '),                $(' ', {                    id: 'text-rename', placeholder: 'old_name new_name' }),               $(' ', {                    id: 'text-error-output', text: i18n.msg('outputInitial').plain, append: ' ' })           )        ).prop('outerHTML');    }    /**     * @method preload     * @description Loads the hooks and I18n messages     */    function preload  {        if (--preloads === 0) {            placement = window.dev.placement.loader;            window.dev.i18n.loadMessages('MassRename').then(init);        }    }    /**     * @method init     * @description Initiates the script     * @param {String} i18nData - Variable for I18n-js     */    function init (i18nData) {        i18n = i18nData;        placement.script('MassRename');        $(placement.element('tools'))[placement.type('prepend')]( $('').append(               $('', { id: 't-mr', text: i18n.msg('title').plain, click: click })           )        );    }    /**     * @method click     * @description Opens the MassRename modal     */    function click  {        if (renameModal) {            renameModal.show;            return;        }        renameModal = new window.dev.modal.Modal({ content: formHtml, id: 'form-mass-rename', size: 'medium', title: i18n.msg('title').escape, buttons: [ {                   id: 'mr1-start', text: i18n.msg('initiate').escape, primary: true, event: 'start' },               {                    id: 'mr1-pause', text: i18n.msg('pause').escape, primary: true, event: 'pause', disabled: true },               {                    text: 'Add Category', primary: true, event: 'addCategoryContents' },               {                    text: i18n.msg('close').escape, event: 'close' }           ],            events: { addCategoryContents: addCategoryContents, pause: pause, start: start }       });        renameModal.create;        renameModal.show;    }    /**     * @method pause     * @description Pauses the operation     */    function pause  {        paused = true;        document.getElementById('mr1-pause').setAttribute('disabled', );        document.getElementById('mr1-start').removeAttribute('disabled');    }    /**     * @method start     * @description Starts the operation     */    function start  {        paused = false;        document.getElementById('mr1-start').setAttribute('disabled', );        document.getElementById('mr1-pause').removeAttribute('disabled');        process;    }    /**     * @method process     * @description Analyzes the inputted data     */    function process  {        if (paused) {            return;        }        var txt = document.getElementById('text-rename'),            pages = txt.value.split('\n'), page = pages[0]; if (!page) { $('#text-error-output').append(               i18n.msg('finished').escape +                ' ' +                i18n.msg('nothingLeftToDo').escape +                ' '            ); pause; } else { rename(page); }       pages = pages.slice(1, pages.length); txt.value = pages.join('\n'); }   /**     * @method addCategoryContents * @description Adds all members of a category */   function addCategoryContents { var category = prompt('Enter Category' + ':'); if (!category) { return; }       if (!document.getElementById('match-regex')             || !document.getElementById('replace-string')) { return; }       new mw.Api.get({            action: 'query',            list: 'categorymembers',            cmtitle: 'Category:' + category,            cmlimit: 5000        }).done(function(d) {            if (!d.error) {                var data = d.query;                for (var i in data.categorymembers) {                    var Incl = true;                    if (document.getElementById('file-pattern').value) {                        var rgx = new RegExp(document.getElementById('file-pattern').value);                        if (document.getElementById('exclude-check').checked) {                            if (rgx.test(data.categorymembers[i].title)) {                                Incl = false;                            }                        }                        else {                            if (!rgx.test(data.categorymembers[i].title)) {                                Incl = false; }                       }                    }                    if (Incl) { var inname = data.categorymembers[i].title.replace(/ /g, '_'); $('#text-rename').append(inname + ' '); var outname = inname.replace(RegExp(document.getElementById('match-regex').value),                                               document.getElementById('replace-string').value); $('#text-rename').append(outname + '\n'); //$('#text-rename').append(data.categorymembers[i].title.replace(/ /g, "_") + '\n'); }               }            } else { $('#text-error-output').append(i18n.msg('invalidInput', category).escape + ' '); }       }).fail(function { $('#text-error-output').append(i18n.msg('invalidInput', category).escape + ' '); });   }    /**     * @method rename     * @description Renames the page     * @param {String} name - The rename data     */    function rename (name) {        if (name.split(' ').length !== 2) {            $('#text-error-output').append(i18n.msg('invalidInput', name).escape + ' ');        } else {            var oldName = name.split(' ')[0],                newName = name.split(' ')[1],                config = {                    action: 'move',                    from: oldName.replace('_', ' '),                    to: newName.replace('_', ' '),                    noredirect: '',                    reason:                        window.massRenameSummary ||                        i18n.inContentLang.msg('summary').plain,                    bot: true,                    token: mw.user.tokens.get('editToken')                };            if (document.getElementById('redirect-check').checked) { delete config.noredirect; }           new mw.Api.post(config) .done(function (d) {               if (!d.error) {                    console.log(i18n.msg('renameDone', oldName, newName).plain);                } else {                    console.log(i18n.msg('renameFail', oldName, newName).escape + ': ' + d.error.code);                    $('#text-error-output').append(i18n.msg('renameFail', oldName, newName).escape + ': ' + d.error.code + ' ');                }            }) .fail(function {                console.log(i18n.msg('renameFail2', oldName, newName).plain);                $('#text-error-output').append(i18n.msg('renameFail2', oldName, newName).escape + ' ');            }); }       setTimeout(process, window.massRenameDelay || 1000); }   mw.hook('dev.i18n').add(preload); mw.hook('dev.modal').add(preload); mw.hook('dev.placement').add(preload); importArticles(       {            type: 'script',            articles: [                'u:dev:MediaWiki:I18n-js/code.js',                'u:dev:MediaWiki:Modal.js',                'u:dev:MediaWiki:Placement.js'            ]        },        {            type: 'style',            articles: ['u:dev:MediaWiki:MassRename.css']        }    ); });