asked
2013-11-13 21:37:26 +0800
ansancle 327 ● 9 I have read all the wiki's and smalltalks regarding how to use folder based themes but I cannot get my themes to register or work.
I not only created my own theme using the ztx.bat script but also downloaded the dark demo theme from it's smalltalk project.
I will show my code below, I am trying this with 7.0 EE eval.
My application Root is WebRoot where META-INF and WEB-INF are, I put the theme folder on the same level :
WebRoot
-> META-INF
-> WEB-INF
-> theme
->OneViewDefaultTheme
->dark
In my zk.xml (full file below)
<library-property>
<name>org.zkoss.theme.preferred</name>
<value>OneViewDefaultTheme</value>
</library-property>
I added the required dsp elements to web.xml (full file below) and in my WebAppInitListener I added the following code :
Themes.register("dark", ThemeOrigin.FOLDER);
Themes.register("OneViewDefaultTheme", ThemeOrigin.FOLDER);
In my home page, in the doAfterCompose I run the following to see what themes are registered :
System.out.println("Current Theme = " + Themes.getCurrentTheme());
String[] themes = Themes.getThemes();
for (int i=0;i<themes.length;i++)
System.out.println("Theme[" + i + "] = " + themes[i]);
This is what I get for output :
16:06:48,405 INFO [stdout] (ajp-dhl06-127.0.0.1-8009-1) Current Theme = breeze
16:06:48,424 INFO [stdout] (ajp-dhl06-127.0.0.1-8009-1) Theme[0] = silvertail
16:06:48,425 INFO [stdout] (ajp-dhl06-127.0.0.1-8009-1) Theme[1] = breeze
16:06:48,426 INFO [stdout] (ajp-dhl06-127.0.0.1-8009-1) Theme[2] = sapphire
I have no idea why I cannot get them to register, been trying all day, going over smalltalks and questions, it appears I am doing what I am supposed to do but it's not working.
ZK.XML
<zk>
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/windows/error/DHzErrorHandlerOnAjaxRequestWindow.zul</location>
</error-page>
<listener>
<description>Called when the ZK Desktop is detroyed</description>
<listener-class>com.dh.ui.common.desktop.DHzDesktopCleanup</listener-class>
</listener>
<listener>
<description>Called when the ZK Desktop is created</description>
<listener-class>com.dh.ui.common.desktop.DHzDesktopInitListener</listener-class>
</listener>
<listener>
<description>Called when the ZK Desktop is created</description>
<listener-class>com.dh.ui.common.session.DHzZKSessionListener</listener-class>
</listener>
<listener>
<description>Monitor the statistic</description>
<listener-class>org.zkoss.zk.ui.util.Statistic</listener-class>
</listener>
<session-config>
<device-type>ajax</device-type>
<timeout-uri></timeout-uri>
</session-config>
<device-config>
<device-type>ajax</device-type>
<embed><![CDATA[
<script type="text/javascript">
function isDHAlive()
{
return "dhIsAlive";
}
</script>
]]></embed>
</device-config>
<session-config>
<session-timeout>-1</session-timeout>
<!-- <timeout-uri>/windows/DHzHomeWindow.zul</timeout-uri>
<timer-keep-alive>true</timer-keep-alive>
<timeout-message>Session timeout. Please reload.</timeout-message> -->
</session-config>
<language-config>
<addon-uri>/WEB-INF/lang-addon.xml</addon-uri>
</language-config>
<!-- Supposedly this will make it faster, we could define fade, dropdown, etc... here -->
<preference>
<name>org.zkoss.zul.Window.defaultActionOnShow</name>
<value></value>
</preference>
<!-- Digital Home System Configuration Name Value Pairs -->
<!-- ID's For PointInstances -->
<system-property>
<name>ipadStyleSheet</name>
<value>/stylesheets/dhIpadStyleSheet.css</value>
</system-property>
<system-property>
<name>desktopStyleSheet</name>
<value>/stylesheets/dhDesktopStyleSheet.css</value>
</system-property>
<library-property>
<name>org.zkoss.theme.preferred</name>
<value>OneViewDefaultTheme</value>
</library-property>
<library-property>
<name>org.zkoss.zul.theme.fontFamilyT</name>
<value>Georgia</value>
</library-property>
<library-property>
<name>org.zkoss.zul.theme.fontFamilyC</name>
<value>Georgia</value>
</library-property>
<library-property>
<name>org.zkoss.zul.Button.mold</name>
<value>trendy</value>
</library-property>
<!-- UI Properties -->
<system-property>
<name>getUserFromCookies</name> <!--True will get userId from cookies, false forces login page -->
<value>true</value>
</system-property>
<!-- The volume that the tuner will default to -->
<system-property>
<name>tunerDefaultVolume</name>
<value>25</value>
</system-property>
<!-- Keep using the ZK event processing thread - needed for upgrade to 5.0 -->
<system-config>
<disable-event-thread>false</disable-event-thread>
<!-- <id-generator-class>com.dh.ui.common.util.DHzIDGenerator</id-generator-class> --><!-- For Testing uncomment out this line -->
</system-config>
<!-- In 3.6 this was the detault include mode, for 5.0 it's auto, once everything is working
revisit this to see if it breaks anything if it goes to "auto" -->
<library-property>
<name>org.zkoss.zul.include.mode</name>
<value>auto</value>
</library-property>
</zk>
WEB.XML
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/windows/DHzHomeWindow.zul</location>
</error-page>
<description><![CDATA[DH Ipad UI]]></description>
<display-name>DH Ipad UI</display-name>
<listener>
<description>ZK listener for cleanup when a session is destroyed</description>
<listener-class>org.zkoss.zk.ui.http.HttpSessionListener</listener-class>
</listener>
<servlet>
<description>ZK loader for evaluating ZUML pages</description>
<servlet-name>zkLoader</servlet-name>
<servlet-class>org.zkoss.zk.ui.http.DHtmlLayoutServlet</servlet-class>
<!--
Must. Specifies URI of the update engine (DHtmlUpdateServlet). It
must be the same as <url-pattern> for the update engine.
-->
<init-param>
<param-name>update-uri</param-name>
<param-value>/zkau</param-value>
</init-param>
<load-on-startup>1</load-on-startup><!-- MUST -->
</servlet>
<servlet>
<servlet-name>dspLoader</servlet-name>
<servlet-class>org.zkoss.web.servlet.dsp.InterpreterServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dspLoader</servlet-name>
<url-pattern>*.dsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>zkLoader</servlet-name>
<url-pattern>*.zul</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>zkLoader</servlet-name>
<url-pattern>*.zhtml</url-pattern>
</servlet-mapping>
<servlet>
<description>The asynchronous update engine for ZK</description>
<servlet-name>auEngine</servlet-name>
<servlet-class>org.zkoss.zk.au.http.DHtmlUpdateServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>auEngine</servlet-name>
<url-pattern>/zkau/*</url-pattern>
</servlet-mapping>
<!-- //// -->
<!-- MIME mapping -->
<mime-mapping>
<extension>gif</extension>
<mime-type>image/gif</mime-type>
</mime-mapping>
<mime-mapping>
<extension>html</extension>
<mime-type>text/html</mime-type>
</mime-mapping>
<mime-mapping>
<extension>htm</extension>
<mime-type>text/html</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jad</extension>
<mime-type>text/vnd.sun.j2me.app-descriptor</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jpeg</extension>
<mime-type>image/jpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jpg</extension>
<mime-type>image/jpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>js</extension>
<mime-type>application/x-javascript</mime-type>
</mime-mapping>
<mime-mapping>
<extension>png</extension>
<mime-type>image/png</mime-type>
</mime-mapping>
<mime-mapping>
<extension>txt</extension>
<mime-type>text/plain</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xml</extension>
<mime-type>text/xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>zhtml</extension>
<mime-type>text/html</mime-type>
</mime-mapping>
<mime-mapping>
<extension>zul</extension>
<mime-type>text/html</mime-type>
</mime-mapping>
<welcome-file-list>
<welcome-file>/windows/DHzHomeWindow.zul</welcome-file>
</welcome-file-list>
</web-app>
Here is my packaging file :
<?xml version="1.0" encoding="UTF-8"?>
<project name="Packaging Generator" default="_packaging_generation_">
<target name="_packaging_generation_" depends="buildinfo,N65540,N65609" />
<target name="N65540" description="com.dh.ui.ipad.web.war">
<jar destfile="com.dh.ui.ipad.web.war">
<zipfileset dir="WebRoot/theme" prefix="theme">
<include name="*" />
</zipfileset>
<zipfileset dir="WebRoot/WEB-INF" prefix="WEB-INF">
<include name="web.xml" />
</zipfileset>
<zipfileset dir="WebRoot/WEB-INF" prefix="WEB-INF">
<include name="zk.xml" />
</zipfileset>
<zipfileset dir="WebRoot/WEB-INF" prefix="WEB-INF">
<include name="lang-addon.xml" />
</zipfileset>
<zipfileset dir="WebRoot/META-INF" prefix="META-INF">
<include name="project.properties" />
</zipfileset>
<zipfileset dir="WebRoot/zul" />
<zipfileset dir="WebRoot/WEB-INF/classes" prefix="WEB-INF/classes" />
<zipfileset dir="../com.dh.ui.common/lib/zk" prefix="WEB-INF/lib" />
<zipfileset dir="../com.dh.ui.common/WebRoot/zul" />
<zipfileset dir="../com.dh.ui.common/WebRoot/WEB-INF/classes" prefix="WEB-INF/classes" includes="**/*.class" />
<zipfileset dir="../com.dh.ui.common.audio/WebRoot/zul" />
<zipfileset dir="../com.dh.ui.common.audio/WebRoot/WEB-INF/classes" prefix="WEB-INF/classes" includes="**/*.class" />
</jar>
</target>
<target name="N65609" description="com.dh.ui.ipad.app.ear">
<jar destfile="com.dh.ui.ipad.app.ear">
<zipfileset dir="WebRoot/META-INF" prefix="META-INF">
<include name="application.xml" />
</zipfileset>
<zipfileset dir="WebRoot/META-INF" prefix="META-INF">
<include name="jboss-deployment-structure.xml" />
</zipfileset>
<zipfileset dir=".">
<include name="com.dh.ui.ipad.web.war" />
</zipfileset>
</jar>
</target>
<target name="buildinfo">
<property environment="env"/>
<condition property="svnTagVersion" value="${env.SVN_TAG}" else="development">
<isset property="env.SVN_TAG" />
</condition>
<exec executable="svnversion" outputproperty="svnversion"/>
<exec executable="whoami" outputproperty="whoami"/>
<exec executable="uname" outputproperty="buildsystem"><arg value="-a"/></exec>
<propertyfile file="WebRoot/META-INF/project.properties"
comment="This file is automatically generated - DO NOT EDIT">
<entry key="svnVersion" value="${svnversion}"/>
<entry key="svnTagVersion" value="${svnTagVersion}"/>
<entry key="builder" value="${whoami}"/>
<entry key="system" value="${buildsystem}"/>
</propertyfile>
</target>
</project>