MediaWiki:Wn/bn/Common.js

From Wikimedia Incubator

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.
mw.loader.using(["mediawiki.api"]).then(function() {
	var language = {
	  "Wn/bn" :{
	    "text": "প্রতিস্থাপন",
	    "develop": "Wn/bn/(উন্নয়ন চলছে|develop)",
	    "review": "Wn/bn/নিরীক্ষা",
	    "summary": "Mark as under review"
	  }
	};
	var project = mw.config.get("wgWmincTestwikiProject");
	var prefix = mw.config.get("wgWmincTestwikiPrefix");
	var elements = document.getElementsByClassName("wikidialog-dependent");
	var altelements = document.getElementsByClassName("wikidialog-alternative");
	var api = new mw.Api();
	
	var langSuppot = {
	  "text": undefined,
	  "develop": undefined,
	  "review": undefined,
	  "summary": undefined
	};
	if (project && language[prefix] !== undefined) {
	  langSuppot.text = language[prefix].text;
	  langSuppot.develop = language[prefix].develop;
	  langSuppot.review = language[prefix].review;
	  langSuppot.summary = language[prefix].summary;
	}
	
	function makebutton() {
	  for (var i = 0; i < elements.length; i++) {
	    elements[i].innerHTML = "<input type='button' value='" + langSuppot.text + "'>";
	    elements[i].onclick = function( e ) {
	    	submitForReview();
	    };
	    elements[i].removeAttribute("style");
	    altelements[i].setAttribute("style", "display:none");
	  }
	}
	
	function submitForReview() {
	  if (project != "n") {
	    alert("This script can only be used on Wikinews test wikis.");
	    return;
	  }
	  if (mw.config.get("wgNamespaceNumber") != 0) {
	    alert("This script can only be used in the Article namespace.");
	    return;
	  }
	  if (langSuppot.text == undefined && window.confirm("No language support for this test wiki. Please contact User:Syunsyunminmin to request additional language support.\r\n\r\nWould you like to continue to Syunsyunminmin's talk page?")) {
	    window.open("https://incubator.wikimedia.org/wiki/User_talk:Syunsyunminmin");
	    return;
	  }
	  api.get({
	  	"action": "query",
	  	"format": "json",
	  	"prop": "revisions",
	  	"titles": mw.config.get('wgPageName'),
	  	"formatversion": "2",
	  	"rvprop": "content",
	  	"rvslots": "*"
	  }).done(function(data) {
	    var content = data.query.pages[0].revisions[0].slots.main.content;
	    var regExp = new RegExp("^\{\{" + langSuppot.develop.replace("/", "\/") + "\}\}$", "gim");
	    newcontent = content.replace(regExp, "{{" + langSuppot.review + "}}");
	    if (newcontent == content) {
	    	if (window.confirm("The develop template was not found.\r\nPlease let Syunsyunminmin know as it may use an unknown redirect template.\r\n\r\nWould you like to continue to Syunsyunminmin's talk page?")) {
	    		window.open("https://incubator.wikimedia.org/wiki/User_talk:Syunsyunminmin");
	    	}
	    	return;
	    }
	    api.postWithToken('csrf', {
	    	"action": "edit",
	    	"format": "json",
	    	"title": mw.config.get('wgPageName'),
	    	"formatversion": "2",
	      "nocreate": 1,
	    	"text": newcontent,
	    	"summary": langSuppot.summary
	    }).done(function(data) {
	      if (data.error !== undefined) {
	        alert("Edit failed!\r\n\r\n\r\n" + data.error.info);
	      } else {
	        alert("Edit success");
	        document.location.reload();
	      }
	    });
	  });
	
	}
	
	makebutton();
});