Kompatibilitätslisten


Lockenlord

Active Member
Joined
Mar 7, 2009
Messages
782
Nun nocheinmal in einem eigenen Thread.
Ich habe mich in der letzten Zeit, in der ich am Wiki gearbeitet habe mit Kompatibilitätslisten beschäftigt und bin dabei auf das Problem gestoßen, dass die meisten Spiele vielfach in verschiedenen Versionen herausgegeben wurden, die unterschiedlich kompatibel zu den verschiedenen Emulatoren sein können. Jede Version eines Spiels einzeln in die Kompatibilitätsliste einzutragen erzeugt unnötig viele Einträge und dadurch eine unnötig lange Liste. Nur eine Version einzutragen führt auf der anderen Seite zu einer weniger zuverlässigen Liste.
Meine Idee für eine Lösung ist die Einträge ausklappbar zu machen wie schon geschrieben.
T4b said:
Lockenlord said:
Wie ihr vielleicht an den letzten Änderungen gesehen habt beschäftige ich mich gerade mit Kompatibilitätslisten. Da es teils viele verschiedene Versionen eines Spiels gibt, die unterschiedlich kompatibel sein können hatte ich mir gedacht man könnte zwar die einzelnen Versionen eintragen, aber diese in einem Eintrag zusammenfügen, der dann über so einen "Einklappen/Ausklappen"-Button ganz angezeigt werden kann. Weiß jemand von euch, wie man das im Wiki umsetzen kann?
Das passt hier eigentlich nicht in den Thread...

Hier nun also ein neuer Thread, um die Ordnung zu wahren.

Im Grunde müsste nur jemand den schon existierenden JavaScript Code für die klappbaren Navigationsleisten etwas modifizieren. Dazu bin ich aber nicht in der Lage, daher die Frage an euch, ob das jemand machen kann oder irgendwo ein fertiges Stückchen Code hat herumliegen sehen.
T4b said:
[...] bedenke, dass zu lange Seiten für Leute mit langsamen Verbindungen alles andere als lustig sind - auch wenn der Text eingeklappt wird.
Auch ein berechtigter Einwand, der allerdings auch wieder auf jede Seite angewendet werden kann. Wenn irgendeine Seite zu lang wird kann man sie aufteilen und das werde ich gegebenenfalls auch tun.

Noch zu etwas anderem: Ich habe eine kleine Vorlage für Kompatibilitätslisten geschrieben und würde diese gern auf alle schon existierenden Kompatibilitätslisten anwenden. Ich habe das schon auf der Diskussionsseite geschrieben in der Hoffnung, dass sich jemand dazu äußert, aber da das nicht geschehen ist möchte ich nun noch einmal hier eure Meinung zu Kompatibilitätslisten hören.
 
Kannst das von mir aus schon auf alle solchen Artikel anwenden, aber dann mit einer richtigen Vorlage.

http://www.mediawiki.org/wiki/Help:Templates

Das Aufteilen (was wahrscheinlich sowieso klar ist) aber dann bitte nach sinnvollen Unterthemen und nicht "Teil1" und "Teil2".


Ich bin nicht sicher was du mit "klappbare Navigationsleisten" meinst. Gib mal den Code her, den müsste dann wohl Jemand abändern und in eine Parser-Erweiterung verarbeiten.
 
Das mit der Vorlage war nicht im Sinne einer MediaWiki-Vorlage gemeint, denn für eine ganze Kompatibilitätsliste wären diese nicht oder nur wenig geeignet. Kompatibilitätslisten teilt man wohl am sinnvollsten nach Buchstaben, aber darum geht's ja jetzt erstmal gar nicht. Ich denke ich kann aber einzelne Elemente als Bausteine anlegen und dann überall einfügen.

Die klappbaren Navigationsleisten haben einen "Einklappen"-Link, der die Leiste zu einer kleinen Zeile herunterbricht und sich dann wieder per "Ausklappen"-Link ausklappen lässt.
Klappbare Navigationsleisten wie man sie aus der Wikipedia kennt: Vorlage:Navigationsleiste
Code steht in der Common.js
 
Lockenlord said:
Das mit der Vorlage war nicht im Sinne einer MediaWiki-Vorlage gemeint, denn für eine ganze Kompatibilitätsliste wären diese nicht oder nur wenig geeignet.
Ich denke eigentlich schon.

Wieso nicht?


Dann ist das also der Code:
Code:
//================================================================================
//*** Dynamic Navigation Bars
 
// set up the words in your language
var NavigationBarHide = 'Einklappen';
var NavigationBarShow = 'Ausklappen';
 
// set up max count of Navigation Bars on page,
// if there are more, all will be hidden
// NavigationBarShowDefault = 0; // all bars will be hidden
// NavigationBarShowDefault = 1; // on pages with more than 1 bar all bars will be hidden
if (typeof NavigationBarShowDefault == 'undefined' ) {
    var NavigationBarShowDefault = 1;
}
 
// adds show/hide-button to navigation bars
addOnloadHook(function() {
	// shows and hides content and picture (if available) of navigation bars
	// Parameters:
	//     indexNavigationBar: the index of navigation bar to be toggled
	function toggleNavigationBar(indexNavigationBar)
	{
	   var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
	   var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
 
	   if (!NavFrame || !NavToggle) {
		   return false;
	   }
 
	   // if shown now
	   if (NavToggle.firstChild.data == NavigationBarHide) {
		   for (
				   var NavChild = NavFrame.firstChild;
				   NavChild != null;
				   NavChild = NavChild.nextSibling
			   ) {
			   if (NavChild.className == 'NavPic') {
				   NavChild.style.display = 'none';
			   }
			   if (NavChild.className == 'NavContent') {
				   NavChild.style.display = 'none';
			   }
			   if (NavChild.className == 'NavToggle') {
				   NavChild.firstChild.data = NavigationBarShow;
			   }
		   }
 
	   // if hidden now
	   } else if (NavToggle.firstChild.data == NavigationBarShow) {
		   for (
				   var NavChild = NavFrame.firstChild;
				   NavChild != null;
				   NavChild = NavChild.nextSibling
			   ) {
			   if (NavChild.className == 'NavPic') {
				   NavChild.style.display = 'block';
			   }
			   if (NavChild.className == 'NavContent') {
				   NavChild.style.display = 'block';
			   }
			   if (NavChild.className == 'NavToggle') {
				   NavChild.firstChild.data = NavigationBarHide;
			   }
		   }
	   }
	}
 
	function toggleNavigationBarFunction(indexNavigationBar) {
		return function() {
			toggleNavigationBar(indexNavigationBar);
			return false;
		};
	}
	// iterate over all NavFrames
	var NavFrames = getElementsByClassName((document.getElementById("content") || document.getElementById("mw_content")), "div", "NavFrame");
	for (var i=0;  i<NavFrames.length; i++) {
		var NavFrame = NavFrames[i];
		var NavToggle = document.createElement("a");
		NavToggle.className = 'NavToggle';
		NavToggle.setAttribute('id', 'NavToggle' + i);
		NavToggle.setAttribute('href', '#');
		NavToggle.onclick = toggleNavigationBarFunction(i);
 
		var NavToggleText = document.createTextNode(NavigationBarHide);
		NavToggle.appendChild(NavToggleText);
 
		// add NavToggle-Button as first div-element
		// in < div class="NavFrame" >
		NavFrame.insertBefore(NavToggle, NavFrame.firstChild);
		NavFrame.setAttribute('id', 'NavFrame' + i);
	}
	// if more Navigation Bars found and not template namespace than Default: hide all
	if (NavigationBarShowDefault < NavFrames.length && wgNamespaceNumber != 10) {
		for(var i=0; i<NavFrames.length; i++) {
			toggleNavigationBar(i);
		}
	}
 
});
Ich kann Javascript nicht richtig und mir ist der code nicht ganz klar, da müsste wohl Jemand anders ran.
 
Eine Kompatibilitätsliste ist von vorn herein erst einmal aufgebaut wie ein normaler Artikel mit ein paar erklärenden Absätzen vor der eigentlichen Liste. Dafür eine Vorlage zu basteln wäre ziemlich sinnfrei, denn letztendlich ist so ziemlich jeder Artikel so aufgebaut. Eine Vorlage macht es bis hier höchstens komplizierter den Artikel zu ändern. Der Rest ist eine einfache Tabelle, die im Aufbau von System zu System variieren kann. Nicht viel, was man in eine Vorlage auslagern könnte. Vielleicht ein paar CSS-Klassen für das Tabellendesign, aber sonst? Wie genau hast du dir das denn gedacht?
 
Lockenlord said:
Eine Kompatibilitätsliste ist von vorn herein erst einmal aufgebaut wie ein normaler Artikel mit ein paar erklärenden Absätzen vor der eigentlichen Liste. Dafür eine Vorlage zu basteln wäre ziemlich sinnfrei, denn letztendlich ist so ziemlich jeder Artikel so aufgebaut. Eine Vorlage macht es bis hier höchstens komplizierter den Artikel zu ändern. Der Rest ist eine einfache Tabelle, die im Aufbau von System zu System variieren kann. Nicht viel, was man in eine Vorlage auslagern könnte. Vielleicht ein paar CSS-Klassen für das Tabellendesign, aber sonst? Wie genau hast du dir das denn gedacht?
Exakt, die Tabelle, damit man nicht immer Copy&Paste aus dem Artikel machen muss wenn man genau die gleich Farben usw will.
 
http://wiki.openpandora.de/Vorlage:Kompatibilit%C3%A4tsstatus

Finde ich jetzt persönlich ziemlich sinnfrei. So eine Übersicht braucht man ja eigentlich weniger oft.

Und es müsste eigentlich alles zusammen mit einer einzigen Vorlage lösbar sein, das wird dann aber komplexer, damit habe ich auch nicht sooo viel Erfahrung, ich versuch's mal.

Edit: Dafür braucht man diese Erweiterung: http://www.mediawiki.org/wiki/Help:Extension:parserFunctions
Damit kann man bedeutend bessere Vorlagen machen (mit if-Blöcken und anderen praktischen Dingen).
Hab ich bei meinem PSP Wiki auch schon installiert, läuft gut und ist ungefährlich. :-D
 
OK, ich weiß gerade mal gar nicht worauf du hinaus willst, aber letztendlich müssen Tabellenspalten immer noch so eingegeben werden, wie es jetzt ist oder zumindest ist dort nicht viel rauszuholen.
 
Also ich denke das können wir einfacher lösen.

1. eine Ganz normale Kompatibiliätsliste wie man sie kennt
2. Am Ende die Versionsnummern der Emulatoren mit Detaillierte Anzeige wenn man mit der Maus drüberfährt. (Oder Spieleversion) Dazu eine Verlinkung in der jeweiligen Versionsnummer um nicht nur diesen Hovertext zu bekommen, sondern auch um den Text statischer vor sich zu bekommen.


PS: Ich helfe gern dabei mit um die Listen mit Inhalt zu füllen.
 
Back
Top