Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
importArticles({
type: 'script',
articles: [
'u:dev:MediaWiki:PortableCSSPad/code.js',
'u:de.trollocool:VanguardTools.js', // Not Vanguard, but very useful links to have.
'u:dev:AjaxBatchDelete/code.2.js',
'u:dev:UsefulDropdown/code.js',
'u:dev:AbuseLogRC.js',
'u:dev:MediaWiki:FindAndReplace/code.js',
'u:dev:MediaWiki:Discussions Delete All/code.js',
'u:dev:StickySummary.js',
'u:dev:MediaWiki:AnalyticsShortcut.js',
'u:dev:CommentPreview/code.js',
'u:dev:MediaWiki:MultiUpload/code.js'
]
});
/**
* Name: AutoCreateUserPages
* Version: v1.8
* Author: KockaAdmiralac <wikia@kocka.tech>
* Description: Automatically creates a user's userpage, talkpage and
* message wall greeting with a specified template on
* wikis where they have at least one contribution.
*/
(function() {
if (localStorage.getItem('AutoCreateUserPagesLoaded')) {
return;
}
var AutoCreateUserPages = {
config: $.extend({
content: '{{w:$1 Userpage}}',
summary: 'Auto creating user page'
}, window.AutoCreateUserPagesConfig),
mwconfig: mw.config.get([
'wgCityId',
'wgUserName'
]),
toCreate: 0,
preload: function() {
if (
// You most likely don't want the script to be
// automaking your Community Central user page,
// especially since you're probably inserting a
// global template in the configuration
// This also prevents a 404 error since Community
// Central doesn't have WikiFeatures enabled.
this.mwconfig.wgCityId === '177' ||
// When you try creating your userpage/talkpage
// on VSTF Wiki the abuse filter prevents you
// so the script shouldn't run there
this.mwconfig.wgCityId === '65099'
) {
return;
}
this.namespaces = ['User'];
$.nirvana.getJson('WikiFeaturesSpecialController', 'index').done($.proxy(function(d) {
this.namespaces.push(d.features.filter(function(t) {
return t.name === 'wgEnableWallExt' && t.enabled;
}).length === 0 ? 'User talk' : 'Message Wall Greeting');
mw.loader.using('mediawiki.api.edit').then($.proxy(this.init, this));
}, this));
},
init: function() {
this.api = new mw.Api();
this.api.get({
action: 'query',
list: 'usercontribs',
ucuser: this.mwconfig.wgUserName
}).done($.proxy(this.cbContribs, this));
},
cbContribs: function(d) {
if (d.error) {
// new BannerNotification('An error occurred while fetching user contributions: ' + d.error.code).show();
} else if (d.query.usercontribs.length !== 0) {
this.api.get({
action: 'query',
prop: 'revisions',
titles: this.namespaces.map(function(el) { return el + ':' + this.mwconfig.wgUserName }, this).join('|')
}).done($.proxy(this.cbFetch, this));
} else {
console.log('[AutoCreateUserPage] Zero edit count, returning...');
}
},
cbFetch: function(d) {
if (d.error) {
new BannerNotification('An error occurred while fetching user page information: ' + d.error.code).show();
} else {
$.each(d.query.pages, $.proxy(this.processPage, this));
}
},
processPage: function(k, v) {
var content = this.config.content;
if (typeof content === 'object') {
content = content[v.ns];
}
// I was too tired of writing this all in one condition
// If somebody can optimize this please do
if (content === false) {
return;
}
if (k === -1) {
return;
} else if (v.ns === 1202) {
if (v.missing !== '') {
return;
}
} else if (v.missing !== '' && v.revisions[0].user !== 'FANDOM' && v.revisions[0].user !== 'Wikia') {
return;
}
console.log('[AutoCreateUserPage] Creating', v.title, '...');
++this.toCreate;
this.api.postWithEditToken({
action: 'edit',
title: v.title,
text: content.replace(/\$1/g, this.mwconfig.wgUserName),
summary: this.config.summary,
minor: true,
bot: true
}).done($.proxy(this.cbCreate, this));
},
cbCreate: function(d) {
if (d.error) {
new BannerNotification('An error occurred while creating a user page: ' + d.error.code).show();
} else if (--this.toCreate === 0) {
localStorage.setItem('AutoCreateUserPagesLoaded', true);
}
}
};
AutoCreateUserPages.preload();
})();