User:CWii/JB2script.js

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 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 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 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;

}

}