Benutzer:Rene/SGHtml: Unterschied zwischen den Versionen

aus Stargate Wiki, dem deutschsprachigen Stargate-Lexikon
Zur Navigation springen Zur Suche springen
PyBot (Diskussion | Beiträge)
K Bot: Automatisierte Textersetzung (-{{Benutzer:Rene/sig}} +Rene <sup>Admin - Rückmeldung</sup>)
Weiterleitung nach Benutzer:Rene/SGPack erstellt
 
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 wenn auf der Seite ein Spoiler benutzt wird.
*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==
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|Rene]] <sup>[[StargateWiki:Administratoren|Admin]] - [[Benutzer Diskussion:Rene|Rückmeldung]]</sup> 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 die MediaWiki Hooks '''OutputPageBeforeHTML''', '''PersonalUrls''' und '''BeforePageDisplay'''.
 
<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.75',
  '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';
$wgHooks['BeforePageDisplay'][] = 'fnSGHtmlBPD';
$wgHooks['PersonalUrls'][] = 'ShowSpoiler';
 
$isSpoiler = false;
 
// Letzte Änderungen direkt vor der Ausgabe
function fnSGHtmlBPD(&$out) {
  global $isSpoiler;
 
  $keywords = array('Stargate','Stargate SG-1','Stargate Atlantis','Stargate Universe','Stargate Lexikon');
 
  if($isSpoiler) {
    $SpoilerScript = '<script type="text/javascript">
function switchSpoiler() {
  var rows = document.getElementsByTagName("div");
  var btext = document.getElementById("bt-Spoiler");
  for(var i=0; i<rows.length; i++) {
    if(rows[i].className=="spoiler") {
      rows[i].className="spoilerOK";
      btext.innerHTML=btext.innerHTML.replace(/aufdecken/,"verdecken");
    } else {
      if(rows[i].className=="spoilerOK") {
        rows[i].className="spoiler";
        btext.innerHTML=btext.innerHTML.replace(/verdecken/,"aufdecken");
      }
    }
  }
}
</script>';
 
    $out->addScript($SpoilerScript);
  }
  // Weitere Meta Begriffe
  foreach($keywords as $word) {
    $out->addKeyword($word);
  }
 
  return true;
}
 
function ShowSpoiler(&$personal_urls,&$wgTitle) {
  global $isSpoiler;
 
  if($isSpoiler) {
    $ref = "javascript:switchSpoiler()";
    $text = 'Spoiler aufdecken';
    $class = 'new';
    $active = true;
    $personal_urls['Spoiler'] = array( 'text' => $text,'href' => $ref,'class' => $class, 'active' => $active );
  }
  return true;
}
 
function SGHtml( &$out, &$text ) {
    global $isSpoiler;
   
    $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));
 
    /* prüfen ob Spoiler vorhanden */
    if (strpos($text,'id="show_spoiler"') == true) {
        $isSpoiler = true;
/* Button */
        $btext  = $jscript.'<button id="bt-Spoiler" ';
        $btext .= 'style="position:fixed; right: 15px; top: 0px; z-index:50;';
$btext .= ' background-color:#fffafa; color:#4169e1;';
$btext .= ' padding: 0px 10px; font-size:x-small;"';
$btext .= ' onclick="switchSpoiler()"';
$btext .= ' type="button"';
$btext .= '>Spoiler aufdecken</button>';
$text = $btext.$text;
    }
    return true;
}
 
?>
</pre>

Aktuelle Version vom 5. November 2011, 08:46 Uhr

Weiterleitung nach: