- Parent/child theme feature

- Documetation for MPA specific template elements
--This line, and those below, witll be ignored--

M    foundry/conf/global.xml
M    foundry/foundry/lib/bebop/tree.xsl
M    foundry/foundry/lib/global-vars.xsl
M    foundry/foundry/lib/template-parser.xsl
M    foundry/foundry/lib/template-tags/admin/cms.xsl
M    foundry/foundry/lib/template-tags/admin/common.xsl
M    foundry/foundry/lib/template-tags/content-items/mpa.xsl
M    foundry/foundry/lib/template-tags/html-tags.xsl
M    foundry/foundry/lib/template-tags/loaders.xsl
M    foundry/foundry/lib/utils.xsl


git-svn-id: https://svn.libreccm.org/ccm/trunk@2972 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2014-11-17 13:33:14 +00:00
parent e5df8383f8
commit 78bad5287c
10 changed files with 183 additions and 77 deletions

View File

@ -6,6 +6,13 @@
<language locale="en"/> <language locale="en"/>
</supported-languages> </supported-languages>
<setting id="theme-mode">master</setting>
<!--
Uncomment the following line if you want to use another theme than the Foundry base theme
as parent theme.
-->
<!--<setting id="parent-theme">foundry</setting>-->
<setting id="site-logo">foundry/images/scientificcms_logo.png</setting> <setting id="site-logo">foundry/images/scientificcms_logo.png</setting>
</foundry:configuration> </foundry:configuration>

View File

@ -54,7 +54,7 @@
<img style="border:none" alt="[-]"> <img style="border:none" alt="[-]">
<xsl:attribute name="src" <xsl:attribute name="src"
select="foundry:gen-path('images/bebop/collapse.png', select="foundry:gen-path('images/bebop/collapse.png',
true())"/> 'internal')"/>
<!--select="foundry:parse-link('/images/bebop/collapse.png', <!--select="foundry:parse-link('/images/bebop/collapse.png',
$theme-prefix)"/>--> $theme-prefix)"/>-->
</img> </img>
@ -70,7 +70,7 @@
<img style="border:none" alt="[+]"> <img style="border:none" alt="[+]">
<xsl:attribute name="src" <xsl:attribute name="src"
select="foundry:gen-path('images/bebop/expand.png', select="foundry:gen-path('images/bebop/expand.png',
true())"/> 'internal')"/>
<!--select="foundry:parse-link('/images/bebop/expand.png', <!--select="foundry:parse-link('/images/bebop/expand.png',
$theme-prefix)"/>--> $theme-prefix)"/>-->
</img> </img>

View File

@ -45,6 +45,30 @@ processor, some are read from the configuration files of Foundry and some are de
</foundry:doc> </foundry:doc>
<xsl:variable name="foundry-version" select="'2.2.3-SNAPSHOT'"/> <xsl:variable name="foundry-version" select="'2.2.3-SNAPSHOT'"/>
<foundry:doc section="devel" type="env-var">
<foundry:doc-desc>
<p>
The mode of the theme. If the theme is standalone theme, the value is
<code>master</code>. If the theme is a child theme the value is <code>child</code>.
</p>
</foundry:doc-desc>
</foundry:doc>
<xsl:variable name="theme-mode" select="foundry:get-setting('global',
'theme-mode',
'master')"/>
<foundry:doc section="devel" type="env-var">
<foundry:doc-desc>
<p>
The master theme of the current if the theme is a child theme. if theme is direct
child of the Foundry base theme the value is <code>foundry</code>. Otherwise it is
the name of master theme.
</p>
</foundry:doc-desc>
</foundry:doc>
<xsl:variable name="master-theme" select="foundry:get-setting('global',
'master-theme',
'foundry')"/>
<!-- **************************************************************************** --> <!-- **************************************************************************** -->
<!-- CCM Environment variables --> <!-- CCM Environment variables -->

View File

@ -124,20 +124,12 @@
</foundry:doc> </foundry:doc>
<xsl:template match="include"> <xsl:template match="include">
<xsl:variable name="internal" as="xs:boolean"> <xsl:variable name="origin" as="xs:string"
<xsl:choose> select="foundry:get-attribute-value(current(), 'origin', '')"/>
<xsl:when test="./@internal">
<xsl:value-of select="foundry:boolean(./@internal)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="false()"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:apply-templates select="document(foundry:gen-path(concat('templates/', <xsl:apply-templates select="document(foundry:gen-path(concat('templates/',
./@file), ./@file),
$internal))/fragment-layout"/> $origin))/fragment-layout"/>
</xsl:template> </xsl:template>

View File

@ -261,11 +261,12 @@
<xsl:when test="$show-delete-link = 'true' and @deleteAction"> <xsl:when test="$show-delete-link = 'true' and @deleteAction">
<a href="{@deleteAction}"> <a href="{@deleteAction}">
<xsl:attribute name="title" <xsl:attribute name="title"
select="foundry:get-internal-static-text('cms', 'category-step/remove-category')"/> select="foundry:get-internal-static-text('cms',
'category-step/remove-category')"/>
<img alt="[X]"> <img alt="[X]">
<xsl:attribute name="src" <xsl:attribute name="src"
select="foundry:gen-path('images/cms/categoryDelete.png', select="foundry:gen-path('images/cms/categoryDelete.png',
true())"/> 'internal')"/>
</img> </img>
&nbsp; &nbsp;
<xsl:value-of select="@path"/> <xsl:value-of select="@path"/>
@ -359,7 +360,7 @@
<img id="catTreeToggleImage{@node-id}" alt="-"> <img id="catTreeToggleImage{@node-id}" alt="-">
<xsl:attribute name="src" <xsl:attribute name="src"
select="foundry:gen-path('images/cms/categoryCollapse.png', select="foundry:gen-path('images/cms/categoryCollapse.png',
true())"/> 'internal')"/>
</img> </img>
</a> </a>
</xsl:when> </xsl:when>
@ -371,7 +372,7 @@
<img id="catTreeToggleImage{@node-id}" alt="+"> <img id="catTreeToggleImage{@node-id}" alt="+">
<xsl:attribute name="src" <xsl:attribute name="src"
select="foundry:gen-path('images/cms/categoryExpand.png', select="foundry:gen-path('images/cms/categoryExpand.png',
true())"/> 'internal')"/>
</img> </img>
</a> </a>
</xsl:when> </xsl:when>
@ -379,7 +380,7 @@
<img id="catTreeToggleImage{@node-id}" alt=" "> <img id="catTreeToggleImage{@node-id}" alt=" ">
<xsl:attribute name="src" <xsl:attribute name="src"
select="foundry:gen-path('images/cms/categoryNode.png', select="foundry:gen-path('images/cms/categoryNode.png',
true())"/> 'internal')"/>
</img> </img>
</xsl:otherwise> </xsl:otherwise>
</xsl:choose> </xsl:choose>
@ -392,7 +393,7 @@
<img id="catToggleImage{@id}" alt="[X]"> <img id="catToggleImage{@id}" alt="[X]">
<xsl:attribute name="src" <xsl:attribute name="src"
select="foundry:gen-path('images/cms/categorySelected.gif', select="foundry:gen-path('images/cms/categorySelected.gif',
true())"/> 'internal')"/>
</img> </img>
</a> </a>
</xsl:when> </xsl:when>
@ -400,7 +401,7 @@
<img id="catToggleImage{@id}" alt=" "> <img id="catToggleImage{@id}" alt=" ">
<xsl:attribute name="src" <xsl:attribute name="src"
select="foundry:gen-path('images/cms/categoryAbstract.gif', select="foundry:gen-path('images/cms/categoryAbstract.gif',
true())"/> 'internal')"/>
</img> </img>
</xsl:when> </xsl:when>
<xsl:otherwise> <xsl:otherwise>
@ -408,7 +409,7 @@
<img id="catToggleImage{@id}" alt="[ ]" title="Select"> <img id="catToggleImage{@id}" alt="[ ]" title="Select">
<xsl:attribute name="src" <xsl:attribute name="src"
select="foundry:gen-path('images/cms/categoryUnselected.gif', select="foundry:gen-path('images/cms/categoryUnselected.gif',
true())"/> 'internal')"/>
</img> </img>
</a> </a>
</xsl:otherwise> </xsl:otherwise>

View File

@ -130,7 +130,7 @@
<img src="{foundry:gen-path($src)}"/> <img src="{foundry:gen-path($src)}"/>
</xsl:when> </xsl:when>
<xsl:otherwise> <xsl:otherwise>
<img src="{foundry:gen-path('images/scientificcms_logo.png', true())}"/> <img src="{foundry:gen-path('images/scientificcms_logo.png', 'internal')}"/>
</xsl:otherwise> </xsl:otherwise>
</xsl:choose> </xsl:choose>
</xsl:template> </xsl:template>

View File

@ -28,6 +28,13 @@
exclude-result-prefixes="xsl xs bebop cms foundry nav ui" exclude-result-prefixes="xsl xs bebop cms foundry nav ui"
version="2.0"> version="2.0">
<foundry:doc section="user" type="template-tag">
<foundry:doc-desc>
<p>
Outputs the summary of the multi part article.
</p>
</foundry:doc-desc>
</foundry:doc>
<xsl:template match="/content-item-layout//mpa-summary"> <xsl:template match="/content-item-layout//mpa-summary">
<xsl:param name="contentitem-tree" tunnel="yes"/> <xsl:param name="contentitem-tree" tunnel="yes"/>
@ -41,12 +48,26 @@
</xsl:choose> </xsl:choose>
</xsl:template> </xsl:template>
<foundry:doc section="user" type="template-tag">
<foundry:doc-desc>
<p>
Root element for outputting the list of sections of a MPA.
</p>
</foundry:doc-desc>
</foundry:doc>
<xsl:template match="/content-item-layout//mpa-sections"> <xsl:template match="/content-item-layout//mpa-sections">
<xsl:param name="contentitem-tree" tunnel="yes"/> <xsl:param name="contentitem-tree" tunnel="yes"/>
<xsl:apply-templates/> <xsl:apply-templates/>
</xsl:template> </xsl:template>
<foundry:doc section="user" type="template-tag">
<foundry:doc-desc>
<p>
Root for rendering a link to a section of a MPA in the list of sections.
</p>
</foundry:doc-desc>
</foundry:doc>
<xsl:template match="/content-item-layout//mpa-sections//mpa-section"> <xsl:template match="/content-item-layout//mpa-sections//mpa-section">
<xsl:param name="contentitem-tree" tunnel="yes"/> <xsl:param name="contentitem-tree" tunnel="yes"/>
<xsl:variable name="section-layout-tree" select="current()"/> <xsl:variable name="section-layout-tree" select="current()"/>
@ -93,18 +114,39 @@
</xsl:for-each> </xsl:for-each>
</xsl:template> </xsl:template>
<foundry:doc section="user" type="template-tag">
<foundry:doc-desc>
<p>
Output the name a section of MPA in the list of sections.
</p>
</foundry:doc-desc>
</foundry:doc>
<xsl:template match="/content-item-layout//mpa-sections//mpa-section//mpa-section-title"> <xsl:template match="/content-item-layout//mpa-sections//mpa-section//mpa-section-title">
<xsl:param name="mpa-section-title" tunnel="yes"/> <xsl:param name="mpa-section-title" tunnel="yes"/>
<xsl:value-of select="$mpa-section-title"/> <xsl:value-of select="$mpa-section-title"/>
</xsl:template> </xsl:template>
<foundry:doc section="user" type="template-tag">
<foundry:doc-desc>
<p>
Root element for outputting the current sections of a MPA.
</p>
</foundry:doc-desc>
</foundry:doc>
<xsl:template match="/content-item-layout//mpa-current-sections"> <xsl:template match="/content-item-layout//mpa-current-sections">
<xsl:param name="contentitem-tree" tunnel="yes"/> <xsl:param name="contentitem-tree" tunnel="yes"/>
<xsl:apply-templates/> <xsl:apply-templates/>
</xsl:template> </xsl:template>
<foundry:doc section="user" type="template-tag">
<foundry:doc-desc>
<p>
Root element for outputting a current section of a MPA.
</p>
</foundry:doc-desc>
</foundry:doc>
<xsl:template match="/content-item-layout//mpa-current-sections//mpa-current-section"> <xsl:template match="/content-item-layout//mpa-current-sections//mpa-current-section">
<xsl:param name="contentitem-tree" tunnel="yes"/> <xsl:param name="contentitem-tree" tunnel="yes"/>
<xsl:variable name="current-section-layout-tree" select="current()"/> <xsl:variable name="current-section-layout-tree" select="current()"/>
@ -120,18 +162,40 @@
</xsl:for-each> </xsl:for-each>
</xsl:template> </xsl:template>
<foundry:doc section="user" type="template-tag">
<foundry:doc-desc>
<p>
Outputs the title of a current section of a MPA.
</p>
</foundry:doc-desc>
</foundry:doc>
<xsl:template match="/content-item-layout//mpa-current-sections//mpa-current-section//mpa-current-section-title"> <xsl:template match="/content-item-layout//mpa-current-sections//mpa-current-section//mpa-current-section-title">
<xsl:param name="current-section-title" tunnel="yes"/> <xsl:param name="current-section-title" tunnel="yes"/>
<xsl:value-of select="$current-section-title"/> <xsl:value-of select="$current-section-title"/>
</xsl:template> </xsl:template>
<foundry:doc section="user" type="template-tag">
<foundry:doc-desc>
<p>
Outputs the content of a current section of a MPA.
</p>
</foundry:doc-desc>
</foundry:doc>
<xsl:template match="/content-item-layout//mpa-current-sections//mpa-current-section//mpa-current-section-content"> <xsl:template match="/content-item-layout//mpa-current-sections//mpa-current-section//mpa-current-section-content">
<xsl:param name="current-section-content" tunnel="yes"/> <xsl:param name="current-section-content" tunnel="yes"/>
<xsl:value-of select="$current-section-content"/> <xsl:value-of select="$current-section-content"/>
</xsl:template> </xsl:template>
<foundry:doc section="user" type="template-tag">
<foundry:doc-desc>
<p>
Provides the parameters (URL via the <code>href</code> parameter) for the link
to the previous page of a MPA if there is a previous page.
</p>
</foundry:doc-desc>
</foundry:doc>
<xsl:template match="/content-item-layout//mpa-prev-page-link"> <xsl:template match="/content-item-layout//mpa-prev-page-link">
<xsl:param name="contentitem-tree" tunnel="yes"/> <xsl:param name="contentitem-tree" tunnel="yes"/>
@ -145,6 +209,14 @@
</xsl:if> </xsl:if>
</xsl:template> </xsl:template>
<foundry:doc section="user" type="template-tag">
<foundry:doc-desc>
<p>
Provides the parameters (URL via the <code>href</code> parameter) for the link
to the next page of a MPA if there is a next page.
</p>
</foundry:doc-desc>
</foundry:doc>
<xsl:template match="/content-item-layout//mpa-next-page-link"> <xsl:template match="/content-item-layout//mpa-next-page-link">
<xsl:param name="contentitem-tree" tunnel="yes"/> <xsl:param name="contentitem-tree" tunnel="yes"/>
@ -158,6 +230,14 @@
</xsl:if> </xsl:if>
</xsl:template> </xsl:template>
<foundry:doc section="user" type="template-tag">
<foundry:doc-desc>
<p>
Provides the parameters (URL via the <code>href</code> parameter) for the link
to show all section of a MPA on one page.
</p>
</foundry:doc-desc>
</foundry:doc>
<xsl:template match="/content-item-layout//mpa-all-sections-link"> <xsl:template match="/content-item-layout//mpa-all-sections-link">
<xsl:param name="contentitem-tree" tunnel="yes"/> <xsl:param name="contentitem-tree" tunnel="yes"/>

View File

@ -1981,26 +1981,14 @@
<foundry:doc-attributes> <foundry:doc-attributes>
<foundry:doc-attribute name="origin" mandatory="no"> <foundry:doc-attribute name="origin" mandatory="no">
<p> <p>
The <code>origin</code> attribute determines the how the path provided in the As usual <code>origin</code> attribute determines the how the path provided in
<code>src</code> attribute is interpreted. The following values are interpreted: the <code>src</code> attribute is interpreted. The following values are
interpreted. In addition to the common values <code>internal</code>,
<code>master</code> and the default value the <code>script</code> element also
support the value <code>absolute</code>. If <code>origin</code> is set to
absolute the provided source path is processed by Foundry and is used as it is
provided.
</p> </p>
<dl>
<dt>absolute</dt>
<dd>
The path is interpreted as absolute path and is not processed by Foundry.
</dd>
<dt>internal</dt>
<dd>
The script is loaded from the internal (<code>foundry/scripts</code>)
scripts directory.
</dd>
<dt>theme</dt>
<dd>
This is default which is also used when the the <code>origin</code>
attribute is not present. The script is loaded from the <code>scripts</code>
directory of the theme.
</dd>
</dl>
</foundry:doc-attribute> </foundry:doc-attribute>
<foundry:doc-attribute name="src" mandatory="yes"> <foundry:doc-attribute name="src" mandatory="yes">
<p> <p>
@ -2054,21 +2042,13 @@
</xsl:choose> </xsl:choose>
</xsl:attribute> </xsl:attribute>
<xsl:if test="./@src"> <xsl:if test="./@src">
<xsl:attribute name="src" <xsl:variable name="origin"
select="if (./@origin = 'absolute') select="foundry:get-attribute-value(current(), 'origin', '')"/>
then ./@src
else foundry:gen-path(./@src, ./@origin = 'internal')"/>
<!--<xsl:choose>
<xsl:when test="./@origin = 'absolute'">
<xsl:value-of select="./@src"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="foundry:gen-path(./@src,
./@origin = 'internal')"/>
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>--> <xsl:attribute name="src"
select="if ($origin = 'absolute')
then ./@src
else foundry:gen-path(./@src, $origin)"/>
</xsl:if> </xsl:if>
<xsl:if test="string-length(.)"> <xsl:if test="string-length(.)">
<xsl:value-of select="."/> <xsl:value-of select="."/>

View File

@ -141,8 +141,8 @@
<code>parent</code> <code>parent</code>
</dt> </dt>
<dd> <dd>
File is loaded from the <code>styles</code> directory of the parent theme. (Not File is loaded from the <code>styles</code> directory of the parent theme.
implemented yet!) Please read the section about parent and child themes for more details.
</dd> </dd>
<dt> <dt>
<code>internal</code> <code>internal</code>
@ -165,17 +165,8 @@
<xsl:param name="filename"/> <xsl:param name="filename"/>
<xsl:param name="media" select="''"/> <xsl:param name="media" select="''"/>
<xsl:param name="origin" select="''"/> <xsl:param name="origin" select="''"/>
<!--<xsl:param name="internal" select="false()"/>-->
<xsl:variable name="style-dir"> <!--<xsl:variable name="style-dir">
<!--<xsl:choose>
<xsl:when test="$internal = true()">
<xsl:value-of select="'foundry/styles/'"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="'styles/'"/>
</xsl:otherwise>
</xsl:choose>-->
<xsl:choose> <xsl:choose>
<xsl:when test="$origin = ''"> <xsl:when test="$origin = ''">
<xsl:value-of select="'styles/'"/> <xsl:value-of select="'styles/'"/>
@ -183,7 +174,7 @@
<xsl:when test="$origin = 'internal'"> <xsl:when test="$origin = 'internal'">
<xsl:value-of select="'foundry/styles/'"/> <xsl:value-of select="'foundry/styles/'"/>
</xsl:when> </xsl:when>
<!-- ToDo: parent theme and internal for child theme -->
<xsl:otherwise> <xsl:otherwise>
<xsl:choose> <xsl:choose>
<xsl:when test="starts-with($origin, '/') and ends-with($origin, '/')"> <xsl:when test="starts-with($origin, '/') and ends-with($origin, '/')">
@ -201,19 +192,19 @@
</xsl:choose> </xsl:choose>
</xsl:otherwise> </xsl:otherwise>
</xsl:choose> </xsl:choose>
</xsl:variable> </xsl:variable>-->
<xsl:choose> <xsl:choose>
<xsl:when test="string-length($media) &gt; 0"> <xsl:when test="string-length($media) &gt; 0">
<link rel="stylesheet" <link rel="stylesheet"
type="text/css" type="text/css"
href="{foundry:gen-path(concat($style-dir, $media, '/', $filename))}" href="{foundry:gen-path(concat('css/', $media, '/', $filename, $origin))}"
media="{$media}" /> media="{$media}" />
</xsl:when> </xsl:when>
<xsl:otherwise> <xsl:otherwise>
<link rel="stylesheet" <link rel="stylesheet"
type="text/css" type="text/css"
href="{foundry:gen-path(concat($style-dir, $filename))}" /> href="{foundry:gen-path(concat('css/', $filename, $origin))}" />
</xsl:otherwise> </xsl:otherwise>
</xsl:choose> </xsl:choose>
</xsl:template> </xsl:template>

View File

@ -170,7 +170,7 @@ XSLT 2.0 functions.
<xsl:function name="foundry:gen-path" as="xs:string"> <xsl:function name="foundry:gen-path" as="xs:string">
<xsl:param name="path" as="xs:string"/> <xsl:param name="path" as="xs:string"/>
<xsl:sequence select="foundry:gen-path($path, false())"/> <xsl:sequence select="foundry:gen-path($path, '')"/>
</xsl:function> </xsl:function>
<foundry:doc section="devel" type="function"> <foundry:doc section="devel" type="function">
@ -184,16 +184,47 @@ XSLT 2.0 functions.
</foundry:doc> </foundry:doc>
<xsl:function name="foundry:gen-path" as="xs:string"> <xsl:function name="foundry:gen-path" as="xs:string">
<xsl:param name="path" as="xs:string"/> <xsl:param name="path" as="xs:string"/>
<xsl:param name="internal" as="xs:boolean"/> <xsl:param name="origin" as="xs:string"/>
<!--<xsl:variable name="theme-mode" select="foundry:get-setting('global',
'theme-mode',
'master')"/>
<xsl:variable name="master-theme" select="foundry:get-setting('global',
'master-theme',
'foundry')"/>-->
<xsl:choose> <xsl:choose>
<xsl:when test="$origin = ''">
<xsl:sequence select="concat($theme-prefix, '/', $path)"/>
</xsl:when>
<xsl:when test="$origin = 'master' and $theme-mode = 'master'">
<xsl:sequence select="concat($theme-prefix, '/', $path)"/>
</xsl:when>
<xsl:when test="$origin = 'master' and $theme-mode = 'child'">
<xsl:sequence select="concat($dispatcher-prefix,
'/themes/',
$master-theme,
'/',
$path)"/>
</xsl:when>
<xsl:when test="$origin = 'internal' and $theme-mode = 'master'">
<xsl:sequence select="concat($theme-prefix, '/foundry/', $path)"/>
</xsl:when>
<xsl:when test="$origin = 'internal' and $theme-mode = 'child'">
<xsl:sequence select="concat($dispatcher-prefix,
'/themes/foundry/',
$path)"/>
</xsl:when>
</xsl:choose>
<!--<xsl:choose>
<xsl:when test="$internal = true()"> <xsl:when test="$internal = true()">
<xsl:sequence select="concat($theme-prefix, '/foundry/', $path)"/> <xsl:sequence select="concat($theme-prefix, '/foundry/', $path)"/>
</xsl:when> </xsl:when>
<xsl:otherwise> <xsl:otherwise>
<xsl:sequence select="concat($theme-prefix, '/', $path)"/> <xsl:sequence select="concat($theme-prefix, '/', $path)"/>
</xsl:otherwise> </xsl:otherwise>
</xsl:choose> </xsl:choose>-->
</xsl:function> </xsl:function>
@ -539,11 +570,11 @@ XSLT 2.0 functions.
<xsl:when test="$node and $node != ''"> <xsl:when test="$node and $node != ''">
<xsl:sequence select="$node"/> <xsl:sequence select="$node"/>
</xsl:when> </xsl:when>
<xsl:when test="$module = '' and document(foundry:gen-path('conf/global.xml'))/foundry:configuration/setting[@id=$setting]"> <xsl:when test="$module = '' and document(foundry:gen-path('conf/global.xml', ''))/foundry:configuration/setting[@id=$setting]">
<xsl:sequence select="document(foundry:gen-path('conf/global.xml'))/foundry:configuration/setting[@id=$setting]"/> <xsl:sequence select="document(foundry:gen-path('conf/global.xml', ''))/foundry:configuration/setting[@id=$setting]"/>
</xsl:when> </xsl:when>
<xsl:when test="not($module = '') and document(foundry:gen-path(concat('conf/', $module, '.xml')))/foundry:configuration/setting[@id=$setting]"> <xsl:when test="not($module = '') and document(foundry:gen-path(concat('conf/', $module, '.xml', '')))/foundry:configuration/setting[@id=$setting]">
<xsl:sequence select="document(foundry:gen-path(concat('conf/', $module, '.xml')))/foundry:configuration/setting[@id=$setting]"/> <xsl:sequence select="document(foundry:gen-path(concat('conf/', $module, '.xml', '')))/foundry:configuration/setting[@id=$setting]"/>
</xsl:when> </xsl:when>
<xsl:otherwise> <xsl:otherwise>
<xsl:message> <xsl:message>