Wužiwar:Tlustulimu/kneflki.js
Napohlad
Kedźbu: Po składowanju dyrbiš snano pufrowak swojeho wobhladowaka wuprózdnić, zo by změny widźał.
- Firefox/Safari: Dźerž tastu Umsch tłóčenu a klikń na Znowa abo tłóč pak Strg-F5 abo Strg-R (⌘-R na Mac);
- Google Chrome: Tłóč na Strg-Umsch-R (⌘-Umsch-R na Mac)
- Internet Explorer: Dźěrź tastu Strg tłóčen a klikń na Znowa abo tłóč Strg-F5.
- Opera: Dźi k Menü → Einstellungen (Opera → Einstellungen na Mac) a potom k Datenschutz & Sicherheit → Browserdaten löschen → Gespeicherte Bilder und Dateien.
/* eslint-disable indent */
/*
</pre>
== Automatyczne opisy zmian ==
; Autor (Author): [[:pl:User:Adziura|Adam Dziura]]
; Poprawki (Fixes): [[:pl:User:Nux|Maciej Jaros]]
<pre>
*/
/* global ve, mw, jQuery */
(function($) {
var isVe = false;
var opisBtns = null;
/** Funkcje pomocnicze do dodawania przycisków. */
var przyciski = {
/**
* Uproszczona forma przyciskiDodaj.
*
* @example Przykład własnego opisu zmian (tekst przycisku i opis zmian te same):
* <pre>
przyciski.zmiana({tekst:'archiwizacja'})
* </pre>
*
* @example Przykład krótkiego opisu (porównanie starego i nowego formatu):
* <pre>
przyciskiDodaj(opisBtns, 'int.', 'dodajOpis("int.")', kl, 'Poprawiono interpunkcję');
przyciski.zmiana({tekst:'int.', dlugie:'Poprawiono interpunkcję'})
* </pre>
*
* @example Pełne, typowe wywołanie:
* <pre>
przyciskiDodaj(opisBtns, 'linki-zew', 'dodajOpis("linki zewnętrzne")', kl, 'Poprawiono/dodano linki zewnętrzne');
przyciski.zmiana({tekst:'linki-zew', zmiana:'linki zewnętrzne', dlugie:'Poprawiono/dodano linki zewnętrzne'})
* <pre>
*
* @param {Object} opcje Opcje.
*/
zmiana: function(opcje)
{
var defaults = {
tekst: '',
zmiana: '',
dlugie: '',
klasa: '',
};
var params = $.extend({}, defaults, opcje);
if (params.zmiana.length < 1) {
params.zmiana = params.tekst;
}
if (params.dlugie.length < 1) {
params.dlugie = params.tekst;
}
var pAkcja = function () {
dodajOpis(params.zmiana);
};
przyciskiDodaj(opisBtns, params.tekst, pAkcja, params.klasa, params.dlugie);
}
};
/**
* Inicjowanie przycisków.
*
* @param {Boolean} useVe Jeśli prawda to przyjmujemy, że używany jest VE.
*/
function initBtns(useVe)
{
opisBtns = document.createElement('span');
opisBtns.id = 'userSummaryButtons';
// export
// zgodność z [[Wikipedysta:Skalee/dodatkowe przyciski opisu edycji.js]]
window.przyciskiOpisBtns = opisBtns;
if(useVe === true) {
opisBtns.style.cssText = 'border: solid 1px #ccc; border-top: none; border-bottom: 0; display: block; overflow: hidden; z-index: 1; padding: 0.25em 0.5em;';
isVe = true;
// evil…
var realInitialize = ve.ui.MWSaveDialog.prototype.initialize;
ve.ui.MWSaveDialog.prototype.initialize = function () {
realInitialize.call( this );
this.editSummaryInput.$element.after( opisBtns );
};
} else {
//
// sprawdzenie, czy to jest pole edycji z opisem zmian (nie jest takie jako nagłówek)
var el_label = document.getElementById('wpSummaryLabel');
if (el_label)
{
if (el_label.innerHTML.indexOf('Zjeće')==-1)
return; // stop
}
else
{
return; // stop
}
//
// dodanie elementu okalającego przyciski bezpośrednio za opisem zmian
// Wstawiamy po 'wpSummaryWidget' dla wersji z OOUI, po 'wpSummary' dla wersji bez
var el_summary_wrapper;
el_summary_wrapper = document.getElementById('wpSummaryWidget');
if (!el_summary_wrapper) el_summary_wrapper = document.getElementById('wpSummary');
$(el_summary_wrapper).after(opisBtns);
}
//
// dodanie przycisku specjalnego - do rozwijania skrótów
var btn = przyciskiDodaj(opisBtns, '+rozwiń skróty', rozwinSkrotyOpisowZm, '',
'Rozwiń skróty opisów zmian');
//btn.style.cssText = 'position:absolute; top:0; right:0;';
btn.style.cssText = 'float:right;border-color:#dd0;background-color:#dea';
btn.id = 'btn_opisy_zm_waxon_off';
btn.wax_on = false;
//
// dodawanie przycisków
addBtns();
mw.hook('userjs.przyciskiOpis.gotowe').fire(przyciski, opisBtns);
}
function addBtns() {
var kl = ''; // klasa jest niepotrzebna (wszystkie <a> w #userSummaryButtons ustawione poprzez CSS)
if (opisBtns)
{
// drobne różne
przyciskiDodaj(opisBtns, 'wikif.', 'dodajOpis("wikificěrowanje")', kl,
'Sym wikificěrowanje činił');
przyciskiDodaj(opisBtns, 'format.', 'dodajOpis("formatěrowanje")', kl,
'Polěpšene formatěrowanje');
przyciskiDodaj(opisBtns, 'stil', 'dodajOpis("stilowe polěpšenja")', kl,
'Polěpšeny stil rozłoženja');
przyciskiDodaj(opisBtns, 'prawp.', 'dodajOpis("prawopis")', kl,
'Polěpšenej prawopis a interpunkcija');
opisBtns.appendChild(document.createTextNode(' ')); // wotstawk
przyciskiDodaj(opisBtns, 'iwotk', 'dodajOpis("interny wotkaz")', kl,
'Dodawk internych wotkazow (links)');
przyciskiDodaj(opisBtns, 'iwiki', 'dodajOpis("interwiki")', kl,
'Dodawk mjezyrěčnych wotkazow (interwiki)');
przyciskiDodaj(opisBtns, 'kor-iwiki', 'dodajOpis("korektura interwiki")', kl,
'Polěpšene mjezyrěčne wotkazy (interwiki)');
przyciskiDodaj(opisBtns, 'kat.', 'dodajOpis("kategorija")', kl,
'Polěpšena kategorizacija');
opisBtns.appendChild(document.createTextNode(' ')); // wotstawk
// techniske
przyciskiDodaj(opisBtns, 'předł.', 'dodajOpis("předłoha")', kl,
'Přidaće / změna předłohi');
przyciskiDodaj(opisBtns, 'del', 'dodajOpis("spěšne wušmórnjenje")', kl,
'Strona je k wušmórjenju namjetowana');
przyciskiDodaj(opisBtns, 'wob.', 'dodajOpis("wobraz")', kl,
'Nowy wobraz');
przyciskiDodaj(opisBtns, 'info.', 'dodajOpis("infokašćik")', kl,
'Nowy infokašćik');
przyciskiDodaj(opisBtns, 'nawi.', 'dodajOpis("nawigaciska lajsta")', kl,
'Nowa nawigaciska lajsta');
przyciskiDodaj(opisBtns, 'zar.', 'dodajOpis("zarodk")', kl,
'Markěrowanje kaž zarodk');
przyciskiDodaj(opisBtns, 'red.', 'dodajOpis("redirect (dale posrědkowanje)")', kl,
'Dodawk/Změna redirecta');
przyciskiDodaj(opisBtns, 'wit.', 'dodajOpis("witaj")', kl,
'Dodaće předłohi Witaj');
//opisBtns.appendChild(document.createTextNode(' ')); // wotstawk
opisBtns.appendChild(document.createElement('br')); // nowa linka
// redakcija
przyciskiDodaj(opisBtns, 'dod.', 'dodajOpis("dodawk")', kl,
'Dodate nowe fakty');
przyciskiDodaj(opisBtns, 'kor.', 'dodajOpis("korektura")', kl,
'Sym něšto korigował');
przyciskiDodaj(opisBtns, 'přeł.', 'dodajOpis("přełožk")', kl,
'Sym něšto přełožił');
przyciskiDodaj(opisBtns, 'wobnow.', 'dodajOpis("wobnowić datajow")', kl,
'Wobnowjene zestarjenych datajow');
przyciskiDodaj(opisBtns, 'rew.', 'dodajOpis("rewert")', kl,
'Předchadna změna je cofnjena (rewert)');
}
}
/**
* Dodaj przycisk zmian.
*
* @param {Element} elUserBtns Element okalający, do którego dodać przycisk (zwykle: opisBtns).
* @param {String} pTekst Tekst w środku przycisku.
* @param {String|Function} pAkcja Akcja jaką wykonać przy naciśnięciu; może być ciągiem poleceń.
* @param {String} pKlasa Dodatkowa klasa przycisku jeśli konieczna.
* @param {String} pOpis Dłuższy/rozwinięty opis akcji.
* @returns {Element} Zwraca dodany element.
*/
function przyciskiDodaj(elUserBtns, pTekst, pAkcja, pKlasa, pOpis)
{
var nowyBtn = document.createElement('a');
// atrybuty
nowyBtn.appendChild(document.createTextNode(pTekst));
nowyBtn.title = pOpis;
if (pKlasa !== '') {
nowyBtn.className = pKlasa;
}
nowyBtn.onclick = (typeof pAkcja === 'function') ? pAkcja : new Function(pAkcja);
// dodanie przycisku
elUserBtns.appendChild(nowyBtn);
return nowyBtn;
}
/**
* Funkcja do dodania opisu zmian.
*
* @param {String} opis Opis zmian.
*/
function dodajOpis(opis)
{
var wpS = (isVe) ? $( '.ve-ui-mwSaveDialog-summary textarea' )[0] : wpS = document.editform.wpSummary;
if (wpS.value.indexOf(opis) == -1)
{
if (wpS.value !== '' && wpS.value.charAt(wpS.value.length-2) != '/')
{
wpS.value += ', ' + opis;
}
else
{
wpS.value += opis;
}
$(wpS).trigger('change');
}
}
var editActions = [
"edit", "submit", "parsermigration-edit"
];
if (editActions.indexOf(mw.config.get('wgAction')) >= 0)
{
if (mw.config.get('wgNamespaceNumber') > -1)
{
jQuery(document).ready(initBtns);
}
}
// broken on mobile, desktop only
if (mw.config.get('skin') !== 'minerva') {
mw.loader.using( 'ext.visualEditor.desktopArticleTarget.init' ).done( function () {
mw.libs.ve.addPlugin( function () {
return mw.loader.using( 'ext.visualEditor.mwcore' )
.done( function () {
initBtns(true);
} );
} );
} );
}
//
// rozwiajanie skrótów do pełnych opisów i z powrotem
function rozwinSkrotyOpisowZm()
{
var els = opisBtns.getElementsByTagName('a');
for (var i=0; i<els.length; i++)
{
var tit = els[i].title;
els[i].title = els[i].innerHTML;
els[i].innerHTML = tit;
}
var btn = document.getElementById('btn_opisy_zm_waxon_off');
btn.innerHTML = (btn.wax_on === false) ? ' -zwiń skróty' : '+rozwiń skróty';
btn.wax_on = !btn.wax_on;
}
// ~export
window.przyciskiDodaj = przyciskiDodaj;
window.dodajOpis = dodajOpis;
})(jQuery);