Szerkesztő:Tgr/watchlist.js
Megjegyzés: közzététel után frissítened kell a böngésződ gyorsítótárát, hogy lásd a változásokat.
- Firefox / Safari: tartsd lenyomva a Shift gombot és kattints a Frissítés gombra a címsorban, vagy használd a Ctrl–F5 vagy Ctrl–R (Macen ⌘–R) billentyűkombinációt
- Google Chrome: használd a Ctrl–Shift–R (Macen ⌘–Shift–R) billentyűkombinációt
- Edge: tartsd nyomva a Ctrl-t, és kattints a Frissítés gombra, vagy nyomj Ctrl–F5-öt
// InstaUnwatch
( function () {
if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Watchlist') {
function updateButton( $button, type ) {
var text, title, className;
switch ( type ) {
case 'unwatch':
text = ' [-]';
title = 'Eltávolítás a figyelőlistáról';
className = 'unwatch-button';
break;
case 'watch':
text = ' [+]';
title = 'Visszahelyezés a figyelőlistára';
className = 'watch-button';
break;
case 'wait':
text = ' […]';
title = 'folyamatban…';
className = 'watch-button-inactive';
break;
case 'error':
text = ' [x]';
title = 'hiba!';
className = 'watch-button-inactive';
break;
}
return $button
.text( text )
.removeClass( 'unwatch-button watch-button watch-button-inactive' )
.addClass( className )
.prop( 'title', title );
}
function installRemoveButton( $ ) {
// var $diffTexts = $( 'mw-plusminus-pos, mw-plusminus-neg, mw-plusminus-null' );
$( '.mw-changeslist-title' ).each( function() {
$( this ).after(
updateButton( $( '<a>' ).prop( 'href', '#' ), 'unwatch' )
);
} );
$( '.mw-changeslist' ).on( 'click', '.watch-button, .unwatch-button', handleButtonClick );
$( '.mw-changeslist' ).on( 'click', '.watch-button-inactive', function () {
return false;
} );
}
function handleButtonClick( e ) {
var doAction, undoActionName,
$button = $( this ),
isWatchAction = $button.hasClass( 'watch-button' );
e.preventDefault();
if ( isWatchAction ) {
doAction = watch;
undoActionName = 'unwatch';
} else {
doAction = unwatch;
undoActionName = 'watch';
}
updateButton( $button, 'wait' );
doAction( getPageName( $button ) ).done( function () {
updateButton( $button, undoActionName );
} ).fail( function ( error ) {
updateButton( $button, 'error' );
mw.log.warn( 'watchlist.js: ', error );
} );
}
function getPageName ( $button ) {
return $button.prev().text();
}
function watch( pageName, unwatch ) {
var api = new mw.Api(),
params = { action: 'watch', titles: pageName },
action = unwatch ? 'unwatch' : 'watch';
if ( unwatch ) {
params.unwatch = 1;
}
return api.postWithToken( 'watch', params ).then( function ( data ) {
if ( !data || !data.watch || !data.watch[0] || ! action in data.watch[0] ) {
mw.log.warn( 'watchlist.js: ', data );
return $.Deferred().reject();
}
return data;
} );
}
function unwatch( pageName ) {
return watch ( pageName, true );
}
$( installRemoveButton );
}
} () );