User talk:DCDuring/common.js
Jump to navigation
Jump to search
Watchlist cleanup code[edit]
Version 1[edit]
function unwatchPage(token, title) {
token = encodeURIComponent(token); title = encodeURIComponent(title); var succeeded = false; $.ajax ({ async: false, type: 'POST', url: '/w/api.php?format=json&action=watch&unwatch=&token=' + token + '&title=' + title, data: , dataType: 'json', success: function(data, textStatus, jqXHR) { succeeded = data && data.watch && data.watch.unwatched === ; if(! succeeded) alert('13451345\n' + textStatus + '\n' + jqXHR.responseText); }, error: function(jqXHR, textStatus, errorThrown) { alert('123412624\n' + textStatus + '\n' + jqXHR.responseText + '\n' + errorThrown); } }); return succeeded;
}
function unwatchRange(token, ns, lb, ub)
// ns = namespace-number, e.g. 0 for mainspace // token = watch-token // lb = lower-bound, e.g. '\u00A0' to unwatch titles that start with // non-ASCII characters - is a "loose" lower bound, title >= lb // ub = upper-bound, e.g. '\u00A0' to unwatch titles that start with // ASCII characters - is a "strict" upper bound, title < ub
{
if(! /^\d+$/.test(ns)) // invalid namespace-number return false; if(lb === window.undefined) lb = ; else lb = encodeURIComponent(lb); while(true) { var titles = null; $.ajax ({ async: false, type: 'GET', url: '/w/api.php?format=json&action=query&unwatch=&list=watchlistraw&wrcontinue=' + ns + '|' + lb, dataType: 'json', success: function(data, textStatus, jqXHR) { if(data && data.watchlistraw) { titles = []; for(var i = 0; i < data.watchlistraw.length; ++i) if(data.watchlistraw[i].ns == ns) if(ub === window.undefined || data.watchlistraw[i].title < ub) titles[titles.length] = data.watchlistraw[i].title; } else { alert('23462346\n' + textStatus + '\n' + jqXHR.responseText); } }, error: function(jqXHR, textStatus, errorThrown) { alert('2368884\n' + textStatus + '\n' + jqXHR.responseText + '\n' + errorThrown); } }); if(! titles) return false; if(titles.length == 0) return true; for(var i = 0; i < titles.length; ++i) if(! unwatchPage(token, titles[i])) { alert('1325657856\nerror unwatching [[' + titles[i] + ']].'); return false; } }
}
addOnloadHook
(
function () { if(mediaWiki.config.get('wgPageName') != 'Special:TrimWatchList') return; var jqXHR = $.getJSON ( '/w/api.php?format=json&action=query&prop=info&intoken=watch&titles=Main%20page', function (data, textStatus, jqXHR) { if(! data || ! data.query || ! data.query.pages || ! data.query.pages[139449] || ! data.query.pages[139449].watchtoken) { alert('error obtaining watch-token\n' + textStatus + '\n' + jqXHR.responseText); return; } var watchtoken = data.query.pages[139449].watchtoken; alert('successfully obtained watch-token . . .');
if(unwatchRange(watchtoken, 0, 'A', '[')) alert('successfully unwatched all entries whose pagenames start with non-ASCII characters'); else alert('error unwatching entries whose pagenames start with non-ASCII characters'); if(unwatchRange(watchtoken, 2)) alert('successfully unwatched all user- and user-talk pages'); else alert('error unwatching user- and user-talk pages'); if(unwatchRange(watchtoken, 10)) alert('successfully unwatched all template- and template-talk pages'); else alert('error unwatching template- and template-talk pages'); if(unwatchRange(watchtoken, 100)) alert('successfully unwatched all appendix- and appendix-talk pages'); else alert('error unwatching appendix- and appendix-talk pages'); if(unwatchRange(watchtoken, 114)) alert('successfully unwatched all citations- and citations-talk pages'); else alert('error unwatching citations- and citations-talk pages'); } ); jqXHR.error ( function () { alert('error obtaining watch-token', jqXHR.responseText); } ); }
);
Version 2[edit]
function unwatchPage(token, title) {
token = encodeURIComponent(token); title = encodeURIComponent(title); var succeeded = false; $.ajax ({ async: false, type: 'POST', url: '/w/api.php?format=json&action=watch&unwatch=&token=' + token + '&title=' + title, data: , dataType: 'json', success: function(data, textStatus, jqXHR) { succeeded = data && data.watch && data.watch.unwatched === ; if(! succeeded) alert('13451345\n' + textStatus + '\n' + jqXHR.responseText); }, error: function(jqXHR, textStatus, errorThrown) { alert('123412624\n' + textStatus + '\n' + jqXHR.responseText + '\n' + errorThrown); } }); return succeeded;
}
function unwatchRange(token, ns, lb, ub)
// ns = namespace-number, e.g. 0 for mainspace // token = watch-token // lb = lower-bound, e.g. '\u00A0' to unwatch titles that start with // non-ASCII characters - is a "loose" lower bound, title >= lb // ub = upper-bound, e.g. '\u00A0' to unwatch titles that start with // ASCII characters - is a "strict" upper bound, title < ub
{
if(! /^\d+$/.test(ns)) // invalid namespace-number return false; if(lb === window.undefined) lb = ; else lb = encodeURIComponent(lb); while(true) { var titles = null; $.ajax ({ async: false, type: 'GET', url: '/w/api.php?format=json&action=query&unwatch=&list=watchlistraw&wrcontinue=' + ns + '|' + lb, dataType: 'json', success: function(data, textStatus, jqXHR) { if(data && data.watchlistraw) { titles = []; for(var i = 0; i < data.watchlistraw.length; ++i) if(data.watchlistraw[i].ns == ns) if(ub === window.undefined || data.watchlistraw[i].title < ub) titles[titles.length] = data.watchlistraw[i].title; } else { alert('23462346\n' + textStatus + '\n' + jqXHR.responseText); } }, error: function(jqXHR, textStatus, errorThrown) { alert('2368884\n' + textStatus + '\n' + jqXHR.responseText + '\n' + errorThrown); } }); if(! titles) return false; if(titles.length == 0) return true; for(var i = 0; i < titles.length; ++i) if(! unwatchPage(token, titles[i])) { alert('1325657856\nerror unwatching [[' + titles[i] + ']].'); return false; } }
}
addOnloadHook
(
function () { if(mediaWiki.config.get('wgPageName') != 'Special:TrimWatchList') return; var jqXHR = $.getJSON ( '/w/api.php?format=json&action=query&prop=info&intoken=watch&titles=Main%20page', function (data, textStatus, jqXHR) { if(! data || ! data.query || ! data.query.pages || ! data.query.pages[139449] || ! data.query.pages[139449].watchtoken) { alert('error obtaining watch-token\n' + textStatus + '\n' + jqXHR.responseText); return; } var watchtoken = data.query.pages[139449].watchtoken; alert('successfully obtained watch-token . . .');
if(unwatchRange(watchtoken, 0, 'A', '[')) alert('successfully unwatched all entries whose pagenames start with non-ASCII characters'); else alert('error unwatching entries whose pagenames start with non-ASCII characters'); if(unwatchRange(watchtoken, 2)) alert('successfully unwatched all user- and user-talk pages'); else alert('error unwatching user- and user-talk pages'); if(unwatchRange(watchtoken, 10)) alert('successfully unwatched all template- and template-talk pages'); else alert('error unwatching template- and template-talk pages'); if(unwatchRange(watchtoken, 100)) alert('successfully unwatched all appendix- and appendix-talk pages'); else alert('error unwatching appendix- and appendix-talk pages'); if(unwatchRange(watchtoken, 114)) alert('successfully unwatched all citations- and citations-talk pages'); else alert('error unwatching citations- and citations-talk pages'); } ); jqXHR.error ( function () { alert('error obtaining watch-token', jqXHR.responseText); } ); }
);