User:ArsenalBastion4093/common.js

From Meta, a Wikimedia project coordination wiki

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.
$(function(){
	function Encode(i) {
		return encodeURI(i).split("?").join("%3F").split("&").join("%26").split("=").join("%3D").split(";").join("%3B").split("#").join("%23").split('"').join("%22").split("'").join("%27")
	}
	function URL_param_get(a) {
		var arr = location.href.split("#")[0].slice(location.origin.length+location.pathname.length+1).split("&")
		for (var i in arr) {
			arr[i] = arr[i].split("=")
			arr[i][0] = decodeURIComponent(arr[i][0])
			arr[i][1] = decodeURIComponent(arr[i][1])
		}
		var obj= Object.fromEntries(arr)
		if (typeof(obj[a])!="string") return null
		else return obj[a]
	}
	function URL_param_getall() {
		var arr = location.href.split("#")[0].slice(location.origin.length+location.pathname.length+1).split("&")
		for (var i in arr) {
			arr[i] = arr[i].split("=")
			arr[i][0] = decodeURIComponent(arr[i][0])
			arr[i][1] = decodeURIComponent(arr[i][1])
		}
		var obj = Object.fromEntries(arr)
		delete obj[""]
		return obj
	}
	function URL_param_parse(o) {
		var arr = Object.entries(o)
		for (var i in arr) {
			arr[i] = Encode(arr[i][0]) + "=" + Encode(arr[i][1])
		}
		return "?" + arr.join("&")
	}
	window.ApiRequest = function(req){
		return new Promise(function(r,t){
    		$.ajax("/w/api.php" + URL_param_parse(req),{
    			type: "post",
    			success: function(a){r(a)},
    			error: function(a){t(a)},
    		})
		})
	}
	Object.defineProperties(String.prototype,{
		containing:{
			value(a){return this.split(a).length>1}
		}
	})
	$("#firstHeading").before('<div class="editedtitletool notopen">[<a href="#" id="ca-done">✔</a> | <a href="#" id="ca-cancel">✘</a>]</div>')
	$("<style>.editedtitletool{font-size: 1.8em;}.editedtitletool.notopen{display:none;}</style>").appendTo("head")
	$("#firstHeading").attr("contentEditable","true").on("focus",function(){
		if ($(this).hasClass("edited")) {
			return;
		}
		$(".editedtitletool").removeClass("notopen")
		$("#mw-content-subtitle").prepend("<div id='original-title'>"+$(this).html()+"</div>")
		$(this).addClass("edited");
		$(this).text(mw.config.values.wgPageName.split("_").join(" "));
		$("#ca-done").click(function(){
			$("#firstHeading").attr("contentEditable","false").text($("#firstHeading").text().split("\n").join(""));
			location = location.origin + mw.util.getUrl($("#firstHeading").text());
		})
		$("#ca-cancel").click(function(){
			$("#firstHeading").removeClass("edited").html($("#original-title").html())
			$("#original-title").remove()
			$(".editedtitletool").addClass("notopen")
		})
		$(this).on("keydown",function(e){
			if (e.key == "Enter") {
				$("#ca-done").click()
			}
		});
		$("#vector-page-tools .vector-menu-content-list").append("<li id='t-qqx' class='mw-list-item'><a href='" + location + (location.toString().indexOf("?")==-1?"?uselang=qqx":"&uselang=qqx") + "'><span>QQX</span></a></li>")
	});	
})