MediaWiki:Gadget-edit-summaries.js

Z Nonsensopedii, polskiej encyklopedii humoru

Uwaga: aby zobaczyć zmiany po zapisaniu, może zajść potrzeba wyczyszczenia pamięci podręcznej przeglądarki.

  • Firefox / Safari: Przytrzymaj Shift podczas klikania Odśwież bieżącą stronę, lub naciśnij klawisze Ctrl+F5 lub Ctrl+R (⌘-R na komputerze Mac)
  • Google Chrome: Naciśnij Ctrl-Shift-R (⌘-Shift-R na komputerze Mac)
  • Internet Explorer: Przytrzymaj Ctrl jednocześnie klikając Odśwież lub naciśnij klawisze Ctrl+F5
  • Konqueror: Kliknij polecenie Odśwież lub naciśnij klawisz F5
  • Opera: Wyczyść pamięć podręczną w Narzędzia → Preferencje
/*
</pre>

== Automatyczne opisy zmian ==
; Autor (Author): [[:wikipedia:User:Adziura|Adam Dziura]]
; Poprawki (Fixes): [[:wikipedia:User:Nux|Maciej Jaros]]
; Źródło: [[:wikipedia:MediaWiki:Gadget-edit-summaries.js]]
<pre>
*/

function przyciskiOpis(useVE)
{
	var opisBtns = document.createElement('span');
	opisBtns.id = 'userSummaryButtons';
	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;';
		window.przyciskiOpisVE = true;
		// evil…
		var realInitialize = ve.ui.MWSaveDialog.prototype.initialize;
		ve.ui.MWSaveDialog.prototype.initialize = function () {
			realInitialize.call( this );
			this.editSummaryInput.$element.after( opisBtns );
		};
	} else {
		// stop before starting
		if (window.przyciskiOpisDone)
			return;

		//
		// 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('pis zmian')==-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
	var kl = '';	// klasa jest niepotrzebna (wszystkie <a> w #userSummaryButtons ustawione poprzez CSS)
	if (opisBtns)
	{
		// drobne różne
		przyciskiDodaj(opisBtns, 'ort.', 'dodajOpis("ort.")', kl,
			'Poprawiono błąd ortograficzny');
		przyciskiDodaj(opisBtns, 'lit.', 'dodajOpis("lit.")', kl,
			'Poprawiono literówkę');
		przyciskiDodaj(opisBtns, 'int.', 'dodajOpis("int.")', kl,
			'Poprawiono interpunkcję');
		przyciskiDodaj(opisBtns, 'jęz.', 'dodajOpis("jęz.")', kl,
			'Poprawiono błędy językowe');
		przyciskiDodaj(opisBtns, 'linki-popr', 'dodajOpis("poprawa linków")', kl,
			'Poprawiono linki');
		przyciskiDodaj(opisBtns, 'tech.', 'dodajOpis("drobne techniczne")', kl,
			'Drobne zmiany techniczne');
		przyciskiDodaj(opisBtns, 'aktualizacja', 'dodajOpis("aktualizacja")', kl,
			'Zaktualizowano artykuł');	
		
		przyciskiDodaj(opisBtns, 'kat.', 'dodajOpis("kategoria")', kl,
			'Poprawiono/dodano kategorię');

		opisBtns.appendChild(document.createTextNode(' ')); // odstęp

		//if(useVE !== true)
		//	opisBtns.appendChild(document.createElement('br'));

		// do użytkownika i około administracyjne
		przyciskiDodaj(opisBtns, 'witaj', 'dodajOpis("witaj")', kl,
			'Dodano powitanie dla użytkownika');
		przyciskiDodaj(opisBtns, 'ostrzeżenie', 'dodajOpis("ostrzeżenie")', kl,
			'Dodano ostrzeżenie dla użytkownika');
		przyciskiDodaj(opisBtns, 'sdu', 'dodajOpis("SDU")', kl,
			'Zgłoszono artykuł na SDU');
		przyciskiDodaj(opisBtns, 'ek', 'dodajOpis("EK")', kl,
			'Zgłoszono artykuł do ekspresowego skasowania');
		przyciskiDodaj(opisBtns, 'rew.', 'dodajOpis("rewert")', kl,
			'Przywrócenie poprzedniej wersji');

		opisBtns.appendChild(document.createTextNode(' ')); // odstęp

		// insze do dyskusji i głosowań
		przyciskiDodaj(opisBtns, 'za', 'dodajOpis("za")', kl,
			'Zagłosowano za');
		przyciskiDodaj(opisBtns, 'przeciw', 'dodajOpis("przeciw")', kl,
			'Zagłosowano przeciw');
		przyciskiDodaj(opisBtns, 'komentarz', 'dodajOpis("komentarz")', kl,
			'Dodano komentarz w dyskusji lub do głosu');

		przyciskiDodaj(opisBtns, 'pytanie', 'dodajOpis("pytanie")', kl,
			'Zadano pytanie w dyskusji');
		przyciskiDodaj(opisBtns, 'odp.', 'dodajOpis("odpowiedź")', kl,
			'Dodano odpowiedź w dyskusji');

		// odstęp przed własnymi
		opisBtns.appendChild(document.createTextNode(' ')); // odstęp
	}
}

/*
Parametry:
* elUserBtns - element okalający, do którego dodać przycisk
* pTekst - tekst w środku przycisku
* pAkcja - akcja (w formie tekstowej) jaką wykonać przy naciśnięciu; może być ciągiem poleceń
* pKlasa - klasa jeśli konieczna
* pOpis - opis widoczny w dymku przy przycisku
* zwraca dodany element
*/
window.przyciskiDodaj = function(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 = new Function(pAkcja);

	// dodanie przycisku
	elUserBtns.appendChild(nowyBtn);

	return nowyBtn;
};

window.dodajOpis = function(opis)
{
	var wpS = (window.przyciskiOpisVE) ? $( '.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');
	}
};

if ($.inArray(mw.config.get('wgAction'), ["edit", "submit", "parsermigration-edit"])+1)
{
	if (mw.config.get('wgNamespaceNumber') > -1)
	{
		jQuery(document).ready(przyciskiOpis);
	}
}

mw.loader.using( 'ext.visualEditor.desktopArticleTarget.init' ).done( function () {
	mw.libs.ve.addPlugin( function () {
		return mw.loader.using( 'ext.visualEditor.mwcore' )
			.done( function () {
				przyciskiOpis(true);
			} );
	} );
} );

//
// rozwiajanie skrótów do pełnych opisów i z powrotem
window.rozwinSkrotyOpisowZm = function()
{
	var els = przyciskiOpisBtns.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) ? '&nbsp; -zwiń skróty' : '+rozwiń skróty';
	btn.wax_on = !btn.wax_on;
}