Menü aufrufen
Toggle preferences menu
Persönliches Menü aufrufen
Nicht angemeldet
Ihre IP-Adresse wird öffentlich sichtbar sein, wenn Sie Änderungen vornehmen.

Benutzer:Rene/NewArticle

aus Stargate Wiki, dem deutschsprachigen Stargate-Lexikon

Beschreibung

Die Erweiterung NewArticle bietet 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 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.

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==Parameter2
//
Parameter3==Parameter4

Die einzelnen Befehlszeilen werden jeweils durch eine Zeile mit der Zeichenfolge // getrennt.

Folgende Werte können für den ersten Parameter in der Zeile 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.

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

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ß

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ß

Code

<?php
$wgExtensionCredits['other'][] = array(
  'name' => 'NewArticle',
  'version' => '0.80',
  'author' => 'Rene',
  'url' => 'http://www.stargate-wiki.de',
  'description' => 'Neuen Artikel mit Inhalt fuellen.'
);

$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')));
}
  
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 = "<ul>\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];
	} else {
	  // Artikel einlesen umwandeln und im HTML Code ablegen
	  $artikel = new Article(Title::makeTitle(10,$zeile[1]));
	  $artikel->getContent();
	  $artikelliste .= '<li><a style="cursor: pointer;" onclick="insertTags(\'\',unescape(\'';
	  $artikelliste .= JSencode($artikel->mContent);
	  $artikelliste .= "'),'');\">$zeile[0]</a></li>\n";
	  unset($artikel);
        }
      }
      // Ergebniss in die Ausgabe einfuegen
      $wgOut->addHTML($einleitung.$artikelliste.$abschluss);
    }  
  }
  
  return true;
}

?>