Разлика между версии на „МедияУики:Common.js“

От Читалие
Направо към: навигация, търсене
(update textarea height to match the image one)
(change tab insertion logic - do it only in Page namespace; add a character map for combining accents)
Ред 50: Ред 50:
 
cyrillic: [
 
cyrillic: [
 
"Ѣ", "ѣ", "Ѥ", "ѥ", "Ѧ", "ѧ", "Ѩ", "ѩ", "Ѫ", "ѫ", "Ѭ", "ѭ", "Ѯ", "ѯ", "Ѱ", "ѱ", "Ѳ", "ѳ", "Ѵ", "ѵ"
 
"Ѣ", "ѣ", "Ѥ", "ѥ", "Ѧ", "ѧ", "Ѩ", "ѩ", "Ѫ", "ѫ", "Ѭ", "ѭ", "Ѯ", "ѯ", "Ѱ", "ѱ", "Ѳ", "ѳ", "Ѵ", "ѵ"
 +
],
 +
Ударения: [
 +
'\u0300', '\u0301', '\u0306'
 
]
 
]
 
};
 
};
 
var addExtraSymbols = function(pages) {
 
var addExtraSymbols = function(pages) {
 
$.each(extraSymbolMaps, function(key, symbols){
 
$.each(extraSymbolMaps, function(key, symbols){
 +
if (!pages[key]) {
 +
pages[key] = {
 +
labelMsg: key,
 +
layout: "characters",
 +
characters: []
 +
};
 +
}
 
$.each(symbols, function(i, symbol){
 
$.each(symbols, function(i, symbol){
 
pages[key].characters.push(symbol);
 
pages[key].characters.push(symbol);
Ред 62: Ред 72:
 
var newPages = {};
 
var newPages = {};
 
newPages = {
 
newPages = {
'symbols': pages.symbols,
+
symbols: pages.symbols,
'greek': pages.greek,
+
greek: pages.greek,
'cyrillic' : pages.cyrillic
+
cyrillic: pages.cyrillic,
 +
Ударения:  pages.Ударения
 
};
 
};
 
$.each(pages, function(i, v){
 
$.each(pages, function(i, v){
Ред 114: Ред 125:
 
$pagetext.html( $pagetext.html().replace(/`/g, "̀").replace(/´/g, "́") );
 
$pagetext.html( $pagetext.html().replace(/`/g, "̀").replace(/´/g, "́") );
 
}
 
}
+
 
 +
var insertTab = function(textarea) {
 +
// get caret position/selection
 +
var start = textarea.selectionStart;
 +
var end = textarea.selectionEnd;
 +
 
 +
var $textarea = $(textarea);
 +
var value = $textarea.val();
 +
 
 +
// set textarea value to: text before caret + tab + text after caret
 +
$textarea.val(value.substring(0, start)
 +
+ "\t"
 +
+ value.substring(end));
 +
 
 +
// put caret at right position again (add one for the tab)
 +
textarea.selectionStart = textarea.selectionEnd = start + 1;
 +
};
 +
 
$("#wpTextbox1").on("keydown", function(e) {
 
$("#wpTextbox1").on("keydown", function(e) {
if(e.keyCode === 9 && !e.shiftKey) { // tab was pressed
+
if(e.keyCode === 9 && !e.shiftKey && mw.config.get("wgNamespaceNumber") == 250) {
// get caret position/selection
+
insertTab(this);
var start = this.selectionStart;
 
var end = this.selectionEnd;
 
 
var $this = $(this);
 
var value = $this.val();
 
 
// set textarea value to: text before caret + tab + text after caret
 
$this.val(value.substring(0, start)
 
+ "\t"
 
+ value.substring(end));
 
 
// put caret at right position again (add one for the tab)
 
this.selectionStart = this.selectionEnd = start + 1;
 
 
// prevent the focus lose
 
 
e.preventDefault();
 
e.preventDefault();
 
}
 
}

Версия от 11:41, 2 април 2014

// Dynamic layouts
if ( !self.ws_layouts ) {
 self.ws_layouts = {};
}
self.ws_layouts['Layout 1'] = {
	'#text-wrap':"",
	'#text-container':"",
	'#text':"",
	'.sidenote-right':"float:right; margin:0.5em; padding:3px; border:solid 1px gray; max-width:9em; text-indent:0em; text-align:left;",
	'.sidenote-left':"float:left; margin:0.5em; padding:3px; border:solid 1px gray; max-width:9em; text-indent:0em; text-align:left;",
	'.mw-editsection':"display:none;",
	'#headertemplate':""
};
self.ws_layouts['Layout 2'] = {
	'#text-wrap':"position:relative; margin-left:3.0em; margin-right:3.0em;",
	'#text-container':"width:40em; margin:0 auto;",
	'#text':"text-align:justify;",
	'.sidenote-right':"position:absolute; left:37em; width:16em; text-indent:0em; text-align:left;",
	'.sidenote-left':"position:absolute; left:37em; width:16em; text-indent:0em; text-align:left;",
	'.mw-editsection':"display:none;",
	'#headertemplate':""
};
self.ws_layouts['Layout 3'] = {
	'#text-wrap':"margin-left:3.0em;",
	'#text-container':"position:relative; min-width:60em; float:left; width:100%; margin-right:-23em;",
	'#text':"position:relative; text-align:justify; margin-right:23em; text-indent:0em; padding-left:0px; padding-right:0px; width:auto;",
	'.sidenote-right':"position:absolute; right:-10em; width:9em; background-color:#eeeeee; text-indent:0em; text-align:left;",
	'.sidenote-left':"position:absolute; right:-10em; width:9em; background-color:#eeeeee; text-indent:0em; text-align:left;",
	'.mw-editsection':"display:none;",
	'#headertemplate':"position:absolute; top:0em; right:-23em; width:21em; float:right; text-align:left;"
};
self.proofreadpage_add_container = true;

var wgAbsoluteScript = mw.config.get("wgServer")+mw.config.get("wgScript");
mw.loader.load(wgAbsoluteScript+'?title=MediaWiki:PageNumbers.js&action=raw&ctype=text/javascript');
importScript("МедияУики:Gadget-Quick diff.js");

jQuery(function($) {
	var extraSymbolMaps = {
		symbols: [
			{
				action: { type: "encapsulate", options: { pre: "⟨", post: "⟩" } },
				label: "⟨⟩"
			},
			"△", "▽", "◇", "`", "{{* * *}}", "{{?}}", "{{+}}"
		],
		greek: [
			"ἀ", "ὰ", "ᾰ", "ᾱ", "ᾶ", "ἐ", "ὐ", "ῡ", "ῦ", "ῐ", "ῑ", "ῖ", "ῶ", "ω̄"
		],
		cyrillic: [
			"Ѣ", "ѣ", "Ѥ", "ѥ", "Ѧ", "ѧ", "Ѩ", "ѩ", "Ѫ", "ѫ", "Ѭ", "ѭ", "Ѯ", "ѯ", "Ѱ", "ѱ", "Ѳ", "ѳ", "Ѵ", "ѵ"
		],
		Ударения: [
			'\u0300', '\u0301', '\u0306'
		]
	};
	var addExtraSymbols = function(pages) {
		$.each(extraSymbolMaps, function(key, symbols){
			if (!pages[key]) {
				pages[key] = {
					labelMsg: key,
					layout: "characters",
					characters: []
				};
			}
			$.each(symbols, function(i, symbol){
				pages[key].characters.push(symbol);
			});
		});
	};
	var reorderPages = function(pages) {
		var newPages = {};
		newPages = {
			symbols: pages.symbols,
			greek: pages.greek,
			cyrillic: pages.cyrillic,
			Ударения:  pages.Ударения
		};
		$.each(pages, function(i, v){
			newPages[i] = pages[i];
		});
		return newPages;
	};
	var putPageFormattingButtons = function(tools) {
		tools.htmlbold = {
			action: { type: "encapsulate", options: { pre: "<b>", post: "</b>" } },
			label: "Получер текст чрез маркер <b>",
			icon: '//upload.wikimedia.org/wikipedia/commons/a/ae/Toolbaricon_bold_b.png',
			group: "format", section: "main", type: "button"
		};
		tools.htmlitalic = {
			action: { type: "encapsulate", options: { pre: "<i>", post: "</i>" } },
			label: "Курсивен текст чрез маркер <i>",
			icon: '//upload.wikimedia.org/wikipedia/commons/c/c4/Toolbaricon_italic_i.png',
			type: "button"
		};
		tools.htmlspaced = {
			action: { type: "encapsulate", options: { pre: "<em>", post: "</em>" } },
			label: "Текст с разредка",
			icon: '//upload.wikimedia.org/wikipedia/commons/3/3b/Toolbaricon_regular_a_to_b.png',
			type: "button"
		};

		delete tools.bold;
		delete tools.italic;
	};
	$('#wpTextbox1').on('wikiEditor-toolbar-buildSection-characters', function (event, section) {
		addExtraSymbols(section.pages);
		section.pages = reorderPages(section.pages);
	});
	$('#wpTextbox1').on('wikiEditor-toolbar-buildSection-main', function (event, section) {
		if (mw.config.get("wgCanonicalNamespace") == "Page") {
			putPageFormattingButtons(section.groups.format.tools);
		}
		section.groups.insert.tools.horizline = {
			action: { type: "encapsulate", options: { pre: "----\n" } },
			label: "Хоризонтална линия",
			icon: '//upload.wikimedia.org/wikipedia/commons/b/b4/Toolbaricon_rule.png',
			type: "button"
		};
	});

	var $pagetext = $("#bodyContent").find(".pagetext");
	if ($pagetext.length) {
		$pagetext.html( $pagetext.html().replace(/`/g, "&#768;").replace(/´/g, "&#769;") );
	}

	var insertTab = function(textarea) {
		// get caret position/selection
		var start = textarea.selectionStart;
		var end = textarea.selectionEnd;

		var $textarea = $(textarea);
		var value = $textarea.val();

		// set textarea value to: text before caret + tab + text after caret
		$textarea.val(value.substring(0, start)
			+ "\t"
			+ value.substring(end));

		// put caret at right position again (add one for the tab)
		textarea.selectionStart = textarea.selectionEnd = start + 1;
	};
	
	$("#wpTextbox1").on("keydown", function(e) {
		if(e.keyCode === 9 && !e.shiftKey && mw.config.get("wgNamespaceNumber") == 250) {
			insertTab(this);	
			e.preventDefault();
		}
	});
	$("#wpTextbox1").on("focus", function() {
		$(this).height($(".prp-page-image:eq(0)").height());
	});
});