Difference between revisions of "MediaWiki:Common.js"

From AlHaTorah.org
Jump to navigation Jump to search
 
(15 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
 
// Extra edit buttons
 
var addExtraButtons = function(){
 
var addExtraButtons = function(){
    $("#toolbar").html("");
+
var $bar = $("#toolbar");
    var addBtn = function ( ops ) {
+
if($bar.length)
        var btn = $("<span>").addClass("custom-editbtn");
+
$bar.html('');
        var $bar = $("#toolbar");
+
else
        btn.html(ops.name);
+
{
        btn.click(function () {
+
$('#editform').before('<div></>');
            var box = $(lastFocusedTextbox).focus()[0];//$("#wpTextbox1").focus()[0];
+
$bar = $('#editform').prev();
            var selS = box.selectionStart;
+
}
            var selE = box.selectionEnd;
+
            var text = box.value;
+
var addBtn = function ( ops ) {
            var before = typeof ops.before === "function" ? ops.before(text) : ops.before;
+
var $btn = $('<span class="custom-editbtn">' + ops.name + '</span>');
            var after = typeof ops.after === "function" ? ops.after(text) : ops.after;
+
$btn.click(function () {
            box.value = text.slice(0,selS) + before + text.slice(selS,selE) + after + text.slice(selE);
+
var box = $(lastFocusedTextbox).focus()[0];//$("#wpTextbox1").focus()[0];
            box.selectionStart = selS + before.length;
+
var selS = box.selectionStart;
            box.selectionEnd = selE + before.length;
+
var selE = box.selectionEnd;
        });
+
var text = box.value;
        $bar.append(btn);
+
var before = typeof ops.before === "function" ? ops.before(text) : ops.before;
    }
+
var after = typeof ops.after === "function" ? ops.after(text) : ops.after;
    addBtn({name:"a",before:function(){return "<a href=\""+prompt("href")+"\">"},after:"</a>"});
+
box.value = text.slice(0,selS) + before + text.slice(selS,selE) + after + text.slice(selE);
    addBtn({name:"b",before:"<b>",after:"</b>"});
+
box.selectionStart = selS + before.length;
    addBtn({name:"div",before:"<div>",after:"</div>"});
+
box.selectionEnd = selE + before.length;
    addBtn({name:"h1",before:"<h1>",after:"</h1>"});
+
});
    addBtn({name:"h2",before:"<h2>",after:"</h2>"});
+
$bar.append($btn);
    addBtn({name:"h3",before:"<h3>",after:"</h3>"});
+
}
    addBtn({name:"comment",before:"<!--",after:"-->"});
+
addBtn({name:"a",before:function(){return "<a href=\""+prompt("href")+"\" data-aht=\"page\">"},after:"</a>"});
    addBtn({name:"i",before:"<i>",after:"</i>"});
+
addBtn({name:"b",before:"<b>",after:"</b>"});
    addBtn({name:"li",before:"<li>",after:"</li>"});
+
addBtn({name:"del",before:"<del>",after:"</del>"});
    addBtn({name:"p",before:"<p>",after:"</p>"});
+
addBtn({name:"div",before:"<div>",after:"</div>"});
    addBtn({name:"q",before:"<q>",after:"</q>"});
+
addBtn({name:"h1",before:"<h1>",after:"</h1>"});
    addBtn({name:"span",before:"<span>",after:"</span>"});
+
addBtn({name:"h2",before:"<h2>",after:"</h2>"});
    addBtn({name:"style",before:"<style>",after:"</style>"});
+
addBtn({name:"h3",before:"<h3>",after:"</h3>"});
    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:"comment",before:"<!--",after:"-->"});
    addBtn({name:"td",before:"<td>",after:"</td>"});
+
addBtn({name:"i",before:"<i>",after:"</i>"});
    addBtn({name:"ul",before:"<ul>",after:"</ul>"});
+
addBtn({name:"ins",before:"<ins>",after:"</ins>"});
    addBtn({name:"category",before:"<category>",after:"</category>"});
+
addBtn({name:"li",before:"<li>",after:"</li>"});
    addBtn({name:"fn",before:"<fn>",after:"</fn>"});
+
addBtn({name:"p",before:"<p>",after:"</p>"});
    addBtn({name:"mekorot",before:"<mekorot>",after:"</mekorot>"});
+
addBtn({name:"q",before:"<q>",after:"</q>"});
    addBtn({name:"multilink",before:'<multilink><a href="SHE">',after:'</a><a href="SHE"></a></multilink>'});
+
addBtn({name:"span",before:"<span>",after:"</span>"});
    addBtn({name:"opinion",before:"<opinion>",after:"</opinion>"});
+
addBtn({name:"style",before:"<style>",after:"</style>"});
    addBtn({name:"point",before:"<point>",after:"</point>"});
+
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:"stub",before:"",after:"<stub/>"});
+
addBtn({name:"td",before:"<td>",after:"</td>"});
    addBtn({name:"subopinion",before:"<subopinion>",after:"</subopinion>"});
+
addBtn({name:"ul",before:"<ul>",after:"</ul>"});
    addBtn({name:"topic",before:"<topic>",after:"</topic>"});
+
addBtn({name:"category",before:"<category>",after:"</category>"});
    addBtn({name:"dash",before:"",after:"–"});
+
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
 
//Add input boxes for certain pages
 
var formatEditbox = function formatEditbox () {
 
var formatEditbox = function formatEditbox () {
    var origBox = document.getElementById('wpTextbox1');
+
var origBox = document.getElementById('wpTextbox1');
    var origText = origBox.value;
+
var origText = origBox.value;
    var reg1 = /^(<aht-xml>\s*<page type=")(\w*)(">\s*)([\s\S]*)(<\/page>\s*<\/aht-xml>\s*)$/
+
var reg1 = /^(<aht-xml>\s*<page type=")(\w*)(">\s*)([\s\S]*)(<\/page>\s*<\/aht-xml>\s*)$/
    var pieces1 = origText.match(reg1);
+
var pieces1 = origText.match(reg1);
    if (pieces1.length) {
+
if (pieces1.length) {
        var begin1 = pieces1[1];
+
var begin1 = pieces1[1];
        var pageTypeText = pieces1[2];
+
var pageTypeText = pieces1[2];
        var begin2 = pieces1[3];
+
var begin2 = pieces1[3];
        var mainContent = pieces1[4];
+
var mainContent = pieces1[4];
        var end = pieces1[5];
+
var end = pieces1[5];
        $(origBox).before('<label>Page Type: <input id="efPageType"/></label>')
+
$(origBox).before('<label>Page Type: <input id="efPageType"/></label>')
        $("#efPageType")[0].value = pageTypeText;
+
$("#efPageType")[0].value = pageTypeText;
  
        var reg2 = /^<h1>([^<]*)<\/h1>(\s*)([\s\S]*)$/;
+
var reg2 = /^<h1>([^<]*)<\/h1>(\s*)([\s\S]*)$/;
        var pieces2 = mainContent.match(reg2);
+
var pieces2 = mainContent.match(reg2);
        if (pieces2.length) {
+
if (pieces2.length) {
          $(origBox).before('<input id="efPageTitle"/>')
+
  $(origBox).before('<input id="efPageTitle"/>')
          $("#efPageTitle")[0].value = pieces2[1];
+
  $("#efPageTitle")[0].value = pieces2[1];
          mainContent = pieces2[3];
+
  mainContent = pieces2[3];
        }
+
}
  
        origBox.value = mainContent;
+
origBox.value = mainContent;
        $(origBox).prop("id","efMainContent");
+
$(origBox).prop("id","efMainContent");
        $(origBox).after("<input type='hidden' id='wpTextbox1' name='wpTextbox1'/>");
+
$(origBox).after("<input type='hidden' id='wpTextbox1' name='wpTextbox1'/>");
        $(origBox.form).submit(function(){
+
$(origBox.form).submit(function(){
            document.getElementById('wpTextbox1').value = begin1+$("#efPageType")[0].value+begin2
+
document.getElementById('wpTextbox1').value = begin1+$("#efPageType")[0].value+begin2
              +(pieces2.length?"<h1>"+$("#efPageTitle")[0].value+"</h1>"+pieces2[2]:"")
+
  +(pieces2.length?"<h1>"+$("#efPageTitle")[0].value+"</h1>"+pieces2[2]:"")
              +origBox.value+end;
+
  +origBox.value+end;
        });
+
});
    }
+
}
 
}
 
}
+
var $wpTextBox1 = $('#wpTextbox1');
if( $.inArray( mw.config.get( 'wgAction' ), [ 'edit', 'submit' ] ) !== -1 ) {
+
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
+
//enable multiple editor textboxes
        var lastFocusedTextbox = document.getElementById('wpTextbox1');
+
var lastFocusedTextbox = $wpTextBox1[0];
        $("html").on("focusin", "textarea,input", function(){
+
$("html").on("focusin", "textarea,input", function(){
                if (this.tagName.match(/input/i) && this.type !== "text") return;
+
if (this.tagName.match(/input/i) && this.type !== "text") return;
                lastFocusedTextbox = this;
+
lastFocusedTextbox = this;
        });
+
});
  
        mw.loader.using( 'user.options', function () {
+
mw.loader.using( 'user.options', function () {
                if ( ! mw.user.options.get( 'usebetatoolbar' ) ) {
+
if ( ! mw.user.options.get( 'usebetatoolbar' ) ) {
                        mw.loader.using( 'mediawiki.action.edit', function(){
+
mw.loader.using( 'mediawiki.action.edit', function(){
                                $( addExtraButtons );
+
$( addExtraButtons );
                        } );
+
} );
                }
+
}
        } );
+
} );
  
        formatEditbox();
+
//formatEditbox();
 
}
 
}
 
//Piwik
 
  var _paq = _paq || [];
 
  _paq.push(["trackPageView"]);
 
  _paq.push(["enableLinkTracking"]);
 
 
  (function() {
 
    var u=(("https:" == document.location.protocol) ? "https" : "http") + "://www.alhatorah.com/Piwik/";
 
    _paq.push(["setTrackerUrl", u+"piwik.php"]);
 
    _paq.push(["setSiteId", "2"]);
 
    var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0]; g.type="text/javascript";
 
    g.defer=true; g.async=true; g.src=u+"piwik.js"; s.parentNode.insertBefore(g,s);
 
  })();
 

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();
}