C64-Wiki:C64-Wiki-Funktionen

Aus C64-Wiki
(Weitergeleitet von C64-Wiki:C64Gallery)
Wechseln zu: Navigation, Suche

Hier im C64-Wiki gibt es einige spezielle Funktionserweiterungen (extensions). Deren Verwendung und Besonderheiten werden hier dokumentiert.

C64Gallery

Die einfache Bildergallerie des C64-Wikis. Syntax siehe unten. Immer zentriert. Bildunterschriften sind optional, ebenso wie die Angabe der Bildbreite. Falls das Bild breiter als 400 Pixel ist und keine Breite explizit angegeben wird, wird auf 400 Pixel begrenzt (für Cover etc.). Wiki-Markup in Bildunterschriften ist erlaubt, sollte aber sparsam benutzt werden, insbesondere sollten keine <br>-Tags für "schöne" Umbrüche benutzt werden, da sich die für die Unterschrift zur Verfügung stehende Breite ändern kann.

<C64Gallery>
Bild:Moviemonsterssanfran.png|200px|Karte von San Francisco.
Bild:Skyfoxzoom.gif|{{Taste|z}}: Ein Mutterschiff entlädt eine weitere Abteilung Panzer.
Bild:Moviemonsterslondon.png
</C64Gallery>


Moviemonsterssanfran.png

Karte von San Francisco.
Skyfoxzoom.gif

z : Ein Mutterschiff entlädt eine weitere Abteilung Panzer.
Moviemonsterslondon.png



SimpleVote

Diese Funktion dient der Bewertung von Spielen (und sollte daher auch nur für Spieleartikel verwendet werden).

Um bei einem Artikel die SimpleVote-Funktion zu verwenden, muss folgendes Tag in den Artikeltext eingefügt werden:

<SimpleVote></SimpleVote>

Dadurch erhält der Artikel eine einfache Abstimmungsfunktion, bei der jeder angemeldete Benutzer eine Stimme abgeben kann. Die Stimmen werden pro Artikel gezählt. Die SimpleVote-Funktion ermittelt selbsttätig, zu welchen Artikel sie gehört. Die SimpleVote-Funktion in einem Artikel mehrmals einzubauen wäre also sinnlos.

Artikel, die die SimpleVote-Funktion enthalten, werden nicht gecacht, sondern bei jedem Aufruf neu aufgebaut.

Um eine Liste der 100 Spiele mit den besten Bewertungen zu erhalten, kann folgender Code eingefügt werden:

<SimpleVote>highscore</SimpleVote>

Analog für die 100 Spiele mit den schlechtesten Bewertungen:

<SimpleVote>lowscore</SimpleVote>

Bei der Ausgabe werden nur Artikel mit mindestens 2 Stimmen berücksichtigt. Spiele in der Highsorelist müssen mindestens 5,01 Punkte haben, Spiele in der Lowscoreliste maximal 5,00 Punkte. Wenn zwei Spiele die gleiche Punktzahl haben, gewinnt das Spiel mit der größeren Anzahl an Stimmen (und falls die auch gleich sind, gewinnt das Spiel, für das zuletzt gestimmt wurde).

Und dann gibt es noch die "richtige" Top Ten:

<SimpleVote>topten</SimpleVote>

Hierbei werden nur Spiele mit mindestens 5 Stimmen berücksichtigt.

Bei der Funktion für die Top Ten gibt es noch eine Variante, die den Cache nicht ausschaltet:

<SimpleVote>topten-cached</SimpleVote>

Hierbei können die angezeigten Ergebnisse maximal 24 Stunden hinter den aktuellen Bewertungen verzögert sein. Dafür lässt sich diese Variante besser auf stark frequentierten Seiten verwenden.

Analog zur Top Ten gibt es auch eine Top Three. Das für die Top Ten gesagte gilt auch dort.

<SimpleVote>topthree</SimpleVote>
<SimpleVote>topthree-cached</SimpleVote>

Die Stimmen werden einzeln und benutzerbezogen in der Datenbank gespeichert. Daher ist es möglich, alle jemals abgegeben Stimmen aufzulisten...und zwar so:

<SimpleVote>listall</SimpleVote>

Bewertungen können wieder widerrufen werden.

Neue Funktionen:

<SimpleVote>top-3</SimpleVote>
<SimpleVote>top-10</SimpleVote>
<SimpleVote>top-100</SimpleVote>
<SimpleVote>flop-100</SimpleVote>
<SimpleVote>needvotes-100</SimpleVote>
<SimpleVote>refresh</SimpleVote>

Beim Einbau auf einer Benutzerseite:

<SimpleVote></SimpleVote>
<SimpleVote>novotes</SimpleVote>

CVote

Um bei einem Artikel die CVote-Funktion zu verwenden, muss folgendes Tag in entsprechender Form in den Artikeltext eingefügt werden:

<CVote>Eindeutiger Abstimmungsname: Wie heisst Du?
[[Benutzer:Klaws|Möglichkeit 1 - Klaws]]
[[Benutzer:Sledgie|Möglichkeit 2 - Sledgie]]
[[Benutzer:Örg|Möglichkeit 3 - Örg]]</CVote>

Dies ergibt eine Abstimmungsfunktion, bei der jeder angemeldete Benutzer eine Stimme abgeben kann.

Der erste Eintrag in der Parameterliste ist der Name der Abstimmung. Über diesen Namen werden die Stimmen gezählt und zugeodnet; daher müssen unterschiedliche Abstimmungen unterschiedliche Namen haben. Es ist auch möglich, die selbe Anstimmung auf mehreren unterschiedlichen Seiten einzubinden. Der Name wird nur intern verwendet.

Die weiteren Zeilen in der Parameterliste stehen für die Auswahlmöglichkeiten der Abstimmung. Hierbei kann auch Wiki-Code verwendet werden. Die Stimmen werden an Hand der Positionen der Auswahlmöglichkeiten in der Liste zugeordnet; daher sollte die Liste nach Beginn der Abstimmung nicht mehr umsortiert werden!

Die Stimmen werden einzeln und benutzerbezogen in der Datenbank gespeichert. Bewertungen können wieder widerrufen werden.

Die CVote-Funktion kann mehrfach in einem Artikel verwendet werden.

Artikel, die die CVote-Funktion enthalten, werden nicht gecacht, sondern bei jedem Aufruf neu aufgebaut.

Es ist jetzt auch möglich, einen Termin für das Abstimmungsende festzulegen:

<CVote until="2009-08-05 15:00:00">Eindeutiger Abstimmungsname: Wie heisst Du?
[[Benutzer:Klaws|Möglichkeit 1 - Klaws]]
[[Benutzer:Sledgie|Möglichkeit 2 - Sledgie]]
[[Benutzer:Örg|Möglichkeit 3 - Örg]]</CVote>

Im Beispiel ist eine Stimmabgabe (und Rücknahme) bis zum 05.08.2009 15 Uhr möglich. Die Zeitangabe muss im ISO-Format (JJJJ-MM-TT HH:MM:SS) erfolgen. Ausschlaggebend für das Abstimmungsende ist die Serverzeit, welche im Idealfall der aktuellen (mitteleuropäischen) Zeit entspricht.

RandomArticleLink

Um bei einem Artikel die RandomArticleLink-Funktion zu verwenden, muss folgendes Tag in den Artikeltext eingefügt werden:

<RandomArticleLink></RandomArticleLink>

Dadurch wird an dieser Stelle im Artikel ein Verweis auf einen zufälligen Artikel eingefügt. Es wird dafür eine Kopie des Zufallsgeneratorcodes benutzt, der auch für die normale "Zufälliger Artikel"-Funktion (in der Navigationsleiste links) verwendet wird.

Die Zufallsfunktion ist übrigens im C64-Wiki so konfiguriert, dass leere Artikel nach Möglichkeit nicht berücksichtigt werden.

Wird diese Funktion mehrfach in einen Artikel eingebaut, so wird für jede Stelle separat der Zufallsgenerator angestossen.

Die RandomArticleLink-Funktion hat keine Auswirkungen auf das Caching der Seiten, in denen sie eingebaut ist. Somit landet das Ergebnis der Zufallsgenerators mit im Cache und ändert sich nicht, bis eines der folgenden Ereingnisse eintritt:

  • beim ersten Ladevorgang nach einer Änderung,
  • beim ersten Ladevorgang nach dem Auslauf des Caching-Intervalls (24 Stunden nach dem letzten Neuaufbau),
  • bei jedem Ladevorgang, wenn der Artikel eine SpecialPage ist,
  • bei jedem Ladevorgang, wenn der Artikel die SimpleVote-Funktion enthält.

In der Regel bleibt also der zufällige Link für 24 Stunden unverändert; danach erst wird ein neuer ermittelt.

RandomImage

Um bei einem Artikel die RandomImage-Funktion zu verwenden, muss folgendes Tag in den Artikeltext eingefügt werden:

<RandomImage></RandomImage>

Dadurch wird an dieser Stelle im Artikel ein zufälliges Bild eingefügt.

Bei der Auswahl des Bildes wird wie folgt verfahren:

  1. Per Zufallsgenerator wird ein zufälliger Artikel ausgewählt (gleiches Verfahren wie bei der RandomArticleLink-Funktion).
  2. Per Zufallsgenerator wird bestimmt, ob das Titelbild, das Cover oder das Highscorebild ausgewählt werden soll.
  3. Der gefundene Artikel wird auf seine Tauglichkeit überprüft:
    1. Er muss den Text "== Beschreibung ==" enthalten.
    2. Vor dem Text "== Beschreibung ==" müssen mindestens zwei Verweise auf Bilder enthalten sein (das erste wird als Titelbild, das zweite als Cover verwendet).
    3. Wenn das Highscorebild ausgewählt werden soll (und auch nur dann), muss auch der Text "== Highscore ==" (und ein danach kommender Bildverweis) im Artikeltext enthalten sein.
    4. Der gewünschte Bildverweis muss ein im Datenbestand vorhandenes Bild referenzieren.
    5. Das Bild darf kein "Platzhalter" sein.
  4. Wenn die Überprüfung negativ ausgefallen ist, beginnt die komplette Prozedur wieder von vorn (maximal 100 Versuche; falls bis dahin kein passendes Bild gefunden wurde, kommt als Ergebnis der Text "Heute leider kein Bild...").

Da diese Funktion ja beim Web- und beim Datenbank-Server keine Langeweile aufkommen lässt, sollte sie sparsam verwendet werden.

Um die Darstellung des Bildes zu beinflussen, können entsprechende Codefragmente zwischen den Tags eingefügt werden:

<RandomImage>thumb|left|300px|</RandomImage>

Dabei ist zu beachten, dass der abschliessende "Pipe-Character" nicht vergessen wird!

Eine Bildunterschirft mit einem Link zu dem Artikel, aus dem das Bild entnommen wurde, wird automatisch hinzugefügt.

Wird diese Funktion mehrfach in einen Artikel eingebaut, so wird für jede Stelle separat der Zufallsgenerator angestossen.

Um die der Bilder zu beeinflussen (z.B. nur Titel- und Highscorebilder), können hinter einem "@" noch Steuerinformationen angegeben werden:

<RandomImage>thumb|left|300px|@TH</RandomImage>

T steht für Titelbild, H für Highscorebild und C für Cover. der Buchstabe v sorgt für die Anzeige der erkannten Version der Artikelstruktur (aktuell gibt es V0, V2 und V3). Die Buchstaben können beliebig kombiniert werden. Es wird zwischen Groß- und Kleinschreibung unterschieden.

Weitere Parameter, die ebenfalls durch "@" getrennt angehangen werden können, habe nur Auswirkungen, wenn APC installiert ist (das ist seit April 2009 der Fall).

  • Eine Cache-ID, z.B. MainPage1. RandomImage-Aufrufe mit der gleichen ID greifen auf den selben Cacheinhalt zu und zeigen daher das selbe Bild (sofern der Cacheinhalt nicht mittendrin verworfen wird).
  • Eine Zeitspanne in Sekunden, die angibt, nach welcher Zeit der Cacheinhalt spätestens verworfen wird. Wenn hier kein Wert angegeben wird, wird von 86400 Sekunde (24 Stunden) ausgegangen.
  • Eine Wahrscheinlichkeit im Bereich von 0.0 bis 1.0 für ein zufälliges Verwerfen des Cacheinhalts pro Aufruf. Ein Wert von 0 bedeutet "keine zufälliges verwerfen". Beispiel: der Wert 0.01 bedeutet, dass im statistischen Mittel bei einem von 100 Aufrufen der Cacheinhalt verworfen wird.

Wenn der Cacheinhalt verworfen wurde, ermittelt die Funktion ein neues Bild.

<RandomImage>center|300px|@CTH@MainPage1@86400@0</RandomImage>

Ein spezieller Parameter ist FLUSHAPC, der alle Cacheinhalte der RandomImage-Funktion löscht: <RandomImage>FLUSHAPC</RandomImage>.

Die RandomImage-Funktion hat keine Auswirkungen auf das Caching der Seiten, in denen sie eingebaut ist. Das Verhalten entspricht in dieser Hinsicht der RandomArticleLink-Funktion.

ExpireCache

Diese Funktion sorgt dafür, dass ein Artikel beim nächsten Anzeigen komplet neu aufgebaut wird (also nicht aus dem Cache geholt wird). Es gibt zwei Möglichkeiten, diese Funktion zu verwenden.

Um das Caching für einen Artikel komplett abzuschalten, kann folgendes Tag in den Artikeltext eingefügt werden:

<ExpireCache></ExpireCache>

Um in einem Artikel den Cacheeintrag für einen anderen Artikel als verfallen zu markieren, kann der Tag in dieser Form eingefügt werden (das Beispiel verwirft den Cacheeintrag für die Hauptseite):

<ExpireCache>Hauptseite</ExpireCache>

Zu beachten ist dabei, dass die Funktion im ersten Artikel nur dann aufgerufen, wenn dieser selber nicht aus den Cache geholt wird! Das folgende Codefragment sorgt entsprechnd dafür, dass der Cache für beide Seiten verworfen wird:

<ExpireCache></ExpireCache>
<ExpireCache>Hauptseite</ExpireCache>

Hinweis: der Namespace wird bei dieser Funktion nicht berücksichtigt und darf auch nicht mit angegeben werden (bei mehreren Artikeln mit gleichen Namen in unterschiedlichen Namespaces werde alle diese Artikel berücksichtigt).

Als Artikelname muss die Schreibweise mit der in der Datenbank übereinstimmen; meist ist dies identisch mit dem Artikelnamen.

Diese Funktion ist für den internen Gebrauch gedacht (siehe C64-Wiki:Cron).

LoadURL

Diese Funktion lädt über einen ganz normalen HTTP-Request eine Seite von der angegebenen URL. Das Ergebnis des Requests wird dabei ignoriert!

Diese Funktion kann in Verbindung mit der ExpireCache-Funktion angewandt werden, um zu einem bestimmten Zeitpunkt eine Seite automatisch neu aufbauen zu lassen (so dass der Cacheeintrag zu diesem Zeitpunkt also aktualisiert wird).

Ein Beispiel für die Verwendung:

<LoadURL>http://www.c64-wiki.de/index.php/Hauptseite</LoadURL>

Diese Funktion ist für den internen Gebrauch gedacht (siehe C64-Wiki:Cron).

HighscoreCollector

Der Highscore-Collector durchsucht alle Artikel im Default-Namespace. Artikel, die die HighscoreEntry-Funktion verwerden oder die eine Sektion "== Highscore ==" haben und innerhalb dieser Sektion erkennbare Highscores aufgelistet haben, werden inklsusive dieser Highscore-Einträge aufgelistet. Falls ein Highscore-Screenshot gefunden wird, so wird dieser mit aufgenommen (bei mehreren nur der erste).

Um bei einem Artikel die HighscoreCollector-Funktion zu verwenden, muss folgendes Tag in den Artikeltext eingefügt werden:

<HighscoreCollector></HighscoreCollector>

Die HighscoreCollector-Funktion hat keine Auswirkungen auf das Caching der Seiten, in denen sie eingebaut ist. Somit kann es vorkommen, dass Änderungen der Highscore-Einträge in den Artikeln erst mit Verzögerung in dieser Auflistung auftauchen.

HighscoreEntry

Diese Funktion soll das Eintragen von Highscores erleichtern. Eine automatische Sortierung erfolgt nicht, da dies zu unerwarteten Ergebnissen führen könnte (z.B. bei Rennspielen, bei denen schnellere Rundenzeiten ein besseres Ergebnis bedeuten). Die Einträge müssen also schon in der Reihenfolge der Platzierung erfolgen.

Die Eintragung muss nach folgendem Schema erfolgen:

<HighscoreEntry begin />
<HighscoreEntry name="Werner" score="$94.56" level="" date="16.01.2008" picture="SpaceTaxi_Highscore_Werner.png" />
<HighscoreEntry name="Colt Seavers" score="$1297.94" level="" date="27.03.2010" picture="cssptaxihi.png" />
<HighscoreEntry name="Camailleon" score="$965.48" level="Mystery Screen" date="22.01.2010" picture="Cami High SpaceTaxi.JPG" />
<HighscoreEntry name="Robotron2084" score="$790.91" level="" date="14.05.2008" picture="Robotronspacetaxi2.png" />
<HighscoreEntry name="Bergo79" score="$621.33" level="" date="28.08.2008" picture="Space taxi hiscore bergo.png" />
<HighscoreEntry name="Rockford" score="$590.30" level="" date="10.05.2008" picture="Spacetaxi_Rock_Hi.png" />
<HighscoreEntry name="Werner" score="$94.56" level="" date="16.01.2008" picture="SpaceTaxi_Highscore_Werner.png" />
<HighscoreEntry render />

Prinzipiell ist es möglich, mehrere getrennte Highscore-Blöcke pro Artikel einzubauen. Dies wird aber aber von der HighscoreCollector-Funktion nicht korrekt erkannt.

ACheck

ACheck prüft Artikel auf die Einhaltung bestimmter Regeln. Dies wird insbesondere von den Seiten der Kategorie:Prüfung benutzt.

Erstmal was Doku zum Abschrecken:

PCRE Pattern Modifiers

PCRE Pattern Syntax

Intern wird preg_match zur Anwendung der "Perl Compatible Regular Expressions" (PCRE) auf den Artikelquelltext verwendet.

Der Rest der Erklärung kommt irgendwann mal...

<ACheck>full
Spiel
/# (?!\'\'\'Keiner|Niemand|Leer).*?$/m
Kein Highscoreeintrag
1
n/\[\[Bild:Musterscore.gif/i
Platzhalter an Stelle des Highscorebilds
1
iArtikelstruktur
(bindet zentral vordefinierten Regelsatz "Artikelstruktur" ein)
1
</ACheck>

Die zentral definierten Regelsätze finden sich hier.

PregReplace

PregReplace ist eine gefährliche Funktion und daher nur ausgewählten Anwendern zugänglich. Sie dient dazu, mittels regulärer Ausdrücke Ersetzungen in allen Artikeln des Haupt-Namespace durchzuführen. Eine etwas weiter gehende Dokumentation ist hier zu finden.

<PregReplace></PregReplace>

Die Funktion ist über diese Seite verfügbar. Ein Tippfehler und alle Artikel sind hinüber.

PregReplaceAll

PregReplaceAll ist die noch gefährlichere Variante von PregReplace. Sie dient dazu, mittels regulärer Ausdrücke Ersetzungen in allen Artikeln aller Namespaces durchzuführen.

<PregReplaceAll></PregReplaceAll>

Die Funktion ist über diese Seite verfügbar. Ein Tippfehler und das komplette Wiki ist hinüber.

WikiFamiliySSO

Diese Extension ist im Hintergrund aktiv und sorgt dafür, dass Links zwischen dem deutschen und dem englischen C6-Wiki über eine Spezialseite umgeleitet werden. Diese Spezialseite übergibt dann bei der Weiterleitung auf die gewünschte Zielseite Benutzerinformationen an das andere Wiki. Das Zielwiki kann dann, falls notwendig, die Benutzeranmeldung des anderen Wikis übernehmen.

Die Datenübergabe ist durch krypotographische Mechanismen abgesichert.

LocalRequestsOnly

Diese Extension wird wie folgt verwendet:

<LocalRequestsOnly>
...igendwelcher Wiki-Code...
</LocalRequestsOnly>

Im Normalfalle wird der Wiki-Code zwischen den Tags der Extension einfach übergangen. Lediglich wenn der Artikel von der IP-Adresse des Web-Servers angefordert wurde, wird der umschlossene Wiki-Code interpretiert.

Sinn der Sache ist es, dass bestimmte Aktionen nur dann ausgeführt werden sollen, wenn der Aufruf über einen Cron-Job (sprich: vom Web-Server selber) erfolgt. Eingesetzt wird die Funktion auf C64-Wiki:Cron; einer Seite, die gerne auch mehrfach täglich von Suchmaschinen angesteuert wird. Würden die dort vorhandenen Funktionaufrufe dann jedesmal ausgeführt, entstände eine spektakuläre Last auf dem Sever, die auch bei anderen Besuchern ein Antwortzeitverhalten unter aller Sau bewirken würde.

RawHTML

Diese Extension wird wie folgt verwendet:

<RawHTML>
...igendwelcher HTML-Code...
</RawHTML>

Die Einbettung beliebigen HTML-Codes ist gefährlich. Daher funktioniert diese Extension nur auf geschützten Seiten. Dadurch können nur Administratoren diese Funktion nutzen.