Benutzer:Count Count/AHTest.js
Zur Navigation springen
Zur Suche springen
Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.
- Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
- Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
- Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
//<nowiki>
Av = 'v0.1 BETA';
An = 'AdminHelper';
AdminHelper = `${An} ${Av}`;
var api = new mw.Api();
var RelevantPage = mw.config.get('wgPageName');
var nameSpace = mw.config.get('wgNamespaceNumber');
var pageProtection = mw.config.get('wgRestrictionEdit');
function isPageInCategory(pageName, categoryName) {
var isInCategory = false;
return api.get({
action: 'query',
prop: 'categories',
titles: pageName,
clcategories: categoryName,
cllimit: 'max'
}).then(function(data) {
var pages = data.query.pages;
for (var pageId in pages) {
if (pages.hasOwnProperty(pageId)) {
if (pages[pageId].categories && pages[pageId].categories.length > 0) {
isInCategory = true;
break;
}
}
}
return isInCategory;
}).catch(function(error) {
mw.notify('Fehler in: isPageInCategory()');
return false;
});
}
function AHprotect(pageName, conf, reason) {
if (mw.config.get('wgUserGroups').indexOf('sysop') !== -1) {
var api = new mw.Api();
var pr = {
action: 'protect',
title: pageName,
protections: conf,
expiry: 'infinite',
reason: reason + ' [AH]',
format: 'json'
};
api.postWithToken( 'csrf', pr ).done( function ( data ) {
console.log( data );
mw.notify("successfully protected");
} );
} else {
mw.notify('not sysop!');
}
}
function isBlocked(user) {
var api = new mw.Api();
return api.get({
action: 'query',
list: 'blocks',
bkusers: user
}).then(function(data) {
if (data.query.blocks && data.query.blocks.length > 0) {
var block = data.query.blocks[0];
if (block.expiry === 'infinity') {
return true;
} else {
return false;
}
} else {
return false;
}
}).catch(function(error) {
return false;
});
}
function startAH() {
// Statische IPs -> protect
if (nameSpace === 2) {
isPageInCategory(RelevantPage, 'Kategorie:Benutzer:Statische IP (ungeschützt)').then(function(result) {
if (result) {
mw.notify('Statische IP! Bitte per Button schützen!');
var portletLink = mw.util.addPortletLink(
'p-cactions',
'#',
'Stat-IP-Schutz',
'ca-statprotect',
'Schütze Benutzerseite der statischen IP auf Sichterlevel',
null,
'#ca-statprotect'
);
$(portletLink).click(function(e) {
e.preventDefault();
AHprotect(RelevantPage, 'edit=editeditorprotected|move=editeditorprotected', 'Statische IP-Adresse');
} );
} else {}
}
);}
// Gesperrt -> GB + protect
if (nameSpace === 3) {
var userName = mw.config.get('wgTitle').split('/')[0];
isBlocked(userName).then(function(result) {
if (result) {
if (pageProtection.indexOf('sysop') === -1) {
mw.notify('Infinit gesperrt - Disk aber ungeschützt!\nBitte Button anklicken!');
var GBportLink = mw.util.addPortletLink(
'p-cactions',
'#',
'GB + Schutz',
'ca-gb',
'Schütze Disk und setze {{GB}} - Benutzer ist infinit gesperrt.',
null,
'#ca-gb'
);
$(GBportLink).click(function(e) {
e.preventDefault();
AHprotect(RelevantPage, 'edit=sysop|move=sysop', 'Diskussionsseite eines unbeschränkt [[WP:BS|gesperrten Benutzers]]');
api.postWithEditToken({
action: 'edit',
title: RelevantPage,
text: '{{GB}}',
summary: 'Gesperrter Benutzer [AH]'
}).then(function(data) {
if (data && data.edit && data.edit.result === 'Success') {
mw.notify('GB erfolgreich');
} else {
mw.notify('Fehler (GB)');
}
}).catch(function(error) {
mw.notify('Error (GB) - try again');
});
} );
}
}
});
}
}
startAH();
//</nowiki>