Wikipedysta:Harry lp/oldRevUserContrib.js: Różnice pomiędzy wersjami

Z Wikipedii, wolnej encyklopedii
Usunięta treść Dodana treść
callback
return z callbacku
(Nie pokazano 2 pośrednich wersji utworzonych przez tego samego użytkownika)
Linia 19: Linia 19:


// wartości domyślne:
// wartości domyślne:
if (typeof oldRevPagesToOpen == 'undefined') oldRevPagesToOpen = 10;
if (typeof oldRevPagesToOpen === 'undefined') oldRevPagesToOpen = 10;
if (typeof oldRevUnReviewed == 'undefined') oldRevUnReviewed = false;
if (typeof oldRevUnReviewed === 'undefined') oldRevUnReviewed = false;
if (typeof oldRevHistoryInstead == 'undefined') oldRevHistoryInstead = false;
if (typeof oldRevHistoryInstead === 'undefined') oldRevHistoryInstead = false;


var oldRevUserContrib_api = new mw.Api();
var oldRevUserContrib_api = new mw.Api();
Linia 47: Linia 47:
var oldRevListIterator = 0;
var oldRevListIterator = 0;


// globalna zmienna do trzymania listy wkładu
// globalna zmienna do trzymania list wkładu
var oldRevContribList;
var $oldRevContribLists;

// pobieranie elementu, który trzyma listę z wkładem
function oldRevGetList()
{
var bodyContent = document.getElementById('bodyContent');
if (!bodyContent) return false;
var lists = bodyContent.getElementsByClassName('mw-contributions-list');
if (lists.length != 1) return false;
oldRevContribList = lists[0];

return true;
}



// obsługa elementów listy, otwieranie okien
// obsługa elementów listy, otwieranie okien
function oldReviewedPagesUserContrib()
function oldReviewedPagesUserContrib(evt)
{
{
var $listItems = $oldRevContribLists.find('li');
if (!oldRevContribList) return;
var listItems = oldRevContribList.getElementsByTagName('li');
var done = 0;
var done = 0;


while(oldRevListIterator < listItems.length && done < oldRevPagesToOpen)
while (oldRevListIterator < $listItems.length && done < oldRevPagesToOpen)
{
{
var klasa = 0;
var klasa = 0;
var item = listItems[oldRevListIterator];
var $item = $listItems.eq(oldRevListIterator);
oldRevListIterator++;
oldRevListIterator++;
if(item.className.match(/\bflaggedrevs-pending\b/)) klasa = 1;
if ($item.hasClass('flaggedrevs-pending')) klasa = 1;
else if(item.className.match(/\bflaggedrevs-unreviewed\b/)) klasa = 2;
else if ($item.hasClass('flaggedrevs-unreviewed')) klasa = 2;


if( !((klasa == 1) || (oldRevUnReviewed === true && klasa == 2)) ) continue;
if ( !(klasa === 1 || oldRevUnReviewed && klasa === 2) ) continue;
if(item.style.backgroundColor !== '') continue;
if (!!$item.data('oldRevMarker')) continue;
var links = item.getElementsByTagName('a');
var $links = $item.find('a');
var linkTitle = links[2].title;
var linkTitle = $links.eq(2).attr('title');
if (oldRevDoneList.indexOf(linkTitle) !== -1) break;
var przerwij = false;
for(var j in oldRevDoneList)
{
if(linkTitle == oldRevDoneList[j]) {przerwij=true; break;}
}
if (przerwij) continue;


if( (oldRevHistoryInstead === true) || (klasa == 2) )
if (oldRevHistoryInstead || klasa === 2)
{
{
var site = mw.util.wikiScript( 'index' ) + '?' + $.param( {
var site = mw.util.wikiScript( 'index' ) + '?' + $.param( {
Linia 107: Linia 84:
{
{
oldRevUserContrib_api.get({
oldRevUserContrib_api.get({
action:'query',
prop: ['info', 'flagged'],
titles: linkTitle
prop:'info|flagged',
titles:linkTitle
}).done(oldRevCallback);
}).done(oldRevCallback);
}
}
oldRevDoneList.push(linkTitle);
oldRevDoneList.push(linkTitle);
$item.data('oldRevMarker', true);
item.style.backgroundColor = 'orange';
$item.css('backgroundColor', 'orange');
done++;
done++;
}
}
return false;
}
}



// funkcja początkowa, dodaje przyciski uruchamiające
// funkcja początkowa, dodaje przyciski uruchamiające
$( function () {
$( function () {
if(mw.config.get('wgCanonicalSpecialPageName') == "Contributions")
if (mw.config.get('wgCanonicalSpecialPageName') === "Contributions")
{
{
$oldRevContribLists = $('.mw-contributions-list');
if (oldRevGetList() === false) return;
if (!oldRevContribList) return;
if (!$oldRevContribLists.length) return;
mw.util.addPortletLink('p-cactions', '#', 'otwórz zmiany pierwszych ' + oldRevPagesToOpen + ' nieprzejrzanych stron', 'portlet-open-pages', 'Otwiera ' + oldRevPagesToOpen + ' nieprzejrzanych stron');
document.getElementById('portlet-open-pages').onclick=oldReviewedPagesUserContrib;
var a = document.createElement('a');
var b = document.createElement('b');
var p = document.createElement('p');
b.appendChild(document.createTextNode('otwórz zmiany pierwszych ' + oldRevPagesToOpen + ' nieprzejrzanych stron'));
$(mw.util.addPortletLink('p-cactions', '#', 'otwórz zmiany pierwszych ' + oldRevPagesToOpen + ' nieprzejrzanych stron', 'portlet-open-pages', 'Otwiera ' + oldRevPagesToOpen + ' nieprzejrzanych stron'))
.on('click', oldReviewedPagesUserContrib);
a.appendChild(b);
a.href='#';
a.onclick=oldReviewedPagesUserContrib;
a.title='Otwiera ' + oldRevPagesToOpen + ' nieprzejrzanych stron';
p.setAttribute('id', 'contrib-top-bar');
p.appendChild(a);
$('<p>')
oldRevContribList.parentNode.insertBefore(p, oldRevContribList);
.attr('id', 'contrib-top-bar')
.append($('<a>')
.attr('href', '#')
.attr('title', 'Otwiera ' + oldRevPagesToOpen + ' nieprzejrzanych stron')
.on('click', oldReviewedPagesUserContrib)
.append($('<b>').text('otwórz zmiany pierwszych ' + oldRevPagesToOpen + ' nieprzejrzanych stron'))
)
.insertBefore($oldRevContribLists.first());
}
}
} );
} );

Wersja z 15:21, 15 mar 2022

/*
 * Otwieracz nieprzejrzanych edycji / oldRevUserContrib / v1.04
 *
 * Oryginalne źródło dla poniższych funkcji tutaj: pl:MediaWiki:Gadget-oldreviewedpages.js
 *
 * Wszelkich edycji przystosowania do potrzeb strony z wkładem użytkownika dokonał: Harry_lp
 * (miejscami wzorowanie się za Wikipedysta:Matma_Rex/disFixer.js)
 * cc-by-sa 3.0
 *
 * Użycie (wstawić do własnego vector.js albo monobook.js):
 ** var oldRevPagesToOpen = XX;             // ustala ile stron do otwarcia; domyślnie - przy braku określenia - 10
 ** var oldRevUnReviewed = false | true     // jeśli ustawione na true otworzy (poza zdezaktualizowanymi) strony nieprzejrzane; domyślnie false
 ** var oldRevHistoryInstead = false | true // jeśli true - wyświetli link do historii zamiast (tak jak przy false) linku do nieprzejrzanych zmian
 ** importScript('Wikipedysta:Harry_lp/oldRevUserContrib.js');
 *
 * Dokładny opis użycia: [[Wikipedysta:Harry lp/oldRevUserContrib]]
 *
 */

// wartości domyślne:
if (typeof oldRevPagesToOpen === 'undefined') oldRevPagesToOpen = 10;
if (typeof oldRevUnReviewed === 'undefined') oldRevUnReviewed = false;
if (typeof oldRevHistoryInstead === 'undefined') oldRevHistoryInstead = false;

var oldRevUserContrib_api = new mw.Api();

// przyjęcie odpowiedzi API
function oldRevCallback(res)
{
	var pages = res.query.pages;
	for(var k in pages)
	{
		var page = pages[k];
        var site = mw.util.wikiScript( 'index' ) + '?' + $.param( {
			title: page.title,
			oldid: page.flagged.stable_revid,
			diff: 'cur'
		} );
        window.open(site);
	}
}

// globalna zmienna do trzymania otwartych stron "w danej sesji"; na wypadek ponownego klikania w przycisk
var oldRevDoneList = [];

// globalna zmienna do trzymania ostatniej pozycji na liście elementów; co by ciągle od 0 nie latać
var oldRevListIterator = 0;

// globalna zmienna do trzymania list wkładu
var $oldRevContribLists;

// obsługa elementów listy, otwieranie okien
function oldReviewedPagesUserContrib(evt)
{
	var $listItems = $oldRevContribLists.find('li');
	var done = 0;

	while (oldRevListIterator < $listItems.length && done < oldRevPagesToOpen)
	{
		var klasa = 0;
		var $item = $listItems.eq(oldRevListIterator);
		oldRevListIterator++;
		
		if ($item.hasClass('flaggedrevs-pending')) klasa = 1;
		else if ($item.hasClass('flaggedrevs-unreviewed')) klasa = 2;

		if ( !(klasa === 1 || oldRevUnReviewed && klasa === 2) ) continue;
		if (!!$item.data('oldRevMarker')) continue;
		
		var $links = $item.find('a');
		var linkTitle = $links.eq(2).attr('title');
		
		if (oldRevDoneList.indexOf(linkTitle) !== -1) break;

		if (oldRevHistoryInstead || klasa === 2)
		{
			var site = mw.util.wikiScript( 'index' ) + '?' + $.param( {
				title: linkTitle,
				action: 'history'
			} );
			window.open(site);
		}
		else
		{
			oldRevUserContrib_api.get({
				prop: ['info', 'flagged'],
				titles: linkTitle
		    }).done(oldRevCallback);
		}
		
		oldRevDoneList.push(linkTitle);
		$item.data('oldRevMarker', true);
		$item.css('backgroundColor', 'orange');
		
		done++;
	}
	
	return false;
}

// funkcja początkowa, dodaje przyciski uruchamiające
$( function () {
	if (mw.config.get('wgCanonicalSpecialPageName') === "Contributions")
	{
		$oldRevContribLists = $('.mw-contributions-list');
		if (!$oldRevContribLists.length) return;
		
		$(mw.util.addPortletLink('p-cactions', '#', 'otwórz zmiany pierwszych ' + oldRevPagesToOpen + ' nieprzejrzanych stron', 'portlet-open-pages', 'Otwiera ' + oldRevPagesToOpen + ' nieprzejrzanych stron'))
			.on('click', oldReviewedPagesUserContrib);
		
		$('<p>')
			.attr('id', 'contrib-top-bar')
			.append($('<a>')
				.attr('href', '#')
				.attr('title', 'Otwiera ' + oldRevPagesToOpen + ' nieprzejrzanych stron')
				.on('click', oldReviewedPagesUserContrib)
				.append($('<b>').text('otwórz zmiany pierwszych ' + oldRevPagesToOpen + ' nieprzejrzanych stron'))
			)
			.insertBefore($oldRevContribLists.first());
	}
} );