Report abuse

<!-- 
      layout.xslt
      QuickerForm
      
      Created by Matthieu Lalonde on 2007-05-29.
      Copyright 2007 Matthieu Lalonde. All rights reserved.
 -->
<xsl:stylesheet version="1.0" xml:lang="en"
                 xmlns:exsl="http://exslt.org/common"
                 xmlns:exfunc="http://exslt.org/functions"
                 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                 xmlns:fn="http://www.w3.org/2005/02/xpath-functions"
                 xmlns:php="http://php.net/xsl"
                 xsl:extension-element-prefixes="exsl exfunc fn">
    
    <!-- Importing external stylesheets -->
    <xsl:import href="./head.xslt" />
    <xsl:import href="./forms.xslt" />

    <xsl:output media-type="application/xhtml+xml" method="html" indent="yes" omit-xml-declaration="yes"
        doctype-public="-//W3C//DTD XHTML 1.1//EN"
        doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" encoding="UTF-8" />
    
    <!-- Defining page parameters -->
    <xsl:param name="printXML" />
    <xsl:param name="baseURI" select="/appData/appConfig/baseURI" />
    <xsl:param name="pageUID" select="/appData/appConfig/queryString/page_uid" />
    
    <xsl:param name="startYear" select="2007"/>
    
    <xsl:template match="/">
        <html>
        <head>
            <xsl:call-template name="head"/>
        </head>
            <body>
                <xsl:call-template name="header" />
                <xsl:call-template name="menu" />

                <xsl:comment>Page content start</xsl:comment>

                <div id="bodyContainer">
                    <xsl:choose>
                        <xsl:when test="/appData/pageList/pageData[@uid = $pageUID]/name = '404'">
                            <xsl:call-template name="pageNotFound" />
                        </xsl:when>
                        <xsl:otherwise>
                            <xsl:apply-templates select="/appData/pageData[@uid = $pageUID]" />
                        </xsl:otherwise>
                    </xsl:choose>
                    <div class="clear"><xsl:comment>Not Empty</xsl:comment></div>
                </div>
                
                <xsl:comment>Page content end</xsl:comment>
                
                <xsl:call-template name="footer" />
            </body>
        </html>
    </xsl:template>

    <xsl:template name="header">
        <xsl:comment>Header start</xsl:comment>
        
        <div id="headerContainer">
            <xsl:if test="/appData/pageList/pageData[@uid = $pageUID]/pageTitle">
                <h1>
                    <xsl:value-of select="/appData/pageList/pageData[@uid = $pageUID]/pageTitle" />
                </h1>
            </xsl:if>
            <div class="clear"><xsl:comment>Not Empty</xsl:comment></div>
        </div>

        <xsl:comment>Header end</xsl:comment>
    </xsl:template>
    
    <!--
        /** MENU **/
        This matches the menu items and parses them into a menu DOM
    -->
    
    <xsl:template name="menu">
        <xsl:comment>Menu start</xsl:comment>
        <div id="menuContainer">
            <xsl:apply-templates select="/appData/pageList">
                <xsl:sort select="@id"
                    data-type="number"
                    order="ascending" />
            </xsl:apply-templates>
            <div class="clear"><xsl:comment>Not Empty</xsl:comment></div>
        </div>
        <xsl:comment>Menu end</xsl:comment>
    </xsl:template>
    
    <xsl:template match="/appData/pageList">
        <ol>
            <xsl:apply-templates select="pageData[(not(parent) or parent = '') and name != '404']">
                <xsl:sort select="pageData[(not(parent) or parent = '') and name != '404']|@uid"
                    data-type="number"
                    order="ascending" />
            </xsl:apply-templates>
        </ol>
    </xsl:template>
    
    <xsl:template match="pageList/pageData">
        <xsl:variable name="pageItem" select="@uid" />
        <li>
            <a>
                <xsl:attribute name="title"><xsl:value-of select="title" /></xsl:attribute>
                <xsl:attribute name="href">
                    <xsl:if test="not($baseURI = '' or not($baseURI) or $baseURI = '/')">
                        <xsl:value-of select="$baseURI" /></xsl:if><xsl:if test="substring(uri, 1, 1) = '/'"><xsl:value-of select="substring(uri, 2)" /></xsl:if>
                </xsl:attribute>
                <xsl:if test="($pageUID = $pageItem) or count(../pageData[@uid = $pageUID and parent = $pageItem])">
                    <xsl:attribute name="class">menu_current</xsl:attribute>
                </xsl:if>
                <xsl:value-of select="title" />
            </a>
            
            <!-- Check for children pages -->
            <xsl:if test="count(../pageData[parent = $pageItem]) &gt; 0">
                <ol>
                    <xsl:apply-templates select="../pageData[parent = $pageItem]">
                        <xsl:sort select="../pageData[parent = $pageItem]|@uid"
                            data-type="number"
                            order="ascending" />
                    </xsl:apply-templates>
                </ol>
            </xsl:if>
        </li>
    </xsl:template>
    
    <!--
        /** END MENU **/
    -->
    <xsl:template name="footer">
        <xsl:comment>Footer start</xsl:comment>

        <div id="footerContainer">
            <p>
                Copyright © <xsl:value-of select="$startYear" />
                <xsl:if test="$currentYear > $startYear">
                    -<xsl:value-of select="$currentYear" />
                </xsl:if> Smurfturf.net
            </p>
            <div class="clear"><xsl:comment>Not Empty</xsl:comment></div>
            <xsl:if test="$printXML = 'true'">
                <textarea cols="160" rows="200" style="width: 100%; height:600px">
                    <xsl:copy-of select="/"/>
                </textarea>
            </xsl:if>
        </div>

        <xsl:comment>Footer end</xsl:comment>

        <script type="text/javascript">
            AppController.init();

            <xsl:call-template name="additionalJavascriptLoader" />
        </script>
    </xsl:template>

    <xsl:template match="appData/pageData[@uid = $pageUID]">
        <xsl:if test="not(not(content) or content = '')">
            <xsl:apply-templates match="content" />
        </xsl:if>
        <!--
        <p>
            <xsl:value-of select="php:function('getStr', 'i_am', 'common')" />
            [<xsl:value-of select="//pageList/pageData[@uid = $pageUID]/name" />] page: <br />
            <xsl:if test="not(not(content) or content = '')">
                <xsl:apply-templates match="content" />
            </xsl:if>
        </p>
    -->
    </xsl:template>
    
    <xsl:template match="content">
        <xsl:value-of select="." />
    </xsl:template>
    
    <xsl:template name="pageNotFound">
        <p>
            <h2>This page (<xsl:value-of select="/appData/appConfig/queryString/request_uri" />) does not exist!</h2>
        </p>
    </xsl:template>

    <xsl:template match="userInfo">
        <!-- This stores the session information and should *never* be displayed -->
    </xsl:template>

    <!-- These can be overwritten by stylesheets to add CSS/JS calls -->
    <xsl:template name="additionalJavascript"></xsl:template>
    <xsl:template name="additionalJavascriptLoader"></xsl:template>
    <xsl:template name="additionalStyleSheet"></xsl:template>
    
    <!--
        This allows raw html to be added to the content
    -->
    <xsl:template match="rawHTML">
        <xsl:copy-of select="."/>
    </xsl:template>
    
    <!--
        Don't show what isn't use, and if you need, match attributes!
    -->
    <xsl:template match="node()|@*"></xsl:template>
    <!--
    <xsl:variable name="stuff">
        <item id="0">one</item>
        <item id="1">two</item>
        <item id="2">three</item>
    </xsl:variable>
    <xsl:variable name="theStuff" select="exsl:node-set($stuff)"/>
    <xsl:value-of select="$theStuff/item[@id = 1]" />   
    -->
</xsl:stylesheet>