Wikipedista:Dvorapa/tools.js
Vzhled
Poznámka: Po uložení musíte vyprázdnit mezipaměť vašeho prohlížeče, jinak změny neuvidíte.
/* <onlyinclude> __NOEDITSECTION__
'''Mikroudělátka''' k vložení do uživatelského skriptu (na stránce [[Speciální:Moje stránka/common.js|common.js]]). Pokud chcete využít některé z následujících mikroudělátek, '''následujte návod [[#Instalace]]'''.
Většina mikroudělátek pochází od [[Wikipedista:Mormegil|Mormegila]] ([[Wikipedista:Mormegil/tools.js.help|zdroj]]), některá bohužel již nejsou funkční, postupně ale budou vylepšována a opravována.
Pokud chcete sledovat změny, opravy chyb a novén funkce v udělátcích, případně zkoušet nová udělátka, neklikejte na hvězdičku nahoře, ale klikněte [https://cs.wikipedia.org/w/index.php?title=Wikipedista:Dvorapa/tools.js&action=watch sem].
</onlyinclude>
****************************************************************************
****************************************************************************
** **
** Dokumentaci si můžete přečíst na [[Wikipedista:Dvorapa/tools.js/doc]]. **
** **
****************************************************************************
********************p********************************************************
<onlyinclude>
== Instalace ==
Pokud chcete jakékoliv z následujících mikroudělátek používat, musíte nejprve na začátek [[Speciální:Moje stránka/common.js|svého souboru ''common.js'']] vložit odkaz na '''tento soubor'''. K tomu slouží následující řádek kódu:
<pre>
mw.loader.load( '/w/index.php?title=Wikipedista:Dvorapa/tools.js&action=raw&ctype=text/javascript' );
</pre>
Dále si tam vložte řádky podle toho, která mikroudělátka chcete použít (viz „Použití“ u každého mikroudělátka):
__TOC__
== Tlačítka shrnutí ==
; Funkce
: Pod editační okno přidá panel s tlačítky pro vložení často používaných shrnutí editace (převzato částečně z udělátka na [[:sk:MediaWiki:Gadget-edit-summaries.js|skwiki]] a převážně z udělátka na [[:he:מדיה_ויקי:Gadget-Summarieslist.js|hewiki]].
; Použití
:Základní:
jQuery(function($) { addSummaryToolbar(); });
:Vlastní:
jQuery(function($) {
addSummaryToolbar(
["vlastní", {"title": "ahoj", "content": "Vloží ahoj"}, {"title": "svět", "content": "Vloží svět"},
"další", {"title": "ahoj světe", "content": "Vloží ahoj světe"}],
["diskuse", {"title": "re", "content": "Vloží re"}],
["ahoj", "re"]
);
});
; Parametry
:* První parametr obsahuje nadpisy a seznamy dvojic {"title": "shrnutí", "content": "popisek"} oddělené čárkou.
:* Druhý parametr může být buď prázdný řetězec, nebo nadpisy a seznamy dvojic pro diskusní stránky.
:* Třetí parametr může být buď prázdný řetězec, nebo seznam shrnutí, při jejichž vložení se automaticky zaškrtne tlačítko malé editace. Při vložení jiného než zde uvedeného shrnutí se znovu samo odškrtne.
</onlyinclude><pre> */
function addSummaryToolbar(main, talk, minor) {
var installed = false;
function installSummary($summaryBox, smallArea) {
if (installed) return;
installed = true;
function addSummary() {
var summary = $(this).data('summary');
var text = summary.title;
var sum = $summaryBox,
curr = sum.val();
var comma = curr.length > 0 && curr.charAt(curr.length - 2) != "/";
sum.val(curr + (comma ? ', ' : '') + text).trigger('input');
$("#wpMinoredit").prop('checked', summary.minor || $.inArray(text, minorSummaries) + 1);
}
var summaries = window.summaries || [];
if (main === ("" || undefined)) {
summaries = summaries.concat([
"malé",
{"title": "překlepy", "content": "Oprava překlepů"},
{"title": "odkazy", "content": "Úprava odkazů na jiné články Wikipedie"},
{"title": "kategorie", "content": "Úprava kategorií"},
{"title": "externí odkazy", "content": "Úprava externích odkazů"},
"běžné",
{"title": "pravopis", "content": "Oprava pravopisu"},
{"title": "gramatika", "content": "Oprava gramatiky"},
{"title": "typografie", "content": "Oprava typografie"},
{"title": "formulace", "content": "Úprava formulace"},
{"title": "aktualizace", "content": "Aktualizace údajů"},
{"title": "rozšíření", "content": "Rozšíření článku"},
"technické",
{"title": "obrázek", "content": "Přidání, změna, smazání obrázku" },
{"title": "infobox", "content": "Vložení/úprava infoboxu"},
{"title": "šablona", "content": "Vložení šablony"}
]);
} else {
summaries = summaries.concat(main);
}
if (mw.config.get('wgNamespaceNumber') % 2 == 1 || mw.config.get('wgNamespaceNumber') == 4) {
if (talk === ("" || undefined)) {
summaries = summaries.concat([
"diskuse",
{"title": "odpověď", "content": "Odpověď"},
{"title": "návrh", "content": "Návrh"},
{"title": "dotaz", "content": "Dotaz"}
]);
} else {
summaries = summaries.concat(talk);
}
}
var minorSummaries = [];
if (minor === ("" || undefined)) {
minorSummaries = ["překlepy", "odkazy", "kategorie", "externí odkazy"];
} else {
minorSummaries = minor;
}
var div = $("<div>", {
id: "summariesList"
})
.css({
width: (smallArea ? "100%" : "65%"),
padding: "2px",
fontSize: "85%",
lineHeight: "18px"
});
for (var i = 0; i < summaries.length; i++) {
var summary = summaries[i];
var summaryButton = $('<span>').css({
marginLeft: '0.4em',
whiteSpace: 'nowrap'
}).data({
summary: summary
});
if (typeof summary == "string") {
div.append(smallArea ? '<br>' : ' '); //allow text wrap here
summaryButton.text(summary + ':');
} else {
summaryButton.html(' ' + summary.title + ' ')
.addClass('clickable-edit-summary')
.attr('title', summary.content || '')
.css({
'background-color': '#f9f9f9',
border: 'dotted 1px #708090',
cursor: 'pointer'
})
.click(addSummary);
if (smallArea) div.append(' ');
}
div.append(summaryButton);
}
$summaryBox.after(div);
}
if ($.inArray(mw.config.get('wgAction'), ['edit', 'submit']) + 1) {
installSummary($('.editOptions #wpSummary'), false);
}
mw.hook('ve.saveDialog.stateChanged').add(function() {
var target = ve.init.target;
var $summaryBox = target.saveDialog.$body.find('.ve-ui-mwSaveDialog-summary textarea');
installSummary($summaryBox, true);
});
}
/* </pre><onlyinclude>
== Odkazy na oblíbené stránky ==
; Funkce
: Do horní lišty přidá odkazy na oblíbené stránky.
; Použití
:Základní:
jQuery(function($) { addLinktoolbar([["Portál:Historie", "Portál"], ["Wikipedie:Pod lípou", "Pod lípou"]]); });
:Pokročilé:
jQuery(function($) { addLinktoolbar([["Wikipedie:Žádost o práva správce", "RfA"], ["Wikipedie:Hlasování o smazání", "VfD"]], "Speciální:Poslední změny", "Pracovní", "p-tb", "t-upload"); });
; Parametry
:* První parametr obsahuje seznam dvojic ["odkaz na stránku", "zobrazený text odkazu"] oddělených čárkou. Pokud je místo dvojice prázdná položka "", vloží se na její místo oddělovač.
:* Druhý parametr může být buď prázdný řetězec, nebo název stránky, na které se pouze mají tyto odkazy zobrazit.
:* Třetí parametr může být buď prázdný řetězec, nebo nadpis lišty
:* Čtvrtý parametr může být buď prázdný řetězec, nebo ID jiného prvku, na začátek kterého se mají odkazy vložit.
:* Pátý parametr může být buď prázdný řetězec, nebo ID jiného prvku, před který se mají odkazy vložit.
</onlyinclude><pre> */
function addLinktoolbar(items, page, caption, parent, next) {
if (parent === ("" || undefined)) parent = 'p-personal';
if (next === ("" || undefined)) next = 'pt-preferences';
if ((page === ("" || undefined)) || (page.replace(' ', '_') === mw.config.get( 'wgPageName' ))) {
if (caption !== ("" || undefined)) {
mw.util.addPortletLink(
parent,
'',
caption,
next + '-caption',
null,
null,
'#' + next
);
}
for (var i = 0; i < items.length; i++) {
if (items[i] === []) {
mw.util.addPortletLink(
parent,
'',
'----',
next + '-spacer',
null,
null,
'#' + next
);
} else {
mw.util.addPortletLink(
parent,
'/wiki/' + items[i][0],
items[i][1],
next + '-' + items[i][1],
items[i][0],
null,
'#' + next
);
}
}
}
}
/* </pre><onlyinclude>
== Oblíbená interwiki ==
; Funkce
: Přeuspořádá interwiki odkazy tak, aby vybrané jazyky byly navrchu a případně buď ještě zvýrazní vybrané jazyky nebo skryje odkazy na ostatní jazyky.
; Použití
jQuery(function($) { reorderInterwiki(['en', 'de', 'sk'], false); });
; Parametry
:* První parametr obsahuje seznam jazykových kódů cizojazyčných Wikipedií oddělených čárkou.
:* Druhý parametr obsahuje <code>true</code> pokud se mají zobrazovat ''pouze'' vybrané jazyky nebo <code>false</code> pokud se mají zobrazovat i ostatní a vybrané se mají jen zobrazovat navrchu a tučně.
</onlyinclude><pre> */
function reorderInterwiki(priorityLanguages, removeOthers) {
langBox = document.getElementById('p-lang');
if (!langBox) return;
langList = langBox.getElementsByTagName('ul');
if (!langList) return;
langList = langList[0];
langItems = langList.getElementsByTagName('li');
priorityList = [];
for (var l = 0; l < priorityLanguages.length; l++) {
var reLanguageMatch = new RegExp('(^|\\s)interwiki-' + priorityLanguages[l] + '(\\s|$)');
for (var i = 0; i < langItems.length; i++) {
var item = langItems[i];
if (reLanguageMatch.test(item.className)) {
langList.removeChild(item);
priorityList.push(item);
break;
}
}
}
if (removeOthers) {
while (langList.hasChildNodes()) {
langList.removeChild(langList.childNodes[0]);
}
}
if (langList.hasChildNodes()) {
var firstNode = langList.childNodes[0];
for (var j = 0; j < priorityList.length; j++) {
langList.insertBefore(priorityList[j], firstNode);
priorityList[j].style.fontWeight = 'bold';
}
} else {
for (var k = 0; k < priorityList.length; k++) {
langList.appendChild(priorityList[k]);
}
}
}
/* </pre><onlyinclude>
== Odkazy na jiné Wikipedie při chybějícím interwiki ==
; Funkce
: U stránky bez interwiki zobrazí odkazy na stejně pojmenované stránky na vybraných cizojazyčných Wikipediích.
; Použití
jQuery(function($) { showDefaultInterwiki(['cs', 'en', 'sk']); });
; Parametry
: Buď seznam jazykových kódů cizojazyčných Wikipedií oddělených čárkou, nebo <code>null</code> pro nějaké výchozí
</onlyinclude><pre> */
function showDefaultInterwiki(langs) {
if (!langs || langs.length === 0) {
langs = ['cs', 'en', 'de', 'sk', 'pl', 'fr'];
}
// stránky, které už interwiki mají
var langBox = document.getElementById('p-lang');
if (!langBox || document.getElementById('wbc-linkToItem-link')) return;
// bez editací, historie atd., s výjimkou situace, kdy stránka dosud ani neexistuje (a ošetřit NS MediaWiki)
if (!document.getElementById('t-cite') && document.getElementById('ca-history') && mw.config.get('wgNamespaceNumber') !== 8) return;
if (!langBox) {
langBox = document.createElement('div');
langBox.id = 'p-lang';
langBox.className = mw.config.get('skin') === 'vector' ? 'portal' : 'portlet';
var caption = document.createElement('h5');
caption.appendChild(document.createTextNode('totéž jinde'));
langBox.appendChild(caption);
}
var langBody = document.createElement('div');
langBody.className = mw.config.get('skin') === 'vector' ? 'body' : 'pBody';
langBox.appendChild(langBody);
var langList = document.createElement('ul');
langBody.appendChild(langList);
for (var i = 0; i < langs.length; ++i) {
var lang = langs[i];
if (lang == mw.config.get('wgContentLanguage')) continue;
var item = document.createElement('li');
item.className = 'interwiki-' + lang;
langList.appendChild(item);
var link = document.createElement('a');
var ns = mw.config.get('wgCanonicalNamespace');
if (ns.length > 0) ns += ':';
var title = mw.config.get('wgTitle');
if (ns === 'Special') title = mw.config.get('wgCanonicalSpecialPageName');
link.href = '//' + lang + '.wikipedia.org/wiki/' + ns + title;
link.appendChild(document.createTextNode(lang));
item.appendChild(link);
}
var columnOne = document.getElementById(mw.config.get('skin') === 'vector' ? 'mw-panel' : 'column-one');
columnOne.appendChild(langBox);
}
/* </pre><onlyinclude>
== Odkazy na kapitoly článku ==
; Funkce
: Do článků přidá před každý nadpis odkaz, který vede na nadpis. Užitečné, pokud chcete někoho odkázat přímo na určitou sekci a nechce se vám ji hledat v (třeba příliš dlouhém) obsahu.
; Použití
jQuery(function($) { addLinksBeforeHeadings(); });
</onlyinclude><pre> */
function addLinksBeforeHeadings() {
$('.mw-headline').each(function(headline) {
small = document.createElement('small');
link = document.createElement('a');
headline = $(this);
$(link).attr('href', function() {
return '#' + $(headline).attr('id');
});
$(link).text('#');
$(small).append(link);
$(small).append(' ');
$(this).before(small);
});
}
/* </pre> */