|
|
| (9 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) |
| Zeile 1: |
Zeile 1: |
| ==Beschreibung==
| | #redirect [[Benutzer:Rene/SGPack]] |
| Die Erweiterung '''NewArticle''' erzeugt immer wenn ein neuer Artikel angelegt wird, eine Auswahl an Vorlagen an die durch anklicken in das Editfeld eingefügt wird. Sinn ist es das Erstellen von Artikeln nach den [[Hilfe:Artikelvorlagen|Artikelvorlagen]] zu erleichtern.
| |
| | |
| ===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 <nowiki><noinclude></nowiki> und <nowiki><includeonly></nowiki>. 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:
| |
| | |
| <pre>
| |
| Parameter1==Wert1
| |
| //
| |
| Parameter2==Wert2
| |
| </pre>
| |
| | |
| Die einzelnen Befehlszeilen werden jeweils durch eine Zeile mit der Zeichenfolge // getrennt.
| |
| | |
| 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
| |
| | |
| <pre>
| |
| Start==Um ein einheitliches Erscheinungsbild zu erhalten gibt es in Stargate Wiki Vorlage für Artikel.
| |
| //
| |
| Person - Vorlage:Personenbeschreibung==Personenbeschreibung
| |
| //
| |
| Episode - Vorlage:Episodenbeschreibung==Episodenbeschreibung
| |
| //
| |
| End==Viel Spaß
| |
| </pre>
| |
| | |
| erzeugt über dem Editorfeld den folgenden Text
| |
| | |
| Um ein einheitliches Erscheinungsbild zu erhalten gibt es in Stargate Wiki Vorlage für Artikel.
| |
| * Person - Vorlage:Personenbeschreibung
| |
| * Episode - Vorlage:Episodenbeschreibung
| |
| Viel Spaß
| |
| | |
| ==Probleme & Ideen==
| |
| *Es finden noch kaum Prüfungen auf Fehler statt.
| |
| *Text als Wikitext interpretieren.
| |
| | |
| ==Code==
| |
| <pre>
| |
| <?php
| |
| $wgExtensionCredits['other'][] = array(
| |
| 'name' => 'NewArticle',
| |
| 'version' => '0.90',
| |
| 'author' => 'Rene',
| |
| 'url' => 'http://www.stargate-wiki.de/index.php/User:Rene/NewArticle',
| |
| 'description' => 'Artikelvorlagen für neue Artikel anbieten.'
| |
| );
| |
| | |
| $wgHooks['AlternateEdit'][] = 'NewArticle';
| |
| | |
| // Umwandeln einer Zeichenkette fuer die JS Funktion unescape()
| |
| function JSencode($text) {
| |
| return rawurlencode(html_entity_decode(htmlentities($text,ENT_QUOTES,'UTF-8')));
| |
| }
| |
| | |
| /* Filter des Artikels, noinclude Bereiche entfernen */
| |
| function FilterPage($text) {
| |
| // <noinclude> Bereiche komplett entfernen
| |
| $expr = '/(.*)<noinclude>.*<\/noinclude>(.*)/';
| |
| $replace = '$1$2';
| |
| $text = preg_replace($expr,$replace,$text);
| |
| // <includeonly>, </includeonly> einfach entfernen
| |
| $expr = '/(.*)<includeonly>|<\/includeonly>(.*)/';
| |
| $replace = '$1$2';
| |
| $text = preg_replace($expr,$replace,$text);
| |
| return $text;
| |
| }
| |
| | |
| function NewArticle(&$seite) {
| |
| global $wgOut;
| |
| // Pruefen ob der Artikel neu ist
| |
| if( !$seite->mArticle->exists() ) {
| |
| // Steuerseite einlesen "MediaWiki:NewArticle"
| |
| $steuer = new Article(Title::makeTitle(8,'NewArticle'));
| |
| $steuer->getContent();
| |
| // Pruefen ob Steuerseite vorhanden
| |
| if( $steuer->mContentLoaded ) {
| |
| // Ausgabe Puffer Variablen anlegen
| |
| $einleitung = ''; $abschluss = ''; $artikelListe = ''; $textErsteWahl = 'Bitte wählen';
| |
| $listenKopf = '<script type="text/javascript">';
| |
| $listenKopf .= 'function NewArticleGo(select) {';
| |
| $listenKopf .= 'var wert=select.options[select.options.selectedIndex].value;';
| |
| $listenKopf .= "insertTags('',unescape(wert),'');";
| |
| $listenKopf .= "}</script>\n";
| |
| $listenKopf .= '<select size="1" id="NewArticleSelect" onchange="NewArticleGo(this);">'."\n";
| |
| // Die einzelnen Zeilen, getrennt durch eine Zeile mit //, in Array einlesen
| |
| $steuerArray = explode("\n//\n", $steuer->mContent);
| |
| foreach( $steuerArray as $index => $value ) {
| |
| // Die Zeile aufteilen an den Zeichen ==
| |
| $zeile = explode("==",$value);
| |
| if( $zeile[0] == 'Start' ) {
| |
| $einleitung = $zeile[1];
| |
| } elseif ( $zeile[0] == 'End' ) {
| |
| $abschluss = $zeile[1];
| |
| } elseif ( $zeile[0] == 'Einleitung' ) {
| |
| $textErsteWahl = $zeile[1];
| |
| } else {
| |
| // Artikel einlesen umwandeln und im HTML Code ablegen
| |
| $artikel = new Article(Title::makeTitle(10,$zeile[1]));
| |
| $artikel->getContent();
| |
| $artikelListe .= '<option value="'.JSencode(FilterPage($artikel->mContent)).'">';
| |
| $artikelListe .= $zeile[0]."</option>\n";
| |
| unset($artikel);
| |
| }
| |
| }
| |
| $ersteWahl = '<option value="">'.$textErsteWahl.'</option>'."\n";
| |
| // Ergebniss in die Ausgabe einfuegen
| |
| $wgOut->addHTML($einleitung.$listenKopf.$ersteWahl.$artikelListe.'</select>'.$abschluss);
| |
| }
| |
| }
| |
| | |
| return true;
| |
| }
| |
| </pre>
| |