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

Benutzer:Rene/SGHtml: Unterschied zwischen den Versionen

aus Stargate Wiki, dem deutschsprachigen Stargate-Lexikon
K Programmcode: Lizenz GNU
Weiterleitung nach Benutzer:Rene/SGPack erstellt
 
(4 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Mediawiki-Erweiterung um den HTML-Code vor der Auslieferung durch den Server noch zu verändern.
#redirect [[Benutzer:Rene/SGPack]]
 
==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 [[Bild:Bearbeiten.png]] statt Text '''Bearbeiten''' um einen Abschnitt zu bearbeiten
*Werkzeug Spoiler aufdecken als Javascript-Button einbinden
*Pfeile <&#126;, &#126;>,&#126;^ und &#126;V im Artikel durch Bilder (<~,~>,~^,~V) ersetzen.
:'''Hinweis:''' ''Die Erweiterung ersetzt die Pfeile auch im Bereich '''<nowiki><pre></nowiki>''' und '''<nowiki><nowiki></nowiki>'''. Die einzige Möglichkeit dies zu verhindern besteht darin statt dem Zeichen ~ im Text den Code &&#35;126; zu schreiben.''
 
==Probleme==
Wer einen Fehler findet bitte hier melden Danke. -- {{Benutzer:Rene/sig}} 23:16, 16. Sep. 2007 (CEST)
 
==Programmcode==
Aktuell läuft auf Stargate-Wiki der folgende Programmcode. Die Erweiterung benutzt den MediaWiki Hook '''OutputPageBeforeHTML'''.
 
<pre>
<?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&auml;endern um Stargate-Wiki Besonderheiten einzuf&uuml;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&auml;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"',
'&lt;~' => '<img src="/skins/common/images/16x16/blue_left.gif" alt="<-" />',
'~&gt;' => '<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;
}
 
?>
</pre>