MediaWiki:Common.js
Revision as of 18:21, 22 June 2020 by Jayprakash (talk | contribs)
Note: After saving, 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: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Go to Menu → Settings (Opera → Preferences on a Mac) and then to Privacy & security → Clear browsing data → Cached images and files.
window.protectedNamespace = [ "2020", "2020_talk", "2021", "2022", "2023", "2024", "2025" ];
$( document ).ready( function(){
if( mw.config.get('wgIsMainPage') )
{
$('#sbl-breadcrumbs').remove();
}
// Open all UIF link in new tab
$('#p-UIF').children().find('a').attr('target', '_blank');
if ( mw.config.get( 'wgPageName' ) === "Special:Badtitle" ){
$('#pt-login').hide();
}
// CategoryTree
$('.CategoryTreeLabelPage').first().prev().before("---------------------------<br>");
$('.CategoryTreeEmptyBullet').each( function(){
if( $(this).next().next().val() === undefined){
$(this).parent().hide();
}
});
});
// Sidebar
$( document ).ready(function(){
function ModifySidebar( section, name, link ) {
var node = document.getElementById( 'p-'+ section )
.getElementsByTagName( 'div' )[0]
.getElementsByTagName( 'ul' )[0];
var aNode = document.createElement( 'a' );
var liNode = document.createElement( 'li' );
aNode.appendChild( document.createTextNode( name ) );
aNode.setAttribute( 'href', link );
liNode.appendChild( aNode );
liNode.className = 'plainlinks';
node.appendChild( liNode );
}
if( window.protectedNamespace.indexOf( mw.config.get( 'wgCanonicalNamespace' )) !== -1 ){
$('#p-navigation > .body ul').empty();
$('#p-tb').remove();
$('#p-UIF').remove();
$('#p-ratePage-vote-title').remove();
if( !(mw.config.get( 'wgUserGroups' ).indexOf("bureaucrat") !== -1) ) {
$("#left-navigation").empty();
$("#right-navigation").empty();
}
// Navigation Links
if ( mw.config.get( 'wgTitle' ) === "Training Overview" ){
ModifySidebar( 'navigation', 'Back to Main Page', 'https://universityinnovation.org/wiki/Main_Page' );
} else {
ModifySidebar( 'navigation', 'Back to Overview', 'https://universityinnovation.org/wiki/2020:Training_Overview' );
}
mw.loader.using( 'mediawiki.api', function(){
var api = new mw.Api(),
sections = [ 1, 2, 3 ],
pageName = mw.config.get( 'wgCanonicalNamespace' ).slice(0,4) + ":Sidebar";
sections.forEach(function(item){
params = {
"action": "parse",
"format": "json",
"page": pageName,
"wrapoutputclass": "",
"section": item,
"disablelimitreport": 1,
"disableeditsection": 1
};
api.get(params).done(function( data){
$('a', data.parse.text['*']).each( function(){
if( item == 1){
// Session Links
ModifySidebar( 'Sessions', $(this).text(), $( this).attr("href") );
}
else if( item ==2 ){
// Resources Links
ModifySidebar( 'Discussions', $(this).text(), $( this).attr("href") );
}
else if( item ==3 ){
// Resources Links
ModifySidebar( 'Resources', $(this).text(), $( this).attr("href") );
}
});
// Make current page non clickable
$('.portal .body > ul').children().each( function(){
link = $( this ).children()[0].href;
if ( link === window.location.href ) {
$( $( this ).children()[0]).css({
"pointer-events": "none",
"cursor": "default",
"color": "#000",
"font-weight": "bold"
});
}
});
});
});
});
} else {
$('#p-Sessions').remove();
$('#p-Discussions').remove();
$('#p-Resources').remove();
}
});
// Gadget-HotCat
mw.loader.load( '/index.php?title=MediaWiki:Gadget-HotCat.js&action=raw&ctype=text/javascript' );
// Gadget - QRCode
mw.loader.load('/index.php?title=MediaWiki:QRCode.js&action=raw&ctype=text/javascript');
// Gadget - CreateFellow2020
mw.loader.load('/index.php?title=MediaWiki:Gadget-2020Cohort.js&action=raw&ctype=text/javascript');
// Gadget - CreateFellowPage
$( document ).ready( function (){
function init() {
// Remove the default content
$('#mw-content-text > p').remove();
$('#firstHeading').text('Create Fellow Page');
// Create widget
var bio = new OO.ui.MultilineTextInputWidget( {
placeholder: 'Bio',
autosize: true,
rows: 10
} ),
achievements = new OO.ui.MultilineTextInputWidget( {
placeholder: 'Achievements',
autosize: true,
rows: 10
} ),
social = new OO.ui.MultilineTextInputWidget( {
placeholder: 'Social media profiles',
autosize: true,
rows: 10
} ),
name = new OO.ui.TextInputWidget( {
placeholder: 'Name'
} ),
cohort = new OO.ui.TextInputWidget( {
placeholder: 'Cohort'
} ),
school = new OO.ui.TextInputWidget( {
placeholder: 'School'
} ),
major = new OO.ui.TextInputWidget( {
placeholder: 'Majoring in'
} ),
country = new OO.ui.TextInputWidget( {
placeholder: 'Country'
} ),
createBtn = new OO.ui.ButtonWidget( {
label: 'Create Page',
flags: [ 'progressive', 'primary' ]
} ),
cancelBtn = new OO.ui.ButtonWidget( {
label: 'Cancel',
flags: [ 'primary', 'destructive' ],
href: mw.config.get( 'wgServer' )
} ),
label1 = $('<p>').text('Name:').css('font-weight','bold' ),
label2 = $('<p>').text('Cohort:').css('font-weight','bold' ),
label3 = $('<p>').text('School:').css('font-weight','bold' ),
label4 = $('<p>').text('Majoring in:').css('font-weight','bold' ),
label5 = $('<p>').text('Country:').css('font-weight','bold' ),
label6 = $('<p>').text('Bio:').css('font-weight','bold' ),
label7 = $('<p>').text('Achievements:').css('font-weight','bold' ),
label8 = $('<p>').text('Social media profiles:').css('font-weight','bold' ),
divMainBox = $('<div />').css( {
'box-shadow': '0 .5rem 1rem rgba(0, 0, 0, .15)',
'border': '1px solid',
'padding': '1rem',
'margin-bottom': '3rem',
'border-radius': '.5rem'
});
divMainBox.append(
label1, name.$element,
label2, cohort.$element,
label3, school.$element,
label4, major.$element,
label5, country.$element,
label6, bio.$element,
label7, achievements.$element,
label8, social.$element,
'<br/>',
createBtn.$element,
cancelBtn.$element
);
$( '#mw-content-text' ).append( divMainBox );
// Create button click event handler
createBtn.on( 'click', function() {
nameResp = name.getValue().trim(),
cohortResp = cohort.getValue().trim();
schoolResp = school.getValue().trim(),
majorResp = major.getValue().trim();
countryResp = country.getValue().trim(),
bioResp = bio.getValue().trim();
achievementsResp = achievements.getValue().trim(),
socialResp = social.getValue().trim();
// Check whether the all fields are enough to run the function
if( nameResp !== "" && cohortResp !== ""
&& schoolResp !== "" && majorResp !== "" && countryResp !== "" ) {
api = new mw.Api();
wikiContent = "==Intro==\n";
wikiContent += ";Name: " + nameResp + "\n";
wikiContent += ";Cohort: " + cohortResp + "\n";
wikiContent += ";School: " + schoolResp + "\n";
wikiContent += ";Majoring in: " + majorResp + "\n";
wikiContent += ";Country: " + countryResp + "\n";
wikiContent += "==Bio==\n" + bioResp + "\n";
wikiContent += "==Achievements==\n" + achievementsResp + "\n";
wikiContent += "==Social media profiles==\n" + socialResp + "\n";
pageTitle = "Fellow:" + nameResp;
api.get( {
formatversion: 2,
action: 'query',
titles: pageTitle,
redirects: true
}, { async: false } ).then( function ( response ) {
var page = response.query.pages[ 0 ];
if ( page.missing || page.invalid ) {
doEdit( pageTitle, wikiContent );
} else {
api.get( {
formatversion: 2,
action: 'query',
titles: pageTitle + " (" + cohortResp + ")",
redirects: true
}, { async: false } ).then( function ( response ) {
var page = response.query.pages[ 0 ];
if ( page.missing || page.invalid ) {
doEdit( pageTitle + " (" + cohortResp + ")", wikiContent );
} else {
doEdit( pageTitle + " (" + schoolResp + ", " + cohortResp + ")", wikiContent );
}
});
}
} );
} else {
mw.notify( "Some fields have no text :( Please fill them." );
return;
}
});
function doEdit(title, wikiContent){
// Edit the page
var editParams = {
action: 'edit',
title: title,
text: wikiContent,
summary: "Created Fellow Page",
format: 'json'
};
api.postWithToken( 'csrf', editParams, { async: false } ).done( function ( res ) {
if( res.edit.result === "Success"){
mw.notify( title + " page has created :)");
window.location.replace( mw.config.get( 'wgServer' ) + "/wiki/" + title );
} else{
mw.notify( "Something went worng :(" );
}
} );
}
}
if ( mw.config.get('wgCanonicalSpecialPageName') === 'Blankpage' && mw.config.get('wgTitle').split('/', 2)[1] === 'CreateFellowPage' ) {
mw.loader.using( ['oojs-ui-core', 'mediawiki.api', 'mediawiki.notify', 'mediawiki.Title'], init );
}
});