<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="/pool/xslt_ht.xslt" type="application/xml"?>
<xsl:stylesheet
  xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
  xmlns:is = "http://herbaer.de/xmlns/20080705/imgshow"
  xmlns:l = "http://herbaer.de/xmlns/20141210/localization"
  xmlns:d = "http://herbaer.de/xmlns/20051201/doc"
  xmlns = "http://www.w3.org/1999/xhtml"
  exclude-result-prefixes = "d is"
  version = "1.0"
>
<d:info xmlns="http://herbaer.de/xmlns/20051201/doc">
  <title>galery.xslt</title>
  <subtitle>Galerieansicht einer Bildergeschichte</subtitle>
  <date>2013-06-29</date>
  <author>
    <personname>
      <firstname>Herbert</firstname>
      <surname>Schiemann</surname>
    </personname>
    <email>h.schiemann@herbaer.de</email>
  </author>
</d:info>

<d:section xmlns="http://herbaer.de/xmlns/20051201/doc" role="stylesheet">
<para>
Dieses Stylesheet stellt eine Bildergeschichte (<d:filename>story.xml</d:filename>)
als &#x201e;Bildergalerie&#x201d; dar.
Es bindet die Dateien
<filename>galery.js</filename> und <filename>galery.css</filename> ein.
Es wird vom &#x201e;Stub&#x201d; <d:filename>galery.stub</d:filename> eingebunden.
</para>
<para>
Die Darstellung ist für einen Desktop-Computer gedacht.
Unter der Überschrift erscheint ein Feld mit allen Vorschaubildern der Bildergeschichte.
Die Surferin zeigt mit dem Mauszeiger auf ein Vorschaubild.
Ein Mausklick öffnet die Default-Darstellung der Bildergeschichte,
zwei Tasten öffnen das Bild im normalen oder im kleinen Format.
</para>
</d:section>

<section xmlns="http://herbaer.de/xmlns/20051201/doc" role="stylesheet">
<title>ID-Attribute</title>
<para>
Die Darstellung verwendet die folgenden ID-Werte:
</para>
<variablelist>
<varlistentry>
  <term><tag class="attvalue">div_title</tag></term>
  <listitem>
    <para>
Die Titelleiste mit dem Logo (ID <tag class="attvalue">div_logo</tag>) links
und der Überschrift (ID <tag class="attvalue">div_head</tag>) rechts.
    </para>
  </listitem>
</varlistentry>
<varlistentry>
  <term><tag class="attvalue">div_logo</tag></term>
  <listitem>
    <para>
Das "Logo" links in der Titelleiste
    </para>
  </listitem>
</varlistentry>
<varlistentry>
  <term><tag class="attvalue">div_head</tag></term>
  <listitem>
    <para>
Die Überschrift: ein <tag class="element">div</tag>-Element,
das das <tag class="element">h1</tag>-Element enthält.
Die Verschachtelung erleichtert es, CSS-Regeln anzuwenden.
    </para>
  </listitem>
</varlistentry>
<varlistentry>
  <term><tag class="attvalue">div_galery</tag></term>
  <listitem>
    <para>
Das Feld der Vorschaubilder
    </para>
  </listitem>
</varlistentry>
<varlistentry>
  <term><tag class="attvalue">about_frame</tag></term>
  <listitem>
    <para>
Das Aufklappfenster "Über ..."
    </para>
  </listitem>
</varlistentry>
<varlistentry>
  <term><tag class="attvalue">help_frame</tag></term>
  <listitem>
    <para>
Das Aufklappfenster "Befehle"
    </para>
  </listitem>
</varlistentry>
<varlistentry>
  <term><tag class="attvalue">btn_help</tag></term>
  <listitem>
    <para>
Das "Hilfe-Fragezeichen"
    </para>
  </listitem>
</varlistentry>
</variablelist>
</section>

<section xmlns="http://herbaer.de/xmlns/20051201/doc" role="stylesheet">
<title><tag class="attribute">class</tag>-Attribute</title>
<para>
In <tag class="attribute">class</tag>-Attributen werden die folgenden
Wörter benutzt:
</para>
<variablelist>
<varlistentry>
  <term><tag class="attvalue">popup</tag></term>
  <listitem>
    <para>
kennzeichnet die beiden Aufklapp-Fenster "Über ..." und "Befehle".
    </para>
  </listitem>
</varlistentry>
<varlistentry>
  <term>
    <tag class="attvalue">popinact</tag> / <tag class="attvalue">popact</tag>
  </term>
  <listitem>
    <para>
Das Wort <tag class="attvalue">popinact</tag> kennzeichnet ein inaktives
Aufklapp-Element, hier ein verborgenes Aufklappfenster.
    </para>
    <para>
Das Wort <tag class="attvalue">popact</tag> kennzeichnet ein aktives
Aufklapp-Element, hier ein sichtbares Aufklappfenster.
    </para>
  </listitem>
</varlistentry>
<varlistentry>
  <term><tag class="attvalue">close</tag></term>
  <listitem>
    <para>
Knopf zum Schließen eines Aufklappfensters
    </para>
  </listitem>
</varlistentry>
<varlistentry>
  <term><tag class="attvalue">inline</tag></term>
  <listitem>
    <para>
Block-Elemente, die als "Inline-Block" dargestellt werden sollen:
hier die Felder für die Vorschaubilder.
    </para>
  </listitem>
</varlistentry>
<varlistentry>
  <term>
    <tag class="attvalue">normal</tag> / <tag class="attvalue">current</tag>
  </term>
  <listitem>
    <para>
Der Wert <tag class="attvalue">current</tag> bezeichnet den aktuellen Bildverweis
(<tag class="element">a</tag>-Element),
der Wert <tag class="attvalue">normal</tag> alle anderen Bildverweise.
Diese Werte werden durch Javascript umgeschaltet.
    </para>
  </listitem>
</varlistentry>
</variablelist>
</section>

<d:para>Präfix des Pfades von JavaScript- und CSS-Dateien</d:para>
<xsl:param name="p_styleprefix" select="'/style/'"/>

<d:para>Sprache</d:para>
<xsl:variable name="g_lang">
  <xsl:variable name="l" select="$g_rootelt/@xml:lang"/>
  <xsl:choose>
    <xsl:when test="string-length($l) = 0">
      <xsl:text>de</xsl:text>
    </xsl:when>
    <xsl:when test="contains ($l, '-')">
      <xsl:value-of select="substring-before ($l, '-')"/>
    </xsl:when>
    <xsl:otherwise>
      <xsl:value-of select="$l"/>
    </xsl:otherwise>
  </xsl:choose>
</xsl:variable>

<xsl:output method="xml" encoding="utf-8"/>

<d:section>
<d:title>HTML-Rahmen</d:title>
<d:para>
Außer dem Bilder-Feld enthält der Rumpf
die Abschnitte "Über ..." und "Befehle".
Diese Abschnitte werden als Aufklapp-Fenster durch Javascript gesteuert.
</d:para>
</d:section>
<xsl:template match="is:document">
  <html>
    <xsl:copy-of select="@xml:lang"/>
    <head>
      <meta name="viewport" content="width=device-width, initial-scale=1"/>
      <title>
        <l:ph id="galery_title_prf"/>
        <xsl:apply-templates select="is:title"/>
      </title>
      <xsl:element name="link">
        <xsl:attribute name="href">
          <xsl:value-of select="concat ($p_styleprefix, 'shortcut_icon.png')"/>
        </xsl:attribute>
        <xsl:attribute name="rel">icon</xsl:attribute>
      </xsl:element>
      <xsl:element name="link">
        <xsl:attribute name="href">
          <xsl:value-of select="concat ($p_styleprefix, 'galery.css')"/>
        </xsl:attribute>
        <xsl:attribute name="rel">stylesheet</xsl:attribute>
      </xsl:element>
      <xsl:element name="script">
        <xsl:attribute name="src">
          <xsl:value-of select="concat ($p_styleprefix, 'common.js')"/>
        </xsl:attribute>
      </xsl:element>
      <xsl:element name="script">
        <xsl:attribute name="src">
          <xsl:value-of select="concat ($p_styleprefix, 'galery.js')"/>
        </xsl:attribute>
      </xsl:element>
      <xsl:element name="script">
        <xsl:text>
var langsfx = ".</xsl:text><xsl:value-of select="$g_lang"/><xsl:text>";
onload = function () { initialize_galery (); };</xsl:text>
      </xsl:element>
    </head>
    <body>
      <div id="div_title">
        <div id="div_logo">Herbär</div>
        <div id="div_head">
          <h1><xsl:value-of select="is:title"/></h1>
        </div>
      </div>
      <div id="div_galery">
        <div>
          <xsl:apply-templates select="is:section"/>
        </div>
      </div>
      <div id="about_frame" class="popup popinact">
        <dl>
          <dt><a href="http://kleider.herbaer.de">http://kleider.herbaer.de</a></dt>
          <dt><l:ph id="text_und_fotos"/></dt>
          <dd>
            "Herbär" Herbert Schiemann (<a href="http://herbaer.de">http://herbaer.de</a>,
            <a href="mailto:h.schiemann@herbaer.de">mailto:h.schiemann@herbaer.de</a>).
          </dd>
          <dt><l:ph id="grafische_gestaltung"/></dt>
          <dd>
            <a href="http://fadenmalerei.de">Dipl.-Des. Bärbel Nielebock</a>
            (<a href="mailto:sticken@fqadenmalerei.de">mailto:sticken@fadenmalerei.de</a>)
          </dd>
        </dl>
      </div>
      <div id="help_frame" class="popup popinact">
        <h3><l:ph id="befehle"/></h3>
        <table>
          <tbody>
            <tr>
              <td>i</td>
              <td><span class="btn" data-code="73"><l:ph id="ueber"/></span></td>
            </tr>
            <tr>
              <td>h</td>
              <td><span class="btn" data-code="72"><l:ph id="befehle"/></span></td>
            </tr>
            <tr>
              <td>t</td>
              <td>
                <span class="btn" data-code="84"><l:ph id="bildergeschichte"/></span>
              </td>
            </tr>
            <tr>
              <td>n</td>
              <td>
                <span class="btn" data-code="78"><l:ph id="normales_bild"/></span>
              </td>
            </tr>
            <tr>
              <td>k</td>
              <td>
                <span class="btn" data-code="75"><l:ph id="kleines_bild"/></span>
              </td>
            </tr>
            <tr>
              <td>s</td>
              <td>
                <a href="story.xml.{$g_lang}#rndimgshow"><l:ph id="bilderschau"/></a>
              </td>
            </tr>
            <tr>
              <td>x</td>
              <td>
                <a href="../style/galery_help.xhtml.{$g_lang}"><l:ph id="hilfe"/></a>
              </td>
            </tr>
            <tr>
              <td>c</td>
              <td>
                <span class="btn" data-code="67"><l:ph id="fenster_schliessen"/></span>
              </td>
            </tr>
          </tbody>
        </table>
      </div><!-- help_frame -->
      <div id="btn_help">?</div>
    </body>
  </html>
</xsl:template>

<d:para>Die Nummer des Abschnitts wird als Parameter übergeben</d:para>
<xsl:template match="is:section">
  <xsl:variable name="sid" select="position()"/>
  <xsl:apply-templates select=".//is:jpg">
    <xsl:with-param name="sid" select="$sid"/>
  </xsl:apply-templates>
</xsl:template>

<d:para>Vorlage für ein Bild</d:para>
<xsl:template match="is:jpg">
  <xsl:param name="sid"/>
  <xsl:variable name="sfx" select="position() - 1"/>
  <a href="story.xml.{$g_lang}#s{$sid}_{@src}_{$sfx}" class="normal">
    <div class="inline">
      <xsl:attribute name="style">
        <xsl:value-of
          select = "
            concat (
            'background-image: url(montage/s',
            $sid, '.jpg); background-position: 0px -', $sfx * 100 + 2, 'px;' )
          "
        />
      </xsl:attribute>
    </div>
  </a>
</xsl:template>

</xsl:stylesheet>
