Benutzer:Rene/SGPack: Unterschied zwischen den Versionen

aus Stargate Wiki, dem deutschsprachigen Stargate-Lexikon
Zur Navigation springen Zur Suche springen
Für Benutzer freigeben
Zeile 1: Zeile 1:
<user>*</user>
==Beschreibung==
==Beschreibung==
SGPack ist eine Sammlung von Mediawiki Erweiterungen die speziell für Stargate-Wiki programmiert wurden. Die Sammlung enthält die folgenden Erweiterungen:
SGPack ist eine Sammlung von Mediawiki Erweiterungen die speziell für Stargate-Wiki programmiert wurden. Die Sammlung enthält die folgenden Erweiterungen:

Version vom 27. September 2010, 21:56 Uhr

<user>*</user>

^Beschreibung

SGPack ist eine Sammlung von Mediawiki Erweiterungen die speziell für Stargate-Wiki programmiert wurden. Die Sammlung enthält die folgenden Erweiterungen:

  • BlockSpammer
Die Erweiterung prüft die Änderungen von Anonymen Benutzern. Wird versucht eine Internetadresse einzugeben so wird die Übernahme der Änderungen abgelehnt.
  • NewArticle
Um das Anlegen von neuen Artikeln zu erleichtern ermöglicht es diese Erweiterung Artikelvorlagen direkt in den neuen Artikel einzubinden.
  • PageProtection
Erlaubt es Benutzern ihre Seiten (Benutzer und Benutzer Diskussion) zu schützen.
  • DropDownInsert
Mit dieser Erweiterung können Eingabehilfen in Form von Text, Bildern oder Listen erzeugt werden.
  • CacheArray
Ermöglicht das anlegen und auslesen von Arrays über mehrere Seiten.
  • ParserAdds
Kleine Parser Funktionen: trim, userinfo, recursiv

^Installation

Die Erweiterung muss in ein eigenes Verzeichnis zB SGPack im Verzeichnis extensions abgelegt werden. Dann muss die Datei Localsettings.php um die Zeile

include_once("$IP/extensions/SGPack/SGPack.php");

ergänzt werden.

Es ist auch möglich/erlaubt nur einzelne Teile der Sammlung zu benutzen. Da alle Erweiterungen als Klassen definiert sind reicht es nur die entsprechende Klasse in SGP_Setup bzw. SGP_Magic einzubinden. Die nicht gewünschte Zeilen in diesen Funktionen kann man entweder entfernen oder auskommentieren. Die nicht benutzen Klassen können in der Datei verbleiben.

^Copyright

Die Erweiterung unterliegt der GPL (Version 2). Das bedeutet der Einsatz in anderen MediaWikis ist erlaubt solange der Hinweis auf den Author und die GPL erhalten bleibt. Dazu genügt, in diesem Falle, bereits der von der Erweiterung selbst erzeugte Link auf der System Seite Spezial:Version. Natürlich kann die Erweiterung auch in anderen System benutzt werden, unter Beachtung der GPL.

Über einen kleinen Hinweis (auf der Diskussionsseite) in welchem Wiki die Erweiterung eingesetzt wird würde ich mich freuen, ist aber keine Pflicht.

^BlockSpammer

^Beschreibung

BlockSpammer ist eine Mediawiki Erweiterung die verhindert das unangemeldete Benutzer (IPs) externe Links in Artikel eintragen. Die Erweiterung prüft Änderungen von nicht angemeldeten Benutzern. Wenn diese einen verdächtigen Eintrag machen wird die Übername der Änderungen verweigert. Momentan prüft die Erweiterung nur auf externe Links.

^NewArticle

^Beschreibung

Die Erweiterung NewArticle erzeugt, immer wenn ein neuer Artikel angelegt wird, eine Auswahl an Vorlagen. Wird eine dieser Vorlagen ausgewählt so wird die Vorlage in das Editorfeld eingefügt. Sinn ist es das Erstellen von Artikeln nach den Artikelvorlagen zu erleichtern.

Hinweis: Die Erweiterung wurde mit den MediaWiki Versionen 1.10.0+ getestet.

^Technik

NewArticle ist eine MediaWiki Erweiterung die sich an den Hook AlternateEdit anhängt. Dabei wird bei jedem Aufruf des Editors geprüft ob es sich um einen neuen Artikel handelt. Ist dies der Fall wird die Steuerdatei MediaWiki:NewArticle ausgelesen und entsprechend der Einleitungstext erzeugt. Das Einfügen des Vorlage erfolgt dann online über eine Javascript. Dazu werden die Vorlagen bei der Erstellung der Seite eingelesen und in eine Javascript Funktion verpackt.

Ab der Version 0.9 prüft die Erweiterung auf die Anweisungen <noinclude> und <includeonly>. Diese werden erkannt und entsprechend ausgewertet.

Hinweis Es wird geprüft ob es sich um einen neuen Artikel handelt, d.h. ein bereits gespeicherte Artikel ohne Inhalt wird nicht als neu angesehen.

^Einstellungen

Die Steuerung der Erweiterung erfolgt über Befehle auf der Seite MediaWiki:NewArticle. Der Aufbau der Seite ist:

Parameter1==Wert1
//
Parameter2==Wert2

Die einzelnen Befehlszeilen werden jeweils durch eine Zeile getrennt die nur die Zeichenfolge // enthält.

Folgende Werte können für den Parameter benutzt werden:

  • Start - Der Wert nach dem Trennzeichen (==) wird vor der Liste der Vorlagen ausgegeben. Der Text wird direkt als HTML ausgegeben, MediWiki Code wird nicht ausgewertet.
  • End - Wie beim Parameter Start, nur wird der Text als Abschluss nach der Liste der Vorlagen ausgegeben.
  • Einleitung - Der Wert wird in der ersten Zeile der Auswahlbox angezeigt. Wird der Parameter nicht angegeben so erscheint dort Bitte wählen.

Bei allen anderen Zeilen ist der Parameter der Text der in der Liste angezeigt wird und der Wert ist der Name des Artikels, ohne die Namensraumangabe. Das folgende Beispiel

Start==<div class="main"><div class="heading">Neuen Artikel anlegen</div>
Du bist dabei einen neuen Artikel in Stargate Wiki zu schreiben. Um dir die Arbeit zu erleichtern
und ein einheitliches Erscheinungsbild der Artikel zu erreichen gibt es in Stargate Wiki Vorlagen
für einzelne Artikelgruppen. Wähle daher bitte aus der Liste das Thema des neuen Artikels aus. Die
entsprechende Artikelvorlage wird dann in das Editorfeld eingefügt und kann sofort bearbeitet
werden.<br /><br />Natürlich kannst du auch einen Artikel ohne Vorlage anlegen. Dies ist z.B. bei
Diskussions-, Weiterleitungs- oder auch Begriffsklärungs-Seiten nötig.<br /><br />
    Thema des Artikels 
//
Person -> Vorlage:Personenbeschreibung==Personenbeschreibung
//
Objekt -> Vorlage:Objektbeschreibung==Objektbeschreibung
//
Episode -> Vorlage:Episodenbeschreibung==Episodenbeschreibung
//
Darsteller -> Vorlage:Darstellerbeschreibung==Darstellerbeschreibung
//
Planet -> Vorlage:Planetenbeschreibung==Planetenbeschreibung
//
End==<br /><br />Vielen Dank.</div>

erzeugt über dem Editorfeld die folgende Ausgabe:

Hinweis: Die CSS-Klassen main und heading sind in Stargate Wiki definiert. Bei einem Einsatz in einem anderen Wiki kann man hier natürlich andere Definitionen benutzen.

Probleme & Ideen

  • Es finden noch kaum Prüfungen auf Fehler statt.
  • Text als Wikitext interpretieren.

^SGHtml

^Beschreibung

Die Erweiterung verändert der HTML Code der von MediaWiki erzeugt wird. Dabei werden die folgenden Anpassungen gemacht:

  • Die JavaScript-Bibliothek jQuery wird eingebunden
  • Externe Seiten werden in einem eigenen Fenster aufgerufen
  • Alle Überschriften der Stufe 2 (==) erhalten am rechten Rand einen ~^ als Link auf den Seitenanfang.
  • Bild Datei:Bearbeiten.png statt Text Bearbeiten um einen Abschnitt zu bearbeiten
  • Persönliches Menü erweitert um den Punkt Wer ist online? um die Seite Spezial:Wer ist Online aufzurufen.
  • Inhalts Menü erweitert um den Punkt Spoiler aufdecken wenn auf der Seite ein Spoiler benutzt wird.
  • Pfeile <~, ~>,~^ und ~V im Artikel durch Bilder (<~,~>,~^,~V) ersetzen.
Hinweis: Die Erweiterung ersetzt die Pfeile auch im Bereich <pre> und <nowiki>. Die einzige Möglichkeit dies zu verhindern besteht darin statt dem Zeichen ~ im Text den Code &#126; zu schreiben.
Achtung Veraltet: Die Umwandlung der Pfeile wird in neueren Version entfallen und durch Vorlagen ersetzt.

^Installation

Um die Erweiterung zu benutzen müssen die Bilder für die Pfeile in das Verzeichnis skins/common/images/16x16 gespeichert werden. Am einfachsten ist es dazu die Bilder auf dieser Seite mit dem Browser zu speichern und sie dann auf den Server zu laden.

^Programmcode

Die Erweiterung benutzt die MediaWiki Hooks OutputPageBeforeHTML, PersonalUrls und BeforePageDisplay.

^PageProtection

^Beschreibung

Mit dieser Erweiterung können Benutzer bestimmen wer auf ihre Seiten zugreifen darf. Geschützt sind nur die Seiten im Benutzernamensraum (z.B. Benutzer:Name). Möchte man das andere diese Seite bearbeiten können gibt man sie mit dem user-tag frei.

  • <user>XYZ</user> gibt die Seite nur für den Benutzer XYZ frei.
  • <user>*</user> gibt die Seite für alle angemeldeten Benutzer frei.
  • <user>**</user> gibt die Seite für alle angemeldeten Benutzer und IPs frei.

Seiten im Benutzerdiskussionsnamensraum sind normalerweise für alle frei. Um diese zu schützen muss zumindest ein user-tag auf der Seite definiert werden. Um die Seite nur für sich selbst frei zu geben schreibt man also <user>MeinName</user> auf die Seite. Den selben Effekt erreicht man auch mit dem kurzen <user>-</user>.

Der Besitzer einer Seite kann sich nicht selbst aussperren, das gleiche gilt für die Administratoren.

^DropDownInsert

Die Idee zu DropDownInsert basiert auf der bekannten CharInsert-Erweiterung. DDInsert geht aber über die Möglichkeiten von CharInsert hinaus. Die Erweiterung stellt die folgenden Befehle bereit:

  • <ddselect titel="TITEL" size="SIZE" name="NAME">... ddvalue ...</ddselect>
Definiert eine Dropdown-Auswahl. Dabei bedeuten die Parameter
  • titel: Name Auswahl. Dieser Wert wird angezeigt wenn noch keine Auswahl erfolgt ist. Vorgabe ist '[ bitte wählen ]'.
  • size: Angabe wie viele Zeilen angezeigt werden sollen. Vorgabe ist 1
  • name: Der Name der Auswahl. Vorgabe ist „Ausgabe“
Die einzelnen Zeilen werden durch ddvalue definiert.
  • <ddvalue show="SHOWTEXT" sample="SAMPLETEXT" picture="NAME">... WERT ...</ddvalue>
Jede ddvalue Definition entspricht einer Zeile in der DropDown-Auswahl. Dabei bedeuten die Parameter:
  • show: Dieser Text wird in der Auswahl angezeigt. Die Vorgabe ist WERT
  • sample: Der SAMPLETEXT wird beim einfügen als markierter Hinweis angegeben.
  • picture: Wird ein Bild angegeben so wird dieses in der Liste angezeigt (als Hintergrund Bild)
  • WERT: Gibt an was bei der Auswahl in den aktuellen Text eingefügt werden soll. Mit einem + Zeichen kann man angeben wo der Cursor platziert werden soll.
  • <ddbutton show="SHOWTEXT" sample="SAMPLETEXT" picture="NAME">... WERT ...</ddbutton>
Entspricht ddvalue, allerdings werden die Button ohne Auswahlliste, als einzelne Elemente, benutzt.

^JSButton

Mit JSButton kann man einen HTML-Button (<button>) erzeugen. Mit diesem Button kann man eine Javascript-Funktion aufrufen welche in Stargate Wiki definiert sein muss.

<jsbutton id="" name="" value="" class="" style="" click="" mover="" mout="">BText</jsbutton>
  • id: Id des Buttons
  • name: Name des Buttons
  • value: Value des Buttons
  • class: Klasse des Buttons
  • style: Style Definition für den Button
  • click: Javascript-Funktion für onclick
  • mover: Javascript-Funktion für onmouseover
  • mout: Javascript-Funktion für onmouseout
  • BText: Beschriftung des Buttons
Hinweis: Momentan wird Wiki-Syntax in BText nur Teilweise unterstützt. Variablen werden erst mit der neuen Mediawiki Version 1.16 ausgewertet. Um Grafiken einzubinden sollten diese selbst keinen Verweis enthalten und müssen daher mit dem Parameter verweis= definiert werden. Beispiel: [[Datei:Bild.jpg|verweis=]]. Wird dies nicht so gemacht funktioniert der Button zwar, erzeugt aber keinen gültigen HTML-Code.

Die Definition der Javascript-Funktion(en) muss entweder in der Datei Mediawiki:<Skin>.js oder Benutzer:<Name>/<Skin>.js erfolgen.

^CacheArray

Die Parser-Erweiterung CacheArray ermöglicht das anlegen und auslesen von Arrays. Das besondere dabei ist das diese Arrays nur einmal angelegt werden müssen und dann auch von anderen Seiten benutzt werden können. Hinweis: Natürlich bleibt das Array nicht erhalten wenn die ursprünglich angefragte Seite an den Browser ausgegeben wurde. Es kann nur während des Seitenaufbaus von aufgerufenen Seiten bzw. Vorlagen benutzt werden.

^Befehle

  • carray
Der Befehl zum setzen, auslesen und löschen der Arrays
  • keys
Mehrere Index-Keys zu einem einzigen Verbinden

^carray

{{carray:<Name_des_Array>|<Kommando>[''Parameter''…''Array-Werte'']}}
  • Name_des_Array
Die Erweiterung ist in der Lage beliebig viele Arrays zu verwalten. Zur Unterscheidung dient dabei der Array-Name.
  • Kommando

Die Steuerung von carray erfolgt über die folgenden Kommandos.

  • w oder write
Das Kommando write füllt das Array mit den angegebenen Werten. Ist das Array bereits angelegt wird der Befehl ignoriert. Um ein Array erneut anzulegen muss es zuerst gelöscht werden, siehe Befehl delete.
Die Definition der Array-Werte erfolgt analog zur {{#switch:}} Definition. Ein Beispiel:
{{carray:EpName|w
| #default = <span class="error">Episodencode {{K}} ist unbekannt</span>
| SGA_1x01/02 = Aufbruch in eine neue Welt
| SGA_1x01 = Aufbruch in eine neue Welt, Teil 1
| SGA_1x02 = Aufbruch in eine neue Welt, Teil 2
| SGA_1x03 = Dunkle Schatten
| SGA_1x04 = 38 Minuten
}}
Das Array-Element #default wird immer dann ausgegeben wenn die Anfrage nach einem nicht definierten Wert gestellt wird, siehe Befehl read. Der Parameter {{K}} im default-Wert wird durch den Index ersetzt.
  • r oder read
Mit dem Kommando read erfolgt die Abfrage des Arrays. Das folgende Beispiel
{{carray:EpName|r|SGA_1x01}}

würde nach der oben angegebenen Definition den Wert

Aufbruch in eine neue Welt, Teil 1

zurück liefern. Ist kein Wert definiert wird entweder nichts oder, wenn definiert, der Inhalt der Zeile #default ausgegeben.

  • rw oder readwrite
Mit der Kombination der Kommandos read und write wird das Array zuerst gefüllt und dann die entsprechende Zelle ausgelesen. Der Aufruf muss daher lauten:
{{carray:EpName|rw|SGA_1x01
| #default = <span class="error">Episodencode ungültig</span>
| SGA_1x01/02 = Aufbruch in eine neue Welt
| SGA_1x01 = Aufbruch in eine neue Welt, Teil 1
| SGA_1x02 = Aufbruch in eine neue Welt, Teil 2
| SGA_1x03 = Dunkle Schatten
| SGA_1x04 = 38 Minuten
}}
  • f oder file
Das Kommando entspricht write und erzeugt ebenfalls ein Array. Der Unterschied ist das die Daten aus einer anderen Seite gelesen werden. Es wird vor dem erzeugen geprüft ob das Array schon vorhanden ist und nur wenn dies nicht der Fall ist wird die Datei geladen. Siehe auch #Hinweise zum Einsatz.
{{carray|EpName|f|Vorlage:EpName/Fill}}
  • fr oder fileread
Das Kommando ist eine Kombination aus file und read
{{carray|EpName|fr|Vorlage:EpName/Fill|SG1_1x10}}
  • u oder used
Um zu prüfen ob ein Array bereits angelegt ist sollte das Kommando used benutzt werden. Ist das Array bereits vorhanden liefert die Anfrage die Anzahl der definierten Array-Elemente, ansonsten wird nichts zurück geliefert.
{{carray:EpName|u}}
  • c oder count
Das Kommando gibt die Anzahl der definierten Array-Elemente zurück. Ist das Array noch nicht definiert ist das Ergebnis 0.
{{carray:EpName|c}}
  • d oder delete
Mit dem Kommando delete wird das Array gelöscht. Dies ist immer dann nötig wenn das Array neu geschrieben werden soll, da das Überschreiben nicht möglich ist.
{{carray:EpName|d}}

^keys

{{keys:[<Mod>:]<Key>[|[<Mod>:]<Key>…]}}
  • Key
Der Key ist entweder direkt ein Text oder eine Variable. Vor dem Key kann ein Modifierer (Mod) angegeben werden.
  • Mod
Mit dem Modifier kann der Key verändert werden. Definiert sind die Modifier l zum umwandeln des Keys in Kleinbuchstaben und u zum umwandeln in Großbuchstaben.

Das Kommando wandelt die Keys entsprechend der Modifier um, entfernt Leerzeichen und fügt zwischen den einzelnen Keys einen Unterstrich _ ein. Das Ergebnis wird dann zurückgeliefert.

{{keys:u: sg1 | 1x01 }}

Ergibt: SG1_1x01

Hinweis Damit nicht definierte Variablen als solche auch erkannt werden, müssen diese nach dem folgenden Muster eingesetzt werden: Nicht {{{1}}} sondern {{{1|}}}.

^Hinweise zum Einsatz

Die Erweiterung kann, richtig eingesetzt, den Aufbau von Seiten beschleunigen die häufig eine Vorlage aufrufen die aus einer großen Anzahl an Werten einen Wert liefert. Dazu sollte eine eigene Seite angelegt werden die nur das Array füllt. Auf der eigentlichen Vorlagenseite sollte mit dem Befehl used geprüft werden ob das Array bereits gesetzt wurde. Wenn nicht kann die "Full"-Vorlage aufgerufen werden. Sonst sollte immer nur das Array ausgelesen werden.

Durch diese Konstruktion erreicht man das die große, daher langsame, 'Füll'-Vorlage nur einmal abgearbeitet werden muss und alle weiteren Zugriffe auf das Cache-Array erfolgen.

Die entsprechende Anweisung sollte wie folgt aussehen, definiert in Vorlage:EpName

{{#if: {{carray:EpName|u}} || {{EpName/Fill}} }}{{carray:EpName|r|{{{1}}}}}

Die Vorlage EpName/Fill füllt das Array EpName mit Werten die dann von der Vorlage EpName ausgelesen wird.

Wichtiger Hinweis

Die oben angegebene Vorgehensweise führt zu Problemen bei gesichteten Versionen. Wird diese Erweiterung benutzt sollte alternativ der Befehl file bzw. fileread eingesetzt werden.

^ParserAdds

^trim

Entfernen von führenden oder nachfolgenden Leerzeichen.

{{trim:PARAMETER}}}
  • PARAMETER
Der Parameter kann ein Text oder sinnvoller eine Variable sein.

Als Rückgabe erhält man den angegebenen Wert ohne führende oder nachfolgende Leerzeichen. Der Einsatz der Funktion ist bei der Übergabe des Arraykeys sinnvoll da es vorkommen kann das der Wert einer Variablen ein führendes Leerzeichen enthält.

^userinfo

Liefert einige Informationen zum aktuellen Benutzer.

{{userinfo:PARAMETER}}
  • PARAMETER - Auswahl der gewünschten Information. Folgende Werte sind erlaubt
name - Benutzername
id - Benutzernummer
realname - Wirklicher Benutzername
email - Emailadresse
home - Verweis auf die Benutzerseite
talk - Verweis auf die Diskussionsseite des Benutzers
groups - Liefert eine Komma getrennte Liste aller Gruppen des Benutzers
group|<gname> - Prüft ob der Benutzer der Gruppe <gname> angehört. Ist der Benutzer in der Gruppe wird der Gruppenname <gname> zurück gegeben sonst ist die Rückgabe leer.
online|<name> - Prüft ob der Benutzer momentan online ist. Als Resultat liefert der Aufruf: online bzw. offline.
Hinweis Diese Funktion setzt die Erweiterung WhosOnline voraus. Ist die Erweiterung nicht installiert liefert der Aufruf unknown.

#recursiv

Wandelt einen Ausdruck so um das eine Vorlage auch mehrfach aufgerufen wird, wenn dies nötig ist. Dazu müssen die Werte die an die Vorlage übergeben werden sollen in () geschrieben werden. Erkennt die Vorlage einen Wert nicht so wird der Wert in das Ergebnis kopiert. Geklammerte Ausdrücke in Verweisen, d.h. Ausdrücke in [[]], werden nicht beachtet.

{{#recursiv:VORLAGE|TEXT|PARAMETER}}
  • VORLAGE
Name der eigentlichen Vorlage. An diese werden alle ermittelten Werte übergeben.
  • TEXT
Einer oder mehrere Werte die an die Vorlage übergeben werden sollen. Handelt es sich um mehrere Werte so müssen dies in Klammern () geschrieben werden. Nicht beachtet werden Ausdrücke in [[]].
  • PARAMETER
Dieser Parameter wird, falls vorhanden, an die Vorlage weitergegeben.

^Beispiel

{{#recursiv:Kürzel\Organisation|(sg1) (sga)}}

Ergibt: Stargate-Kommando SGC Atlantis-Expedition Atlantis

Dieser Aufruf entspricht dem folgenden

{{Kürzel\Organisation:sg1}} {{Kürze\Organisation:sga}}

#tocmod

{{#tocmod:<Parameter>|<Default>}}

Mit dieser Anweisung wird gesteuert ob und wie das Inhaltsverzeichnis angezeigt wird. Die Erweiterung entspricht den Original Wiki Befehlen __TOC__, __NOTOC__, __FORCETOC__ und ermöglich das Ein- bzw. Ausblenden des Inhaltsverzeichnisses. Die Ausgabe wird über die folgenden Parameter gesteuert. Sollen mehrere Parameter angegeben werden müssen diese mit Komma getrennt angegeben werden. Wird der erste Parameter leer übergeben so wird statt dessen der Defaultwert benutzt. Ist auch dieser nicht angegeben wird als Parameter set benutzt.

  • no
Kein Inhaltsverzeichnis, entspricht __NOTOC__
  • force
Erzwingt das Inhaltsverzeichnis, entspricht __FORCETOC__
  • set
Setzt das Inhaltsverzeichnis an diese Stelle, entspricht __TOC__
  • hide
Das Inhaltsverzeichnis wird verdeckt ausgegeben, unabhängig von den Benutzereinstellungen.
  • show
Das Inhaltsverzeichnis wird aufgedeckt ausgegeben, unabhängig von den Benutzereinstellungen.

^Beispiel

  • {{#tocmod:force,hide}}
Erzwingt das Inhaltsverzeichnis und verdeckt es.
  • {{#tocmod:{{{Register|}}}|set,hide}}
Benutzt entweder den Wert der Variable oder wenn diese nicht belegt ist den angegebenen Defaultwert. Bei der Variable ist der Trenner | wichtig da nur so bei undefinierter Variable auch ein Leerstring übergeben wird.

^Code

Download des Codes: SGPack.php, SGPack.i18n.php