MediaWiki-diskussion:Gadget-NetDiffSinceLastVisited.js

Sidans innehåll stöds inte på andra språk.
Från Wikipedia

Ny funktion[redigera wikitext]

Skulle det vara möjligt att utvidga finessen med en länk på ens bevakningslista? Jag tänker mig att man skulle kunna ha en länk bredvid historiklänken. Ungefär så här: '( skillnad | historik | nd ) . . Artikelnamn'. Och då länkar 'nd' till nettodiffen man annars kan hitta i historiken. Med denna funktion slipper man en extra knapptryckning. Det skulle underlätta för mig. Mvh ✍️(skrivet av:) GeMet(användare:) 💬  den 10 april 2020 kl. 19.22 (CEST)[svara]

Finessen fungerar som så att den letar efter listelement med HTML-klassen "mw-history-line-updated" (li.filter( '.mw-history-line-updated' )). Antalet förekomster av .mw-history-line-updated måste vara strikt mindre än det totala antalet listelement (filtered.length < li.length). Detta för att vi senare ska kunna gå till den sista förekomsten av .mw-history-line-updated (filtered.last()) och sedan gå till nästa listelement (.next( 'li' )) för att hitta den senast besökta revisionen. Det väsentliga här är att det går att lista ut vilken som är den senast besökta revisionen genom informationen som finns på sidan. Jag kan inte se att den informationen finns på Special:Bevakningslista. Nirmos (diskussion) 11 april 2020 kl. 01.50 (CEST)[svara]
Och det går inte att på ett enkelt sätt hämta den informationen utan att ladda historiksidan? Det kanske går att göra en länk till historiksidan som omedelbart "trycker" på nettodiff-länken och på så vis omdirigerar till diffen?
Om du tittar på MediaWiki:Gadget-NetDiffSinceLastVisited.js så ser du två if-satser som ser ut så här:
if ( filtered.length ) {
	if ( filtered.length < li.length ) {
		// Ta fram värde på old och lägg till knapp här
	}
}
Det första villkoret (filtered.length) säkerställer att det finns olästa versioner. Det andra villkoret (filtered.length < li.length) säkerställer att det finns strikt färre olästa versioner än antal listelement på sidan, så att vi kan hitta den senast lästa versionen (Till exempel: Om det finns 50 listelement på sidan så är det ok att 49 är olästa, men inte 50 eller fler). De här if-satserna garanterar alltså att det finns några – men inte för många – olästa versioner innan värdet på old försöker tas fram och knappen läggs till. Om du på Special:Bevakningslista lägger till knappar i förväg vid alla diffar så kommer de inte nödvändigtvis uppfylla det andra villkoret. Nirmos (diskussion) 11 april 2020 kl. 06.18 (CEST)[svara]

Det går att från api:t hämta den data som behövs för att konstruera nettodifflänkar i bevakningslistan. Det krävs minst ett api-anrop för varje difflänk. Det kan bli många anrop om man ha många sidor på sin bevakningslista. Därför har jag testat med att skapa länkar som inte anropar api:t förrän man klickar på dem. Här är den kod jag har testat (i Firefox webbkonsol) på bevakningslistan:

mw.loader.using( 'mediawiki.api', function() {
	if ( mw.config.get( 'wgCanonicalSpecialPageName' ) != 'Watchlist') {
		return;
	}
	var nd = $( '<span><a title="Nettodiff sedan senaste besöket" href="#">nd</a></span>' );

	nd.click( function( e ) {
		e.preventDefault();
		var api = new mw.Api();
		var target = $( this ).parent().parent().attr( 'data-target-page' );
		var x;

		api.get( {
			action:	'query',
			prop: 	'info',
			inprop:	'notificationtimestamp',
			titles:	target,
			format:	'json'
		} ).done( function( d1 ) {
			for ( x in d1.query.pages ) {
				api.get( {
					action:	'query',
					prop:	'revisions',
					titles:	target,
					rvstart: d1.query.pages[ x ].notificationtimestamp,
					rvlimit: 1,
					format:	'json'
				} ).done( function( d2 ) {
					var oldid = d2.query.pages[ x ].revisions[ 0 ].parentid;
					window.location.href ="https://sv.wikipedia.org/w/index.php?diff=cur&oldid=" + oldid;
				} );
			}
		} );
	} );

	$( '.mw-changeslist-watchedunseen .mw-changeslist-links' ).append( nd );
});

Om man använder api:ts list=watchlist i stället för prop=info kan man få notificationtimestamp (tidstämpel för äldsta osedda sidversion) för alla sidor i ett anrop. Men jag tror inte det är möjligt att hitta versionsid:t som behövs utan att göra ett anrop per sida.
Samma idé borde gå att använda i sidhistoriker för att skapa difflänkar när det finns fler osedda sidversioner än vad som ryms på en sida. /EnDumEn 13 april 2020 kl. 19.56 (CEST)[svara]

Och för mig som inte vet hur man använder sig av webbkonsolen, kan jag lägga in det i min common.js? Är det något problem för mig att jag har över 7000 bevakade sidor och visar de senaste 500 ändringarna? Belastar det min dator eller servern onödigt mycket? Spelar det någon roll att jag visar 256 diffar på mina historiksidor? mvh ✍️(skrivet av:) GeMet(användare:) 💬  den 14 april 2020 kl. 05.07 (CEST)[svara]
Jag har ändrat lite i koden så att den fungerar om man lägger den i sin common.js. Men koden är skapad mest för att visa att det går att göra något. Den saknar felhantering om något oväntat händer, t.ex. att api:t inte svarar. Förmodligen händer inget annat än att länkarna inte fungerar, men i värsta fall kan fel hindra andra skript från att köras på sidan. /EnDumEn 14 april 2020 kl. 20.54 (CEST)[svara]
Jag lag till en mer utvecklad version i MediaWiki:Gadget-NetDiffSinceLastVisitedWL.js och lagt till i den här finessen. /EnDumEn 18 april 2020 kl. 21.45 (CEST)[svara]
Trevligt! Tack för all hjälp! Jag har dock en grej som jag irriterar mig lite på. Fast jag vet inte om det går att fixa. Det skulle vara bra om det gick att öppna "nd" i en ny flik/nytt fönster i webbläsaren. Just nu fungerar det bara för mig att trycka på länken i befintlig flik (Firefox 75.0). Mvh ✍️(skrivet av:) GeMet(användare:) 💬  den 19 april 2020 kl. 01.00 (CEST)[svara]
Jag vill också kunna öppna länkar i nya flikar. Tyvärr kommmer jag inte på något bra sätt att göra det på. /EnDumEn 1 maj 2020 kl. 12.09 (CEST)[svara]
Okej, tack ändå. ✍️(skrivet av:) GeMet(användare:) 💬  den 1 maj 2020 kl. 12.29 (CEST)[svara]

Bugg[redigera wikitext]

"Raderingsloggnd"

Jag såg precis att det blir fel i bevakningslistan vad det gäller raderingsloggen. Inom parantesen står det "Raderingsloggnd", se bild till höger. Nedan visar jag ett urklipp av källkoden om det gör någon skillnad:

<li data-mw-logid="9025368" data-mw-logaction="delete/delete" data-mw-ts="20200430203125" class="mw-changeslist-line mw-changeslist-log mw-changeslist-log-delete mw-changeslist-line-watched mw-changeslist-ns-14 mw-changeslist-ns-subject mw-changeslist-user-registered mw-changeslist-user-experienced mw-changeslist-others mw-changeslist-human mw-changeslist-major mw-changeslist-previous mw-changeslist-src-mw-log mw-changeslist-watchedunseen mw-line-odd watchlist-14-Italienska_bildesigners"><div class="mw-rcfilters-ui-highlights"><div class="mw-rcfilters-ui-highlights-color-none" data-color="none"></div><div class="mw-rcfilters-ui-highlights-color-c1" data-color="c1"></div><div class="mw-rcfilters-ui-highlights-color-c2" data-color="c2"></div><div class="mw-rcfilters-ui-highlights-color-c3" data-color="c3"></div><div class="mw-rcfilters-ui-highlights-color-c4" data-color="c4"></div><div class="mw-rcfilters-ui-highlights-color-c5" data-color="c5"></div></div><span class="mw-changeslist-line-inner" data-target-page="Kategori:Italienska bildesigners"><a href="/wiki/Special:Logg/delete" class="mw-changeslist-links" title="Special:Logg/delete">Raderingslogg</a><span class="mw-changeslist-separator--semicolon"></span> <span class="mw-changeslist-date">22.31</span> <span class="mw-changeslist-separator"></span> <span class="mw-changeslist-log-entry"><a href="/wiki/Anv%C3%A4ndare:Bruno_Rosta" class="mw-userlink" title="Användare:Bruno Rosta"><bdi>Bruno Rosta</bdi></a> <span class="mw-usertoollinks mw-changeslist-links"><span><a href="/wiki/Anv%C3%A4ndardiskussion:Bruno_Rosta" class="mw-usertoollinks-talk" title="Användardiskussion:Bruno Rosta">Diskussion</a></span> <span><a href="/wiki/Special:Bidrag/Bruno_Rosta" class="mw-usertoollinks-contribs" title="Special:Bidrag/Bruno Rosta">Bidrag</a></span></span> raderade sidan <a href="/w/index.php?title=Kategori:Italienska_bildesigners&action=edit&redlink=1" class="new" title="Kategori:Italienska bildesigners [inte skriven än]">Kategori:Italienska bildesigners</a> ‎<span class="comment">(ersatt med <a href="/wiki/Kategori:Italienska_formgivare_av_bilar" title="Kategori:Italienska formgivare av bilar">Kategori:Italienska formgivare av bilar</a>)</span></span></span></li>

✍️(skrivet av:) GeMet(användare:) 💬  den 1 maj 2020 kl. 00.16 (CEST)[svara]

Jag har ändrat så att länken bara läggs till för sidor som redigeras. /EnDumEn 1 maj 2020 kl. 12.09 (CEST)[svara]
Tack 😊 ✍️(skrivet av:) GeMet(användare:) 💬  den 1 maj 2020 kl. 12.29 (CEST)[svara]

Försvunnit?[redigera wikitext]

Är det bara för mig som netdifflänken försvunnit från historiksidor? ✍️(skrivet av:) GeMet(användare:) 💬  den 8 april 2022 kl. 02.20 (CEST)[svara]

EnDumEn och Nirmos, vet ni vad som hänt? ✍️(skrivet av:) GeMet(användare:) 💬  den 15 april 2022 kl. 17.40 (CEST)[svara]
Historiksidorna har ändrats från att vara en lista med 50 redigeringar (eller hur många man valt att visa) till att vara flera listor efter varandra där varje lista innehåller redigeringar som gjorts en viss dag. Jag har ändrat gadgeten så den ska fungera igen. /EnDumEn 15 april 2022 kl. 20.00 (CEST)[svara]