Diagramy #13: číslování v rámci stránky + u diagramů ze souboru použijeme název souboru se zadáním.
authorFrantišek Kučera <franta-hg@frantovo.cz>
Sat Jan 07 18:45:54 2012 +0100 (2012-01-07)
changeset 6789b42acb3593
parent 66 a8085dedd92b
child 68 2e6d7bfcd84f
Diagramy #13: číslování v rámci stránky + u diagramů ze souboru použijeme název souboru se zadáním.
šablona/funkce/src/cz/frantovo/xmlWebGenerator/Funkce.java
šablona/makra/diagramy.xsl
     1.1 --- a/šablona/funkce/src/cz/frantovo/xmlWebGenerator/Funkce.java	Sat Jan 07 17:34:57 2012 +0100
     1.2 +++ b/šablona/funkce/src/cz/frantovo/xmlWebGenerator/Funkce.java	Sat Jan 07 18:45:54 2012 +0100
     1.3 @@ -23,6 +23,8 @@
     1.4  import java.util.Date;
     1.5  import java.net.URI;
     1.6  import java.net.URISyntaxException;
     1.7 +import java.net.URLDecoder;
     1.8 +import java.nio.charset.Charset;
     1.9  import static cz.frantovo.xmlWebGenerator.NástrojeCLI.*;
    1.10  
    1.11  /**
    1.12 @@ -41,6 +43,7 @@
    1.13  	private static final String PŘÍKAZ_MARKDOWN = "markdown";
    1.14  	private static final String ADRESÁŘ_VÝSTUPNÍ = "výstup";
    1.15  	private static int počítadloDiagramů = 0;
    1.16 +	private static String počítadloDiagramůKontext = "";
    1.17  
    1.18  	/**
    1.19  	 * Zjištuje, kdy byl naposledy daný soubor změněn.
    1.20 @@ -115,12 +118,38 @@
    1.21  	 * @param zadání definice diagramu ve formátu dot
    1.22  	 * @param vodorovně zda má být graf orientovaný vodorovně (funguje jen při <code>kompletní = false</code>)
    1.23  	 * @param kompletní false, pokud k zadání chceme doplnit <code>digraph d {…}</code>
    1.24 +	 * @param kontext kam diagram patří – typicky název stránky, do které je vložen
    1.25 +	 * diagramy se pak budou číslovat v rámci tohoto kontextu 
    1.26 +	 * → nebude docházet k přepisování diagramů jiných stránek při částečném přegenerování webu.
    1.27 +	 * @param souborZadání null pokud chceme automatické číslování | nebo zadáme název souboru se zadáním diagramu – vygenerovaný diagram se pak bude jmenovat stejně
    1.28  	 * @return název souboru bez přípony, který byl vytvořen, nebo null, pokud došlo k chybě.
    1.29  	 */
    1.30 -	public static String vytvořDiagram(String zadání, boolean vodorovně, boolean kompletní) throws IOException, InterruptedException {
    1.31 +	public static String vytvořDiagram(String zadání, boolean vodorovně, boolean kompletní, String kontext, String souborZadání) throws IOException, InterruptedException {
    1.32  		if (isPříkazDostupný(PŘÍKAZ_DOT)) {
    1.33 -			počítadloDiagramů++;
    1.34 -			String soubor = "diagram-" + počítadloDiagramů;
    1.35 +			System.err.println("XXX Kontext: " + URLDecoder.decode(kontext, Charset.defaultCharset().name()));
    1.36 +			System.err.println("XXX Soubor:  " + souborZadání);
    1.37 +
    1.38 +			String soubor;
    1.39 +			if (souborZadání == null) {
    1.40 +				if (kontext == null) {
    1.41 +					počítadloDiagramů++;
    1.42 +					soubor = "diagram-" + počítadloDiagramů;
    1.43 +				} else {
    1.44 +					// TODO: tohle by se mělo udělat v XSLT
    1.45 +					kontext = URLDecoder.decode(kontext, Charset.defaultCharset().name());
    1.46 +					
    1.47 +					// Každá stránka bude mít svoje diagramy číslované od 1
    1.48 +					if (!počítadloDiagramůKontext.equals(kontext)) {
    1.49 +						počítadloDiagramůKontext = kontext;
    1.50 +						počítadloDiagramů = 0;
    1.51 +					}
    1.52 +					
    1.53 +					počítadloDiagramů++;
    1.54 +					soubor = "diagram-" + kontext + "-" + počítadloDiagramů;
    1.55 +				}
    1.56 +			} else {
    1.57 +				soubor = souborZadání;
    1.58 +			}
    1.59  			String souborSložka = ADRESÁŘ_VÝSTUPNÍ + File.separator + soubor;
    1.60  
    1.61  			String zdroják;
     2.1 --- a/šablona/makra/diagramy.xsl	Sat Jan 07 17:34:57 2012 +0100
     2.2 +++ b/šablona/makra/diagramy.xsl	Sat Jan 07 18:45:54 2012 +0100
     2.3 @@ -51,13 +51,19 @@
     2.4      <xsl:template name="vložDiagram">
     2.5  		<xsl:param name="zadání"/>
     2.6  		<xsl:param name="kompletní"/>
     2.7 -		<xsl:variable name="souborDiagramu" select="j:vytvořDiagram($zadání, @orientace = 'vodorovně', $kompletní)"/>
     2.8 +		<xsl:variable name="souborDiagramu" select="j:vytvořDiagram(
     2.9 +															$zadání, 
    2.10 +															@orientace = 'vodorovně', 
    2.11 +															$kompletní,
    2.12 +															tokenize(base-uri(), '/')[last()],
    2.13 +															@src
    2.14 +															)"/>
    2.15  		<xsl:choose>
    2.16  			<xsl:when test="$souborDiagramu">
    2.17  				<div class="diagram">
    2.18 -					<a href="{$souborDiagramu}.svg">
    2.19 +					<a href="{encode-for-uri($souborDiagramu)}.svg">
    2.20  						<img
    2.21 -							src="{$souborDiagramu}.svg" 
    2.22 +							src="{encode-for-uri($souborDiagramu)}.svg" 
    2.23  							alt="Diagram {(@nadpis, $souborDiagramu)[1]} | pokud nevidíte obrázek, váš prohlížeč stojí za starou bačkoru"
    2.24  							title="{@nadpis} (klikněte pro zobrazení samotného diagramu)"/>
    2.25  					</a>