Медијавики:Gadget-morebits-test.js
Напомена: Пошто објавите измене, можда ћете морати да обришете кеш прегледача како бисте их видели.
- Firefox / Safari: Држите Shift и кликните на Reload или притисните Ctrl-F5 или Ctrl-R (⌘-R на Mac-у).
- Google Chrome: Притисните Ctrl-Shift-R (⌘-Shift-R на Mac-у).
- Internet Explorer / Edge: Држите Ctrl и кликните на Refresh или притисните Ctrl-F5.
- Opera: Притисните Ctrl-F5.
// Script depends on jQuery dialog widget
mw.loader.using( 'jquery.ui', function() {
// Construct object (to prevent namespace conflicts)
Twinkle.morebitsTest = {
launchDialog: function( userInterface ) {
userInterface.dialog('open');
},
initSimpleWindow: function() {
var Window = new Morebits.simpleWindow( 600, 400 );
Window.setTitle( "Test morebits.js" );
Window.display();
var form = new Morebits.quickForm( null );
var main_group = form.append( {
type:'select',
name:'main_group',
event:null
} );
var result = form.render();
Window.setContent( result );
Window.display();
result.main_group.root = result;
Morebits.status.init( result );
Morebits.wiki.actionCompleted.redirect = mw.config.get('wgPageName');
Morebits.wiki.actionCompleted.notice = "Test complete, reloading talk page in a few seconds";
},
setPageOptions: function(page) {
page.setEditSummary( $('#editSummary').val() );
if ( $('#runTestForm input[name="followRedirect"]').attr('checked') ) {
page.setFollowRedirect(true);
}
if ( $('#runTestForm input[name="minorEdit"]').attr('checked') ) {
page.setMinorEdit(true);
}
if ( $('#runTestForm input[name="watchlist"]').attr('checked') ) {
page.setWatchlist(true);
}
if ( $('#runTestForm input[name="watchlistFromPreferences"]').attr('checked') ) {
page.setWatchlistFromPreferences(true);
}
if ( $('#runTestForm input[name="noRetries"]').attr('checked') ) {
page.setMaxConflictRetries(0);
page.setMaxRetries(0);
}
var section = $('#runTestForm input[name="sectionNumber"]').val();
if ( section != "" ) {
page.setPageSection( Number( section ) );
}
page.setCreateOption(morebits_test_createOption);
if ( $('#runTestForm input[name="lookupCreator"]').attr('checked') ) {
page.lookupCreator(Twinkle.morebitsTest.lookupCreatorCallback);
}
},
loadCallbackInsert: function(page) {
var params = page.getCallbackParameters();
var text = page.getPageText();
var pos = text.indexOf(params['beforeText']);
if (pos == -1) {
alert('Search text "' + params['beforeText'] + '" not found!');
return;
}
page.setPageText(text.substr(0, pos) + params['newText'] + text.substr(pos));
page.save(Twinkle.morebitsTest.finalSaveCallback);
},
loadCallbackReplace: function(page) {
var params = page.getCallbackParameters();
page.setPageText(params['newText']);
page.save(Twinkle.morebitsTest.finalSaveCallback);
},
lookupCreatorCallback: function(page) {
alert("Page was created by: " + page.getCreator());
},
finalSaveCallback: function(page) {
Morebits.wiki.actionCompleted.redirect = page.getPageName(); // get result of redirects
},
initialize: function() {
// Define runTest interface
// Can also use alternative syntax new to jQuery 1.4:
// $('<div style="margin-top:0.4em;"></div>').html( 'Text to be added:' )
// → $('<div/>', { css: { 'margin-top': '0.4em' }, text: 'Text to be added:' } )
morebits_test_createOption = null;
Twinkle.morebitsTest.$runTests = $('<div id="runTestForm" style="position:relative;"></div>')
.append( $('<div style="margin-top:0.4em;"></div>').html( 'Text to be added:<br/>' ).append( $('<textarea id="message" id="runTestMessage" style="width:99%" rows="4" cols="60"></textarea>') ) )
.append( $('<div style="margin-top:0.4em;"></div>').html( 'Insert text before (for insert mode only):<br/>' ).append( $('<textarea id="beforeText" style="width:99%" rows="4" cols="60"></textarea>') ) )
.append( $('<div style="margin-top:0.4em;"></div>').html( 'Edit summary:<br/>' ).append( $('<textarea id="editSummary" style="width:99%" rows="4" cols="60"></textarea>') ) )
.append( $('<div style="margin-top:0.4em;"></div>').html( 'Section number: <input type="text" name="sectionNumber" size="3">' ) )
.append( $('<div style="margin-top:0.4em;"></div>').html('<input type="checkbox" name="followRedirect"/> Follow redirect') )
.append( $('<div style="margin-top:0.4em;"></div>').html('<input type="checkbox" name="minorEdit"/> Minor edit') )
.append( $('<div style="margin-top:0.4em;"></div>').html('<input type="checkbox" name="watchlist"/> Add to watchlist') )
.append( $('<div style="margin-top:0.4em;"></div>').html('<input type="checkbox" name="watchlistFromPreferences"/> Add to watchlist based on preference settings') )
.append( $('<div style="margin-top:0.4em;"></div>').html('<input type="checkbox" name="noRetries"/> Disable retries') )
.append( $('<div style="margin-top:0.4em;"></div>').html('<input type="checkbox" name="lookupCreator"/> Lookup page creator<hr/>') )
.append( $('<div style="margin-top:0.4em;"></div>').html('<input type="radio" name="createOption" value="" onclick="morebits_test_createOption=value" checked/> Create page if needed, unless deleted since loaded<br>') )
.append( $('<div style="margin-top:0.4em;"></div>').html('<input type="radio" name="createOption" value="recreate" onclick="morebits_test_createOption=value"/> Create page if needed<br>') )
.append( $('<div style="margin-top:0.4em;"></div>').html('<input type="radio" name="createOption" value="createonly" onclick="morebits_test_createOption=value"/> Only create a new page<br>') )
.append( $('<div style="margin-top:0.4em;"></div>').html('<input type="radio" name="createOption" value="nocreate" onclick="morebits_test_createOption=value"/> Do not create a new page<br>') )
.dialog({
width: 500,
autoOpen: false,
title: 'Test Morebits.wiki.page class',
modal: true,
buttons: {
"Append": function() {
$(this).dialog('close');
Twinkle.morebitsTest.initSimpleWindow();
var page = new Morebits.wiki.page(mw.config.get('wgPageName'));
page.setAppendText( $('#message').val() );
Twinkle.morebitsTest.setPageOptions(page);
page.append(Twinkle.morebitsTest.finalSaveCallback);
},
"Prepend": function(e) {
$(this).dialog('close');
Twinkle.morebitsTest.initSimpleWindow();
var page = new Morebits.wiki.page(mw.config.get('wgPageName'));
page.setPrependText( $('#message').val() );
Twinkle.morebitsTest.setPageOptions(page);
page.prepend(Twinkle.morebitsTest.finalSaveCallback);
},
"Insert": function(e) {
if ( $('#beforeText').val() == "" ) {
alert ("Text to insert before must be specified!");
return;
}
$(this).dialog('close');
Twinkle.morebitsTest.initSimpleWindow();
var page = new Morebits.wiki.page(mw.config.get('wgPageName'));
page.setCallbackParameters( {
beforeText: $('#beforeText').val(),
newText: $('#message').val()
});
Twinkle.morebitsTest.setPageOptions(page);
page.load(Twinkle.morebitsTest.loadCallbackInsert);
},
"Replace": function(e) {
$(this).dialog('close');
Twinkle.morebitsTest.initSimpleWindow();
var page = new Morebits.wiki.page(mw.config.get('wgPageName'));
page.setCallbackParameters( {
newText: $('#message').val()
});
Twinkle.morebitsTest.setPageOptions(page);
page.load(Twinkle.morebitsTest.loadCallbackReplace);
}
}
}); // close .dialog
} // close initialize function
} // close Twinkle.morebitsTest object
Twinkle.morebitsTest.initialize();
}); // close mw.loader
Twinkle.morebitsTestInit = function () {
if ( mw.config.get('wgAction') == 'view' && skin == 'vector' && mw.config.get('wgNamespaceNumber') >= 0 ) {
twAddPortletLink( ("javascript:Twinkle.morebitsTest.launchDialog(Twinkle.morebitsTest.$runTests)"), "Test", "tw-test", "Test morebits.js", "");
}
}
// register initialization callback
var Twinkle;
if ( typeof Twinkle === 'undefined' ) {
throw new Error( 'Attempt to load module "morebits-test" without having loaded Twinkle previously.' );
};
Twinkle.addInitCallback( Twinkle.morebitsTestInit );