Benutzer:Count Count/AHTest.js

aus Wikipedia, der freien Enzyklopädie
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>