Benutzer:Rene/SGHtml: Unterschied zwischen den Versionen

aus Stargate Wiki, dem deutschsprachigen Stargate-Lexikon
Zur Navigation springen Zur Suche springen
Pfeile links/rechts: Zusätzliche Pfeile und Möglichkeit die Ersetzung zu verhindern
Probleme mit Backslash
Zeile 14: Zeile 14:
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)


===Vorschau===
===Backslash in im Text===
Die Erweiterung funktioniert bei MediaWiki Versionen vor 1.11 nicht in der Vorschau. Aber der Version 1.11 ersetzt die Erweiterung die Pfeil Symbole auch in der Vorschau.
Die Erweiterung ersetzt teilweise das Zeichen « <nowiki>'</nowiki> » durch « <nowiki>\'</nowiki> »


===Pfeile links/rechts/hoch/runter===
===Pfeile auch in nowiki ersetzt===
In der neusten Version ersetzt die Erweiterung die Pfeile <&#126;, &#126;>,&#126;^ und &#126;V durch Bilder (<~,~>,~^,~V). Dabei werden die Zeichenfolgen auch im Bereich '''<nowiki><pre></nowiki>''' und '''<nowiki><nowiki></nowiki>''' ersetzt.
In der neusten Version ersetzt die Erweiterung die Pfeile <&#126;, &#126;>,&#126;^ und &#126;V durch Bilder (<~,~>,~^,~V). Dabei werden die Zeichenfolgen auch im Bereich '''<nowiki><pre></nowiki>''' und '''<nowiki><nowiki></nowiki>''' ersetzt.


Die einzige Möglichkeit dies zu verhindern besteht darin statt dem Zeichen ~ den Code &&#35;126; zu schreiben.
Die einzige Möglichkeit dies zu verhindern besteht darin statt dem Zeichen ~ im Text den Code &&#35;126; zu schreiben.
 
===Key-Wörter===
Die zusätzlichen keywords werden nicht eingesetzt. Ursache unbekannt.


==Programmcode==
==Programmcode==

Version vom 4. April 2008, 15:43 Uhr

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

Aktueller Stand Version 0.6 MediaWiki Version 1.12 / 0.25 MediaWiki Version 1.10

^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 einbinden
  • Zusätzliche Key-Wörter im Code

^Probleme

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

^Backslash in im Text

Die Erweiterung ersetzt teilweise das Zeichen « ' » durch « \' »

^Pfeile auch in nowiki ersetzt

In der neusten Version ersetzt die Erweiterung die Pfeile <~, ~>,~^ und ~V durch Bilder (<~,~>,~^,~V). Dabei werden die Zeichenfolgen auch im Bereich <pre> und <nowiki> ersetzt.

Die einzige Möglichkeit dies zu verhindern besteht darin statt dem Zeichen ~ im Text den Code &#126; zu schreiben.

^Programmcode

Dieser Code ist noch in der Entwicklung. Er ist bereits vorbereitet auf die MediaWiki Version 1.12.0rc1. Im aktuellen Wiki wird nur eine eingeschränkte Version benutzt.

<?php
/* Original MediaWiki HTML Code umwandeln und an StargateWiki anpassen */

$wgExtensionCredits['other'][] = array(
  'name' => 'SGHtml',
  'version' => '0.6',
  '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 veraendern um StargateWiki 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"',
	'<~' => '<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 = 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>';

        $text = $jscript.'<span style="margin-top:-3em; float:right; background-color:#ffe0e0; border: solid 2px #ee9999; padding: 0px 4px;"><a href="#" onclick="cssClassChange(\'span\',\'spoiler\',\'spoilerOK\',\'Spoiler verdecken\',\'Spoiler aufdecken\',this)">Spoiler aufdecken</a></span>'.$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 Wikpedia';
        
    return true;
}

?>