MediaWiki: Group-mitarbeiter.js: Unterschied zwischen den Versionen

Aus lernlog Hilfesystem
Wechseln zu: Navigation, Suche
K (1 Version importiert)
 
(kein Unterschied)

Aktuelle Version vom 12. März 2025, 09:15 Uhr

/*
 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);
		}
	}
}