Jump to content

User:Ladsgroup/RefCleaner.js

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.
// License: MIT
(function(mw, $){
    $(mw.util.addPortletLink('p-cactions',"#", 'Clean references' , "ca-refCleaner", null, null)).click(function() {
        mw.loader.using(
            [
                'oojs',
                'oojs-ui',
                'jquery.spinner',
            ],
            function(){
                function ProcessDialog( config ) {
                    ProcessDialog.super.call( this, config );
                }
                OO.inheritClass( ProcessDialog, OO.ui.ProcessDialog );
                ProcessDialog.static.title = 'Article cleaner';
                ProcessDialog.static.name = 'fix-formatting-dialog';
                ProcessDialog.static.actions = [
                    { label: 'Cancel', flags: ['primary','destructive'] }
                ];
                ProcessDialog.prototype.initialize = function () {
                    ProcessDialog.super.prototype.initialize.apply( this, arguments );

                    this.content = new OO.ui.PanelLayout( { padded: true, expanded: false } );
                    this.content.$element.append(  '<p>It might take some time. Please be patient :) </p>' );
                    this.content.$element.outerHeight( '150px' );
                    this.$body.append( this.content.$element );
                    this.content.$element.append(  '<p>Started fetching new version...</p>' );
                    var dialog = this;
                    $.get( 'https://tools.wmflabs.org/dexbot/fix_formatting2.php?page=' + mw.config.get('wgPageName')).done( function (data) {
                        if ( data.content ) {
                            dialog.content.$element.append(  '<p>Got the new version, saving...</p>' );
                            (new mw.Api()).postWithToken('csrf', {
                                action: 'edit',
                                title: mw.config.get('wgPageName'),
                                text: data.content,
                                summary: 'Fixing references styling.',
                                minor: ''
                            }).done(function(data) {
                                if (data.error && data.error.info) {
                                    dialog.content.$element.append('<p style="color:#d33;">Saving errored. Reload the page and try again :(</p>');
                                } else {
                                    dialog.content.$element.append('<p style="color:#00af89;">Saving Finishined. Reload the page to see the differences</p>');
                                    setInterval(function(){dialog.close()},3000);
                                }
                            }).fail(function (data) {
                                dialog.content.$element.append('<p style="color:#d33;">Saving errored. Reload the page and try again :(</p>');
                            })
                        } else {
                            dialog.content.$element.append(  '<p style="color:#d33;">Errored out. Not possible. Probably not needed :(</p>' );
                        }
                    })
                };

                ProcessDialog.prototype.getBodyHeight = function () {
                    return this.content.$element.outerHeight( true );
                };
                var windowManager = new OO.ui.WindowManager();
                $( 'body' ).append( windowManager.$element );

                var processDialog = new ProcessDialog({
                    size: 'medium'
                });
                windowManager.addWindows( [ processDialog ] );
                windowManager.openWindow( processDialog );
            }
        );
    });
}(mediaWiki, jQuery));