MediaWiki:Common.js

From AlHaTorah.org
Jump to navigation Jump to search

Note: After saving, 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: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Go to Menu → Settings (Opera → Preferences on a Mac) and then to Privacy & security → Clear browsing data → Cached images and files.
/* 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();
}