Introduction
Web add-ons are standard war files. The files included in the war file will be copied onto Soffid console war file.
In order to keep compatibility between add-ons, it's forbidden to overwrite existing file. Instead, the war file can contain xslt files to modify existing xml ones.
As an example, the following menu.zul.xsl allows the identity federation add-on to create a menu entry on menu.zul file:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:zul="http://www.zkoss.org/2005/zul">
<xsl:template match="zul:tree/zul:treechildren/zul:treeitem[3]" priority="3">
<xsl:copy>
<xsl:apply-templates select="node()|@*" />
</xsl:copy>
<zul:treeitem open="false" >
<zul:treerow >
<zul:treecell label="Federation menu" onClick="self.parent.parent.open=!self.parent.parent.open"/>
</zul:treerow>
<zul:treechildren>
<zul:treeitem>
<zul:treerow>
<zul:apptreecell label="Federation management"
pagina="addon/federation/federacio.zul" />
</zul:treerow>
</zul:treeitem>
</zul:treechildren>
</zul:treeitem>
</xsl:template>
<xsl:template match="node()|@*" priority="2">
<xsl:copy>
<xsl:apply-templates select="node()|@*" />
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
There is an special file named iam-label.properties. It contains the console localized labels, accessible via ${c:l EL expression or Labels class. This file, and all its localized versions will be merged automatically with existing iam-label.properties to create a new one.