phpDocumentor VFront
VFront_XML
[ class tree: VFront ] [ index: VFront ] [ all elements ]

Source for file fo.php

Documentation is available at fo.php

  1. <?php
  2. /**
  3.  * Questo file permette di generare l'XSL-FO di default che verrą poi usato da Apache FOP
  4.  * 
  5.  * @desc Generazione dinamica di XSL-FO
  6.  * @package VFront
  7.  * @subpackage VFront_XML
  8.  * @author M.Marcello Verona
  9.  * @copyright 2007 M.Marcello Verona
  10.  * @version 0.90
  11.  * @license http://www.gnu.org/licenses/gpl.html GNU Public License
  12.  * @see fop_exec.php
  13.  */
  14.  
  15.  
  16. require_once("../inc/conn.php");
  17. require_once("../inc/func.comuni.php");
  18. require_once("../inc/func.frontend.php");
  19.  
  20. /*function genera_xsl_base($rif_tabella,$solo_visibili=0){
  21.     
  22.     global $link,$db1;*/
  23.  
  24. $rif_tabella=$_GET['action'];
  25.     
  26.     if(is_tabella($rif_tabella)){
  27.         
  28.         // PRENDE LE CARATTERISTICHE DELLA TABELLA
  29.         $tabella $rif_tabella;
  30.     }
  31.     else{
  32.         
  33.         // prende il nome della tabella
  34.         $tabella oid2name($rif_tabella);
  35.         
  36.     }
  37.     
  38.     list($n,$n,$n,$cols)prendi_colonne_frontend($tabella,'*',$solo_visibili,intval($_SESSION['gid']));
  39.     
  40.     $str_tabella ucfirst($tabella);
  41.     
  42.     
  43. $XSL=<<<XSLFO
  44. <?xml version="1.0" encoding="UTF-8"?>
  45. <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transformxmlns:fo="http://www.w3.org/1999/XSL/Formatxmlns:fn="http://www.w3.org/2005/xpath-functionsxmlns:xdt="http://www.w3.org/2005/xpath-datatypesxmlns:xs="http://www.w3.org/2001/XMLSchemaxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  46.     <xsl:output version="1.0" method="xmlencoding="UTF-8" indent="no"/>
  47.     <xsl:param name="SV_OutputFormatselect="'PDF'"/>
  48.     <xsl:variable name="XMLselect="/"/>
  49.     <xsl:variable name="fo:layout-master-set">
  50.         <fo:layout-master-set>
  51.             <fo:simple-page-master master-name="default-pagepage-height="11inpage-width="8.5inmargin-left="0.6inmargin-right="0.6in">
  52.                 <fo:region-body margin-top="0.79inmargin-bottom="0.79in"/>
  53.                 <fo:region-after extent="0.79in"/>
  54.             </fo:simple-page-master>
  55.         </fo:layout-master-set>
  56.     </xsl:variable>
  57.     <xsl:template match="/">
  58.         <xsl:variable name="maxwidthselect="7.30000"/>
  59.         <fo:root>
  60.             <xsl:copy-of select="\$fo:layout-master-set"/>
  61.             <fo:page-sequence master-reference="default-pageinitial-page-number="1" format="1">
  62.                 <xsl:call-template name="footerall"/>
  63.                 <fo:flow flow-name="xsl-region-body">
  64.                     <fo:block>
  65.                         <fo:block>
  66.                             <fo:leader leader-pattern="space"/>
  67.                         </fo:block>
  68.                         <fo:block>
  69.                             <fo:leader leader-pattern="space"/>
  70.                         </fo:block>
  71.                         <fo:block font-size="24ptfont-weight="bold">
  72.                             <fo:block font-size="14pt">
  73.                                 <fo:inline>
  74.                                     <xsl:text>$str_tabella</xsl:text>
  75.                                 </fo:inline>
  76.                             </fo:block>
  77.                         </fo:block>
  78.                         <fo:block>
  79.                             <fo:leader leader-pattern="space"/>
  80.                         </fo:block>
  81.                         <fo:block>
  82.                             <fo:leader leader-pattern="space"/>
  83.                         </fo:block>
  84.                         <fo:block>
  85.                             <fo:leader leader-pattern="space"/>
  86.                         </fo:block>
  87.                         <xsl:for-each select="\$XML">
  88.                             <xsl:for-each select="recordset">
  89.                                 <xsl:for-each select="row">
  90. XSLFO;
  91.  
  92.  
  93. foreach($cols as $k=>$val){
  94.     
  95.     
  96.     if($val=='email'){
  97.         
  98.         $XSL.="                        <fo:block>
  99.                                         <fo:leader leader-pattern=\"space\"/>
  100.                                     </fo:block>
  101.                                     <xsl:if test=\"$val != &apos;&apos;\">
  102.                                         <fo:inline>
  103.                                             <fo:leader leader-pattern=\"space\"/>
  104.                                         </fo:inline>
  105.                                         <xsl:for-each select=\"$val\">
  106.                                             <fo:inline color=\"#0046ff\">
  107.                                                 <xsl:apply-templates/>
  108.                                             </fo:inline>
  109.                                         </xsl:for-each>
  110.                                         <fo:block>
  111.                                             <fo:leader leader-pattern=\"space\"/>
  112.                                         </fo:block>
  113.                                     </xsl:if>\n";
  114.     }
  115.     else{
  116.         
  117.         $XSL.="                        <fo:block>
  118.                                         <fo:leader leader-pattern=\"space\"/>
  119.                                     </fo:block>
  120.                                     <xsl:for-each select=\"$val\">
  121.                                         <fo:inline font-weight=\"bold\">
  122.                                             $val
  123.                                         </fo:inline>
  124.                                         <fo:inline>
  125.                                             <xsl:apply-templates/>
  126.                                         </fo:inline>
  127.                                     </xsl:for-each>
  128.                                     ";
  129.     }
  130. }
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139. $XSL.=<<<XMLFO2
  140.                                     
  141.                                     <fo:block text-align="centerspace-before.optimum="-8pt">
  142.                                         <fo:leader leader-pattern="space"/>
  143.                                         <fo:leader leader-length="100%" leader-pattern="rulerule-thickness="1pt"/>
  144.                                     </fo:block>
  145.                                     <fo:block>
  146.                                         <xsl:text>&#xA;</xsl:text>
  147.                                     </fo:block>
  148.                                 </xsl:for-each>
  149.                             </xsl:for-each>
  150.                         </xsl:for-each>
  151.                         <fo:block>
  152.                             <fo:leader leader-pattern="space"/>
  153.                         </fo:block>
  154.                     </fo:block>
  155.                     <fo:block id="SV_RefID_PageTotal"/>
  156.                 </fo:flow>
  157.             </fo:page-sequence>
  158.         </fo:root>
  159.     </xsl:template>
  160.     <xsl:template name="footerall">
  161.         <xsl:variable name="maxwidthselect="7.30000"/>
  162.         <fo:static-content flow-name="xsl-region-after">
  163.             <fo:block>
  164.                 <xsl:variable name="tablewidth0select="\$maxwidth * 1.00000"/>
  165.                 <xsl:variable name="sumcolumnwidths0select="0.04167 + 0.04167"/>
  166.                 <xsl:variable name="defaultcolumns0select="1 + 1"/>
  167.                 <xsl:variable name="defaultcolumnwidth0">
  168.                     <xsl:choose>
  169.                         <xsl:when test="\$defaultcolumns0 &gt; 0">
  170.                             <xsl:value-of select="(\$tablewidth0 - \$sumcolumnwidths0div \$defaultcolumns0"/>
  171.                         </xsl:when>
  172.                         <xsl:otherwise>
  173.                             <xsl:value-of select="0.000"/>
  174.                         </xsl:otherwise>
  175.                     </xsl:choose>
  176.                 </xsl:variable>
  177.                 <xsl:variable name="columnwidth0_0select="\$defaultcolumnwidth0"/>
  178.                 <xsl:variable name="columnwidth0_1select="\$defaultcolumnwidth0"/>
  179.                 <fo:table margin-left="0.0inmargin-right="0.0inwidth="{\$tablewidth0}inborder-collapse="separateborder-separation="0.04167incolor="blackdisplay-align="centertext-align="left">
  180.                     <fo:table-column column-width="{\$columnwidth0_0}in"/>
  181.                     <fo:table-column column-width="{\$columnwidth0_1}in"/>
  182.                     <fo:table-body>
  183.                         <fo:table-row>
  184.                             <fo:table-cell height="0.31250innumber-columns-spanned="2" padding-top="0.00000inpadding-bottom="0.00000inpadding-left="0.00000inpadding-right="0.00000in">
  185.                                 <fo:block padding-top="1ptpadding-bottom="1pt"/>
  186.                             </fo:table-cell>
  187.                         </fo:table-row>
  188.                         <fo:table-row>
  189.                             <fo:table-cell number-columns-spanned="2" padding-top="0.00000inpadding-bottom="0.00000inpadding-left="0.00000inpadding-right="0.00000in">
  190.                                 <fo:block padding-top="1ptpadding-bottom="1pt">
  191.                                     <fo:block text-align="centerspace-before.optimum="-8pt">
  192.                                         <fo:leader leader-length="100%" leader-pattern="rulerule-thickness="1ptcolor="black"/>
  193.                                     </fo:block>
  194.                                 </fo:block>
  195.                             </fo:table-cell>
  196.                         </fo:table-row>
  197.                         <fo:table-row>
  198.                             <fo:table-cell font-size="inherited-property-value(&apos;font-size&apos;) - 2ptnumber-columns-spanned="2" text-align="centerpadding-top="0.00000inpadding-bottom="0.00000inpadding-left="0.00000inpadding-right="0.00000in">
  199.                                 <fo:block padding-top="1ptpadding-bottom="1pt">
  200.                                     <fo:inline font-weight="bold">
  201.                                         <xsl:text>&#160;</xsl:text>
  202.                                     </fo:inline>
  203.                                     <fo:page-number font-weight="bold"/>
  204.                                 </fo:block>
  205.                             </fo:table-cell>
  206.                         </fo:table-row>
  207.                     </fo:table-body>
  208.                 </fo:table>
  209.             </fo:block>
  210.         </fo:static-content>
  211.     </xsl:template>
  212.     <xsl:template name="double-backslash">
  213.         <xsl:param name="text"/>
  214.         <xsl:param name="text-length"/>
  215.         <xsl:variable name="text-after-bsselect="substring-after(\$text, '\')"/>
  216.         <xsl:variable name="text-after-bs-lengthselect="string-length(\$text-after-bs)"/>
  217.         <xsl:choose>
  218.             <xsl:when test="\$text-after-bs-length = 0">
  219.                 <xsl:choose>
  220.                     <xsl:when test="substring(\$text, \$text-length) = '\'">
  221.                         <xsl:value-of select="concat(substring(\$text,1,\$text-length - 1), '\\')"/>
  222.                     </xsl:when>
  223.                     <xsl:otherwise>
  224.                         <xsl:value-of select="\$text"/>
  225.                     </xsl:otherwise>
  226.                 </xsl:choose>
  227.             </xsl:when>
  228.             <xsl:otherwise>
  229.                 <xsl:value-of select="concat(substring(\$text,1,\$text-length - \$text-after-bs-length - 1), '\\')"/>
  230.                 <xsl:call-template name="double-backslash">
  231.                     <xsl:with-param name="textselect="\$text-after-bs"/>
  232.                     <xsl:with-param name="text-lengthselect="\$text-after-bs-length"/>
  233.                 </xsl:call-template>
  234.             </xsl:otherwise>
  235.         </xsl:choose>
  236.     </xsl:template>
  237. </xsl:stylesheet>
  238. XMLFO2;
  239.  
  240. $fp=fopen(FRONT_REALPATH."/tmp/".$tabella.".xslt","w");
  241. fwrite($fp,$XSL);
  242. fclose($fp);
  243.  
  244. ?>

Documentation generated on Sat, 22 Sep 2007 11:50:04 +0200 by phpDocumentor 1.4.0a2