# HG changeset patch # User František Kučera <franta-hg@frantovo.cz> # Date 1340475164 -7200 # Node ID 8de228c9ac10b8a2081dada4eb024d5c1e05615f # Parent eea9c4713045bdbe5fa8b8ecff2f81c5d4fb6407 #20 Skriptování: nastavení ve web.conf: povolit | zakázat | ignorovat | varovat | vložit diff -r eea9c4713045 -r 8de228c9ac10 vstup/web.conf --- 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> diff -r eea9c4713045 -r 8de228c9ac10 šablona/makra/skriptování.xsl --- 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>