Jump to content

User:CWii/JB2script.js

From Wikipedia, the free encyclopedia
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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.
function jb2script () {
    if( mw.config.get('wgNamespaceNumber') == 6 ) {
        mw.util.addPortletLink( 'p-cactions', "javascript:jb2script.callback()", "JB2", "jb2script", "Tag for moval by John Bot II", "");
    }
}
addOnloadHook(jb2script);
 
jb2script.callback = function jb2scriptCallback() {
    var Window = new SimpleWindow( 600, 300 );
    Window.setTitle( "John Bot II image mover tool" );
    var form = new QuickForm( jb2script.callback.evaluate );
    var categories = form.append( {
            type: 'select',
            name: 'movable',
            label: 'Is the image movable? ',
            tooltip: 'Please chose the correct option.',
            event: jb2script.callback.change_category
        } );
    categories.append( {
            type: 'option',
            label: 'Yes - It can be moved by John Bot II',
            selected: true,
            value: 'yes'
        } );
    categories.append( {
            type: 'option',
            label: "No - It can't be moved by John Bot II",
            selected: false,
            value: 'no'
        } );
    categories.append( {
            type: 'option',
            label: "It was already moved",
            selected: false,
            value: 'moved'
        } );
    form.append( {
            type: 'field',
            label:'Work area',
            name: 'work_area'
        } );
    var result = form.render();
    Window.setContent( result );
    Window.display();
 
    // We must init the
    var evt = document.createEvent( "Event" );
    evt.initEvent( 'change', true, true );
    result.movable.dispatchEvent( evt );
}
 
jb2script.callback.change_category = function jb2scriptCallbackChangeCategory(e) {
    var value = e.target.value;
    var root = e.target.form;
    var old_area;
    var childNodes = root.childNodes;
    for( var i = 0; i < childNodes.length; ++i ) {
        var node = childNodes[i];
        if( 
            node instanceof Element &&
            node.getAttribute( 'name' ) == 'work_area' 
        ) {
            old_area = node;
            break;
        }
    }
    var work_area = null;
 
    switch( value ) {
    case 'yes':
        work_area = new QuickForm.element( { 
            type: 'field',
            label: 'Movable',
            name: 'work_area'
        } );
        work_area.append( {
            type: 'input',
            name: 'newname',
            label: 'New name: '
        } );
        work_area.append( {
            type: 'input',
            name: 'comCat1',
            label: 'Commons Cat #1: '
        } );
        work_area.append( {
            type: 'input',
            name: 'comCat2',
            label: 'Commons Cat #2: '
        } );
        work_area.append( {
            type: 'input',
            name: 'comCat3',
            label: 'Commons Cat #3: '
        } );
        work_area.append( {
            type: 'input',
            name: 'comCat4',
            label: 'Commons Cat #4: '
        } );
        work_area.append( {
            type: 'input',
            name: 'comCat5',
            label: 'Commons Cat #5: '
        } );
        work_area.append( {
            type: 'input',
            name: 'comCat6',
            label: 'Commons Cat #6: '
        } );
        work_area.append( {
            type: 'checkbox',
            name: 'keeplocal',
            list: [
                { label: 'Keep local', value: 'keeplocal' }
            ]

        } );
        work_area.append( { type:'submit' } );
        work_area = work_area.render();
        old_area.parentNode.replaceChild( work_area, old_area );
        break;
    case 'no':
        work_area = new QuickForm.element( {
            type: 'field',
            label: 'Cannot be moved',
            name: 'work_area'
        } );
        work_area.append( {
            type: 'textarea',
            name: 'reason',
            label: 'Reason:'
        } );
        work_area.append( { type:'submit' } );
        work_area = work_area.render();
        old_area.parentNode.replaceChild( work_area, old_area );
        break;
    case 'moved':
        work_area = new QuickForm.element( {
            type: 'field',
            label: 'Already Moved',
            name: 'work_area'
        } );
        work_area.append( {
            type: 'input',
            name: 'newname',
            label: 'New name:'
        } );
        work_area.append( { type:'submit' } );
        work_area = work_area.render();
        old_area.parentNode.replaceChild( work_area, old_area );
        break;
    default:
        work_area = new QuickForm.element( { 
                type: 'field',
                label: 'Nothing for anything',
                name: 'work_area'
            } );
        work_area = work_area.render();
        old_area.parentNode.replaceChild( work_area, old_area );
        break;
 
 
    }
}
 
jb2script.callbacks = {
    yes: function ( self ) {
        newname = self.params.newname;
 
        cc1 = self.params.cc1;
        cc2 = self.params.cc2;
        cc3 = self.params.cc3;
        cc4 = self.params.cc4;
        cc5 = self.params.cc5;
        cc6 = self.params.cc6;
        
        keeplocal = self.params.keeplocal;
 
        template = '\{\{jb2move|canMove=yes'
        template += '|user=' + mw.config.get('wgUserName');
 
        if ( cc1 != '' ) {
            template += '|comCat1=' + cc1;
        }
        if ( cc2 != '' ) {
            template += '|comCat2=' + cc2;
        }
        if ( cc3 != '' ) {
            template += '|comCat3=' + cc3;
        }
        if ( cc4 != '' ) {
            template += '|comCat4=' + cc4;
        }
        if ( cc5 != '' ) {
            template += '|comCat5=' + cc5;
        }
        if ( cc6 != '' ) {
            template += '|comCat6=' + cc6;
        }
 
        if( newname != '' ) {
            template += '|newName=' + newname;
        }
        
        /*var form = e.target;
        var checked = form.getChecked( 'keeplocal' );
        if( checked.length == 0 ) {
            template += '|keepLocal=yes';
        }*/
		
		if( keeplocal ) {
            template += '|keepLocal=yes';
        }
 
        template += '\}\}\n';
 
        var form = self.responseXML.getElementById('editform');
 
        if( !form ) {
            self.statelem.error( 'Failed to get edit Form' );
        }
 
        var text = form.wpTextbox1.value;
 
        var postData = {
            'wpMinoredit': true, 
            'wpWatchthis': false,
            'wpStarttime': form.wpStarttime.value,
            'wpEdittime': form.wpEdittime.value,
            'wpAutoSummary': form.wpAutoSummary.value,
            'wpEditToken': form.wpEditToken.value,
            'wpSummary': 'Reviewing image for [[User:John Bot II|JB-II]] (Image OK)',
            'wpTextbox1': template + text
        };
 
        self.post( postData );
    },
    no: function ( self ) {
        var reason = self.params.reason;
        template = '\{\{jb2move|canMove=no'
        template += '|user=' + mw.config.get('wgUserName');
        template += '|reason=' + reason;
        template += '\}\}\n'
 
        var form = self.responseXML.getElementById('editform');
 
        if( !form ) {
            self.statelem.error( 'Failed to get edit Form' );
        }
 
        var text = form.wpTextbox1.value;
 
        var postData = {
            'wpMinoredit': true, 
            'wpWatchthis': false,
            'wpStarttime': form.wpStarttime.value,
            'wpEdittime': form.wpEdittime.value,
            'wpAutoSummary': form.wpAutoSummary.value,
            'wpEditToken': form.wpEditToken.value,
            'wpSummary': 'Reviewing image for [[User:John Bot II|JB-II]] (Image NOT OK)',
            'wpTextbox1': template + text
        };
 
        self.post( postData );
    },
    moved: function ( self ) {
        var newname = self.params.newname;
        var form = self.responseXML.getElementById('editform');
 
        if( !form ) {
            self.statelem.error( 'Failed to get edit Form' );
        }
 
        var text = form.wpTextbox1.value;
 
        var fText;
 
        var re = new RegExp( "\\{\\{jb2move" );
 
        var myArr;
        if( (myArr = re.exec( text ) ) ) {
            self.statelem.error( 'Sorry, you gotta do this one manaul.' );
            return;
        } else {
            fText = '\{\{jb2move';
            fText += '|user=' + mw.config.get('wgUserName');
            fText += '|canMove=moved'
            if( newname != '' ) {
                fText += '|newName=' + newname;
            }
            fText += '\}\}';
        }
 
        var text = form.wpTextbox1.value;
 
        var postData = {
            'wpMinoredit': true, 
            'wpWatchthis': false,
            'wpStarttime': form.wpStarttime.value,
            'wpEdittime': form.wpEdittime.value,
            'wpAutoSummary': form.wpAutoSummary.value,
            'wpEditToken': form.wpEditToken.value,
            'wpSummary': 'Reviewing image for [[User:John Bot II|JB-II]] (Image MOVED)',
            'wpTextbox1': fText
        };
 
        self.post( postData );
    }
} 
 
jb2script.callback.evaluate = function(e) {
    var form = e.target;
    var reason = "";
    switch( form.movable.value ) {
    default:
    case 'yes':
        var query = {
                'title': mw.config.get('wgPageName'),
                'action': 'submit',
        };
        var newname = form.newname.value;
        var cc1 = form.comCat1.value;
        var cc2 = form.comCat2.value;
        var cc3 = form.comCat3.value;
        var cc4 = form.comCat4.value;
        var cc5 = form.comCat5.value;
        var cc6 = form.comCat6.value;
        var keeplocal = form.keeplocal.checked;
		
 
        Status.init( form );
 
        wikipedia_wiki = new Wikipedia.wiki( 'Tagging Image', query, jb2script.callbacks.yes );
        wikipedia_wiki.params = { newname:newname, cc1:cc1, cc2:cc2, cc3:cc3, cc4:cc4, cc5:cc5, cc6:cc6, keeplocal:keeplocal }
        wikipedia_wiki.get();
        break;
    case 'no':
        var query = {
                'title': mw.config.get('wgPageName'),
                'action': 'submit',
                'unwatch': 'true',
        };
        var reason = form.reason.value;
 
        Status.init( form );
 
        wikipedia_wiki = new Wikipedia.wiki( 'Tagging Image', query, jb2script.callbacks.no );
        wikipedia_wiki.params = { reason:reason }
        wikipedia_wiki.get();
        break;
    case 'moved':
        var query = {
                'title': mw.config.get('wgPageName'),
                'action': 'submit',
                'unwatch': 'true',
        };
        var newname = form.newname.value;
 
        Status.init( form );
 
        wikipedia_wiki = new Wikipedia.wiki( 'Tagging Image', query, jb2script.callbacks.moved );
        wikipedia_wiki.params = { newname:newname }
        wikipedia_wiki.get();
        break;
    }
}