| Author | Dave Jarvis <email> |
|---|---|
| Date | 2015-02-02 22:53:52 GMT-0800 |
| Commit | 22279fefb3d6119e4030851018dfc32b5a2e0e8e |
| Parent | 742ea1e |
| } | ||
| -// Build the menu | ||
| -task buildMenu( type: JavaExec ) { | ||
| - main = "net.sf.saxon.Transform" | ||
| - classpath = configurations.runtime | ||
| - args "-s:source/xsl/menu/menu.xml", "-xsl:source/xsl/menu/menu.xsl" | ||
| -} | ||
| - | ||
| // Map menu items to servlets | ||
| task createServletMap( type: JavaExec ) { | ||
| main = "net.sf.saxon.Transform" | ||
| classpath = configurations.runtime | ||
| - args "-s:source/xsl/menu/menu.xml", "-xsl:source/xsl/servlet/servlet.xsl" | ||
| + args "-s:resources/menu/menu.xml", "-xsl:source/xsl/servlet/servlet.xsl" | ||
| } | ||
| -buildMenu.dependsOn( copyLibraries ) | ||
| -run.dependsOn( [createServletMap, buildMenu] ) | ||
| +createServletMap.dependsOn( copyLibraries ) | ||
| +run.dependsOn( [createServletMap] ) | ||
| dependencies { |
| servlet.properties | ||
| -menu | ||
| +<?xml version="1.0" encoding="utf-8"?> | ||
| +<!-- | ||
| + | Single source for the menu system. This can use XSLT to transform the | ||
| + | menu relationship into a GraphViz graph. The graph can then be stylized | ||
| + | and included in the manual. | ||
| + +--> | ||
| +<menus> | ||
| + <items> | ||
| + <item id="1" link="home">Home</item> | ||
| + <item id="2" link="synopsis">Synopsis</item> | ||
| + <item id="3" link="proposal">Proposal</item> | ||
| + <item id="4" link="resources">Resources</item> | ||
| + <item id="5" link="discuss">Discuss</item> | ||
| + <item id="6" link="success">Success</item> | ||
| + <item id="7" link="account">Account</item> | ||
| + <item id="8" link="tags">Tags</item> | ||
| + <item id="9" link="edit">Edit</item> | ||
| + <item id="10" link="flag">Flag</item> | ||
| + <item id="11" link="support">Support</item> | ||
| + <item id="12" link="new">Add Item</item> | ||
| + <item id="13" link="refute">Refute</item> | ||
| + <item id="14" link="login">Log In</item> | ||
| + <item id="15" link="logout">Log Out</item> | ||
| + </items> | ||
| + <menu id="1"> | ||
| + <item id="7"/> <item id="8"/> <item id="12"/> <item id="15"/> | ||
| + </menu> | ||
| + <menu id="2"> | ||
| + <item id="1"/> <item id="3"/> <item id="4"/> <item id="5"/> <item id="6"/> | ||
| + <item id="7"/> <item id="15"/> | ||
| + </menu> | ||
| + <menu id="3"> | ||
| + <item id="1"/> <item id="2"/> <item id="4"/> <item id="5"/> <item id="6"/> | ||
| + <item id="7"/> <item id="9"/> <item id="10"/> <item id="15"/> | ||
| + </menu> | ||
| + <menu id="4"> | ||
| + <item id="1"/> <item id="2"/> <item id="3"/> <item id="5"/> <item id="6"/> | ||
| + <item id="7"/> <item id="9"/> <item id="10"/> <item id="15"/> | ||
| + </menu> | ||
| + <menu id="5"> | ||
| + <item id="1"/> <item id="2"/> <item id="3"/> <item id="4"/> <item id="6"/> | ||
| + <item id="7"/> <item id="12"/> <item id="15"/> | ||
| + </menu> | ||
| + <menu id="6"> | ||
| + <item id="1"/> <item id="2"/> <item id="3"/> <item id="4"/> <item id="5"/> | ||
| + <item id="7"/> <item id="9"/> <item id="10"/> <item id="15"/> | ||
| + </menu> | ||
| + <menu id="7"> | ||
| + <item id="1"/> <item id="15"/> | ||
| + </menu> | ||
| + <menu id="8"> | ||
| + <item id="1"/> <item id="15"/> | ||
| + </menu> | ||
| + <menu id="11"> | ||
| + <item id="1"/> <item id="3"/> <item id="4"/> <item id="4"/> <item id="5"/> | ||
| + <item id="6"/> <item id="7"/> <item id="9"/> <item id="10"/> | ||
| + <item id="13"/> <item id="15"/> | ||
| + </menu> | ||
| + <menu id="14"> | ||
| + <item id="1"/> <item id="15"/> | ||
| + </menu> | ||
| + <menu id="15"> | ||
| + <item id="1"/> | ||
| + </menu> | ||
| +</menus> | ||
| + | ||
| <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> | ||
| +<xsl:variable name="APP_NAME">account</xsl:variable> | ||
| + | ||
| <xsl:variable name="artefacts"> | ||
| <artefacts> | ||
| <css>account</css> | ||
| - <xsl:copy-of select="document( 'menu/account.xml' )"/> | ||
| </artefacts> | ||
| </xsl:variable> |
| <xsl:param name="P_AUTHENTICATED" select="false()"/> | ||
| +<!-- Read the entire menu into an XML fragment variable. --> | ||
| +<xsl:variable name="MENU"> | ||
| + <xsl:copy-of select="document( 'menu/menu.xml' )"/> | ||
| +</xsl:variable> | ||
| + | ||
| +<!-- Create a menu index based on the unique menu IDs. --> | ||
| +<xsl:key name="items" match="/menus/items/item" use="@id"/> | ||
| + | ||
| <xsl:template match="/"> | ||
| <html> | ||
| </head> | ||
| <body> | ||
| - <xsl:apply-templates select="$artefacts" mode="menu"/> | ||
| + <xsl:apply-templates select="$MENU" mode="menu"/> | ||
| <xsl:apply-templates/> | ||
| - <xsl:apply-templates select="$artefacts" mode="menu"/> | ||
| + <xsl:apply-templates select="$MENU" mode="menu"/> | ||
| <xsl:apply-templates select="$artefacts" mode="js"/> | ||
| </body> | ||
| </xsl:template> | ||
| -<xsl:template match="artefacts" mode="menu"> | ||
| - <xsl:apply-templates select="menu" mode="menu"/> | ||
| -</xsl:template> | ||
| +<xsl:template match="menus" mode="menu"> | ||
| + <!-- The application name is given by the imported stylesheet. --> | ||
| + <xsl:variable name="id" select="$MENU/menus/items/item[@link=$APP_NAME]/@id"/> | ||
| -<xsl:template match="menu" mode="menu"> | ||
| <ul class="menu"> | ||
| - <xsl:apply-templates mode="menu"/> | ||
| + <xsl:apply-templates select="menu[@id=$id]" mode="menu"/> | ||
| </ul> | ||
| +</xsl:template> | ||
| + | ||
| +<xsl:template match="menu" mode="menu"> | ||
| + <xsl:apply-templates mode="menu"/> | ||
| </xsl:template> | ||
| <xsl:template name="menu-item"> | ||
| + <xsl:variable name="link" select="key( 'items', @id )/@link"/> | ||
| <li class="item"> | ||
| - <a href="{$P_CONTEXT}/{@link}" class="{@link}"><xsl:apply-templates/></a> | ||
| + <a href="{$P_CONTEXT}/{$link}" class="{$link}"> | ||
| + <xsl:value-of select="key( 'items', @id )"/> | ||
| + </a> | ||
| </li> | ||
| </xsl:template> | ||
| <xsl:stylesheet version='2.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'> | ||
| +<xsl:variable name="APP_NAME">discuss</xsl:variable> | ||
| + | ||
| <xsl:variable name="artefacts"> | ||
| <artefacts> | ||
| <css>discuss</css> | ||
| - <xsl:copy-of select="document( 'menu/discuss.xml' )"/> | ||
| </artefacts> | ||
| </xsl:variable> |
| <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> | ||
| +<xsl:variable name="APP_NAME">home</xsl:variable> | ||
| + | ||
| <xsl:variable name="artefacts"> | ||
| <artefacts> | ||
| <css>home</css> | ||
| - <xsl:copy-of select="document( 'menu/home.xml' )"/> | ||
| </artefacts> | ||
| </xsl:variable> |
| <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> | ||
| +<xsl:variable name="APP_NAME">login</xsl:variable> | ||
| + | ||
| <xsl:variable name="artefacts"> | ||
| <artefacts> | ||
| <css>login</css> | ||
| - <xsl:copy-of select="document( 'menu/login.xml' )"/> | ||
| </artefacts> | ||
| </xsl:variable> |
| <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> | ||
| +<xsl:variable name="APP_NAME">logout</xsl:variable> | ||
| + | ||
| <!-- Shouldn't be used because log out redirects to the home page. --> | ||
| <xsl:variable name="artefacts"> | ||
| <artefacts> | ||
| <css>home</css> | ||
| - <xsl:copy-of select="document( 'menu/logout.xml' )"/> | ||
| </artefacts> | ||
| </xsl:variable> |
| -# Overview | ||
| - | ||
| -This directory contains the scripts and source code to generate the system | ||
| -menu. | ||
| - | ||
| -In addition to generating the system menu it is possible to generate the | ||
| -corresponding documentation that illustrates the menu relationships using | ||
| -a graph. | ||
| - | ||
| -# Building | ||
| - | ||
| -Building the menu requires SAXON 9 be installed. SAXON 9 is required | ||
| -because `menu.xsl` uses the keyword `xsl:result-document` to write the | ||
| -individual menu documents. This keyword requires XSLT 2, and SAXON 9 is | ||
| -an XSLT 2 processor. | ||
| - | ||
| -The build task is part of the Gradle build scripts. | ||
| - | ||
| -# Relationship Graphs | ||
| - | ||
| -The relationship graphs are not yet generated. | ||
| - | ||
| -<?xml version="1.0" encoding="utf-8"?> | ||
| -<!-- | ||
| - | Single source for the menu system. This can use XSLT to transform the | ||
| - | menu relationship into a GraphViz graph. The graph can then be stylized | ||
| - | and included in the manual. | ||
| - +--> | ||
| -<menus> | ||
| - <items> | ||
| - <item id="1" link="home">Home</item> | ||
| - <item id="2" link="synopsis">Synopsis</item> | ||
| - <item id="3" link="proposal">Proposal</item> | ||
| - <item id="4" link="resources">Resources</item> | ||
| - <item id="5" link="discuss">Discuss</item> | ||
| - <item id="6" link="success">Success</item> | ||
| - <item id="7" link="account">Account</item> | ||
| - <item id="8" link="tags">Tags</item> | ||
| - <item id="9" link="edit">Edit</item> | ||
| - <item id="10" link="flag">Flag</item> | ||
| - <item id="11" link="support">Support</item> | ||
| - <item id="12" link="new">Add Item</item> | ||
| - <item id="13" link="refute">Refute</item> | ||
| - <item id="14" link="login">Log In</item> | ||
| - <item id="15" link="logout">Log Out</item> | ||
| - </items> | ||
| - <menu id="1"> | ||
| - <item id="7"/> <item id="8"/> <item id="12"/> <item id="15"/> | ||
| - </menu> | ||
| - <menu id="2"> | ||
| - <item id="1"/> <item id="3"/> <item id="4"/> <item id="5"/> <item id="6"/> | ||
| - <item id="7"/> <item id="15"/> | ||
| - </menu> | ||
| - <menu id="3"> | ||
| - <item id="1"/> <item id="2"/> <item id="4"/> <item id="5"/> <item id="6"/> | ||
| - <item id="7"/> <item id="9"/> <item id="10"/> <item id="15"/> | ||
| - </menu> | ||
| - <menu id="4"> | ||
| - <item id="1"/> <item id="2"/> <item id="3"/> <item id="5"/> <item id="6"/> | ||
| - <item id="7"/> <item id="9"/> <item id="10"/> <item id="15"/> | ||
| - </menu> | ||
| - <menu id="5"> | ||
| - <item id="1"/> <item id="2"/> <item id="3"/> <item id="4"/> <item id="6"/> | ||
| - <item id="7"/> <item id="12"/> <item id="15"/> | ||
| - </menu> | ||
| - <menu id="6"> | ||
| - <item id="1"/> <item id="2"/> <item id="3"/> <item id="4"/> <item id="5"/> | ||
| - <item id="7"/> <item id="9"/> <item id="10"/> <item id="15"/> | ||
| - </menu> | ||
| - <menu id="7"> | ||
| - <item id="1"/> <item id="15"/> | ||
| - </menu> | ||
| - <menu id="8"> | ||
| - <item id="1"/> <item id="15"/> | ||
| - </menu> | ||
| - <menu id="11"> | ||
| - <item id="1"/> <item id="3"/> <item id="4"/> <item id="4"/> <item id="5"/> | ||
| - <item id="6"/> <item id="7"/> <item id="9"/> <item id="10"/> | ||
| - <item id="13"/> <item id="15"/> | ||
| - </menu> | ||
| - <menu id="14"> | ||
| - <item id="1"/> <item id="15"/> | ||
| - </menu> | ||
| - <menu id="15"> | ||
| - <item id="1"/> | ||
| - </menu> | ||
| -</menus> | ||
| - | ||
| -<?xml version='1.0' encoding='utf-8'?> | ||
| -<xsl:stylesheet version='2.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'> | ||
| - | ||
| -<xsl:output indent="yes" method="xml" encoding="utf-8"/> | ||
| - | ||
| -<xsl:strip-space elements="*"/> | ||
| - | ||
| -<xsl:key name="items" match="/menus/items/item" use="@id"/> | ||
| - | ||
| -<xsl:template match="/"> | ||
| - <xsl:apply-templates/> | ||
| -</xsl:template> | ||
| - | ||
| -<xsl:template match="menus"> | ||
| - <xsl:apply-templates select="menu"/> | ||
| -</xsl:template> | ||
| - | ||
| -<xsl:template match="menu"> | ||
| - <xsl:variable name="menu" select="key( 'items', @id )"/> | ||
| - <xsl:result-document method="xml" | ||
| - href="resources/menu/{$menu/@link}.xml"> | ||
| - <xsl:comment>Machine generated: change via menu.xsl.</xsl:comment> | ||
| - <xsl:text>
</xsl:text> | ||
| - <menu> | ||
| - <xsl:apply-templates /> | ||
| - </menu> | ||
| - </xsl:result-document> | ||
| -</xsl:template> | ||
| - | ||
| -<!-- The ID is required so that the menu can change dynamically. --> | ||
| -<xsl:template match="item"> | ||
| - <item id="{@id}"> | ||
| - <xsl:attribute name="link" select="key( 'items', @id )/@link"/> | ||
| - <xsl:value-of select="key( 'items', @id )"/> | ||
| - </item> | ||
| -</xsl:template> | ||
| - | ||
| -<!-- Ignore /menus/items --> | ||
| -<xsl:template match="*"/> | ||
| - | ||
| -</xsl:stylesheet> | ||
| <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> | ||
| +<xsl:variable name="APP_NAME">proposal</xsl:variable> | ||
| + | ||
| <xsl:variable name="artefacts"> | ||
| <artefacts> | ||
| <css>proposal</css> | ||
| - <xsl:copy-of select="document( 'menu/proposal.xml' )"/> | ||
| </artefacts> | ||
| </xsl:variable> |
| <xsl:include href="chart.xsl"/> | ||
| +<xsl:variable name="APP_NAME">resources</xsl:variable> | ||
| + | ||
| <xsl:variable name="artefacts"> | ||
| <artefacts> | ||
| <css>resources</css> | ||
| - <xsl:copy-of select="document( 'menu/resources.xml' )"/> | ||
| </artefacts> | ||
| </xsl:variable> |
| <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> | ||
| +<xsl:variable name="APP_NAME">success</xsl:variable> | ||
| + | ||
| <xsl:variable name="artefacts"> | ||
| <artefacts> | ||
| <css>success</css> | ||
| - <xsl:copy-of select="document( 'menu/success.xml' )"/> | ||
| </artefacts> | ||
| </xsl:variable> |
| <xsl:stylesheet version='2.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'> | ||
| +<xsl:variable name="APP_NAME">support</xsl:variable> | ||
| + | ||
| <xsl:variable name="artefacts"> | ||
| <artefacts> | ||
| <css>support</css> | ||
| <js>editor.min</js> | ||
| <js>support</js> | ||
| - <xsl:copy-of select="document( 'menu/support.xml' )"/> | ||
| </artefacts> | ||
| </xsl:variable> |
| <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> | ||
| +<xsl:variable name="APP_NAME">synopsis</xsl:variable> | ||
| + | ||
| <xsl:variable name="artefacts"> | ||
| <artefacts> | ||
| <css>synopsis</css> | ||
| - <xsl:copy-of select="document( 'menu/synopsis.xml' )"/> | ||
| </artefacts> | ||
| </xsl:variable> |
| <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> | ||
| +<xsl:variable name="APP_NAME">tags</xsl:variable> | ||
| + | ||
| <xsl:variable name="artefacts"> | ||
| <artefacts> | ||
| <css>tags</css> | ||
| <js>jquery.min</js> | ||
| <js>tags</js> | ||
| - <xsl:copy-of select="document( 'menu/tags.xml' )"/> | ||
| </artefacts> | ||
| </xsl:variable> |
| Delta | 113 lines added, 159 lines removed, 46-line decrease |
|---|