#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 968de228c9ac10
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
     1.1 --- a/vstup/web.conf	Sat Jun 23 19:22:21 2012 +0200
     1.2 +++ b/vstup/web.conf	Sat Jun 23 20:12:44 2012 +0200
     1.3 @@ -25,5 +25,15 @@
     1.4  	<css>css/syntaxe.css</css>
     1.5  	<js>js/skript.js</js>
     1.6  
     1.7 +	<skriptování>
     1.8 +		<!--
     1.9 +			povolit – skripty se vykonají
    1.10 +			zakázat – skripty se nevykonají a dojde k chybě
    1.11 +			ignorovat – skripty se v tichosti přeskočí 
    1.12 +			varovat – skripty se v přeskočí a na jejich místo se vloží varování – výchozí možnost
    1.13 +			vložit – místo výstupu skriptu se vloží jeho zdroják
    1.14 +		-->
    1.15 +		<režim></režim>
    1.16 +	</skriptování>
    1.17  </web>
    1.18  
     2.1 --- a/šablona/makra/skriptování.xsl	Sat Jun 23 19:22:21 2012 +0200
     2.2 +++ b/šablona/makra/skriptování.xsl	Sat Jun 23 20:12:44 2012 +0200
     2.3 @@ -20,9 +20,10 @@
     2.4  	xmlns="http://www.w3.org/1999/xhtml"
     2.5  	xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro"
     2.6  	xmlns:j="java:cz.frantovo.xmlWebGenerator.makra.Skriptování"
     2.7 +	xmlns:k="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/konfigurace"
     2.8  	xmlns:s="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/strana"
     2.9  	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    2.10 -	exclude-result-prefixes="m j s">
    2.11 +	exclude-result-prefixes="m j k s">
    2.12  
    2.13  	<!--
    2.14  		Skriptování
    2.15 @@ -31,37 +32,62 @@
    2.16  		*
    2.17  		@jazyk programovací jazyk, např. bash, perl, php
    2.18  		@výstup formát výstupu skriptu: text (výchozí) | xml (musí být validním fragmentem XML)
    2.19 -		@src skript uložený v souboru místo v těle elementu
    2.20  	-->
    2.21  	<xsl:template match="m:skript">
    2.22 -		<!--
    2.23 -		TODO:
    2.24 -			- ošetření chyb
    2.25 -			- nastavení z web.conf (zákaz nebo ignorace skriptů)
    2.26 -			- podpora vkládání fragmentů XML, ne jen prostého textu
    2.27 -		-->
    2.28  		
    2.29 -		<xsl:variable name="výstupSkriptu" select="j:interpretuj(
    2.30 -															text(),
    2.31 -															@jazyk,
    2.32 -															@výstup,
    2.33 -															document-uri(/),
    2.34 -															//s:stránka/s:nadpis/text(),
    2.35 -															//s:stránka/s:perex/text()
    2.36 -														)"/>
    2.37 +		<xsl:variable name="režim" select="$konfigurace/k:web/k:skriptování/k:režim/text()"/>
    2.38 +		
    2.39  		<xsl:choose>
    2.40 -			<xsl:when test="$výstupSkriptu">
    2.41 +			<xsl:when test="$režim = 'povolit'">
    2.42 +				<xsl:variable name="výstupSkriptu" select="j:interpretuj(
    2.43 +																	text(),
    2.44 +																	@jazyk,
    2.45 +																	@výstup,
    2.46 +																	document-uri(/),
    2.47 +																	//s:stránka/s:nadpis/text(),
    2.48 +																	//s:stránka/s:perex/text()
    2.49 +																)"/>
    2.50  				<xsl:choose>
    2.51 -					<xsl:when test="@výstup = 'xml'"><xsl:value-of select="$výstupSkriptu" disable-output-escaping="yes"/></xsl:when>
    2.52 -					<xsl:otherwise><xsl:value-of select="$výstupSkriptu"/></xsl:otherwise>
    2.53 +					<xsl:when test="$výstupSkriptu">
    2.54 +						<xsl:choose>
    2.55 +							<xsl:when test="@výstup = 'xml'"><xsl:value-of select="$výstupSkriptu" disable-output-escaping="yes"/></xsl:when>
    2.56 +							<xsl:otherwise><xsl:value-of select="$výstupSkriptu"/></xsl:otherwise>
    2.57 +						</xsl:choose>
    2.58 +					</xsl:when>
    2.59 +					<xsl:otherwise>
    2.60 +						<xsl:message terminate="yes">Při interpretaci skriptu došlo k chybě.</xsl:message>
    2.61 +					</xsl:otherwise>
    2.62  				</xsl:choose>
    2.63  			</xsl:when>
    2.64 -			<xsl:otherwise>
    2.65 -				<xsl:message terminate="yes">Při interpretaci skriptu došlo k chybě.</xsl:message>
    2.66 +
    2.67 +			<xsl:when test="$režim = 'zakázat'">
    2.68 +				<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>
    2.69 +			</xsl:when>
    2.70 +			<xsl:when test="$režim = 'ignorovat'">
    2.71 +				<xsl:message>Stránka obsahuje skripty, ale skripty jsou ignorovány – změnu lze provést ve web.conf.</xsl:message>
    2.72 +			</xsl:when>
    2.73 +			<xsl:when test="$režim = 'vložit' and @výstup = 'xml'">
    2.74 +				<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>
    2.75 +			</xsl:when>
    2.76 +			<xsl:when test="$režim = 'vložit'">
    2.77 +				<span class="vloženýNeinterpretovanýSkript jazyk-{@jazyk}">
    2.78 +					<xsl:value-of select="text()"/>
    2.79 +				</span>
    2.80 +			</xsl:when>
    2.81 +			<xsl:otherwise><!-- varovat = výchozí možnost -->
    2.82 +				<xsl:choose>
    2.83 +					<xsl:when test="@výstup = 'xml'">
    2.84 +						<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>
    2.85 +					</xsl:when>
    2.86 +					<xsl:otherwise>
    2.87 +						<xsl:text>[VAROVÁNÍ (</xsl:text>
    2.88 +						<xsl:value-of select="@jazyk"/>
    2.89 +						<xsl:text>): skripty jsou vypnuté – lze je zapnout ve web.conf]</xsl:text>
    2.90 +						<xsl:message>Skript se neinterpretuje a vkládáme varování do stránky – změnu lze provést ve web.conf</xsl:message>
    2.91 +					</xsl:otherwise>
    2.92 +				</xsl:choose>
    2.93  			</xsl:otherwise>
    2.94  		</xsl:choose>
    2.95 -
    2.96 -		
    2.97  	</xsl:template>
    2.98  
    2.99  </xsl:stylesheet>