#20 Skriptování: nastavení ve web.conf: povolit | zakázat | ignorovat | varovat | vložit
authorFrantišek Kučera <franta-hg@frantovo.cz>
Sat, 23 Jun 2012 20:12:44 +0200
changeset 96 8de228c9ac10
parent 95 eea9c4713045
child 97 6181a00e0ffd
#20 Skriptování: nastavení ve web.conf: povolit | zakázat | ignorovat | varovat | vložit
vstup/web.conf
šablona/makra/skriptování.xsl
--- 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>