(Should have added this much sooner.) |
(I've never benefitted from this script, so I might as well remove it.) |
||
Line 45: | Line 45: | ||
'u:dev:WallGreetingButton/code.js', |
'u:dev:WallGreetingButton/code.js', |
||
'u:dev:AjaxPatrol/code.js', |
'u:dev:AjaxPatrol/code.js', |
||
− | 'u:dev:AjaxBlock/code.js', |
||
'u:dev:MediaWiki:MessageBlocker/code.js', |
'u:dev:MediaWiki:MessageBlocker/code.js', |
||
'u:dev:MediaWiki:Nuke/code.js', |
'u:dev:MediaWiki:Nuke/code.js', |
Revision as of 06:21, 4 January 2020
if (mw.config.get('wgCityId') === '177') {
importArticle({
type: 'style',
article: 'u:dev:MediaWiki:WikiaCommunityCentralTheme/code.css'
});
}
AjaxRCRefreshText = 'Auto-refresh';
AjaxRCRefreshHoverText = 'Automatically refresh the page';
ajaxPages = ["Special:RecentChanges", "Special:WikiActivity"];
window.UserTagsJS = {
modules: {
inactive: 62,
newuser: true,
autoconfirmed: true,
mwGroups: [
'bureaucrat',
'sysop',
'assistant',
'rollback',
'chatmoderator',
'bannedfromchat',
'global-discussions-moderator'
]
},
tags: {
assistant: 'Assistant',
threadmoderator: 'Discussion Moderator',
'content-moderator': 'Content Moderator'
},
oasisPlaceBefore: ''
};
importArticles({
type: 'script',
articles: [
'u:dev:MediaWiki:ChatHacks.js',
'u:dev:MediaWiki:EditIntroButton/code.js',
'u:dev:MediaWiki:AjaxRC/code.js',
'u:dev:MediaWiki:PurgeButton/code.js',
'u:dev:MediaWiki:UserTags/code.js',
'u:dev:MediaWiki:RevealAnonIP/code.js',
'u:dev:MediaWiki:FindAndReplace/code.js',
'u:dev:WallGreetingButton/code.js',
'u:dev:AjaxPatrol/code.js',
'u:dev:MediaWiki:MessageBlocker/code.js',
'u:dev:MediaWiki:Nuke/code.js',
'u:kocka:MediaWiki:AjaxThreadDelete/code.js',
'u:dev:AjaxBatchDelete/code.2.js',
'u:dev:AjaxBatchUndelete/code.js',
'u:dev:EditBio/code.js',
'u:dev:MassEdit/code.js',
'u:dev:MediaWiki:CategoryRenameAuto-update/code.js',
'u:dev:MassBlock/code.js',
'u:dev:MassRename/code.js',
'u:dev:QQX/code.js',
'u:dev:Less/code.2.js',
'u:dev:PatrolRC/code.js',
'u:dev:MediaWiki:DisableDrafts.js',
'u:dev:MediaWiki:MinimalTemplateClassification.js',
'u:dev:MediaWiki:DisableInfoboxBuilder.js',
]
});
/*
* Rollback
* @description Perform rollbacks without needing to be in the usergroup
* @author Ozank
*/
mw.loader.using('mediawiki.api', function() {
//Exit if normal rollback links are present
if ($('.mw-rollback-link').length) return;
var conf = mw.config.get([
'wgAction',
'wgCanonicalSpecialPageName',
'wgContentLanguage',
'wgPageName',
'wgUserLanguage',
'skin'
]),
i18n = {
en: {
rollback: "rollback",
description: ""Rollback" reverts edit(s) to this page of the last contributor in one click",
summary: "Reverted edits by [[Special:Contributions/$1|$1]] ([[User talk:$1|talk]]) to last version by $2 ([[w:c:dev:Rollback|script]])",
summaryShort: "Reverted edits by [[Special:Contributions/$1|$1]] ([[User talk:$1|talk]]) to last version by $2 ([[w:c:dev:Rollback|script]])",
editConflict: "Unable to rollback (edit conflict)",
contentFail: "Unable to rollback (failed to get page content)",
singleEditor: "Unable to rollback (no different editor found)",
revisionFail: "Unable to rollback (failed to get revisions)",
editFail: "Unable to rollback (failed to publish edit)",
success: "Rollback successful"
}
};
i18n = i18n[conf.wgUserLanguage] || i18n[conf.wgUserLanguage.split('-')[0]] || i18n[conf.wgContentLanguage] || i18n[conf.wgContentLanguage.split('-')[0]] || i18n.en;
conf.API = new mw.Api();
conf.token = mw.user.tokens.values.editToken;
//History
if (conf.wgAction == "history" && $('#pagehistory li').length > 1)
$('#pagehistory li:first .mw-history-undo a').before('<span class="mw-custom-rollback-link"><a title="' + i18n.description + '" data-id="' + conf.wgPageName + '" data-user="' + $('.mw-userlink:first').text() + '">' + i18n.rollback + '</a></span> | ');
//Contributions
else if (conf.wgCanonicalSpecialPageName == "Contributions") {
$('#mw-content-text ul').find('li').each(function() {
if ($(this).find('.mw-uctop').length)
$(this).append(' <span class="mw-custom-rollback-link">[<a title="' + i18n.description + '" data-id="' + $(this).find('a:first').attr('title') + '" data-user="' + conf.wgPageName.split('/')[1] + '">' + i18n.rollback + '</a>]</span>');
});
}
//Diffs
else if (($.getUrlVar('diff') || $.getUrlVar('oldid')) && $('#differences-nextlink').length === 0)
$('.mw-usertoollinks:last').after(' <span class="mw-custom-rollback-link">[<a title="' + i18n.description + '" data-id="' + conf.wgPageName + '" data-user="' + $('#mw-diff-ntitle2 .mw-userlink').text() + '">' + i18n.rollback + '</a>]</span>');
else
return;
mw.util.addCSS('.mw-custom-rollback-link a { cursor: pointer; }');
$('.mw-custom-rollback-link a').click(function() {
getRevisionIdAndContent($(this).data('id'),$(this).data('user').replace(/_/g, " "));
$(this).parent().remove();
});
function getRevisionIdAndContent(title,target) {
conf.API.get({
action: 'query',
prop: 'revisions',
titles: title,
rvprop: 'user|ids',
rvlimit: 500,
cb: new Date().getTime()
})
.done(function(d) {
if (!d.error) {
var revisions;
for (var i in d.query.pages) {
revisions = d.query.pages[i].revisions;
}
//Don't rollback if the page has been edited since by somebody else than the intended person to rollback from
if (target != revisions[0].user) {
outputError(i18n.editConflict);
return;
}
var lastUser,
revId;
for (var j in revisions) {
if (revisions[j].user != target) {
lastUser = revisions[j].user; //remember last author
revId = revisions[j].revid; //get revision to revert to
break;
}
}
if (lastUser) {
conf.API.get({
action: 'query',
prop: 'revisions',
rvprop: 'content',
revids: revId,
cb: new Date().getTime()
})
.done(function(d) {
if (!d.error) {
var content = ""; //can be no content on page
for (var i in d.query.pages) {
if (d.query.pages[i].revisions)
content = d.query.pages[i].revisions[0]["*"];
}
performRollback(title,content,target,lastUser);
}
else
outputError(i18n.contentFail + ': ' + d.error.code);
})
.fail(function() {
outputError(i18n.contentFail);
});
}
else
outputError(i18n.singleEditor);
}
else
outputError(i18n.revisionFail + ': ' + d.error.code);
})
.fail(function() {
outputError(i18n.revisionFail);
});
}
function performRollback(page,text,user,user2) {
var summary = i18n.summary.replace(/\$1/g,user).replace(/\$2/g,user2);
conf.API.post({
action: 'edit',
title: page,
text: text,
summary: summary,
minor: true,
token: conf.token
})
.done(function(d) {
if (!d.error) {
new BannerNotification(i18n.success,'confirm').show();
}
else
outputError(i18n.editFail + ': ' + d.error.code);
})
.fail(function() {
outputError(i18n.editFail);
});
}
function outputError(text) {
switch (conf.skin) {
case 'oasis':
case 'wikia':
new BannerNotification(text,'error').show();
break;
default:
alert(text);
break;
}
}
});
// Adds NavigationPopups
// [[wikipedia:User:Lupin/popups]]
popupRevertSummary = 'Revert to revision dated %s by %s, oldid %s using [[:wikipedia:Wikipedia:Popups|popups]]';
popupQueriedRevertSummary = 'Revert to revision $1 dated $2 by $3 using [[:wikipedia:Wikipedia:Popups|popups]]';
popupExtendedRevertSummary = 'Revert to revision dated %s by %s, oldid %s using [[:wikipedia:Wikipedia:Popups|popups]]';
popupQueriedRevertToPreviousSummary = 'Revert to the revision prior to revision $1 dated $2 by $3 using [[:wikipedia:Wikipedia:Popups|popups]]';
popupRevertToPreviousSummary = 'Revert to the revision prior to revision %s using [[:wikipedia:Wikipedia:Popups|popups]]';
popupRevertSummaryPrompt = true;
popupStructure = 'menus';
popupFixDabs = 'true';
popupFixDabsSummary = 'Disambiguate [[%s]] to [[%s]] using [[:wikipedia:Wikipedia:Tools/Navigation_popups|popups]]';
popupRmDabLinkSummary = 'Remove link to dab page [[%s]] using [[:wikipedia:en:Wikipedia:Tools/Navigation_popups|popups]]';
mw.loader.load("//en.wikipedia.org/w/index.php?title=User:Lupin/popups.js&action=raw&ctype=text/javascript&oldid=805750784");
importStylesheetURI('https://en.wikipedia.org/w/index.php?action=raw&ctype=text/css&title=MediaWiki:Gadget-navpop.css');
// END Adds NavigationPopups
// install [[User:Cacycle/wikEdDiff]] enhanced diff
importScriptURI('//en.wikipedia.org/w/index.php?title=User:Cacycle/wikEdDiff.js&action=raw&ctype=text/javascript');
importArticles({
type: 'script',
articles: [
'u:dev:MediaWiki:WorkingMoreUsersCount.js'
]
});
// Add wgWikiName variable to mw.config
// By [[User:Colouratura]]
mw.config.values[ 'wgWikiName' ] = function () {
return window.location.toString().split( '.wikia.com' )[ 0 ].slice( 7 );
}();
//Add extra AccountNav options
/*
*/
;(function() {
if (navLinks) return;
var user = mw.util.wikiUrlencode(mw.config.get('wgUserName')),
links = {
contribs: {
text: 'My Contributions',
url: '/wiki/Special:Mycontributions'
},
blogs: {
text: 'My Blogs',
url: '/wiki/User_blog:' + user
},
watchlist: {
text: 'My Watchlist',
url: '/wiki/Special:Watchlist'
},
followed: {
text: 'My Followed Pages',
url: '/wiki/Special:Following'
}
},
html = '',
navLinks = true;
for (var i in links) {
html += '<li><a href="' + links[i].url + '" class="wds-global-navigation__dropdown-link">' + links[i].text + '</a></li>';
}
document.querySelector('.wds-global-navigation__user-menu .wds-list > li:nth-child(2)').insertAdjacentHTML('afterEnd', html);
})();
importArticles({
type: 'script',
articles: [
'u:dev:AjaxRC/code.js',
]
});
massProtectDelay = 500;
importArticles({
type: "script",
articles: [
'u:dev:MassProtect/code.js'
]
});
importArticles({
type: 'script',
articles: [
'u:dev:MediaWiki:MassPatrol/code.js'
]
});
window.massEditConfig = {
editSummary: "Your edit summary",
editInterval: 1000
};
window.SeeMoreActivityButtonOld = true;