|
|
| (5 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 <~, ~>,~^ 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==
| |
| 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 */
| |
| | |
| $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;
| |
| }
| |
| | |
| ?>
| |
| </pre>
| |