User:Thomas.tarak.mathew/common.js
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
/**
* Tutorial script: QuickRC ("Quick Recent Changes")
*
* A tutorial user script which adds a link to the toolbox to show a pop-up
* dialog with up to 25 recent edits.
*
* Demonstrates:
* - Use of the API
* - Use of jQuery
* - Use of ResourceLoader and some of the default modules that come with it
*
* (Be bold and improve it!)
*
* Authors:
* Erik Moeller, 2011, public domain
*
*/
// Import the jQuery dialog plugin before starting the rest of this script
mw.loader.using(['jquery.ui'], function() {
function renderQuickRCDialog( pageLinks ) {
var $dialog = $( '<div></div>' )
.html(
'<strong>Welcome, ' + mw.user.getName() +
'!</strong> The following pages have been recently modified:<br/><ul><li>' +
pageLinks.join( '<br /><li>' ) + '</ul>'
)
.dialog({
autoOpen: true,
title: 'Hello there!',
width: '70%',
modal: true
});
}
function quickRC() {
var myPageLinks = [];
var myTitles = [];
// Fetch recent changes from the API by one of jQuery's AJAX functions
jQuery.getJSON(
mw.util.wikiScript( 'api' ),
{
'format': 'json',
'action': 'query',
'list': 'recentchanges',
'rclimit' : 25
},
function( data ) {
// Build a unique array of links, using the mw.html library to format them.
$.each ( data.query.recentchanges , function( index , rc ) {
// Don't link to this title if we've seen this title already
if ( $.inArray( rc.title, myTitles ) === -1 ) {
myPageLinks.push(
mw.html.element(
'a', { href: mw.util.getUrl( rc.title ) }, rc.title
)
);
}
myTitles.push( rc.title );
} ) ;
renderQuickRCDialog( myPageLinks );
}
);
}
$(document).ready( function() {
//Adding lang links to the page
var langs;
var api = new mw.Api();
api.get( {
action: 'query',
rawcontinue: '',
prop: 'langlinks',
lllimit: '10',
titles: $('h1').text()
} )
.done( function ( data ) {
console.log( 'API result:', data );
$.each(data.query.pages, function(key, value) {
langs = "This article is also available as ";
$.each(value.langlinks, function(i, val) {
langs += " <a href='https://" + val["lang"] + ".wikipedia.org/wiki/"+ val["*"] +"'>" + val["*"] + "</a>, ";
});
if('query-continue' in data){
langs += "<a id='extralangs' > and many more</a>"; /*href='"+value.title+"_langs'*/
}
console.log( langs );
langs += "<br />";
$('#bodyContent').prepend(langs);
if($('#extralangs').length > 0){
$('#extralangs').click(function(){
$(document).scrollTop($('#p-lang').offset().top);
});
}
});
} )
.fail( function ( error ) {
console.log( 'API failed :(', error );
langs = " This article is only available in this language";
$('#bodyContent').prepend(langs);
} );
// Add a link to the toolbox
var link = mw.util.addPortletLink(
'p-tb',
'#',
'Quick changelog',
't-prettylinkwidget',
'Show a quick overview of changes',
null,
'#t-whatlinkshere'
);
// Create a jQuery object for this link so that we get
// to use jQuery awesomeness like .click() for binding functions to events
// and methods like e.preventDefault();
$(link).click( function( e ) {
// Avoid the browser going to '#'
e.preventDefault();
// Initiate quickRC!
quickRC();
});
});
});