diff --git a/extend/posterita/webui/WEB-INF/tld/web/core.dsp.tld b/extend/posterita/webui/WEB-INF/tld/web/core.dsp.tld
new file mode 100755
index 0000000000..acd18c4663
--- /dev/null
+++ b/extend/posterita/webui/WEB-INF/tld/web/core.dsp.tld
@@ -0,0 +1,385 @@
+
+
+
+
+
+
+ Core methods and tags for zweb in DSP
+
+
+
+
+
+
+
+ Provides the context for mutually exclusive conditional execution.
+
+ choose
+ org.zkoss.web.servlet.dsp.action.Choose
+
+
+
+ Iterators thru a collection/array of items.
+
+ forEach
+ org.zkoss.web.servlet.dsp.action.ForEach
+
+
+
+ Tests whether an condition is true and render the child only
+ if the condition is true.
+
+ if
+ org.zkoss.web.servlet.dsp.action.If
+
+
+
+ Includes the specified page.
+
+ include
+ org.zkoss.web.servlet.dsp.action.Include
+
+
+
+ Represents the last alternative within a choose action.
+
+ otherwise
+ org.zkoss.web.servlet.dsp.action.Otherwise
+
+
+
+ Generates the specified value into a string.
+
+ out
+ org.zkoss.web.servlet.dsp.action.Out
+
+
+
+ Sets the page info, such as the content type.
+
+ page
+ org.zkoss.web.servlet.dsp.action.Page
+
+
+
+ Remove an attribute.
+
+ remove
+ org.zkoss.web.servlet.dsp.action.Remove
+
+
+
+ Sets an attribute.
+
+ set
+ org.zkoss.web.servlet.dsp.action.Set
+
+
+
+ Represents an alternative within a {@link Choose} action.
+
+ when
+ org.zkoss.web.servlet.dsp.action.When
+
+
+
+
+
+
+ boolean
+ org.zkoss.el.fn.CommonFns
+ boolean toBoolean(java.lang.Object)
+
+ Converts the specified object to a boolean.
+
+
+
+ number
+ org.zkoss.el.fn.CommonFns
+ java.lang.Number toNumber(java.lang.Object)
+
+ Converts the specified object to a number.
+
+
+
+ int
+ org.zkoss.el.fn.CommonFns
+ int toInt(java.lang.Object)
+
+ Converts the specified object to an integer.
+
+
+
+ decimal
+ org.zkoss.el.fn.CommonFns
+ java.math.BigDecimal toDecimal(java.lang.Object)
+
+ Converts the specified object to a (big) decimal.
+
+
+
+ string
+ org.zkoss.el.fn.CommonFns
+ java.lang.String toString(java.lang.Object)
+
+ Converts the specified object to a string.
+
+
+
+ char
+ org.zkoss.el.fn.CommonFns
+ char toChar(java.lang.Object)
+
+ Converts the specified object to a character.
+
+
+
+ class
+ org.zkoss.lang.Classes
+ java.lang.Class forNameByThread(java.lang.String)
+
+ Returns the class of the specified class name.
+
+
+
+ isInstance
+ org.zkoss.el.fn.CommonFns
+ boolean isInstance(java.lang.Object, java.lang.Object)
+
+ Tests whether an object (the second argument) is an instance of a class (the first argument).
+ You could specify a class or the class name as the first argument.
+
+
+
+ length
+ org.zkoss.el.fn.CommonFns
+ int length(java.lang.Object)
+
+ Returns the length of a string, array, collection or map.
+
+
+
+ new
+ org.zkoss.el.fn.CommonFns
+ java.lang.Object new_(java.lang.Object)
+
+ Instantiates the specified class.
+ The argument could be either a string (class name) or a Class instance.
+
+
+
+
+
+
+
+ cat
+ org.zkoss.el.fn.StringFns
+
+ java.lang.String cat(java.lang.String, java.lang.String)
+
+
+ Catenates two strings. Note: null is considered as empty.
+
+
+
+ cat3
+ org.zkoss.el.fn.StringFns
+
+ java.lang.String cat3(java.lang.String, java.lang.String, java.lang.String)
+
+
+ Catenates three strings. Note: null is considered as empty.
+
+
+
+ cat4
+ org.zkoss.el.fn.StringFns
+
+ java.lang.String cat4(java.lang.String, java.lang.String, java.lang.String, java.lang.String)
+
+
+ Catenates four strings. Note: null is considered as empty.
+
+
+
+ cat5
+ org.zkoss.el.fn.StringFns
+
+ java.lang.String cat5(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String)
+
+
+ Catenates five strings. Note: null is considered as empty.
+
+
+
+ replace
+ org.zkoss.el.fn.StringFns
+
+ java.lang.String replace(java.lang.String, java.lang.String, java.lang.String)
+
+
+ Replaces all occurenances of the second argument with the third argument.
+
+
+
+
+ l
+ org.zkoss.el.fn.CommonFns
+ java.lang.String getLabel(java.lang.String)
+
+ Returns the label of the specified key.
+
+
+
+
+
+
+
+ attr
+ org.zkoss.web.fn.XMLFns
+
+ java.lang.String attr(java.lang.String, java.lang.Object)
+
+
+ Generates an attribute for HTML/XML, name="value".
+ If value is null or empty (if String), "" is generated.
+
+
+
+
+
+
+
+ encodeURL
+ org.zkoss.web.fn.ServletFns
+
+ java.lang.String encodeURL(java.lang.String)
+
+
+ Encoding URL to prefix the context path and to provide session info,
+ if necessary
+ If URI contains "*", it is resolved to the current Locale and
+ the browser code.
+
+
+
+ encodeURIComponent
+ org.zkoss.web.servlet.http.Encodes
+
+ java.lang.String encodeURIComponent(java.lang.String)
+
+
+ Encoding a string to be used as a query name or value.
+
+
+
+
+ escapeXML
+ org.zkoss.xml.XMLs
+
+ java.lang.String escapeXML(java.lang.String)
+
+
+ Encodes a string that special characters are quoted to be compatible
+ with HTML/XML.
+
+
+
+
+ isExplorer
+ org.zkoss.web.fn.ServletFns
+
+ boolean isExplorer()
+
+
+ Whether the current request is coming from Internet Explorer.
+
+
+
+ isExplorer7
+ org.zkoss.web.fn.ServletFns
+
+ boolean isExplorer7()
+
+
+ Whether the current request is coming from Internet Explorer 7 or later.
+
+
+
+ isGecko
+ org.zkoss.web.fn.ServletFns
+
+ boolean isGecko()
+
+
+ Whether the current request is coming from a Gecko-based browser,
+ such as Mozilla, Firefox and Camino.
+
+
+
+ isSafari
+ org.zkoss.web.fn.ServletFns
+
+ boolean isSafari()
+
+
+ Whether the current request is coming from Safari.
+
+
+
+ isOpera
+ org.zkoss.web.fn.ServletFns
+
+ boolean isOpera()
+
+
+ Whether the current request is coming from Opera.
+
+
+
+
+ render
+ org.zkoss.web.fn.ServletFns
+
+ void render(org.zkoss.web.servlet.dsp.action.ActionContext)
+
+
+ Renders a DSP fragment.
+
+
+
+
+ getCurrentLocale
+ org.zkoss.util.Locales
+
+ java.util.Locale getCurrent()
+
+
+ Returns the locale for the current request.
+
+
+
+ testCurrentLocale
+ org.zkoss.util.Locales
+
+ boolean testCurrent(java.lang.String, java.lang.String)
+
+
+ Returns whether the current locale belongs to the specified
+ language and/or country.
+
+ @param lang the language code, e.g., en and zh. Ignored if null.
+ @param country the country code, e.g., US. Ignored if null.
+ If empty, it means no country code at all.
+
+
+
diff --git a/extend/posterita/webui/WEB-INF/tld/web/html.dsp.tld b/extend/posterita/webui/WEB-INF/tld/web/html.dsp.tld
new file mode 100755
index 0000000000..eae0a9a251
--- /dev/null
+++ b/extend/posterita/webui/WEB-INF/tld/web/html.dsp.tld
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ Used to develop ZK components for XUL/HTML.
+
+
+
+
+
+
+
+ Display a box that has a caption and a border enclosing other tags.
+
+ box
+ org.zkoss.web.servlet.dsp.action.html.Box
+
+
+
+ Generates the HTML's img tag.
+
+ img
+ org.zkoss.web.servlet.dsp.action.html.Img
+
+
diff --git a/extend/posterita/webui/WEB-INF/tld/zk/core.dsp.tld b/extend/posterita/webui/WEB-INF/tld/zk/core.dsp.tld
new file mode 100755
index 0000000000..a6c25d937a
--- /dev/null
+++ b/extend/posterita/webui/WEB-INF/tld/zk/core.dsp.tld
@@ -0,0 +1,96 @@
+
+
+
+
+
+
+ Methods and actions for ZK in DSP/ZUML
+
+
+
+ redraw
+ org.zkoss.zk.fn.ZkFns
+
+ void redraw(org.zkoss.zk.ui.Component, java.io.Writer)
+
+
+ Redraw the specified component.
+
+
+
+
+ outResponseJavaScripts
+ org.zkoss.zk.fn.ZkFns
+
+ java.lang.String outResponseJavaScripts(java.util.Collection);
+
+
+ Returns javascript to handle the specified responses.
+
+
+
+
+ outLangJavaScripts
+ org.zkoss.zk.fn.ZkFns
+
+ java.lang.String outLangJavaScripts(java.lang.String)
+
+
+ Returns HTML tags to include all JavaScripts used by all languages.
+ The argument is the action.
+
+
+
+ outLangStyleSheets
+ org.zkoss.zk.fn.ZkFns
+
+ java.lang.String outLangStyleSheets()
+
+
+ Returns HTML tags to include all style sheets used by all languages.
+
+
+
+
+ outPageHeaders
+ org.zkoss.zk.fn.ZkFns
+
+ java.lang.String outPageHeaders(org.zkoss.zk.ui.Page)
+
+
+ Returns HTML header tags defined in the specified page.
+
+
+
+
+ toAbsoluteURI
+ org.zkoss.zk.fn.ZkFns
+
+ java.lang.String toAbsoluteURI(java.lang.String, boolean)
+
+
+ Converts the specified URI to abolute if necessary.
+ Note: it doesn't convert if this page is included by another page.
+
+
+
+
+ outLocaleJavaScript
+ org.zkoss.zk.fn.ZkFns
+
+ java.lang.String outLocaleJavaScript()
+
+
+ Returns date relevant labels in JavaScript.
+
+
+
diff --git a/extend/posterita/webui/WEB-INF/tld/zul/core.dsp.tld b/extend/posterita/webui/WEB-INF/tld/zul/core.dsp.tld
new file mode 100755
index 0000000000..abea5bf4d9
--- /dev/null
+++ b/extend/posterita/webui/WEB-INF/tld/zul/core.dsp.tld
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+ Methods and actions for ZUL in DSP/ZUML
+
+
+
+ getColAttrs
+ org.zkoss.zul.fn.ZulFns
+
+ java.lang.String getColAttrs(org.zkoss.zul.Row, int)
+
+
+ Returns the attribute used for the cell of the specified row and index.
+
+
+
+ getBoxChildOuterAttrs
+ org.zkoss.zul.fn.ZulFns
+
+ java.lang.String getBoxChildOuterAttrs(org.zkoss.zk.ui.Component)
+
+
+ Returns the inner attributes used for the cell of the specified child
+ when it is placed inside of hbox/vbox.
+
+
+
+ getBoxChildInnerAttrs
+ org.zkoss.zul.fn.ZulFns
+
+ java.lang.String getBoxChildInnerAttrs(org.zkoss.zk.ui.Component)
+
+
+ Returns the outer attributes used for the cell of the specified child
+ when it is placed inside of hbox/vbox.
+
+
+
diff --git a/extend/posterita/webui/WEB-INF/xsd/zul/zul.xsd b/extend/posterita/webui/WEB-INF/xsd/zul/zul.xsd
new file mode 100755
index 0000000000..f51ca29ff3
--- /dev/null
+++ b/extend/posterita/webui/WEB-INF/xsd/zul/zul.xsd
@@ -0,0 +1,1506 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extend/posterita/webui/zul/menu.zul b/extend/posterita/webui/zul/menu.zul
new file mode 100644
index 0000000000..dc76c60511
--- /dev/null
+++ b/extend/posterita/webui/zul/menu.zul
@@ -0,0 +1,5 @@
+
+
+
\ No newline at end of file