Benutzer Diskussion:CF/Spoiler

aus Stargate Wiki, dem deutschsprachigen Stargate-Lexikon
Wechseln zu: Navigation, Suche

Bei der Überarbeitung der Spoiler würde ich gerne helfen.--CF 13:27, 5. Feb. 2010 (CET)

Ich stelle mal meine Überlegungen vor. Ich wollte gerne von den CSS Spoilern weg hin zu Javascript. Der Grund ist das es mich nervt das der Spoilerinhalt verschwindet sobald man die Maus von der Lupe zieht. Ein anklicken eines Links im Spoiler ist so nicht möglich. Daher habe ich eine Erweiterung geschrieben mit der man einen Button erzeugen kann um eine Javascript-Funktion (definiert im Wiki) aufgerufen werden kann. Außerdem ist so eine Erweiterung auch in anderen Fällen sinnvoll einsetzbar. Man könnte damit zB die Vorlage:Navigationsleiste vereinfachen. Mir gefällt nicht das man eine CSS Klasse definieren muss um eine Javascript-Funktion aufzurufen. Zurück zum Spoiler. Außerdem wollte ich es gerne so machen das man einen Spoiler aufdeckt in dem man mit der Maus auf einen Button fährt, wenn man auf den Button klickt sollen alle Spoiler im Text aufgedeckt werden. Damit kann ich es mir ersparen den HTML Text zu durchsuchen um einen Spoiler-Button zu erzeugen. Einen Ansatz findet man unter Benutzer:Rene/Test sowie Benutzer:Rene/monobook.js. --Rene Admin - Rückmeldung 18:09, 3. Mär. 2010 (CET)
Was meinst du genau mit einer statt vier Spoilerversionen? Ich habe unter Benutzer:CF/Spoiler mal einen Spoiler erstellt, der – soweit ich das richtig verstanden hab – das tut was du oben beschreibst; der jeweilige Spoiler wird angezeigt, wenn man über die Lupe fährt und alle Spoiler werden angezeigt, wenn man auf eine Lupe klickt (und bei Wiederholung wieder ausgeblendet). Er vereint auch Vorlage:Spoiler und Vorlage:MiniSpoiler, kann ganze Tabellenzeilen ausblenden und erzeugt validen HTML-Code. Beim Javascript habe ich auf Schleifen verzichtet, ich fand das unschön alle Elemente zu durchsuchen, ob diese geändert werden sollen.--CF 05:49, 5. Mär. 2010 (CET)
Super Anleitung die da geschrieben hast. Ich werde das Morgen mal probieren und dann vermutlich übernehmen. Vielen Dank schon mal. --Rene Admin - Rückmeldung 22:28, 6. Mär. 2010 (CET)
Freut mich dass es gefällt. Ich habe das ganze jetzt noch ein bisschen umgeschrieben, damit keine zusätzliche Erweiterung mehr notwendig ist. Ausserdem funktionieren die Spoiler nun auch wenn Javascript deaktiviert ist. Sie haben dann natürlich nicht alle Funktionen, aber die gleichen wie im Moment Vorlage:Spoiler.--CF 17:41, 4. Apr. 2010 (CEST)
Ich habe die Diskussion mal hierher verschoben, da sind wir näher an der Quelle VeryHappy.gif. Mittlerweile habe ich mir das ganze noch mal überlegt und bin auch zu der Idee gekommen das ganze möglichst ohne die SG-Erweiterung zu machen. Wie ich StargateWiki Diskussion:Hauptseite#jQuery geschrieben habe möchte ich versuchen mit jQuery die Javascript Erweiterungen zu Stargate Wiki teilweise umzuschreiben um sie damit übersichtlicher und somit besser wartbar zu machen. Es gibt da einige Funktionen die wir hier sicher gut einsetzen können. Ich versuche jetzt mal deine Vorschläge meine Ideeen und jQuery unter einen Hut zu bringen.
Mal eine Frage warum eigentlich hast du eine eigene Datei für die Spoiler CSS Definition angelegt? --Rene Admin - Rückmeldung 20:57, 4. Apr. 2010 (CEST)
Die jetztige Version benutzt an Erweiterungen nur noch <jsbutton>, und das auch nur um onclick und onmouseover zu benutzen. Die Vorlage besteht aus zwei Teilen; bei onmouseover wird zu dem nachfolgenden HTML-Element – in der Tabelle der nächste Reihe – die Klasse spoiler hinzugefügt oder entfernt. Bei onclick sollen alle Spoiler angezeigt bzw. verdeckt werden. Damit nicht von allen Elementen die Klasse entfernt werden muss oder mit display unterschieden werden muss, ob ein div, span oder tr vorliegt habe ich gedacht es ist am einfachsten einfach die Deklaration von display: none; zu entfernen. Da <style>-Elemente aber kein id-Attribut haben kann man nicht einfach ohne Schleifen auf das Element zugreifen. Also bleibt nurnoch ein <link>-Element, um ein Stylesheet einzubinden; und damit die eigene Datei. Wenn du willst kann ich das auch ohne extra Datei mit und ohne jQuery umschreiben; alleine für die Spoiler würde ich allerdings jQuery nicht einbinden.--CF 03:52, 5. Apr. 2010 (CEST)
Danke jetzt habe ich das mit der extra Datei verstanden, das keine Erweiterung außer jsbutton benötigt wird hatte ich schon erkannt. Mir ist klar das man jQuery nicht wirklich braucht, alles was in der Bibliothek definiert ist kann man natürlich auch selbst programmieren. Ich hoffe nur das wir die Erweiterung benutzen können um einige Funktionen einfacher zu gestalten. --Rene Admin - Rückmeldung 09:59, 5. Apr. 2010 (CEST)
Ich habe deine Vorarbeit jetzt auf mein Projekt Benutzer:Rene/Test übertragen. Ist allerdings noch nicht ganz fertig, ich werde wohl zB die Globale Variable auslagern auch wenn es nicht nötig ist. Außerdem möchte ich auch gerne wieder einen oder zwei Button einbauen. --Rene Admin - Rückmeldung 23:16, 5. Apr. 2010 (CEST)
Sieht doch gut aus Smile.gif. Zwei Fragen:
  • Die Unterscheidung zwischen blockspoiler und spanspoiler ist soweit ich das sehe garnicht nötig; bei dem letzten Beispiel wird deswegen bei einem Klick der Text nicht angezeigt.
  • Meinst du mit ein oder zwei Buttons die „großen“ Spoiler aufdecken-Links? Und dafür wird auch $('#blockspoiler, #spanspoiler').toggleClass('hide',spoilerShow); gebraucht?
--CF 14:07, 10. Apr. 2010 (CEST)