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

От Читалие
Направо към: навигация, търсене
(customize jquery.prpZoom)
(call updateTextboxHeight() on start after a small timeout)
 
Ред 147: Ред 147:
 
// put caret at right position again (add one for the tab)
 
// put caret at right position again (add one for the tab)
 
textarea.selectionStart = textarea.selectionEnd = start + 1;
 
textarea.selectionStart = textarea.selectionEnd = start + 1;
 +
};
 +
var updateTextboxHeight = function(textbox) {
 +
$textbox = textbox ? $(textbox) : $("#wpTextbox1");
 +
$textbox.height($(".prp-page-image:eq(0)").height());
 
};
 
};
 
 
Ред 156: Ред 160:
 
});
 
});
 
$("#wpTextbox1").on("focus", function() {
 
$("#wpTextbox1").on("focus", function() {
$(this).height($(".prp-page-image:eq(0)").height());
+
updateTextboxHeight(this);
 
});
 
});
  
Ред 181: Ред 185:
 
}
 
}
 
});
 
});
 +
setTimeout(updateTextboxHeight, 2000);
 
});
 
});
  

Текуща версия към 17:11, 2 април 2014

var wgAbsoluteScript = mw.config.get("wgServer")+mw.config.get("wgScript");

var enhancePageViewing = function() {
	// 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;
	
	mw.loader.load(wgAbsoluteScript+'?title=MediaWiki:PageNumbers.js&action=raw&ctype=text/javascript');

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

var enhanceDiffs = function() {
	importScript("МедияУики:Gadget-Quick diff.js");
};

var enhancePageEditing = 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 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;
	};
	var updateTextboxHeight = function(textbox) {
		$textbox = textbox ? $(textbox) : $("#wpTextbox1");
		$textbox.height($(".prp-page-image:eq(0)").height());
	};
	
	$("#wpTextbox1").on("keydown", function(e) {
		if(e.keyCode === 9 && !e.shiftKey) {
			insertTab(this);	
			e.preventDefault();
		}
	});
	$("#wpTextbox1").on("focus", function() {
		updateTextboxHeight(this);
	});

	mw.loader.using( 'jquery.prpZoom', function() {
		$.widget( "mw.prpZoom", $.mw.prpZoom, {
			options: {
				zoomStep: 10
			},
			_zoom: function( proportion ) {
				var position = this._getPosition();
				if (!window.stickyTopByZoom) {
					position.left -= proportion * this.zoomStep.width;
					position.top -=  proportion * this.zoomStep.height;
				}
				position.width += 2 *  proportion * this.zoomStep.width;
				position.height += 2 *  proportion * this.zoomStep.height;
		
				var scaleFactor = this._getScaleFactor( position );
				if( this.options.minScaleFactor > scaleFactor || scaleFactor > this.options.maxScaleFactor ) {
					return;
				}
		
				this._applyPosition( position );
			}
		});
		setTimeout(updateTextboxHeight, 2000);
	});

};

jQuery(function($) {
	switch (mw.config.get("wgCanonicalNamespace")) {
		case "Page":
			switch (mw.config.get("wgAction")) {
				case "edit":
					enhancePageEditing();
					break;
				case "view":
					enhancePageViewing();
					break;
			}
			break;
	}
});

switch (mw.config.get("wgCanonicalSpecialPageName")) {
	case "Recentchanges":
	case "Contributions":
		enhanceDiffs();
		break;
	default:
		if (mw.config.get("wgAction") == "history") {
			enhanceDiffs();
		}
}