Benutzer:Rene/SGHtml: Unterschied zwischen den Versionen

aus Stargate Wiki, dem deutschsprachigen Stargate-Lexikon
Zur Navigation springen Zur Suche springen
Funktion: Genauere Erklärung
Hinweis auf Installation
Zeile 11: Zeile 11:


==Probleme==
==Probleme==
Trotz der Versionsnummer unter 1.00 läuft die Erweiterung auf Stargate-Wiki bisher ohne Probleme.
Wer einen Fehler findet bitte hier melden Danke. -- {{Benutzer:Rene/sig}} 23:16, 16. Sep. 2007 (CEST)
Wer einen Fehler findet bitte hier melden Danke. -- {{Benutzer:Rene/sig}} 23:16, 16. Sep. 2007 (CEST)


==Installation==
Um die Erweiterung zu installieren muss der unten angegebene Code im Verzeichnis ''extensions/SGHtml'' in der Datei ''SGHtml.php'' gespeichert werden. Zusätzlich 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.
Um die Erweiterung zu aktivieren muss dann noch die Datei ''LocalSetting.php'' um die Zeile
  require_once ( 'extensions/SGHtml/SGHtml.php' );
ergänzt werden.
==Programmcode==
==Programmcode==
Aktuell läuft auf Stargate-Wiki der folgende Programmcode. Die Erweiterung benutzt den MediaWiki Hook '''OutputPageBeforeHTML'''.
Aktuell läuft auf Stargate-Wiki der folgende Programmcode. Die Erweiterung benutzt den MediaWiki Hook '''OutputPageBeforeHTML'''.

Version vom 25. Mai 2008, 21:36 Uhr

Mediawiki-Erweiterung um den HTML-Code vor der Auslieferung durch den Server noch zu verändern.

^Funktion

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

  • 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
  • Werkzeug Spoiler aufdecken als Javascript-Button einbinden 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.

^Probleme

Trotz der Versionsnummer unter 1.00 läuft die Erweiterung auf Stargate-Wiki bisher ohne Probleme.

Wer einen Fehler findet bitte hier melden Danke. -- Benutzer:Rene/sig 23:16, 16. Sep. 2007 (CEST)

^Installation

Um die Erweiterung zu installieren muss der unten angegebene Code im Verzeichnis extensions/SGHtml in der Datei SGHtml.php gespeichert werden. Zusätzlich 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.

Um die Erweiterung zu aktivieren muss dann noch die Datei LocalSetting.php um die Zeile

 require_once ( 'extensions/SGHtml/SGHtml.php' );

ergänzt werden.

^Programmcode

Aktuell läuft auf Stargate-Wiki der folgende Programmcode. Die Erweiterung benutzt den MediaWiki Hook OutputPageBeforeHTML.

<?php
# Original MediaWiki HTML Code umwandeln und an StargateWiki anpassen
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or 
# (at your option) any later version.
# 
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.

if ( !defined( 'MEDIAWIKI' ) ) {
  die( 'This file is a MediaWiki extension, it is not a valid entry point' );
}
 
$wgExtensionCredits['other'][] = array(
  'name' => 'SGHtml',
  'version' => '0.65',
  'author' => '[http://www.stargate-wiki.de/index.php/User:Admin Rene Raule]',
  'url' => 'http://www.stargate-wiki.de/index.php/Rene/SGHtml',
  'description' => 'MediaWiki Html veräendern um Stargate-Wiki Besonderheiten einzufügen<br />1. Externe Seiten in eigenem Fenster<br />2. Bild als 
bearbeiten-Link<br />3. Link zum Seitenanfang<br />4. Spoiler aufdecken<br />5. Zusätzliche meta-Keywords'
);

$wgHooks['OutputPageBeforeHTML'][] = 'SGHtml';

function SGHtml( &$out, &$text ) {
    $mTable = array(
	/* Externe Seiten in eigenem Fenster */
        'class="external text"' => 'class="external text" target="_blank"',
        'class="external autonumber"' => 'class="external autonumber" target="_blank"',
	'<~' => '<img src="/skins/common/images/16x16/blue_left.gif" alt="<-" />',
	'~>' => '<img src="/skins/common/images/16x16/blue_right.gif" alt="->" />',
	'~^' => '<img src="/skins/common/images/16x16/blue_up.gif" alt="^" />',
	'~V' => '<img src="/skins/common/images/16x16/blue_down.gif" alt="V" />'
    );
	
    foreach( $mTable as $from => $to ) {
      $text = str_replace( $from, $to, $text );
    }

    // Ueberschrift finden
    $suchen = '#<h(\d)><span class="editsection">\[<a href="(.*?)"\s+title="(.*?)">Bearbeiten<\/a>\]<\/span>\s*<span class="mw-headline">(.*?)<\/span>#e';
    // Neue Ueberschrift mit Bildern
    // Test ob H2 Ueberschrift, nur dann wird der Link an den Seitenanfang eingefuegt.
    $ersatz = '"<h$1>".($1==2?"';
    $ersatz .= '<a href=\"#top\" title=\"Seiten Anfang\" style=\"vertical-align: top; float: right;\"><img 
src=\"/skins/common/images/16x16/blue_up.gif\" alt=\"^\" /></a>';
    $ersatz .= '":"").';
    $ersatz .= '"<span class=\"mw-headline\">$4</span> <a href=\"$2\" title=\"$3\">';
    $ersatz .= '<img src=\"/skins/common/images/16x16/edit.png\" alt=\"[bearbeiten]\" style=\"vertical-align:top; margin-top:-3px;\" /></a>"';
    
    $text = stripslashes(preg_replace($suchen,$ersatz,$text));

    /* Spoiler aufdecken einbinden (geht nur im Text) */
    if (strpos($text,'id="show_spoiler"') == true) {
      $jscript = '<script type="text/javascript">
        function cssClassChange(welchertag,class1,class2,linkgeklickt,linknormal,thus) {
          var rows = document.getElementsByTagName(welchertag);
          for(var i=0; i<rows.length; i++) {
            if(rows[i].className==class1) {
              rows[i].className=class2;
	      thus.innerHTML=linkgeklickt;
            } else {
              if(rows[i].className==class2) {
	        rows[i].className=class1;
	        thus.innerHTML=linknormal;
	      }
            }
          }
        }
        </script>';

        $btext  = $jscript.'<button ';
	$btext .= 'style="position:fixed; left: 155px; top: 0px; z-index:50;';
	$btext .= ' border: solid 1px black;';
	$btext .= ' background-image:url(/skins/common/images/slice_button.gif); background-repeat: repeat-x;';
	$btext .= ' padding: 0x 4x; font-size:x-small;"';
	$btext .= ' onclick="cssClassChange(\'span\',\'spoiler\',\'spoilerOK\',\'Spoiler verdecken\',\'Spoiler aufdecken\',this)"';
	$btext .= ' type="button"';
	$btext .= '>Spoiler aufdecken</button>';
	$text = $btext.$text;
    }
    
    /* Anpassung der Seiten Parameter */
    
    // Weitere Meta Begriffe
    $out->mKeywords[] = 'Stargate';
    $out->mKeywords[] = 'Stargate SG-1';
    $out->mKeywords[] = 'Stargate Atlantis';
    $out->mKeywords[] = 'Stargate Universe';
    $out->mKeywords[] = 'Stargate Lexikon';
    $out->mKeywords[] = 'Stargate Wikipedia';
        
    return true;
}

?>