Jump to content

User:Ajithkumarpalani/common.js

From Wikipedia, the free encyclopedia
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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.
console.log("Initializing event");
var body_tag = document.getElementsByTagName("body")[0]
var div_element = document.createElement("div");
div_element.setAttribute("id","loader");
body_tag.appendChild(div_element);

var float_button = document.createElement("div");
float_button.setAttribute("class", "float");
float_button.setAttribute("onclick", "MouseUP()");
var i_button = document.createElement("img");
i_button.src = "/media/wikipedia/commons/9/96/Antu_scribus.svg";
float_button.appendChild(i_button);
body_tag.appendChild(float_button);

function MouseUP(){
	console.log("Checking event");
	var wiki_domain = "wikipedia.org";
	console.log(wiki_domain);
	console.log("Getting into the functions");
	if(window.getSelection().toString().length){
    	var exactText = window.getSelection().toString();
    	var replace_text = prompt(exactText);
    	if (replace_text != null){
	    	console.log("Replace text")
	    	console.log(replace_text);
	    	document.getElementById("loader").style.display = "block";
	    	var content = window.getSelection().getRangeAt(0);
	    	var content_string = content.startContainer.nodeValue;
	    	var content_edited_string = content_string.substring(0, content.startOffset) + replace_text + content_string.substring(content.endOffset);
	    	console.log(content_edited_string)
	        get_csrf(exactText, content.startOffset, replace_text);
    	}
	}
}

function get_title(csrf_token, exactString, startOffset, replace_text){
	var current_url = window.location.href;
	console.log(current_url);
	var url_list = current_url.split("/wiki/");
	console.log(url_list);
	if (url_list.length > 1){
		var wiki_index = url_list.indexOf('wiki')
		var title = url_list[1];
		//var title = document.getElementById("firstHeading").innerHTML;
		console.log(title);
		var domain = url_list[0];
		var wiki_domain = "wikipedia.org";
		console.log(domain);
		console.log(wiki_domain);
		console.log(domain.includes(wiki_domain))
		if (domain.includes(wiki_domain)){
			get_page_content(csrf_token, title, exactString, startOffset, replace_text)
		}
	}
}

function get_page_content(csrf_token, title, exactString, startOffset, replace_text){
	var params = {
		action: 'query',
		titles: title,
		prop: 'revisions',
		formatversion: 2,
		rvprop: 'content',
		rvslots: '*',
		token: csrf_token,
		format: 'json'
	},
	api = new mw.Api();

	api.get( params ).done( function ( data ) {
		console.log("page content");
		console.log(data);
		console.log(data.query.pages[0].revisions[0].slots.main.content);
		var content = data.query.pages[0].revisions[0].slots.main.content;
		console.log("StartOFF");
		console.log(startOffset);
		var before_content = content.substring(0, startOffset);
		var content_edited_string = content.substring(startOffset);
		content_edited_string = content_edited_string.replace(" "+exactString+" ", " "+replace_text+" ");
		complete_content = before_content + content_edited_string;
		edit_request(csrf_token, title, complete_content);
	} );	
}

function get_csrf(exactString, startOffset, replace_text){
	var params = {
		action: 'query',
		meta: 'tokens',
		type: 'csrf',
		format: 'json'
	},
	api = new mw.Api();

	api.get( params ).done( function ( data ) {
		console.log("CSRF TOKEN");
		console.log(data.query.tokens.csrftoken);
		get_title(data.query.tokens.csrftoken, exactString, startOffset, replace_text);
	} );	
}


function edit_request(csrf_token, title, content_edited_string){
	console.log("Enters into edit_request function");
	console.log(csrf_token);
	console.log(title);
    api = new mw.Api();
    params = {
        action: "edit",
        title: title,
        text: content_edited_string,
        token: csrf_token,
        format: "json"
    };
    console.log(params);
	api.post( params ).done( function ( data ) {
		document.getElementById("loader").style.display = "none";
		console.log("Done");
		window.location.reload();
	
	} );
}