#20 Skriptování: nastavení ve web.conf: povolit | zakázat | ignorovat | varovat | vložit
--- a/vstup/web.conf Sat Jun 23 19:22:21 2012 +0200
+++ b/vstup/web.conf Sat Jun 23 20:12:44 2012 +0200
@@ -25,5 +25,15 @@
<css>css/syntaxe.css</css>
<js>js/skript.js</js>
+ <skriptování>
+ <!--
+ povolit – skripty se vykonají
+ zakázat – skripty se nevykonají a dojde k chybě
+ ignorovat – skripty se v tichosti přeskočí
+ varovat – skripty se v přeskočí a na jejich místo se vloží varování – výchozí možnost
+ vložit – místo výstupu skriptu se vloží jeho zdroják
+ -->
+ <režim></režim>
+ </skriptování>
</web>
--- a/šablona/makra/skriptování.xsl Sat Jun 23 19:22:21 2012 +0200
+++ b/šablona/makra/skriptování.xsl Sat Jun 23 20:12:44 2012 +0200
@@ -20,9 +20,10 @@
xmlns="http://www.w3.org/1999/xhtml"
xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro"
xmlns:j="java:cz.frantovo.xmlWebGenerator.makra.Skriptování"
+ xmlns:k="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/konfigurace"
xmlns:s="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/strana"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- exclude-result-prefixes="m j s">
+ exclude-result-prefixes="m j k s">
<!--
Skriptování
@@ -31,37 +32,62 @@
*
@jazyk programovací jazyk, např. bash, perl, php
@výstup formát výstupu skriptu: text (výchozí) | xml (musí být validním fragmentem XML)
- @src skript uložený v souboru místo v těle elementu
-->
<xsl:template match="m:skript">
- <!--
- TODO:
- - ošetření chyb
- - nastavení z web.conf (zákaz nebo ignorace skriptů)
- - podpora vkládání fragmentů XML, ne jen prostého textu
- -->
+
+ <xsl:variable name="režim" select="$konfigurace/k:web/k:skriptování/k:režim/text()"/>
- <xsl:variable name="výstupSkriptu" select="j:interpretuj(
- text(),
- @jazyk,
- @výstup,
- document-uri(/),
- //s:stránka/s:nadpis/text(),
- //s:stránka/s:perex/text()
- )"/>
<xsl:choose>
- <xsl:when test="$výstupSkriptu">
+ <xsl:when test="$režim = 'povolit'">
+ <xsl:variable name="výstupSkriptu" select="j:interpretuj(
+ text(),
+ @jazyk,
+ @výstup,
+ document-uri(/),
+ //s:stránka/s:nadpis/text(),
+ //s:stránka/s:perex/text()
+ )"/>
<xsl:choose>
- <xsl:when test="@výstup = 'xml'"><xsl:value-of select="$výstupSkriptu" disable-output-escaping="yes"/></xsl:when>
- <xsl:otherwise><xsl:value-of select="$výstupSkriptu"/></xsl:otherwise>
+ <xsl:when test="$výstupSkriptu">
+ <xsl:choose>
+ <xsl:when test="@výstup = 'xml'"><xsl:value-of select="$výstupSkriptu" disable-output-escaping="yes"/></xsl:when>
+ <xsl:otherwise><xsl:value-of select="$výstupSkriptu"/></xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">Při interpretaci skriptu došlo k chybě.</xsl:message>
+ </xsl:otherwise>
</xsl:choose>
</xsl:when>
- <xsl:otherwise>
- <xsl:message terminate="yes">Při interpretaci skriptu došlo k chybě.</xsl:message>
+
+ <xsl:when test="$režim = 'zakázat'">
+ <xsl:message terminate="yes">Stránka obsahuje skripty, ale skripty jsou zakázané → je potřeba je odstranit nebo upravit nastavení ve web.conf.</xsl:message>
+ </xsl:when>
+ <xsl:when test="$režim = 'ignorovat'">
+ <xsl:message>Stránka obsahuje skripty, ale skripty jsou ignorovány – změnu lze provést ve web.conf.</xsl:message>
+ </xsl:when>
+ <xsl:when test="$režim = 'vložit' and @výstup = 'xml'">
+ <xsl:message>Není možné jen tak vložit text, který měl mít výstup ve formátu XML – změnu lze provést ve web.conf</xsl:message>
+ </xsl:when>
+ <xsl:when test="$režim = 'vložit'">
+ <span class="vloženýNeinterpretovanýSkript jazyk-{@jazyk}">
+ <xsl:value-of select="text()"/>
+ </span>
+ </xsl:when>
+ <xsl:otherwise><!-- varovat = výchozí možnost -->
+ <xsl:choose>
+ <xsl:when test="@výstup = 'xml'">
+ <xsl:message>Není možné možné vložit varování na místo, kde měl být skript generující XML – změnu lze provést ve web.conf</xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>[VAROVÁNÍ (</xsl:text>
+ <xsl:value-of select="@jazyk"/>
+ <xsl:text>): skripty jsou vypnuté – lze je zapnout ve web.conf]</xsl:text>
+ <xsl:message>Skript se neinterpretuje a vkládáme varování do stránky – změnu lze provést ve web.conf</xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:otherwise>
</xsl:choose>
-
-
</xsl:template>
</xsl:stylesheet>