Community Central
Register
Community Central
(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('&nbsp;&nbsp;&nbsp;&nbsp;<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;