Разлика между версии на „МедияУики: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, | |
− | + | greek: pages.greek, | |
− | + | 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 | + | if(e.keyCode === 9 && !e.shiftKey && mw.config.get("wgNamespaceNumber") == 250) { |
− | + | insertTab(this); | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
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, "̀").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) { 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()); }); });