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
Hinweis auf Installation
Programmcode: Neuer Code
Zeile 23: Zeile 23:
   
   
==Programmcode==
==Programmcode==
Aktuell läuft auf Stargate-Wiki der folgende Programmcode. Die Erweiterung benutzt den MediaWiki Hook '''OutputPageBeforeHTML'''.
Aktuell läuft auf Stargate-Wiki der folgende Programmcode. Die Erweiterung benutzt die MediaWiki Hooks '''OutputPageBeforeHTML''', '''PersonalUrls''' und '''BeforePageDisplay'''.


<pre>
<pre>
Zeile 45: Zeile 45:
$wgExtensionCredits['other'][] = array(
$wgExtensionCredits['other'][] = array(
   'name' => 'SGHtml',
   'name' => 'SGHtml',
   'version' => '0.65',
   'version' => '0.75',
   'author' => '[http://www.stargate-wiki.de/index.php/User:Admin Rene Raule]',
   'author' => '[http://www.stargate-wiki.de/index.php/User:Admin Rene Raule]',
   'url' => 'http://www.stargate-wiki.de/index.php/Rene/SGHtml',
   'url' => 'http://www.stargate-wiki.de/index.php/Rene/SGHtml',
Zeile 53: Zeile 53:


$wgHooks['OutputPageBeforeHTML'][] = 'SGHtml';
$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 ) {
function SGHtml( &$out, &$text ) {
    global $isSpoiler;
   
     $mTable = array(
     $mTable = array(
/* Externe Seiten in eigenem Fenster */
/* Externe Seiten in eigenem Fenster */
Zeile 82: Zeile 136:
     $text = stripslashes(preg_replace($suchen,$ersatz,$text));
     $text = stripslashes(preg_replace($suchen,$ersatz,$text));


     /* Spoiler aufdecken einbinden (geht nur im Text) */
     /* prüfen ob Spoiler vorhanden */
     if (strpos($text,'id="show_spoiler"') == true) {
     if (strpos($text,'id="show_spoiler"') == true) {
      $jscript = '<script type="text/javascript">
        $isSpoiler = true;
        function cssClassChange(welchertag,class1,class2,linkgeklickt,linknormal,thus) {
/* Button */
          var rows = document.getElementsByTagName(welchertag);
         $btext  = $jscript.'<button id="bt-Spoiler" ';
          for(var i=0; i<rows.length; i++) {
        $btext .= 'style="position:fixed; right: 15px; top: 0px; z-index:50;';
            if(rows[i].className==class1) {
$btext .= ' background-color:#fffafa; color:#4169e1;';
              rows[i].className=class2;
$btext .= ' padding: 0px 10px; font-size:x-small;"';
      thus.innerHTML=linkgeklickt;
$btext .= ' onclick="switchSpoiler()"';
            } 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 .= ' type="button"';
$btext .= '>Spoiler aufdecken</button>';
$btext .= '>Spoiler aufdecken</button>';
$text = $btext.$text;
$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;
     return true;
}
}