MediaWiki:Group-mitarbeiter.js

Aus lernlog Hilfesystem
Wechseln zu: Navigation, Suche

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
  • Internet Explorer/Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
  • Opera: Strg+F5
/*
 Ich vermutte, dass es nur so funktioniert weil "personal" hinten "mitarbeiter" liegt.
 Deswegen werden die Tags erst unsichtbar gemacht und dann wieder sichtbar.
 Man sollte in Personal Script ein "HIDDEN" Tag setzen und hier überprüfen ob es da ist und damit entscheiden ob man Tag versteckt. 
 so ein <p hidden>personal</p> oder so...
*/

/*
See MediaWiki:Common.js for this:

const foreignPageMessage = "<p>Dieses Bereich ist nicht für Sie bestimmt!</p>";
const pageNameToManipulate = "Bearbeite Onboarding Formular: ";
const catNameToManipulate = "Onboarding";
var loggedUser = document.getElementById("pt-userpage").innerText;
function hideCandidat() ...

...

/**/

$(function () {

// Wenn die Seite wie pageNameToManipulate heißt 
// (Suche danach in "firstHeading" Element.)
// dann sollten die Elemente versteckt werden.
if (document.getElementById("firstHeading").innerHTML.search(pageNameToManipulate) > -1 ) {

	if ( !hideFormForForeignUser() ) {
		// Gestalte Formular für Mitarbeiter
		hideProcedures();
		modifyAllItems();
		tweakLines();
	}

}

// Wenn die Seite mit Benutzer: anfängt 
// dann sollten geprüft werden ob es ein richtiger benutzer zugreift.
else if (document.getElementById("firstHeading").innerText.search("Benutzer:") > -1 ) {
	hideUserPageForForeignUser();
}

// Wenn die Kategorie wie catNameToManipulate heißt 
// (Suche danach in "catlinks" Element.)
// dann sollten die Elemente versteckt werden.
else if ( hideCandidat ) {
//else if ( document.getElementById("catlinks").innerText.includes(catNameToManipulate) ) {
	hidePageForForeignUser();
}

}());



/* ***** Hide not allowed pages from User *********************************** */

// Prüft ob Mitarbeiter auf seine Benutzerseite zugreift
function hideUserPageForForeignUser() {
	if ( document.getElementById("firstHeading").innerText.search(loggedUser) > -1 ) {
		return true
	} else {
		const content = document.getElementById("mw-content-text");
		content.innerHTML = foreignPageMessage;
		return false;
	}
}

// Prüft ob Mitarbeiter auf sein Onboarding Formular zugreift
function hideFormForForeignUser() {
	const desiredUser = document.getElementById("input_1").value;
	
	if ( desiredUser.includes(loggedUser.trim()) ) {
		return false;
	} else {
		const pfForm = document.getElementById("pfForm");
		const content = pfForm.parentNode;
		content.innerHTML = foreignPageMessage;
		return true;
	}
}

// Kategorien (wie Onboarding-Seiten) von Mitarbeiter Verstecken
function hidePageForForeignUser() {
	const desiredUserDiv = document.getElementById("assigned-user");
	
	if ( desiredUserDiv == null )
		desiredUser = "mitarbeiter";
	else
		desiredUser = desiredUserDiv.innerText;

	if ( desiredUser.includes(loggedUser.trim()) || enabled ) {
		return true;
	} else {
		const content = document.getElementById("mw-content-text");
		content.innerHTML = foreignPageMessage;
		return false;
	}
}

/* ***** Tweak Onboarding Formular ****************************************** */
// Weiteren Funktionen gestalten den Onboarding-Formular für Mitarbeiter.
function hideProcedures() {
	const legends = document.getElementsByTagName("legend");
	for (i = 0; i < legends.length; i++) {
		if ( legends[i].innerText == "Prozeduren" ) {
			legends[i].parentNode.style.display = 'none';
			break;
		}
	}
}

var emptyHideTries = 0;
function modifyAllItems() {
	var hiddenElementsCount = 0;
	hiddenElementsCount += modifyItems("multipleTemplateAdder");
	hiddenElementsCount += modifyItems("instanceRearranger");
	hiddenElementsCount += modifyItems("instanceAddAbove");	//modifyItems("addAboveButton");
	hiddenElementsCount += modifyItems("instanceRemove");	//modifyItems("removeButton");
	
	// Wenn hiddenElementsCount > 0 versuche es wieder zu verstecken.
	// Wenn hiddenElementsCount zwei Mal 0 ist, dann ist Ruhe.
	if ( hiddenElementsCount > 0 ) {
		setTimeout(modifyAllItems, 500);
		emptyHideTries = 0;
	} else if (emptyHideTries < 1 ) {
		setTimeout(modifyAllItems, 500);
		emptyHideTries++;
	} else {
		console.log("done");
	}

}

function modifyItems(className) {
	const elements = document.getElementsByClassName(className);
	var hiddenElementsCount = 0;
	if (elements.length > 0) {
		for (i = elements.length - 1; i >= 0; i--) {
			elements[i].outerHTML = "";			// delete
			hiddenElementsCount ++;
		}
	}
	return hiddenElementsCount;
}

function tweakLines() {
	var lines = document.getElementsByClassName("multipleTemplateInstance");
	for (i = 0; i < lines.length; i++) {
		lines[i].style = 'background-color: transparent; border:0px; margin: 0px;';
		var tasks = lines[i].getElementsByTagName("select");
		for (j = 0; j < tasks.length; j++) {
			tasks[j].style.display = 'none';
//			console.log(tasks[j].value);
			var linkNode = document.createElement("a");
			linkNode.title = "/wiki/index.php/" + tasks[j].value;
			linkNode.href = "/wiki/index.php/" + tasks[j].value.replaceAll(" ", "_") + "?enable=true";
			linkNode.innerText = tasks[j].value;
			linkNode.classList.add("taskLink");
			tasks[j].parentNode.appendChild(linkNode);
		}
	}
}