14,061
edits
m (1 revision imported) |
(Trying a new version (from En Wikipedia)) |
||
Line 15: | Line 15: | ||
* | * | ||
* This is AzaToth's Twinkle, the popular script sidekick for newbies, admins, and | * This is AzaToth's Twinkle, the popular script sidekick for newbies, admins, and | ||
* every Wikipedian in between. Visit [[ | * every Wikipedian in between. Visit [[WP:TW]] for more information. | ||
*/ | */ | ||
Line 45: | Line 45: | ||
Twinkle.defaultConfig.twinkle = { | Twinkle.defaultConfig.twinkle = { | ||
// General | // General | ||
summaryAd: " ([[ | summaryAd: " ([[WP:TW|TW]])", | ||
deletionSummaryAd: " ([[ | deletionSummaryAd: " ([[WP:TW|TW]])", | ||
protectionSummaryAd: " ([[ | protectionSummaryAd: " ([[WP:TW|TW]])", | ||
userTalkPageMode: " | userTalkPageMode: "tab", | ||
dialogLargeFont: false, | dialogLargeFont: false, | ||
// ARV | |||
spiWatchReport: "yes", | |||
// Block | |||
blankTalkpageOnIndefBlock: false, | |||
// Fluff (revert and rollback) | // Fluff (revert and rollback) | ||
openTalkPage: [ "agf", "norm", "vand" ], | openTalkPage: [ "agf", "norm", "vand" ], | ||
Line 69: | Line 73: | ||
// CSD | // CSD | ||
speedySelectionStyle: "buttonClick", | speedySelectionStyle: "buttonClick", | ||
watchSpeedyPages: [ "g3", "g5", "g10", "g11", "g12" ], | watchSpeedyPages: [ "g3", "g5", "g10", "g11", "g12" ], | ||
markSpeedyPagesAsPatrolled: true, | markSpeedyPagesAsPatrolled: true, | ||
// these next two should probably be identical by default | // these next two should probably be identical by default | ||
notifyUserOnSpeedyDeletionNomination: [ "db", "g1", "g2", "g3", "g4", "g6", "g10", "g11", "g12", "g13", "a1", "a2", "a3", "a5", "a7", "a9", "a10", "a11", "f1", "f2", "f3", "f7", "f9", "f10", "u3", "t2", "t3", "p1", "p2" ], | notifyUserOnSpeedyDeletionNomination: [ "db", "g1", "g2", "g3", "g4", "g6", "g10", "g11", "g12", "g13", "a1", "a2", "a3", "a5", "a7", "a9", "a10", "a11", "f1", "f2", "f3", "f7", "f9", "f10", "u3", "u5", "t2", "t3", "p1", "p2" ], | ||
welcomeUserOnSpeedyDeletionNotification: [ "db", "g1", "g2", "g3", "g4", "g6", "g10", "g11", "g12", "g13", "a1", "a2", "a3", "a5", "a7", "a9", "a10", "a11", "f1", "f2", "f3", "f7", "f9", "f10", "u3", "t2", "t3", "p1", "p2" ], | welcomeUserOnSpeedyDeletionNotification: [ "db", "g1", "g2", "g3", "g4", "g6", "g10", "g11", "g12", "g13", "a1", "a2", "a3", "a5", "a7", "a9", "a10", "a11", "f1", "f2", "f3", "f7", "f9", "f10", "u3", "u5", "t2", "t3", "p1", "p2" ], | ||
promptForSpeedyDeletionSummary: [ | promptForSpeedyDeletionSummary: [], | ||
openUserTalkPageOnSpeedyDelete: [ "db", "g1", "g2", "g3", "g4", "g5", "g10", "g11", "g12", "a1", "a3", "a7", "a9", "a10", "a11", "f3", "f7", "f9", "u3", "t2", "p1" ], | openUserTalkPageOnSpeedyDelete: [ "db", "g1", "g2", "g3", "g4", "g5", "g10", "g11", "g12", "a1", "a3", "a7", "a9", "a10", "a11", "f3", "f7", "f9", "u3", "u5", "t2", "p1" ], | ||
deleteTalkPageOnDelete: | deleteTalkPageOnDelete: true, | ||
deleteRedirectsOnDelete: true, | deleteRedirectsOnDelete: true, | ||
deleteSysopDefaultToTag: false, | deleteSysopDefaultToTag: false, | ||
Line 86: | Line 89: | ||
noLogOnSpeedyNomination: [ "u1" ], | noLogOnSpeedyNomination: [ "u1" ], | ||
// Unlink | // Unlink | ||
unlinkNamespaces: [ "0", "100" ], | unlinkNamespaces: [ "0", "10", "100", "118" ], | ||
// Warn | // Warn | ||
defaultWarningGroup: "1", | defaultWarningGroup: "1", | ||
showSharedIPNotice: true, | showSharedIPNotice: true, | ||
watchWarnings: true, | watchWarnings: true, | ||
customWarningList: [], | customWarningList: [], | ||
// XfD | // XfD | ||
Line 98: | Line 100: | ||
xfdWatchPage: "default", | xfdWatchPage: "default", | ||
xfdWatchUser: "default", | xfdWatchUser: "default", | ||
markXfdPagesAsPatrolled: true, | |||
// Hidden preferences | // Hidden preferences | ||
revertMaxRevisions: 50, | revertMaxRevisions: 50, | ||
batchdeleteChunks: 50, | batchdeleteChunks: 50, | ||
batchMax: 5000, | batchMax: 5000, | ||
batchProtectChunks: 50, | batchProtectChunks: 50, | ||
batchundeleteChunks: 50, | batchundeleteChunks: 50, | ||
proddeleteChunks: 50 | proddeleteChunks: 50 | ||
}; | }; | ||
Line 188: | Line 186: | ||
return result; | return result; | ||
}; | }; | ||
/** | /** | ||
Line 299: | Line 299: | ||
outerDiv.appendChild( h5 ); | outerDiv.appendChild( h5 ); | ||
var innerDiv = null; | |||
if ( type === "menu" ) { | if ( type === "menu" ) { | ||
innerDiv = document.createElement( "div" ); | |||
innerDiv.className = innerDivClass; | innerDiv.className = innerDivClass; | ||
outerDiv.appendChild(innerDiv); | outerDiv.appendChild(innerDiv); | ||
Line 323: | Line 324: | ||
} | } | ||
var link = mw.util.addPortletLink( Twinkle.getPref( "portletId" ), typeof task === "string" ? task : "#", text, id, tooltip ); | var link = mw.util.addPortletLink( Twinkle.getPref( "portletId" ), typeof task === "string" ? task : "#", text, id, tooltip ); | ||
$('.client-js .skin-vector #p-cactions').css('margin-right', 'initial'); | |||
if ( $.isFunction( task ) ) { | if ( $.isFunction( task ) ) { | ||
$( link ).click(function ( ev ) { | $( link ).click(function ( ev ) { | ||
Line 365: | Line 367: | ||
try { | try { | ||
var options = | var options = JSON.parse( optionsText ); | ||
// Assuming that our options evolve, we will want to transform older versions: | // Assuming that our options evolve, we will want to transform older versions: | ||
Line 394: | Line 396: | ||
Twinkle.load = function () { | Twinkle.load = function () { | ||
// Don't activate on special pages other than those on the whitelist so that | |||
var isSpecialPage = ( mw.config.get('wgNamespaceNumber') === -1 | // they load faster, especially the watchlist. | ||
var specialPageWhitelist = [ 'Contributions', 'DeletedContributions', 'Prefixindex' ]; | |||
var isSpecialPage = ( mw.config.get('wgNamespaceNumber') === -1 && | |||
specialPageWhitelist.indexOf( mw.config.get('wgCanonicalSpecialPageName') ) === -1 ); | |||
// Also, Twinkle is incompatible with Internet Explorer versions 8 or lower, | |||
// so don't load there either. | |||
var isOldIE = ( $.client.profile().name === 'msie' && | |||
$.client.profile().versionNumber < 9 ); | |||
// Prevent users that are not autoconfirmed from loading Twinkle as well. | |||
if ( isSpecialPage || isOldIE || !Twinkle.userAuthorized ) { | if ( isSpecialPage || isOldIE || !Twinkle.userAuthorized ) { | ||
return; | return; | ||
} | } | ||
// Load the modules in the order that the tabs should | // Prevent clickjacking | ||
if ( window.top !== window.self ) { | |||
return; | |||
} | |||
// Set custom Api-User-Agent header, for server-side logging purposes | |||
Morebits.wiki.api.setApiUserAgent( 'Twinkle/2.0 (' + mw.config.get( 'wgDBname' ) + ')' ); | |||
// Load the modules in the order that the tabs should appear | |||
// User/user talk-related | // User/user talk-related | ||
Twinkle.arv(); | Twinkle.arv(); | ||
Twinkle.warn(); | Twinkle.warn(); | ||
if ( Morebits.userIsInGroup('sysop') ) { | |||
Twinkle.block(); | |||
} | |||
Twinkle.welcome(); | Twinkle.welcome(); | ||
Twinkle.shared(); | Twinkle.shared(); | ||
Line 428: | Line 444: | ||
Twinkle.fluff.init(); | Twinkle.fluff.init(); | ||
if ( Morebits.userIsInGroup('sysop') ) { | if ( Morebits.userIsInGroup('sysop') ) { | ||
Twinkle.deprod(); | Twinkle.deprod(); | ||
Twinkle.batchdelete(); | Twinkle.batchdelete(); | ||
Line 435: | Line 450: | ||
} | } | ||
// Run the initialization callbacks for any custom modules | // Run the initialization callbacks for any custom modules | ||
Twinkle.initCallbacks.forEach(function ( func ) { func(); }); | |||
Twinkle.addInitCallback = function ( func ) { func(); }; | Twinkle.addInitCallback = function ( func ) { func(); }; | ||