Difference between revisions of "MediaWiki:Gadget-2020Cohort.js"

From University Innovation Fellows
Jump to navigation Jump to search
Line 5: Line 5:
 
// Remove the default content
 
// Remove the default content
 
$('#mw-content-text > p').remove();
 
$('#mw-content-text > p').remove();
     $('#firstHeading').text('Create Fellow Page - 2020');
+
     $('#firstHeading').text('Create Public Profile - 2020');
  
 
// Check user login 
 
// Check user login 
Line 19: Line 19:
 
     // Creating API Object
 
     // Creating API Object
 
     requestAPI = new mw.Api();
 
     requestAPI = new mw.Api();
   
 
    catMemberParam = {
 
"action": "query",
 
"format": "json",
 
"list": "categorymembers",
 
"cmtitle": "Category:2020 cohort",
 
"cmprop": "title",
 
"cmtype": "subcat",
 
"cmlimit": "500"
 
};
 
  
requestAPI.get( catMemberParam, { async: false }  ).done( function(resData){
+
getSchoolItem().done( function( schoolDataResp ){
 
schoolOptions = [];
 
schoolOptions = [];
members = resData.query.categorymembers;
+
schoolCatMembers = schoolDataResp.query.categorymembers;
  
// Creating MenuItems array from Category Members
+
// Creating MenuItems array from Category:School Categories's Member
members.forEach( function(mem){
+
schoolCatMembers.forEach( function(mem){
 
schoolOptions.push(
 
schoolOptions.push(
 
new OO.ui.MenuOptionWidget( {
 
new OO.ui.MenuOptionWidget( {
Line 44: Line 34:
 
});
 
});
  
// Create widgets
+
// API param to get Category:2020 cohort members
var bio = new OO.ui.MultilineTextInputWidget( {
+
    catMemberParam = {
            placeholder: 'Bio',
+
"action": "query",
            autosize: true,  
+
"format": "json",
            rows: 10
+
"list": "categorymembers",
        } ),
+
"cmtitle": "Category:2020 cohort",
        achievements = new OO.ui.MultilineTextInputWidget( {
+
"cmprop": "title",
            placeholder: 'Achievements',
+
"cmtype": "subcat",
            autosize: true,  
+
"cmlimit": "500"
            rows: 10
+
};
        } ),
+
        social = new OO.ui.MultilineTextInputWidget( {
+
requestAPI.get( catMemberParam, { async: false } ).done( function(resData){
            placeholder: 'Social media profiles',
+
schoolAndCohortOptions = [];
            autosize: true,
+
members = resData.query.categorymembers;
            rows: 10
+
        } ),
+
// Creating MenuItems array from Category Members
        name = new OO.ui.TextInputWidget( {
+
members.forEach( function(mem){
            placeholder: 'Name'
+
schoolAndCohortOptions.push(
        } ),
+
new OO.ui.MenuOptionWidget( {
        schoolAndcohort = new OO.ui.DropdownWidget( {
+
data: mem.title.replace("Category:", ""),
            label: 'Select school',
+
label: mem.title.replace("Category:", "")
            menu: {
+
} )
items: schoolOptions
+
);
}
 
        } ),
 
        image = new OO.ui.TextInputWidget( {
 
            placeholder: 'https://universityinnovation.org/wiki/File:ABCD'
 
        } ),
 
        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('School (Cohort):').css('font-weight','bold' ),
 
uploadLink = $("<a>").attr("href", "https://universityinnovation.org/wiki/Special:Upload").attr( "target", "_blank" ).text("Upload"),
 
label3 = $('<p>').html('Image page link: (' + uploadLink.prop('outerHTML') + ' if did not upload yet!)' ).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, schoolAndcohort.$element,
 
label3, image.$element,
 
label4, major.$element,
 
label5, country.$element,
 
label6, bio.$element,
 
label7, achievements.$element,
 
label8, social.$element,
 
'<br/>',
 
createBtn.$element,
 
cancelBtn.$element
 
);
 
 
waitMsg.remove();
 
$( '#mw-content-text' ).append( divMainBox );
 
 
// Event handler for Select cohort
 
schoolAndcohortResp = '';
 
schoolAndcohort.getMenu().on('select', function(data){
 
schoolAndcohortResp = data.getData();
 
});
 
 
// Create button click event handler
 
createBtn.on( 'click', function() {
 
nameResp = name.getValue().trim(),
 
imageResp = image.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
+
// Create widgets
if( nameResp !== "" && schoolAndcohortResp !== ""
+
var bio = new OO.ui.MultilineTextInputWidget( {
&& majorResp !== "" && countryResp !== "" ) {
+
            placeholder: 'Bio',
 
+
            autosize: true,
wikiContent = '{| class="wikitable" style="border: 5px ridge grey; float:right;" \n|-\n|';
+
            rows: 10
try {
+
        } ),
wikiContent += "[[File:"+ /File:(.+\.\w{3})/i.exec(imageResp)[1] +"|300px]]\n";
+
        achievements = new OO.ui.MultilineTextInputWidget( {
}
+
            placeholder: 'Achievements',
catch(err) {
+
            autosize: true,
wikiContent += "[[File:OOjs UI icon userAvatar.svg|300px]]\n";
+
            rows: 10
}
+
        } ),
wikiContent += "|-\n|\n";
+
        social = new OO.ui.MultilineTextInputWidget( {
wikiContent += ";Name: " + nameResp + "\n";
+
            placeholder: 'Social media profiles',
wikiContent += ";School (Cohort): " + schoolAndcohortResp + "\n";
+
            autosize: true,
wikiContent += ";Majoring in: " + majorResp + "\n";
+
            rows: 10
wikiContent += ";Country: " + countryResp + "\n";
+
        } ),
wikiContent += ";Email: [[Special:EmailUser/" + mw.config.get("wgUserName") + "]]\n";
+
        name = new OO.ui.TextInputWidget( {  
wikiContent += "|}\n";
+
            placeholder: 'Name'
wikiContent += "==Bio==\n" + bioResp + "\n";
+
        } ),
wikiContent += "==Achievements==\n" + achievementsResp + "\n";
+
        school = new OO.ui.DropdownWidget( {
wikiContent += "==Social media profiles==\n" + socialResp + "\n";
+
            label: 'Select school',
wikiContent += "[[Category:" + schoolAndcohortResp + "]]\n";
+
            menu: {
wikiContent += "[[Category:Student Contributors]]\n";
+
items: schoolOptions
 +
}
 +
        } ),
 +
        schoolAndcohort = new OO.ui.DropdownWidget( {
 +
            label: 'Select school and Cohort',
 +
            menu: {
 +
items: schoolAndCohortOptions
 +
}
 +
        } ),
 +
        image = new OO.ui.TextInputWidget( {
 +
            placeholder: 'https://universityinnovation.org/wiki/File:ABCD'
 +
        } ),
 +
        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('School:').css('font-weight','bold' ),
 +
label22 = $('<p>').text('School (Cohort):').css('font-weight','bold' ),
 +
uploadLink = $("<a>").attr("href", "https://universityinnovation.org/wiki/Special:Upload").attr( "target", "_blank" ).text("Upload"),
 +
label3 = $('<p>').html('Image page link: (' + uploadLink.prop('outerHTML') + ' if did not upload yet!)' ).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, school.$element,
 +
label22, schoolAndcohort.$element,
 +
label3, image.$element,
 +
label4, major.$element,
 +
label5, country.$element,
 +
label6, bio.$element,
 +
label7, achievements.$element,
 +
label8, social.$element,
 +
'<br/>',
 +
createBtn.$element,
 +
cancelBtn.$element
 +
);
 +
 +
waitMsg.remove();
 +
$( '#mw-content-text' ).append( divMainBox );
 +
 +
// Event handler for Select cohort
 +
schoolResp = '';
 +
schoolAndcohortResp = '';
 +
school.getMenu().on('select', function(data){
 +
schoolResp = data.getData();
 +
});
 +
schoolAndcohort.getMenu().on('select', function(data){
 +
schoolAndcohortResp = data.getData();
 +
});
 +
 +
// Create button click event handler
 +
createBtn.on( 'click', function() {
 +
nameResp = name.getValue().trim(),
 +
imageResp = image.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 !== "" && schoolAndcohortResp !== "" && schoolResp !== ""
 +
&& majorResp !== "" && countryResp !== "" ) {
 
 
pageTitle = "Fellow:" + nameResp;
+
wikiContent = '{| class="wikitable" style="border: 5px ridge grey; float:right;" \n|-\n|';
+
try {
requestAPI.get( {
+
wikiContent += "[[File:"+ /File:(.+\.\w{3})/i.exec(imageResp)[1] +"|300px]]\n";
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 {
 
requestAPI.get( {
 
formatversion: 2,
 
action: 'query',
 
titles: pageTitle + " (" + /\d{4}/.exec( schoolAndcohortResp.replace("Category:", "") ) + ")",
 
redirects: true
 
}, { async: false } ).then( function ( response ) {
 
var page = response.query.pages[ 0 ];
 
if ( page.missing || page.invalid ) {
 
doEdit( pageTitle + " (" + /\d{4}/.exec( schoolAndcohortResp.replace("Category:", "") ) + ")", wikiContent );
 
} else {
 
pageTitle = pageTitle + " (" + /(^.+)\(/.exec(schoolAndcohortResp.replace("Category:", ""))[1].trim() + ", " + /\d{4}/.exec( schoolAndcohortResp.replace("Category:", "") ) + ")";
 
doEdit( pageTitle, wikiContent );
 
}
 
});
 
 
}
 
}
} );
+
catch(err) {
} else {
+
wikiContent += "[[File:OOjs UI icon userAvatar.svg|300px]]\n";
mw.notify( "Some fields have no text :( Please fill them." );
+
}
return;
+
wikiContent += "|-\n|\n";
}
+
wikiContent += ";Name: " + nameResp + "\n";
+
wikiContent += ";School (Cohort): " + schoolAndcohortResp + "\n";
    });
+
wikiContent += ";Majoring in: " + majorResp + "\n";
 +
wikiContent += ";Country: " + countryResp + "\n";
 +
wikiContent += ";Email: [[Special:EmailUser/" + mw.config.get("wgUserName") + "]]\n";
 +
wikiContent += "|}\n";
 +
wikiContent += "\n==Bio==\n" + bioResp + "\n";
 +
wikiContent += "\n==Achievements==\n" + achievementsResp + "\n";
 +
wikiContent += "\n==Social media profiles==\n" + socialResp + "\n";
 +
wikiContent += "\n[[Category:" + schoolAndcohortResp + "]]\n";
 +
wikiContent += "[[Category:Student Contributors]]\n";
 +
wikiContent += "\n{{CatTree|" + schoolResp + "}}\n";
 +
 +
pageTitle = "Fellow:" + nameResp;
 +
 +
requestAPI.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 {
 +
requestAPI.get( {
 +
formatversion: 2,
 +
action: 'query',
 +
titles: pageTitle + " (" + /\d{4}/.exec( schoolAndcohortResp.replace("Category:", "") ) + ")",
 +
redirects: true
 +
}, { async: false } ).then( function ( response ) {
 +
var page = response.query.pages[ 0 ];
 +
if ( page.missing || page.invalid ) {
 +
doEdit( pageTitle + " (" + /\d{4}/.exec( schoolAndcohortResp.replace("Category:", "") ) + ")", wikiContent );
 +
} else {
 +
pageTitle = pageTitle + " (" + /(^.+)\(/.exec(schoolAndcohortResp.replace("Category:", ""))[1].trim() + ", " + /\d{4}/.exec( schoolAndcohortResp.replace("Category:", "") ) + ")";
 +
doEdit( pageTitle, wikiContent );
 +
}
 +
});
 +
}
 +
} );
 +
} else {
 +
mw.notify( "Some fields have no text :( Please fill them." );
 +
return;
 +
}
 +
 +
    });
 +
}).fail( function(){
 +
$( '#mw-content-text' ).append( "Something went wront. Please report it to Jay Prakash (User:Jayprakash)." );
 +
});
 
}).fail( function(){
 
}).fail( function(){
 
$( '#mw-content-text' ).append( "Something went wront. Please report it to Jay Prakash (User:Jayprakash)." );
 
$( '#mw-content-text' ).append( "Something went wront. Please report it to Jay Prakash (User:Jayprakash)." );
 
});
 
});
 +
 +
function getSchoolItem(){
 +
catMemberParam = {
 +
"action": "query",
 +
"format": "json",
 +
"list": "categorymembers",
 +
"cmtitle": "Category:Schools Categories",
 +
"cmprop": "title",
 +
"cmtype": "subcat",
 +
"cmlimit": "500"
 +
};
 +
 +
return requestAPI.get( catMemberParam, { async: false }  );
 +
}
  
 
     function doEdit(title, wikiContent){
 
     function doEdit(title, wikiContent){
Line 212: Line 257:
 
requestAPI.postWithToken( 'csrf', editParams, { async: false } ).done( function ( res ) {
 
requestAPI.postWithToken( 'csrf', editParams, { async: false } ).done( function ( res ) {
 
if( res.edit.result === "Success"){
 
if( res.edit.result === "Success"){
mw.notify( title + " page has created :)");
+
var editUserpage = {
window.location.replace( mw.config.get( 'wgServer' ) + "/wiki/" + title );
+
action: 'edit',
 +
title: 'User:' + mw.config.get("wgUserName"),
 +
text: '#REDIRECT [[' + title + ']]',
 +
summary: "Redirect to Fellow Page",
 +
format: 'json'
 +
};
 +
requestAPI.postWithToken( 'csrf', editUserpage, { async: false } ).done( function ( res ) {
 +
mw.notify( title + " page has created :) and userpage redirected.");
 +
window.location.replace( mw.config.get( 'wgServer' ) + "/wiki/" + title );
 +
}).fail( function(){
 +
mw.notify( title + " page has created :) but userpage redirecction failed.");
 +
window.location.replace( mw.config.get( 'wgServer' ) + "/wiki/" + title );
 +
});
 
} else{
 
} else{
 
mw.notify( "Something went worng :(" );
 
mw.notify( "Something went worng :(" );
Line 221: Line 278:
 
}
 
}
 
 
if ( mw.config.get('wgCanonicalSpecialPageName') === 'Blankpage' && mw.config.get('wgTitle').split('/', 2)[1] === 'CreateFellow2020' ) {
+
if ( mw.config.get('wgCanonicalSpecialPageName') === 'Blankpage' && mw.config.get('wgTitle').split('/', 2)[1] === 'CreatePublicProfile' ) {
 
mw.loader.using( ['oojs-ui-core', 'oojs-ui-widgets', 'mediawiki.api', 'mediawiki.notify'], init );
 
mw.loader.using( ['oojs-ui-core', 'oojs-ui-widgets', 'mediawiki.api', 'mediawiki.notify'], init );
 
}
 
}

Revision as of 09:45, 2 July 2020

// <nowiki>
$( document ).ready( function (){

	function init() {
		// Remove the default content
		$('#mw-content-text > p').remove();
    	$('#firstHeading').text('Create Public Profile - 2020');

		// Check user login  	
    	if( mw.config.get("wgUserId") === null){
    		$('#mw-content-text').append("You have to login first.");
    		return;
    	}
    	
    	// Wait Message
    	var waitMsg = $('<p>').text('Wait, Page is loading.....').css('font-weight','bold' );
    	$('#mw-content-text').append( waitMsg );
    	
    	// Creating API Object
    	requestAPI = new mw.Api();

		getSchoolItem().done( function( schoolDataResp ){
			schoolOptions = [];
			schoolCatMembers = schoolDataResp.query.categorymembers;

			// Creating MenuItems array from Category:School Categories's Member
			schoolCatMembers.forEach( function(mem){
				schoolOptions.push(
						new OO.ui.MenuOptionWidget( {
						data: mem.title.replace("Category:", ""),
						label: mem.title.replace("Category:", "")
					} )
				);
			});

			// API param to get Category:2020 cohort members 
	    	catMemberParam = {
				"action": "query",
				"format": "json",
				"list": "categorymembers",
				"cmtitle": "Category:2020 cohort",
				"cmprop": "title",
				"cmtype": "subcat",
				"cmlimit": "500"
			};
	
			requestAPI.get( catMemberParam, { async: false }  ).done( function(resData){
				schoolAndCohortOptions = [];
				members = resData.query.categorymembers;
	
				// Creating MenuItems array from Category Members
				members.forEach( function(mem){
					schoolAndCohortOptions.push(
							new OO.ui.MenuOptionWidget( {
							data: mem.title.replace("Category:", ""),
							label: mem.title.replace("Category:", "")
						} )
					);
				});
	
				// Create widgets
				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'
			        } ),
			        school = new OO.ui.DropdownWidget( { 
			            label: 'Select school',
			            menu: {
							items: schoolOptions 
						}
			        } ),
			        schoolAndcohort = new OO.ui.DropdownWidget( { 
			            label: 'Select school and Cohort',
			            menu: {
							items: schoolAndCohortOptions 
						}
			        } ),
			        image = new OO.ui.TextInputWidget( { 
			            placeholder: 'https://universityinnovation.org/wiki/File:ABCD'
			        } ),
			        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('School:').css('font-weight','bold' ),
					label22 = $('<p>').text('School (Cohort):').css('font-weight','bold' ),
					uploadLink = $("<a>").attr("href", "https://universityinnovation.org/wiki/Special:Upload").attr( "target", "_blank" ).text("Upload"),
					label3 = $('<p>').html('Image page link: (' + uploadLink.prop('outerHTML') + ' if did not upload yet!)' ).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, school.$element, 
					label22, schoolAndcohort.$element,
					label3, image.$element,
					label4, major.$element,
					label5, country.$element, 
					label6, bio.$element,
					label7, achievements.$element,
					label8, social.$element,
					'<br/>',
					createBtn.$element,
					cancelBtn.$element
				);
	
				waitMsg.remove();
				$( '#mw-content-text' ).append( divMainBox );
	
				// Event handler for Select cohort
				schoolResp = '';
				schoolAndcohortResp = '';
				school.getMenu().on('select', function(data){
					schoolResp = data.getData();
				});
				schoolAndcohort.getMenu().on('select', function(data){
					schoolAndcohortResp = data.getData();
				});
				
				// Create button click event handler
				createBtn.on( 'click', function() {
					nameResp = name.getValue().trim(),
					imageResp = image.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 !== "" && schoolAndcohortResp !== "" && schoolResp !== ""
						&& majorResp !== "" && countryResp !== "" ) {
	
						wikiContent = '{| class="wikitable" style="border: 5px ridge grey; float:right;" \n|-\n|';
						try {
							wikiContent += "[[File:"+ /File:(.+\.\w{3})/i.exec(imageResp)[1] +"|300px]]\n";
						}
						catch(err) {
							wikiContent += "[[File:OOjs UI icon userAvatar.svg|300px]]\n";
						}
						wikiContent += "|-\n|\n";
						wikiContent += ";Name: " + nameResp + "\n";
						wikiContent += ";School (Cohort): " + schoolAndcohortResp + "\n";
						wikiContent += ";Majoring in: " + majorResp + "\n";
						wikiContent += ";Country: " + countryResp + "\n";
						wikiContent += ";Email: [[Special:EmailUser/" + mw.config.get("wgUserName") + "]]\n";
						wikiContent += "|}\n";
						wikiContent += "\n==Bio==\n" + bioResp + "\n";
						wikiContent += "\n==Achievements==\n" + achievementsResp + "\n";
						wikiContent += "\n==Social media profiles==\n" + socialResp + "\n";
						wikiContent += "\n[[Category:" + schoolAndcohortResp + "]]\n";
						wikiContent += "[[Category:Student Contributors]]\n";
						wikiContent += "\n{{CatTree|" + schoolResp + "}}\n";
		
						pageTitle = "Fellow:" + nameResp;
						
						requestAPI.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 {
								requestAPI.get( {
									formatversion: 2,
									action: 'query',
									titles: pageTitle + " (" + /\d{4}/.exec( schoolAndcohortResp.replace("Category:", "") ) + ")",
									redirects: true
								}, { async: false } ).then( function ( response ) {
									var page = response.query.pages[ 0 ];
									if ( page.missing || page.invalid ) {
										doEdit( pageTitle + " (" + /\d{4}/.exec( schoolAndcohortResp.replace("Category:", "") ) + ")", wikiContent );
									} else {
										pageTitle = pageTitle + " (" + /(^.+)\(/.exec(schoolAndcohortResp.replace("Category:", ""))[1].trim() + ", " + /\d{4}/.exec( schoolAndcohortResp.replace("Category:", "") ) + ")";
										doEdit( pageTitle, wikiContent );
									}
								});
							}
						} );
					} else {
						mw.notify( "Some fields have no text :( Please fill them." );
						return;
					}
		
		    	});
			}).fail( function(){
				$( '#mw-content-text' ).append( "Something went wront. Please report it to Jay Prakash (User:Jayprakash)." );
			});
		}).fail( function(){
			$( '#mw-content-text' ).append( "Something went wront. Please report it to Jay Prakash (User:Jayprakash)." );
		});
		
		function getSchoolItem(){
			catMemberParam = {
				"action": "query",
				"format": "json",
				"list": "categorymembers",
				"cmtitle": "Category:Schools Categories",
				"cmprop": "title",
				"cmtype": "subcat",
				"cmlimit": "500"
			};
	
			return requestAPI.get( catMemberParam, { async: false }  );
		}

    	function doEdit(title, wikiContent){

    		// Edit the page
			var editParams = {
				action: 'edit',
				title: title,
				text: wikiContent,
				summary: "Created Fellow Page - 2020",
				format: 'json'
			};
	
			requestAPI.postWithToken( 'csrf', editParams, { async: false } ).done( function ( res ) {
				if( res.edit.result === "Success"){
					var editUserpage = {
						action: 'edit',
						title: 'User:' + mw.config.get("wgUserName"),
						text: '#REDIRECT [[' + title + ']]',
						summary: "Redirect to Fellow Page",
						format: 'json'
					};
					requestAPI.postWithToken( 'csrf', editUserpage, { async: false } ).done( function ( res ) {
						mw.notify( title + " page has created :) and userpage redirected.");
						window.location.replace( mw.config.get( 'wgServer' ) + "/wiki/" + title );
					}).fail( function(){
						mw.notify( title + " page has created :) but userpage redirecction failed.");
						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] === 'CreatePublicProfile' ) {
		mw.loader.using( ['oojs-ui-core', 'oojs-ui-widgets', 'mediawiki.api', 'mediawiki.notify'], init );
	}
});

// </nowiki>