Difference between revisions of "MediaWiki:Common.js"

From AlHaTorah.org
Jump to navigation Jump to search
(Created page with "→‎Any JavaScript here will be loaded for all users on every page load.: //Piwik var _paq = _paq || []; _paq.push(["trackPageView"]); _paq.push(["enableLinkTracking...")
 
 
(16 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
/* Any JavaScript here will be loaded for all users on every page load. */
 
/* Any JavaScript here will be loaded for all users on every page load. */
 +
// Extra edit buttons
 +
var addExtraButtons = function(){
 +
var $bar = $("#toolbar");
 +
if($bar.length)
 +
$bar.html('');
 +
else
 +
{
 +
$('#editform').before('<div></>');
 +
$bar = $('#editform').prev();
 +
}
 +
 +
var addBtn = function ( ops ) {
 +
var $btn = $('<span class="custom-editbtn">' + ops.name + '</span>');
 +
$btn.click(function () {
 +
var box = $(lastFocusedTextbox).focus()[0];//$("#wpTextbox1").focus()[0];
 +
var selS = box.selectionStart;
 +
var selE = box.selectionEnd;
 +
var text = box.value;
 +
var before = typeof ops.before === "function" ? ops.before(text) : ops.before;
 +
var after = typeof ops.after === "function" ? ops.after(text) : ops.after;
 +
box.value = text.slice(0,selS) + before + text.slice(selS,selE) + after + text.slice(selE);
 +
box.selectionStart = selS + before.length;
 +
box.selectionEnd = selE + before.length;
 +
});
 +
$bar.append($btn);
 +
}
 +
addBtn({name:"a",before:function(){return "<a href=\""+prompt("href")+"\" data-aht=\"page\">"},after:"</a>"});
 +
addBtn({name:"b",before:"<b>",after:"</b>"});
 +
addBtn({name:"del",before:"<del>",after:"</del>"});
 +
addBtn({name:"div",before:"<div>",after:"</div>"});
 +
addBtn({name:"h1",before:"<h1>",after:"</h1>"});
 +
addBtn({name:"h2",before:"<h2>",after:"</h2>"});
 +
addBtn({name:"h3",before:"<h3>",after:"</h3>"});
 +
addBtn({name:"comment",before:"<!--",after:"-->"});
 +
addBtn({name:"i",before:"<i>",after:"</i>"});
 +
addBtn({name:"ins",before:"<ins>",after:"</ins>"});
 +
addBtn({name:"li",before:"<li>",after:"</li>"});
 +
addBtn({name:"p",before:"<p>",after:"</p>"});
 +
addBtn({name:"q",before:"<q>",after:"</q>"});
 +
addBtn({name:"span",before:"<span>",after:"</span>"});
 +
addBtn({name:"style",before:"<style>",after:"</style>"});
 +
addBtn({name:"table",before:'<h4 id="---">---</h4><table width="100%" border="1px"><tr><td width="50%">---</td><td dir="rtl" width="50%"><strong>---</strong><br />',after:"</td></tr></table>"});
 +
addBtn({name:"td",before:"<td>",after:"</td>"});
 +
addBtn({name:"ul",before:"<ul>",after:"</ul>"});
 +
addBtn({name:"category",before:"<category>",after:"</category>"});
 +
addBtn({name:"fn",before:"<fn>",after:"</fn>"});
 +
addBtn({name:"mekorot",before:"<mekorot>",after:"</mekorot>"});
 +
addBtn({name:"multilink",before:'<multilink><a href="SHE">',after:'</a><a href="SHE"></a></multilink>'});
 +
addBtn({name:"opinion",before:"<opinion>",after:"</opinion>"});
 +
addBtn({name:"point",before:"<point>",after:"</point>"});
 +
addBtn({name:"stub",before:"",after:"<stub/>"});
 +
addBtn({name:"subopinion",before:"<subopinion>",after:"</subopinion>"});
 +
addBtn({name:"topic",before:"<topic>",after:"</topic>"});
 +
addBtn({name:"dash",before:"",after:"–"});
 +
addBtn({name:"br",before:"",after:"<br/>"});
 +
addBtn({name:"Footnote",before:"<ref>",after:"</ref>"});
 +
addBtn({name:"חתימה",before:"{{חתימה|",after:"}}"});
 +
addBtn({name:"גיליון",before:"{{גיליון|",after:"}}"});
 +
addBtn({name:"צילום",before:"{{צילום לייפציג|",after:"}}"});
 +
};
  
 +
//Add input boxes for certain pages
 +
var formatEditbox = function formatEditbox () {
 +
var origBox = document.getElementById('wpTextbox1');
 +
var origText = origBox.value;
 +
var reg1 = /^(<aht-xml>\s*<page type=")(\w*)(">\s*)([\s\S]*)(<\/page>\s*<\/aht-xml>\s*)$/
 +
var pieces1 = origText.match(reg1);
 +
if (pieces1.length) {
 +
var begin1 = pieces1[1];
 +
var pageTypeText = pieces1[2];
 +
var begin2 = pieces1[3];
 +
var mainContent = pieces1[4];
 +
var end = pieces1[5];
 +
$(origBox).before('<label>Page Type: <input id="efPageType"/></label>')
 +
$("#efPageType")[0].value = pageTypeText;
  
 +
var reg2 = /^<h1>([^<]*)<\/h1>(\s*)([\s\S]*)$/;
 +
var pieces2 = mainContent.match(reg2);
 +
if (pieces2.length) {
 +
  $(origBox).before('<input id="efPageTitle"/>')
 +
  $("#efPageTitle")[0].value = pieces2[1];
 +
  mainContent = pieces2[3];
 +
}
  
//Piwik
+
origBox.value = mainContent;
  var _paq = _paq || [];
+
$(origBox).prop("id","efMainContent");
  _paq.push(["trackPageView"]);
+
$(origBox).after("<input type='hidden' id='wpTextbox1' name='wpTextbox1'/>");
  _paq.push(["enableLinkTracking"]);
+
$(origBox.form).submit(function(){
 +
document.getElementById('wpTextbox1').value = begin1+$("#efPageType")[0].value+begin2
 +
  +(pieces2.length?"<h1>"+$("#efPageTitle")[0].value+"</h1>"+pieces2[2]:"")
 +
  +origBox.value+end;
 +
});
 +
}
 +
}
 +
var $wpTextBox1 = $('#wpTextbox1');
 +
if($wpTextBox1.length
 +
&& $.inArray( mw.config.get( 'wgAction' ), [ 'edit', 'submit' ] ) !== -1
 +
&& $wpTextBox1.css('display') != 'none') // It's hidden by the AlHaTorah custom editor system
 +
{
  
  (function() {
+
//enable multiple editor textboxes
    var u=(("https:" == document.location.protocol) ? "https" : "http") + "://www.alhatorah.com/Piwik/";
+
var lastFocusedTextbox = $wpTextBox1[0];
    _paq.push(["setTrackerUrl", u+"piwik.php"]);
+
$("html").on("focusin", "textarea,input", function(){
    _paq.push(["setSiteId", "2"]);
+
if (this.tagName.match(/input/i) && this.type !== "text") return;
    var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0]; g.type="text/javascript";
+
lastFocusedTextbox = this;
    g.defer=true; g.async=true; g.src=u+"piwik.js"; s.parentNode.insertBefore(g,s);
+
});
  })();
+
 
 +
mw.loader.using( 'user.options', function () {
 +
if ( ! mw.user.options.get( 'usebetatoolbar' ) ) {
 +
mw.loader.using( 'mediawiki.action.edit', function(){
 +
$( addExtraButtons );
 +
} );
 +
}
 +
} );
 +
 
 +
//formatEditbox();
 +
}

Latest revision as of 03:11, 10 January 2023

/* Any JavaScript here will be loaded for all users on every page load. */
// Extra edit buttons
var addExtraButtons = function(){
	var $bar = $("#toolbar");
	if($bar.length)
		$bar.html('');
	else
	{
		$('#editform').before('<div></>');
		$bar = $('#editform').prev();
	}
	
	var addBtn = function ( ops ) {
		var $btn = $('<span class="custom-editbtn">' + ops.name + '</span>');
		$btn.click(function () {
			var box = $(lastFocusedTextbox).focus()[0];//$("#wpTextbox1").focus()[0];
			var selS = box.selectionStart;
			var selE = box.selectionEnd;
			var text = box.value;
			var before = typeof ops.before === "function" ? ops.before(text) : ops.before;
			var after = typeof ops.after === "function" ? ops.after(text) : ops.after;
			box.value = text.slice(0,selS) + before + text.slice(selS,selE) + after + text.slice(selE);
			box.selectionStart = selS + before.length;
			box.selectionEnd = selE + before.length;
		});
		$bar.append($btn);
	}
	addBtn({name:"a",before:function(){return "<a href=\""+prompt("href")+"\" data-aht=\"page\">"},after:"</a>"});
	addBtn({name:"b",before:"<b>",after:"</b>"});
	addBtn({name:"del",before:"<del>",after:"</del>"});
	addBtn({name:"div",before:"<div>",after:"</div>"});
	addBtn({name:"h1",before:"<h1>",after:"</h1>"});
	addBtn({name:"h2",before:"<h2>",after:"</h2>"});
	addBtn({name:"h3",before:"<h3>",after:"</h3>"});
	addBtn({name:"comment",before:"<!--",after:"-->"});
	addBtn({name:"i",before:"<i>",after:"</i>"});
	addBtn({name:"ins",before:"<ins>",after:"</ins>"});
	addBtn({name:"li",before:"<li>",after:"</li>"});
	addBtn({name:"p",before:"<p>",after:"</p>"});
	addBtn({name:"q",before:"<q>",after:"</q>"});
	addBtn({name:"span",before:"<span>",after:"</span>"});
	addBtn({name:"style",before:"<style>",after:"</style>"});
	addBtn({name:"table",before:'<h4 id="---">---</h4><table width="100%" border="1px"><tr><td width="50%">---</td><td dir="rtl" width="50%"><strong>---</strong><br />',after:"</td></tr></table>"});
	addBtn({name:"td",before:"<td>",after:"</td>"});
	addBtn({name:"ul",before:"<ul>",after:"</ul>"});
	addBtn({name:"category",before:"<category>",after:"</category>"});
	addBtn({name:"fn",before:"<fn>",after:"</fn>"});
	addBtn({name:"mekorot",before:"<mekorot>",after:"</mekorot>"});
	addBtn({name:"multilink",before:'<multilink><a href="SHE">',after:'</a><a href="SHE"></a></multilink>'});
	addBtn({name:"opinion",before:"<opinion>",after:"</opinion>"});
	addBtn({name:"point",before:"<point>",after:"</point>"});
	addBtn({name:"stub",before:"",after:"<stub/>"});
	addBtn({name:"subopinion",before:"<subopinion>",after:"</subopinion>"});
	addBtn({name:"topic",before:"<topic>",after:"</topic>"});
	addBtn({name:"dash",before:"",after:"–"});
	addBtn({name:"br",before:"",after:"<br/>"});
	addBtn({name:"Footnote",before:"<ref>",after:"</ref>"});
	addBtn({name:"חתימה",before:"{{חתימה|",after:"}}"});
	addBtn({name:"גיליון",before:"{{גיליון|",after:"}}"});
	addBtn({name:"צילום",before:"{{צילום לייפציג|",after:"}}"});
};

//Add input boxes for certain pages
var formatEditbox = function formatEditbox () {
	var origBox = document.getElementById('wpTextbox1');
	var origText = origBox.value;
	var reg1 = /^(<aht-xml>\s*<page type=")(\w*)(">\s*)([\s\S]*)(<\/page>\s*<\/aht-xml>\s*)$/
	var pieces1 = origText.match(reg1);
	if (pieces1.length) {
		var begin1 = pieces1[1];
		var pageTypeText = pieces1[2];
		var begin2 = pieces1[3];
		var mainContent = pieces1[4];
		var end = pieces1[5];
		$(origBox).before('<label>Page Type: <input id="efPageType"/></label>')
		$("#efPageType")[0].value = pageTypeText;

		var reg2 = /^<h1>([^<]*)<\/h1>(\s*)([\s\S]*)$/;
		var pieces2 = mainContent.match(reg2);
		if (pieces2.length) {
		  $(origBox).before('<input id="efPageTitle"/>')
		  $("#efPageTitle")[0].value = pieces2[1];
		  mainContent = pieces2[3];
		}

		origBox.value = mainContent;
		$(origBox).prop("id","efMainContent");
		$(origBox).after("<input type='hidden' id='wpTextbox1' name='wpTextbox1'/>");
		$(origBox.form).submit(function(){
			document.getElementById('wpTextbox1').value = begin1+$("#efPageType")[0].value+begin2
			  +(pieces2.length?"<h1>"+$("#efPageTitle")[0].value+"</h1>"+pieces2[2]:"")
			  +origBox.value+end;
		});
	}
}
var $wpTextBox1 = $('#wpTextbox1');
if($wpTextBox1.length
	&& $.inArray( mw.config.get( 'wgAction' ), [ 'edit', 'submit' ] ) !== -1
	&& $wpTextBox1.css('display') != 'none') // It's hidden by the AlHaTorah custom editor system
{

		//enable multiple editor textboxes
		var lastFocusedTextbox = $wpTextBox1[0];
		$("html").on("focusin", "textarea,input", function(){
				if (this.tagName.match(/input/i) && this.type !== "text") return;
				lastFocusedTextbox = this;
		});

		mw.loader.using( 'user.options', function () {
				if ( ! mw.user.options.get( 'usebetatoolbar' ) ) {
						mw.loader.using( 'mediawiki.action.edit', function(){
								$( addExtraButtons );
						} );
				}
		} );

		//formatEditbox();
}