Source for "StudiVZ Schnelleinladung"

By Robbie
Has 1 other script.


// ==UserScript==
// @name           StudiVZ Schnelleinladung
// @namespace      http://rovo.ath.cx
// @description    Fügt auf bestimmten Seiten im StudiVZ einen Link zum Einladen der jeweiligen Person in zuvor angegebene Gruppen ein.
// @include        http://www.studivz.net/*
// @include        http://studivz.net/*
// ==/UserScript==

var groups = new Array();

function addInviteLinks() {	
	if (document.location.pathname.indexOf("/Friends/") == 0 || document.location.pathname.indexOf("/Search/") == 0) {
		var target = document.getElementById("FriendsList") || document.getElementById("Search_Results");
		if (!target) return;
		
		var people = target.getElementsByTagName('li');
		for (i=0; i < people.length; i++) {
			var person = people.item(i);
			
			if (person.className == "clearFix") {
				var lists = person.getElementsByTagName("ul");
				var ulLinkList = null;
				for (j=0; j < lists.length; j++) {
					if (lists.item(j).className == "linkList") {
						ulLinkList = lists.item(j);
						break;
					}
				}
				if (!ulLinkList) continue;
				
				person.childNodes[1].childNodes[1].href.match(/(.*)\/Profile\/([0-9a-zA-z]{16})/i);
				var friendid = RegExp.$2;
				if (friendid.length != 16) continue;
				
				for (var groupid in groups) {
					var newLI = document.createElement("li");
					var newLink =  document.createElement("a");
		
					newLink.href = "/Groups/Invite/" + groupid + "/" + friendid;
					newLink.innerHTML = "In Gruppe \"" + groups[groupid] + "\" einladen";
					
					newLI.appendChild(newLink);
					ulLinkList.appendChild(newLI);
				}
			}
		}
	} else if (document.location.pathname.indexOf("/Profile/") == 0) {
		var divProfileLeft = document.getElementById("profileLeft");
		if (!divProfileLeft) return;
		var ulLinkList = divProfileLeft.getElementsByTagName("ul")[0];

		document.location.pathname.match(/^\/Profile\/([0-9a-zA-z]{16})/i);
		var friendid = RegExp.$1;
		if (friendid.length != 16) return;

		for (var groupid in groups) {
			var newLI = document.createElement("li");
			var newLink =  document.createElement("a");

			newLink.href = "/Groups/Invite/" + groupid + "/" + friendid;
			newLink.innerHTML = "In Gruppe \"" + groups[groupid] + "\" einladen";
			
			newLI.appendChild(newLink);
			ulLinkList.appendChild(newLI);
		}
	} else if(document.location.pathname.indexOf("/Groups/Overview/") == 0) {
		var divGroupsRight = document.getElementById("GroupsRight");
		if (!divGroupsRight) return;
		var ulLinkList = divGroupsRight.getElementsByTagName("ul")[0];

		document.location.pathname.match(/^\/Groups\/Overview\/([0-9a-zA-z]{16})/i);
		var groupid = RegExp.$1;
		if (groupid.length != 16) return;
		
		var newLI = document.createElement("li");
		var newLink =  document.createElement("a");

		newLink.href = "#";
		newLink.setAttribute("onclick", "return false;");
		newLink.addEventListener("click", openConfigDlg, true);
		newLink.id = "svzil_conf";
		newLink.setAttribute("groupid", groupid);
		newLink.setAttribute("groupname", groups[groupid]);
		linkChangeActive(newLink, (groups[groupid] != null));
		
		newLI.appendChild(newLink);
		ulLinkList.appendChild(newLI);
	}
}

function linkChangeActive(newLink, toActive) {
	if (toActive) {
		newLink.innerHTML = "Schnelleinladung =>  \"" + newLink.getAttribute("groupname") + "\"";
		newLink.style.textDecoration = "";
		newLink.style.color = "green";
		newLink.title = "Schnelleinladung deaktivieren";
		newLink.setAttribute("svzil_act", true);
	}	else {
		newLink.innerHTML = "Schnelleinladung (inaktiv)";
		newLink.style.textDecoration = "line-through";
		newLink.style.color = "";
		newLink.title = "Schnelleinladung aktivieren";
		newLink.setAttribute("svzil_act", false);
	}
}

function loadSettings() {
	var num = GM_getValue("num_groups", 0);
	for (var i = 1; i <= num; i++) {
		var s = GM_getValue("group" + i, "");
		if (s != "") {
			var sArr = s.split("|||");
			groups[sArr[0]] = sArr[1];
		}
	}
}

function saveSettings() {
	var i = 1;
	for (var groupid in groups) {
		if (groups[groupid] != null) {
			GM_setValue("group" + i, groupid + "|||" + groups[groupid]);
			i++;
		}
	}
	GM_setValue("num_groups", i - 1);
}

function openConfigDlg() {
	var theLink = document.getElementById("svzil_conf");
	var isActive = (theLink.getAttribute("svzil_act") == "true");
	var groupid = theLink.getAttribute("groupid");
	var groupname = null;
	
	if (!isActive) {
		groupname = prompt("Name für die Gruppe:", document.getElementsByTagName("h1")[0].textContent);
		if (!groupname || groupname == "") return;
		theLink.setAttribute("groupname", groupname);
	} else {
		if (!confirm("Schnelleinladung wirklich deaktivieren?")) return;
		groupname = null;
	}
	groups[groupid] = groupname;
	saveSettings();
	
	linkChangeActive(theLink, !isActive);
}

loadSettings();
addInviteLinks();