Benutzer:Rene/NewArticle: Unterschied zwischen den Versionen

aus Stargate Wiki, dem deutschsprachigen Stargate-Lexikon
Zur Navigation springen Zur Suche springen
Beschreibung: Erster Hinweis
Erklärung
Zeile 1: Zeile 1:
==Beschreibung==
==Beschreibung==
Die Steuerung der Erweiterung erfolgt über die Seite [[MediaWiki:NewArticle]].
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 [[Hilfe:Artikelvorlagen|Artikelvorlagen]] zu erleichtern.


weiteres folgt...
===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:
 
<pre>
Parameter1==Parameter2
//
Parameter3==Parameter4
</pre>
 
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
 
<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ß


==Code==
==Code==

Version vom 13. November 2007, 14:58 Uhr

^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;
}

?>