MediaWiki:Guidedtour-tour-twa3.js
Appearance
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.
// The Wikipedia Adventure Mission 3
( function ( window, document, $, mw, gt ) {
//automatic api:edit function to send yourself messages
function sendTalkMessage( targetPage, msgPage, linkTo, overwrite, isTalkPost) {
if(!mw.config.get('wgUserName')) {
alert( "Please login." );
return;
}
var api = new mw.Api();
api.get( {
'action' : 'query',
'titles' : msgPage+'|'+targetPage,
'prop' : 'revisions',
'meta' : 'tokens',
'type' : 'csrf',
'rvprop' : 'content',
'indexpageids' : 1
} ).done( function (result) {
result = result.query;
var page = result.pages[result.pageids[1]];
var text = page.revisions[0]['*'];
text = text.replaceAll("<nowiki/>","");
if (result.pageids[0] > 0) {
var targetSrc = result.pages[result.pageids[0]];
var srcText = targetSrc.revisions[0]['*'];
if (!overwrite) {
// Check for duplicate talk messages with only the first 20 characters in case the messages subst into something different
if (isTalkPost && srcText.includes(text.substring(0, 20))) {
// Don't send duplicate badges/talk posts
window.location.href = linkTo;
return;
} else if (srcText.includes(text)) {
// Check for duplicate badges literally
window.location.href = linkTo;
return;
}
if (isTalkPost) {
// Preserve the banner for talk posts
text = srcText.replace("</div></div></div>","") + "\n" + text + "</div></div></div>";
} else {
// Otherwise just add for badges
text = srcText + "\n" + text;
}
}
}
api.post( {
'action' : 'edit',
'title' : targetPage,
'text' : text,
'summary' : 'New Message (simulated automatically as part of [[WP:The Wikipedia Adventure|The Wikipedia Adventure]])',
'token' : result.tokens.csrftoken
} ).done( function () {
window.location.href = linkTo;
} );
} );
}
var tour = new gt.TourBuilder( {
name: 'twa3',
});
var steps = [{
//1
title: 'Mission 3 begins!',
description: new gt.WikitextDescription('<br><div align="right">[[File:TWA_guide_right_top.png|link=]]</div>GaiaGirl is waiting for us at the Earth article.<br><br>Let\'s go there.<br><br>'),
overlay: true,
closeOnClickOutside: false,
buttons: [ {
name: 'Head to Earth*',
onclick: function() { sendTalkMessage( 'User:' + mw.config.get( 'wgUserName' ) + '/TWA/Earth', 'Wikipedia:TWA/Earth/1' , mw.util.getUrl( 'Special:MyPage/TWA/Earth' ) + '?tour=twa3&step=2', true, false); }
} ],
allowAutomaticOkay: false
}, {
//2
title: 'So this is Planet Earth!',
description: new gt.WikitextDescription('<br>Articles on Wikipedia give an encyclopedic overview of a subject: they tell readers a little bit about everything that\'s important to know.<br><br>'),
overlay: false,
closeOnClickOutside: false,
buttons: [ {
name: '<big>←</big>',
action: 'externalLink',
url: mw.util.getUrl( 'Wikipedia:TWA/3/Start' ) + '?tour=twa3&step=1'
} , {
name: 'Check it out',
action: 'next',
} ],
allowAutomaticOkay: false
}, {
//3
title: 'See anything that needs fixing?',
description: new gt.WikitextDescription('<br><div align="left">[[File:TWA_guide_left_top.png|link=]]</div>I notice a few spelling edits distracting from the information. How many do you see?<br><br>'),
attachTo: '#content.mw-body',
position: 'bottom',
overlay: false,
closeOnClickOutside: false,
back: true,
buttons: [ {
name: 'Search for typos',
action: 'next'
} ],
allowAutomaticOkay: false
}, {
//4
title: 'Spellcheck.',
description: new gt.WikitextDescription('<br>Did you find all 5?<br><br>thurd -- <b>third</b><br>fore -- <b>four</b><br>tree -- <b>three</b> <br>aminals -- <b>animals</b><br>hughmans -- <b>humans</b>'),
attachTo: '#content.mw-body',
position: 'bottom',
overlay: false,
closeOnClickOutside: false,
allowAutomaticOkay: false,
back: true,
buttons: [ {
name: 'Found them all',
action: 'next',
} ],
}, {
//5
title: 'Typofixing',
description: new gt.WikitextDescription('<br>Let\'s put your editing skills to the test and fix those up. Click EDIT.<br><br>'),
attachTo: '#ca-edit',
position: 'bottom',
overlay: false,
closeOnClickOutside: false,
allowAutomaticOkay: false,
back: true,
buttons: [ ],
skip: "vefork",
hooks: "ve.activationComplete"
}, {
//6
title: '5 fixes',
description: new gt.WikitextDescription('<br>thurd -- <b>third</b><br>fore -- <b>four</b><br>tree -- <b>three</b> <br>aminals -- <b>animals</b><br>hughmans -- <b>humans</b>. <br> Then click PUBLISH CHANGES when you\'re ready.'),
closeOnClickOutside: false,
buttons: [ {
name: '<big>←</big>',
action: 'externalLink',
url: mw.util.getUrl( 'Special:MyPage/TWA/Earth' ) + '?tour=twa3&step=5'
}],
overlay: false,
attachTo: "#bodyContent",
position: 'leftTop',
skip: function(transitionEvent) {
return transitionEvent.type === gt.TransitionEvent.MW_HOOK && transitionEvent.hookName == "ve.saveDialog.stateChanged";
},
allowAutomaticOkay: false,
hooks: "ve.saveDialog.stateChanged"
}, {
//7
title: 'Edit summary and Publish',
description: new gt.WikitextDescription('<br>Let them know that you, "Fixed 5 typos".<br><br>Then click PUBLISH CHANGES again when you\'re ready.'),
// Ideally this would be attached to the save dialog itself but since it is still loading when the tour event fires that doesn't work
attachTo: "#footer",
position:"bottom",
autoFocus: 'yes',
overlay: false,
closeOnClickOutside: false,
allowAutomaticOkay: false,
buttons: [ {
name: 'Go back',
action: 'externalLink',
url: mw.util.getUrl( 'Special:MyPage/TWA/Earth' ) + '?veaction=edit&tour=twa3&step=6'
} ],
skip: gt.isPostEdit,
} , {
//8
title: 'See boldly!',
description: new gt.WikitextDescription('NEW TOOL EARNED: <b>Copyeditor Badge</b><div class="center">[[File:TWA badge 4.png|250px|link=]]</div><br>Wow. Now the whole world can see the improved version of the article you contributed to...pretty cool!<br><br>Let\'s make a few more changes. Let\'s add bold around the first mention of <b>Earth</b> in the first sentence of the article.<br><br>This lets readers focus quickly on the main subject of the article. Click EDIT.<br><br>'),
overlay: false,
attachTo: '#ca-edit',
position: 'bottom',
closeOnClickOutside: false,
allowAutomaticOkay: false,
buttons: [ {
name: '<big>←</big>',
action: 'externalLink',
url: mw.util.getUrl( 'Special:MyPage/TWA/Earth' ) + '?tour=twa3&step=6&veaction=edit'
} ],
// can't use gt.isEditing here because it still thinks we're editing after the previous publish
skip: function(transitionEvent) {
return transitionEvent.type === gt.TransitionEvent.MW_HOOK && transitionEvent.hookName == "ve.activationComplete";
},
hooks: "ve.activationComplete"
} , {
//9
title: 'Add bold!',
description: new gt.WikitextDescription('<br><div align="right">[[File:TWA_guide_right_top.png|link=]]</div>Just like before, to add bold, highlight the first mention of the word Earth and then click the B on the toolbar.<br><br>Then click PUBLISH CHANGES, as before.'),
autoFocus: 'yes',
overlay: false,
attachTo: "#bodyContent",
position: 'leftTop',
closeOnClickOutside: false,
buttons: [ {
name: '<big>←</big>',
action: 'externalLink',
url: mw.util.getUrl( 'Special:MyPage/TWA/Earth' ) + '?tour=twa3&step=8'
}],
skip: function(transitionEvent) {
return transitionEvent.type === gt.TransitionEvent.MW_HOOK && transitionEvent.hookName == "ve.saveDialog.stateChanged";
},
hooks: "ve.saveDialog.stateChanged",
allowAutomaticOkay: false
} , {
//10
title: 'Edit summary and Publish',
description: new gt.WikitextDescription('<br>Let them know that you, "Added bold"<br><br>Then PUBLISH CHANGES when you\'re ready.'),
attachTo: "#footer",
position: "bottom",
autoFocus: 'yes',
overlay: false,
closeOnClickOutside: false,
allowAutomaticOkay: false,
buttons: [ {
name: '<big>←</big>',
action: 'externalLink',
url: mw.util.getUrl( 'Special:MyPage/TWA/Earth' ) + '?tour=twa3&step=9&veaction=edit'
} ],
skip: function(transitionEvent) {
// Can't use gt.isPostEdit here since it still things we're postedit from the previous save
return transitionEvent.type === gt.TransitionEvent.MW_HOOK && transitionEvent.hookName == "postEdit";
}
} , {
//11
title: 'Whew... This is exciting!',
description: new gt.WikitextDescription('<br><div align="left">[[File:TWA_guide_left_top.png|link=]]</div>You\'re getting the hang of this. You\'re going to do a lot of good here, I can sense it.<br><br>Hey you also have a new message...<br><br>'),
overlay: false,
closeOnClickOutside: false,
allowAutomaticOkay: false,
buttons: [ {
name: '<big>←</big>',
action: 'externalLink',
url: mw.util.getUrl( 'Special:MyPage/TWA/Earth' ) + '?tour=twa3&step=9&veaction=edit'
} , {
name: 'Check your new message*',
onclick: function() { sendTalkMessage( 'User talk:' + mw.config.get( 'wgUserName' ) + '/TWA', 'Wikipedia:TWA/MyTalk/3a' , mw.util.getUrl( 'Special:MyTalk/TWA' ) + '?tour=twa3&step=12', false, true); }
} ],
} , {
//12
title: 'New content...',
description: new gt.WikitextDescription('<br><div align="left">[[File:TWA_guide_left_top.png|link=]]</div>Let\'s see what\'s new<br><br>'),
attachTo: '#content.mw-body',
position: 'bottom',
overlay: false,
closeOnClickOutside: false,
buttons: [ {
name: '<big>←</big>',
action: 'externalLink',
url: mw.util.getUrl( 'Special:MyPage/TWA/Earth' ) + '?tour=twa3&step=11'
} , {
name: 'Check out the new content*',
onclick: function() { sendTalkMessage( 'User:' + mw.config.get( 'wgUserName' ), 'Wikipedia:TWA/Badge/4template2' , mw.util.getUrl( 'Wikipedia:TWA/3/End' ) + '?tour=twa3&step=13', false, false); }
} ],
allowAutomaticOkay: false
} , {
//13
title: 'Mission 3 complete!',
description: new gt.WikitextDescription('<br>[[File:Wesnothmusic.ogg (short).ogg]]<br><b>Journey on to mission 4...</b>'),
overlay: false,
closeOnClickOutside: false,
buttons: [ {
name: 'Congrats me!',
action: 'end'
} ],
allowAutomaticOkay: false
}];
var sourceEditorStepOverrides = {
6: {
title: '5 fixes',
description: new gt.WikitextDescription('<br>thurd -- <b>third</b><br>fore -- <b>four</b><br>tree -- <b>three</b> <br>aminals -- <b>animals</b><br>hughmans -- <b>humans</b>'),
overlay: false,
attachTo: '#wpTextbox1',
position: 'bottomRight',
closeOnClickOutside: false,
buttons: [ {
name: '<big>←</big>',
action: 'externalLink',
url: mw.util.getUrl( 'Special:MyPage/TWA/Earth' ) + '?tour=twa3&step=5'
} , {
name: 'Fixed',
action: 'next',
} ],
allowAutomaticOkay: false
}, 7: {
//7
title: 'Edit summary and Publish',
description: new gt.WikitextDescription('<br>Let them know that you, "Fixed 5 typos".<br><br>Then PUBLISH when you\'re ready.'),
attachTo: '#wpSave',
position: 'bottomRight',
autoFocus: 'yes',
overlay: false,
closeOnClickOutside: false,
allowAutomaticOkay: false,
back: true,
skip: gt.isPostEdit,
}, 8: {
title: 'See boldly!',
description: new gt.WikitextDescription('NEW TOOL EARNED: <b>Copyeditor Badge</b><div class="center">[[File:TWA badge 4.png|250px|link=]]</div><br>Wow. Now the whole world can see the improved version of the article you contributed to...pretty cool!<br><br>Let\'s make a few more changes. Let\'s add bold around the first mention of <b>Earth</b> in the first sentence of the article.<br><br>This lets readers focus quickly on the main subject of the article. Click EDIT.<br><br>'),
overlay: false,
attachTo: '#ca-edit',
position: 'bottom',
closeOnClickOutside: false,
allowAutomaticOkay: false,
buttons: [ {
name: '<big>←</big>',
action: 'externalLink',
url: mw.util.getUrl( 'Special:MyPage/TWA/Earth' ) + '?tour=twa3&step=5&action=edit'
} ],
skip: gt.isEditingWithWikitext
}, 9: {
//9
title: 'Add bold!',
description: new gt.WikitextDescription('<br><div align="right">[[File:TWA_guide_right_top.png|link=]]</div>Just like before, to add bold, highlight the first mention of the word Earth and then click the B on the toolbar.<br><br>'),
attachTo: '#wpTextbox1',
position: 'bottomRight',
autoFocus: 'yes',
overlay: false,
closeOnClickOutside: false,
buttons: [ {
name: '<big>←</big>',
action: 'externalLink',
url: mw.util.getUrl( 'Special:MyPage/TWA/Earth' ) + '?tour=twa3&step=8src'
} , {
name: 'Bolded',
action: 'next',
} ],
allowAutomaticOkay: false
}, 10: {
//10
title: 'Edit summary, and Publish',
description: new gt.WikitextDescription('<br>Let them know that you, "Added bold"<br><br>Then PUBLISH when you\'re ready.'),
attachTo: '#wpSave',
position: 'bottomRight',
autoFocus: 'yes',
overlay: false,
closeOnClickOutside: false,
allowAutomaticOkay: false,
back: true,
buttons: [],
skip: gt.isPostEdit
}
};
var stepBuilders = [];
var sStepBuilders = [];
function makeSkip(target, query) {
return function(event) {
if (query(event)) {
return target;
}
};
}
function makeVeSkip(target1, target2) {
return function() {
if (gt.isEditingWithVisualEditor()) {
return target1;
} else if (gt.isEditingWithWikitext()) {
return target2;
}
};
}
for (var i = 0; i < steps.length; i++) {
var step = steps[i];
step.allowAutomaticNext = false;
step.name = (i+1).toString();
var stepBuilder;
if (i == 0) {
stepBuilder = tour.firstStep(step);
} else {
stepBuilder = tour.step(step);
}
stepBuilders[i] = stepBuilder;
if (sourceEditorStepOverrides[i]) {
var sStep = sourceEditorStepOverrides[i];
sStep.allowAutomaticNext = false;
sStep.name = i.toString()+"src";
sStepBuilders[i-1] = tour.step(sStep);
}
}
for (var j = 0; j < steps.length; j++) {
if (steps[j].hooks) {
stepBuilders[j].listenForMwHooks(steps[j].hooks);
}
if (steps[j].skip) {
if (steps[j].skip == "vefork") {
stepBuilders[j].transition(makeVeSkip(stepBuilders[j+1], sStepBuilders[j+1]));
} else {
stepBuilders[j].transition(makeSkip(stepBuilders[j+1], steps[j].skip));
}
}
if (sourceEditorStepOverrides[j] && sourceEditorStepOverrides[j].skip) {
sStepBuilders[j-1].transition(makeSkip(sStepBuilders[j] || stepBuilders[j], sourceEditorStepOverrides[j].skip));
}
if (j > 0) {
if (steps[j].back) {
stepBuilders[j].back(stepBuilders[j-1]);
}
if (sStepBuilders[j-1] && sStepBuilders[j-2] && sourceEditorStepOverrides[j].back) {
sStepBuilders[j-1].back(sStepBuilders[j-2]);
}
}
if (j < steps.length - 1) {
stepBuilders[j].next(stepBuilders[j+1]);
if (sStepBuilders[j] && sStepBuilders[j+1]) {
sStepBuilders[j].next(sStepBuilders[j+1]);
}
}
}
} (window, document, jQuery, mediaWiki, mediaWiki.guidedTour ) ) ;