|
|
| 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 <~, ~>,~^ und ~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 &#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ä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';
| |
| $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"',
| |
| '<~' => '<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));
| |
| | |
| /* 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>
| |