Разлика между версии на „МедияУики:Common.js“
(change tab insertion logic - do it only in Page namespace; add a character map for combining accents) |
(customize jquery.prpZoom) |
||
Ред 1: | Ред 1: | ||
− | // Dynamic layouts | + | var wgAbsoluteScript = mw.config.get("wgServer")+mw.config.get("wgScript"); |
− | if ( !self.ws_layouts ) { | + | |
− | + | var enhancePageViewing = function() { | |
− | } | + | // Dynamic layouts |
− | self.ws_layouts['Layout 1'] = { | + | if ( !self.ws_layouts ) { |
− | + | self.ws_layouts = {}; | |
− | + | } | |
− | + | self.ws_layouts['Layout 1'] = { | |
− | + | '#text-wrap':"", | |
− | + | '#text-container':"", | |
− | '.mw-editsection':"display:none;", | + | '#text':"", |
− | '#headertemplate':"" | + | '.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 | + | var enhancePageEditing = function() { |
− | |||
− | |||
− | |||
− | |||
var extraSymbolMaps = { | var extraSymbolMaps = { | ||
symbols: [ | symbols: [ | ||
Ред 120: | Ред 131: | ||
}; | }; | ||
}); | }); | ||
− | |||
− | |||
− | |||
− | |||
− | |||
var insertTab = function(textarea) { | var insertTab = function(textarea) { | ||
Ред 144: | Ред 150: | ||
$("#wpTextbox1").on("keydown", function(e) { | $("#wpTextbox1").on("keydown", function(e) { | ||
− | if(e.keyCode === 9 && !e.shiftKey | + | if(e.keyCode === 9 && !e.shiftKey) { |
insertTab(this); | insertTab(this); | ||
e.preventDefault(); | e.preventDefault(); | ||
Ред 152: | Ред 158: | ||
$(this).height($(".prp-page-image:eq(0)").height()); | $(this).height($(".prp-page-image:eq(0)").height()); | ||
}); | }); | ||
+ | |||
+ | 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 ); | ||
+ | } | ||
+ | }); | ||
+ | }); | ||
+ | |||
+ | }; | ||
+ | |||
+ | 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(); | ||
+ | } | ||
+ | } |
Версия от 16:49, 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; }; $("#wpTextbox1").on("keydown", function(e) { if(e.keyCode === 9 && !e.shiftKey) { insertTab(this); e.preventDefault(); } }); $("#wpTextbox1").on("focus", function() { $(this).height($(".prp-page-image:eq(0)").height()); }); 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 ); } }); }); }; 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(); } }