Benutzerin:Manuela/common.js

Aus Perrypedia
Zur Navigation springen Zur Suche springen

Anmerkung: Nach dem Speichern muss der Browser-Cache geleert werden, damit die Änderungen sichtbar werden: Mozilla/Firefox: neu laden anklicken (oder Strg-R), IE / Opera: Strg-F5, Safari: Kommando-R, Konqueror Strg-R.

$(function () {
	//console.log('MediaWiki:Gadget-Navbar.js 2');
	//console.log('\nprefix: ' +mw.config.get( 'wgServer' ) +mw.config.get( 'wgScript' ) +'?title=' +mw.config.get( 'wgPageName' ) +'&action=edit');
	var pfx = '\n<a target="_blank" href="' +mw.config.get('wgServer') +mw.config.get('wgScript') +'?title=';
	try {
		$('#mw-indicator-mw-helplink').hide();
	} catch (err) {
		console.log('MediaWiki:Gadget-Navbar.js#mw-indicator-mw-helplink ' +err.message);
	}
	var navBar = '\n<div id="botbar" class="metadata bottombar">\n<div style="display: flex; flex-direction: row; position: relative; margin-left: 30px; margin-right: 30px">' +'<div id="botbarheader" style="width: 20px; border: none; cursor: move;"></div>' +wikiadmin(pfx) +mywikis() +buttons() +'\n<div id="botbarfooter" style="width: 20px; border: none; cursor: move;"></div></div></div>';
	$('body').append(navBar);
	var $mybar = $('#botbar');
	try {
		$mybar.css({ 'position': 'absolute' });
		dragElement(document.getElementById('botbar'));
		setTimeout(function () {
			$('#botbar').css({
				'bottom': '0',
				'position': 'fixed'
			});
		}, 200);
	} catch (err) {
		console.log('MediaWiki:Gadget-Navbar.js#botbar ' +err.message);
	}

	$('#closebar').click(function () {
		$('#botbar').hide();
	});

	$('#siteNotice').click(function () {
		$('#siteNotice').hide();
	});

	$('#toggle').click(function () {
		try {
			$('#navbarAdministration').toggle();
			$('#navbarWikiliste').toggle();
			//console.log('MediaWiki:Gadget-Navbar.js#toggle toggle');
		} catch (err) {
			console.log('MediaWiki:Gadget-Navbar.js#toggle ' +err.message);
		}
	});
	
	try {
		$('#centralNotice').hide();
		//console.log('MediaWiki:Gadget-Navbar.js#centralNotice hidden');
	} catch (err) {
		console.log('MediaWiki:Gadget-Navbar.js#centralNotice ' +err.message);
	}
	
	$('#centralNotice').click(function () {
		$('#centralNotice').hide();
		//console.log('MediaWiki:Gadget-Navbar.js#centralNotice clicked');
	});

	$("#transparent").click(function(){
		try {
    		$("#botbar").toggleClass("bottombar");
    		//console.log('MediaWiki:Common.js#transparent toggleClass');
		} catch (err) {
			console.log('MediaWiki:Common.js#transparent ' +err.message);
		}
	});

	function buttons() {
		// erzeugt die Navigationselemente Pfeile und Disk
		var klass = '\n<div class="dropdown">';
		var tail = '</a></div>';
		var top = '\n<a href="#mw-page-base" title="top"    style="margin-left: 5px; font-size: 38px">&#11014;';
		var bot = '\n<a href="#footer"       title="bottom" style="margin-left: 5px; font-size: 38px">&#11015;';
		var toggl = '\n<div id="toggle" title="toggle bar small" style="cursor: pointer; margin-left: 5px; font-size: 38px">&#8660;</div>';
		var transp = ''; // '\n<div title="toggle background" id="transparent" class="dropdown" style="margin-left: 5px; cursor: pointer; font-size: 38px">' +'&#10059;</div>';
		var floppy = '\n<div title="jumpt to save button" class="dropdown" id="only-when-edit" style="margin-left: 5px;"><a href="#wpSaveWidget" title="save" style="margin-left: 10px; font-size: 38px">&#10004;';
		var cross = '\n<div  title="close bar" id="closebar" class="dropdown" style="margin-left: 5px; cursor: pointer; font-size: 38px">' +'&#10008;</div>';
		var mybuts = klass +top +tail +klass +bot +tail +transp +toggl +cross +floppy +tail;
		//console.log(mybuts);
		return mybuts;
	}

	function navbar(pfx) {
		// Menüpunkt zum Anklicken der wichtigsten Elemente der Navigation Bar
		var linktext = 'Gadget Navigationsleiste';
		var link = '<a target="_blank" href="https://yazz.miraheze.org/wiki/Help:Navigation_bar';
		var linkliste = '<a target="_blank" href="https://yazz.miraheze.org/w/index.php?title=MediaWiki:Common.css/bottombar.css">Globale User CSS Datei Yazz:MediaWiki:Common.css/bottombar.css</a>' +
		'<a target="_blank" href="https://yazz.miraheze.org/w/index.php?title=MediaWiki:Gadget-Navbar.js">Globale User JavaScript Datei Yazz:MediaWiki:Gadget-Navbar.js</a>' +
		'<div class="separator-top"></div>' +
		pfx +'Special:AllPages/MediaWiki:">Alle MediaWiki Seiten</a>' +
		pfx +'MediaWiki:Vector.css">Vector.css (im Wiki)</a>' +
		pfx +'MediaWiki:Common.css">Common.css (im Wiki)</a>' +
		pfx +'MediaWiki:Vector.js">Vector.js (im Wiki)</a>' +
		pfx +'MediaWiki:Common.js">Common.js (im Wiki)</a>';
		return dropdown_submenu(linktext, linkliste, link);
	}

	function wikipedia() {
		var mywikis = '<a target="_blank" href="https://meta.wikimedia.org/">Meta</a>\
		<a target="_blank" href="https://www.mediawiki.org/">MediaWiki</a>\
		<a target="_blank" href="https://commons.wikimedia.org/">Commons</a>\
		<a target="_blank" href="https://de.wikipedia.org/">Wikipedia</a>\
		<a target="_blank" href="https://de.wikibooks.org/">Wikibooks</a>\
		<a target="_blank" href="https://en.wikipedia.org/">Wikipedia (en)</a>\
		<a target="_blank" href="https://en.wikibooks.org/">Wikibooks (en)</a>\
		<a target="_blank" href="https://www.wikidata.org/">Wikidata</a>\
		<a target="_blank" href="https://species.wikimedia.org/">Species</a>\
		<a target="_blank" href="https://wikisource.org/">Wikisource</a>\
		<a target="_blank" href="https://de.wikiquote.org/">Wikiquote</a>\
		<a target="_blank" href="https://de.wikiversity.org/">Wikiversity</a>\
		<a target="_blank" href="https://de.wikivoyage.org/">Wikivoyage</a>\
		<a target="_blank" href="https://de.wikinews.org/">Wikinews</a>\
		<a target="_blank" href="https://en.wikiquote.org/">Wikiquote (en)</a>\
		<a target="_blank" href="https://en.wikiversity.org/">Wikiversity (en)</a>\
		<a target="_blank" href="https://en.wikivoyage.org/">Wikivoyage (en)</a>\
		<a target="_blank" href="https://en.wikinews.org/">Wikinews (en)</a>';
		var mytext = 'Wikipedia';
		return dropdown_submenu(mytext, mywikis);
	}

	function otherwikis() {
		var mytext = 'andere Wikis';
		var mywikis = '<a target="_blank" href="https://wiki.piratenpartei.de">Deutsche Piraten</a>' +
		'<a target="_blank" href="https://wiki.piratenpartei.at">Österreichische Piraten</a>' +
		'<a target="_blank" href="https://www.cpdl.org">Choralwiki</a>' +
		'<a target="_blank" href="https://en.scratch-wiki.info/">Scratch Wiki englisch</a>' +
		'<a target="_blank" href="https://de.scratch-wiki.info/">Scratch Wiki deutsch</a>\t<a target="_blank" href="https://imslp.org/">IMSPL</a>' +
		'<a target="_blank" href="https://wiki.selfhtml.org/wiki/">Selfhtml Wiki</a>' +
		'<a target="_blank" href="https://www.stupidedia.org/">Stupidedia (leider geschlossen)</a>' +
		'<a target="_blank" href="https://de.uncyclopedia.co/wiki/">Uncyclopedia</a>' +
		'<a target="_blank" href="https://de.pluspedia.org/wiki/">PlusPedia</a>' +
		'<a target="_blank" href="https://marjorie-wiki.de/wiki/">MARJORIE-WIKI</a>' +
		'<a target="_blank" href="https://www.perrypedia.de/">PerryPedia</a>' +
		'<div class="separator-top"></div>' +
		'<a target="_blank" href="https://www.mediawiki.org/wiki/Sites_using_MediaWiki/de">Liste deutschsprachiger MediaWiki-Wikis</a>';
		return dropdown_submenu(mytext, mywikis);
	}
	function mirameta() {
		var linktext = 'Miraheze Meta Wikis';
		var linkliste = '<a target="_blank" href="https://meta.miraheze.org/wiki/">Meta</a>' +
		'<a target="_blank" href="https://login.miraheze.org/wiki/">Login</a>' +
		'<a target="_blank" href="https://template.miraheze.org/wiki/">Templates</a>' +
		'<a target="_blank" href="https://dev.miraheze.org/wiki/">Entwicklerwiki</a>' +
		'<a target="_blank" href="https://commons.miraheze.org/wiki/">Commons</a>' +
		'<a target="_blank" href="https://test.miraheze.org/wiki/">Testwiki</a>';
		return dropdown_submenu(linktext, linkliste);
	}
	
	function mirawiki() {
		var linktext = 'Miraheze Wikis';
		var linkliste =  
		'<a target="_blank" href="https://lilypond.miraheze.org/">Lilypond</a>' +
		'<a target="_blank" href="https://yazz.miraheze.org/">Kubu</a>' +
		'<a target="_blank" href="https://nopedia.miraheze.org/">Stupidedia Mirror</a>' +
		'<a target="_blank" href="https://meingarten.miraheze.org/">Mein Garten</a>' +
		'<a target="_blank" href="https://regionalbahnstattbus.miraheze.org/">Regionalbahn</a>' +
		'<a target="_blank" href="https://klimarealisten.miraheze.org/">Mein Testwiki</a>' +
		'<a target="_blank" href="https://aboutpcs.miraheze.org/">About PCs Wiki</a>' +
		'<div class="separator-top"></div>' +
		'<a target="_blank" href="https://hexengarten.miraheze.org/">Hexengarten</a>' +
		'<a target="_blank" href="https://traunstoaner.miraheze.org/">TraunStoaner</a>' +
		'<a target="_blank" href="https://physicsde.miraheze.org/">Offene Fragen und Probleme der Physik</a>' +
		'<a target="_blank" href="https://albionweb.miraheze.org/">ALBIONWEB</a>' +
		'<a target="_blank" href="https://startups.miraheze.org/">Geschichte der Startups</a>' +
		'<a target="_blank" href="https://schuelerwiki.miraheze.org/">Schülerwiki</a>' +
		'<a target="_blank" href="https://stiff.miraheze.org/">Strümpfe im Feature Film</a>' +
		'<div class="separator-top"></div>' +
		'<a target="_blank" href="https://sdiy.info/wiki/Main_Page">Synth DIY Wiki</a>' +
		'<a target="_blank" href="https://quirc.miraheze.org/">QuIRC</a>' +
		'<a target="_blank" href="https://combinatorialnumbertheory.miraheze.org/">Combinatorial Number Theory</a>' +
		'<a target="_blank" href="https://poserdazfreebies.miraheze.org/">Poser and Daz Studio Free Resources Wiki</a>' +
		'<a target="_blank" href="https://terribletvshows.miraheze.org/">Terrible TV Shows Wiki</a>' +
		'<a target="_blank" href="https://xen.miraheze.org/">Xenharmonic Wiki</a>' +
		'<a target="_blank" href="https://mylittlepony.miraheze.org/">Equestripedia – a MLP Wiki</a>' +
		'<a target="_blank" href="https://snapwiki.miraheze.org/">Snap!</a>';
		return dropdown_submenu(linktext, linkliste);
	}

	function wikiactn(pfx) {
		// Seitenaktionenen
		var mypfad = mw.config.get('wgScript');
		var mwname = mw.config.get('wgPageName');
		var mwserv = mw.config.get('wgServer');
		var myname = '<a target="_blank" href="' +mwserv +mypfad +'?title=' +mwname +'&';
		var editme = 'action=edit';
		var rawme = 'action=raw&ctype=text/css';
		var histme = 'action=history';
		var infome = 'action=info';
		var purme = 'action=purge';
		var qqxme = 'uselang=qqx';
		var linktext = 'Seitenaktionen';
		var linkliste = myname +editme +'">edit</a>' +myname +rawme +'">raw</a>' +
		myname +histme +'">history</a>' +myname +infome +'">info</a>' +
		myname +purme +'">refresh</a>' +myname +qqxme +'">qqx</a>' +
		'<a target="_blank" href="' +mwserv +mypfad +'?title=Special:PrefixIndex/' +mwname +'/">Unterseiten</a>';
		return dropdown_submenu(linktext, linkliste);
	}
	
	function mywikis(pfx) {
		var linktext = 'Wikiliste';
		var content = mirawiki() +mirameta() +otherwikis() +wikipedia();
		return dropdown(linktext, content);
	}
	function progm() {
		var linktext = 'Programmieren';
		var linkliste = '<a target="_blank" href="https://gchq.github.io/CyberChef/">Cyber Chef</a>' +
		'<div class="separator-top"></div>' +
		'<a target="_blank" href="https://www.javascript.com/">JavaScript offizielle Webseite</a>' +
		'<a target="_blank" href="https://www.w3schools.com/js/default.asp">JavaScript Tutorial auf W3</a>' +
		'<a target="_blank" href="https://www.w3schools.com/jquery/default.asp">jQuery Tutorial auf W3</a>' +
		'<div class="separator-top"></div>' +
		'<a target="_blank" href="https://www.php.net/manual/de/">PHP-Handbuch</a>' +
		'<a target="_blank" href="https://www.w3schools.com/php/default.asp">PHP Tutorial auf W3</a>' +
		'<div class="separator-top"></div>' +
		'<a target="_blank" href="https://www.w3schools.com/html/default.asp">HTML Tutorial auf W3</a>' +
		'<a target="_blank" href="https://www.w3schools.com/css/default.asp">CSS Tutorial auf W3</a>' +
		'<a target="_blank" href="https://www.w3.org/TR/SVG/">Scalable Vector Graphics (SVG) 2</a>' +
		'<a target="_blank" href="https://validator.w3.org/">Markup Validation Service</a>' +
		'<a target="_blank" href="https://de.wikibooks.org/wiki/SVG">SVG Wikibook</a>' +
		'<a target="_blank" href="https://de.wikibooks.org/wiki/Websiteentwicklung">Websiteentwicklung Wikibook</a>'
		;
		return dropdown_submenu(linktext, linkliste);
	}
	function wikins(pfx) {
		var linktext = 'Namensräume';
		var link = '<a target="_blank" href="https://yazz.miraheze.org/wiki/Help:Namensr%C3%A4ume';
		var linkliste = pfx +'Special:AllPages">Alle Seiten</a>' +
		pfx +'Special:AllPages&namespace=6">Alle Dateien</a>' +
		pfx +'Special:AllPages&namespace=8">MediaWiki Seiten</a>' +
		pfx +'Special:AllPages&namespace=14">Alle Kategorien</a>' +
		pfx +'Special:AllPages&namespace=12">Help Seiten</a>' +
		pfx +'Special:AllPages&namespace=2">Benutzerseiten</a>' +
		pfx +'Special:AllPages&namespace=4">Projektseiten</a>' +
		pfx +'Special:AllPages&namespace=10">Vorlagen</a>' +
		pfx +'Special:AllPages/Module:">Module</a>';
		return dropdown_submenu(linktext, linkliste, link);
	}

	function wikiadmin(pfx) {
		var linktext ='Administration';
		var content = wikins(pfx) +wikiinfo(pfx) +wikiactn(pfx) +wikiwant(pfx) +wikimaint(pfx) +wikipags(pfx) +progm() +navbar(pfx);
		return dropdown(linktext, content);
	}

	function wikimaint(pfx) {
		var linktext = 'Wartung';
		var linkliste = pfx +'Special:LongPages">Lange Seiten</a>' +
		pfx +'Special:AncientPages">Seit längerem unbearbeitete Seiten</a>' +
		pfx +'Special:UncategorizedCategories">Nicht kategorisierte Kategorien</a>' +
		pfx +'Special:UncategorizedPages">Nicht kategorisierte Seiten</a>' +
		pfx +'Special:UncategorizedFiles">Nicht kategorisierte Dateien</a>' +
		pfx +'Special:UncategorizedTemplates">Nicht kategorisierte Vorlagen</a>' +
		pfx +'Special:UnusedCategories">Verwaiste Kategorien</a>' +
		pfx +'Special:UnusedFiles">Verwaiste Dateien</a>' +
		pfx +'Special:UnusedTemplates">Verwaiste Vorlagen</a>' +
		pfx +'Special:AbuseLog">Abuse Log</a>' +
		pfx +'Special:AbuseFilter">Abuse Filter Management</a>';
		return dropdown_submenu(linktext, linkliste);
	}

	function wikiwant(pfx) {
		var linktext = 'Fehlende Elemente';
		var linkliste = pfx +'Special:WantedPages">Fehlende Seiten</a>' +
		pfx +'Special:WantedCategories">Fehlende Kategorien</a>' +
		pfx +'Special:WantedFiles">Fehlende Dateien</a>' +
		pfx +'Special:WantedTemplates">Fehlende Vorlagen</a>';
		return dropdown_submenu(linktext, linkliste);
	}

	function wikipags(pfx) {
		var linktext = 'Seiteninformationen';
		var linkliste = pfx +'Special:NewPages">Neue Seiten</a>' +
		pfx +'Special:NewFiles">Neue Dateien</a>' +
		pfx +'Special:MostCategories">meiste Kategorien</a>' +
		pfx +'Special:MostLinkedPages">meistverlinkte Seiten</a>' +
		pfx +'Special:MostRevisions">meiste Bearbeitungen</a>' +
		pfx +'Special:MostTranscludedPages">meisteingebundene Seiten</a>' +
		pfx +'Special:MostLinkedCategories">meistverwendete Kategorien</a>';
		return dropdown_submenu(linktext, linkliste);
	}

	function wikiinfo(pfx) {
		var linktext = 'Infos über das Wiki';
		var linkliste =  
		pfx +'Special:Version">Version</a>' +
		pfx +'Special:Statistics">Statistik</a>' +
		pfx +'Special:ExpandTemplates">Vorlagen expandieren</a>' +
		pfx +'Special:Interwiki">Interwiki Daten</a>' +
		pfx +'Special:AllMessages">Systemnachrichten</a>' +
		pfx +'Special:RecentChanges">letzte Änderungen</a>' +
		'<div class="separator-top"></div>' +
		pfx +'Special:MediaStatistics">Medieninformation</a>' +
		pfx +'Special:MIMESearch/image/svg%2Bxml">SVG Images</a>' +
		pfx +'Special:MIMESearch/image/png">PNG Images</a>' +
		pfx +'Special:MIMESearch/image/jpeg">JPG Images</a>' +
		pfx +'Special:MIMESearch/image/x-icon">Icons</a>' +
		pfx +'Special:MIMESearch/image/*">Alle Bilder</a>' +
		pfx +'Special:MIMESearch/application/pdf">PDF Dateien</a>' +
		pfx +'Special:MIMESearch/application/*">Alle Anwendungsdateien</a>' +
		pfx +'Special:MIMESearch/video/webm">Videos webm</a>' +
		pfx +'Special:MIMESearch/video/*">Alle Videos</a>' +
		pfx +'Special:MIMESearch/audio/mpeg">MP3 Audios</a>' +
		pfx +'Special:MIMESearch/application/ogg">OGG Audios</a>' +
		pfx +'Special:MIMESearch/audio/midi">Midi Audios</a>' +
		pfx +'Special:MIMESearch/audio/*">Alle Audiodateien</a>'; 
		return dropdown_submenu(linktext, linkliste);
	}

	function dropdown(linktext, content, link) {
		// liefert einen Punkt der Navigationsleiste mit Untermenüs zurück
		// linktext: Beschriftung des Menüpunktes, der Pfeil nach unten wird durch CSS-Klasse hinzugefügt
		// link: muss mit <a href=" beginnen, optional
		// content: der Inhalt 
		var mylink = link || '<a href="#';
		var mylist = '';
		var myid = 'navbar' +linktext;
		try {
			mylist = '\n<div class="dropdown" id="' +myid +'"><div class="dropbtn has-children">' +mylink +'">' +
			linktext +'</a></div>\n<div class="dropdown-content">' +
			content +'\n</div></div>';
		} catch (err) {
			mylist = err.message;
		}
		return mylist;
	}

	function dropdown_submenu(linktext, linkliste, link) {
		// liefert ein komplettes Untermenü zurück
		// link: wenn der Menüpunkt keinen Link enthalten soll, den Textstring # übergeben
		// link muss mit <a href=" beginnen
		// linktext: Beschriftung des Menüpunktes, der Pfeil nach rechts wird automatisch hinzugefügt
		// linkliste: die Linkliste
		var mylink = link || '<a href="#';
		// wenn Argument weggelassen, dann durch default ersetzen
		var mylist = '';
		try {
			mylist = '\n<div class="dropdown-submenu">' +mylink +'">' +
			linktext +' &#x25BA;</a>\n<ul class="sub-menu">' +
			linkliste +'\n</ul></div>';
		} catch (err) {
			mylist = err.message;
		}
		return mylist;
	}
	
	function preurl(s, i) {
		// i=1 ergibt das Wiki Prefix
		// i=2 ergibt den Seitennamen
		// die URL enthält entweder /wiki/ oder title=
		// falls noch andere Varianten auftauchen muss die match-Funktion ergänzt werden
		try {
			// var try1 = s.match(/([\S]*\/wiki\/)([^&]*)/);
			// var try2 = s.match(/([\S]*title=)([^&]*)/);
			// var mytry = try1 || try2;
			result = mw.config.get('wgPageName');
			// mytry[2];
			if (i == 1) {
				result = mw.config.get('wgServer') +mw.config.get('wgScript') +'?title=';	// mytry[1];
			}
		} catch (err) {
			result = err.message;
		}
		return result;
	}
  	
	function dragElement(elmnt) {
		var pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0;
		elmnt.onmousedown = dragMouseDown;
		function dragMouseDown(e) {
			e = e || window.event;
			e.preventDefault();
			// get the mouse cursor position at startup:
			pos3 = e.clientX;
			pos4 = e.clientY;
			document.onmouseup = closeDragElement;
			// call a function whenever the cursor moves:
			document.onmousemove = elementDrag;	//console.log('MediaWiki:Gadget-Navbar.js dragMouseDown');
		}
		function elementDrag(e) {
			e = e || window.event;
			e.preventDefault();
			// calculate the new cursor position:
			pos1 = pos3 - e.clientX;
			pos2 = pos4 - e.clientY;
			pos3 = e.clientX;
			pos4 = e.clientY;
			// set the element's new position:
			elmnt.style.top = elmnt.offsetTop - pos2 +'px';
			elmnt.style.left = elmnt.offsetLeft - pos1 +'px';	//console.log('MediaWiki:Gadget-Navbar.js elementDrag');
		}
		function closeDragElement() {
			// stop moving when mouse button is released:
			document.onmouseup = null;
			document.onmousemove = null;	//console.log('MediaWiki:Gadget-Navbar.js closeDragElement');
		}
	}
});