Author: jleroux
Date: Fri Nov  3 12:56:26 2017
New Revision: 1814177

URL: http://svn.apache.org/viewvc?rev=1814177&view=rev
Log:
Puts right wiki file in themes sub folder

Modified:
    ofbiz/tools/wiki-files/themes/README.md.html

Modified: ofbiz/tools/wiki-files/themes/README.md.html
URL: 
http://svn.apache.org/viewvc/ofbiz/tools/wiki-files/themes/README.md.html?rev=1814177&r1=1814176&r2=1814177&view=diff
==============================================================================
--- ofbiz/tools/wiki-files/themes/README.md.html (original)
+++ ofbiz/tools/wiki-files/themes/README.md.html Fri Nov  3 12:56:26 2017
@@ -6,43 +6,281 @@
   <meta name="generator" content="pandoc" />
   <title></title>
   <style type="text/css">code{white-space: pre;}</style>
+  <style type="text/css">
+div.sourceCode { overflow-x: auto; }
+table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode {
+  margin: 0; padding: 0; vertical-align: baseline; border: none; }
+table.sourceCode { width: 100%; line-height: 100%; }
+td.lineNumbers { text-align: right; padding-right: 4px; padding-left: 4px; 
color: #aaaaaa; border-right: 1px solid #aaaaaa; }
+td.sourceCode { padding-left: 5px; }
+code > span.kw { color: #007020; font-weight: bold; } /* Keyword */
+code > span.dt { color: #902000; } /* DataType */
+code > span.dv { color: #40a070; } /* DecVal */
+code > span.bn { color: #40a070; } /* BaseN */
+code > span.fl { color: #40a070; } /* Float */
+code > span.ch { color: #4070a0; } /* Char */
+code > span.st { color: #4070a0; } /* String */
+code > span.co { color: #60a0b0; font-style: italic; } /* Comment */
+code > span.ot { color: #007020; } /* Other */
+code > span.al { color: #ff0000; font-weight: bold; } /* Alert */
+code > span.fu { color: #06287e; } /* Function */
+code > span.er { color: #ff0000; font-weight: bold; } /* Error */
+code > span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* 
Warning */
+code > span.cn { color: #880000; } /* Constant */
+code > span.sc { color: #4070a0; } /* SpecialChar */
+code > span.vs { color: #4070a0; } /* VerbatimString */
+code > span.ss { color: #bb6688; } /* SpecialString */
+code > span.im { } /* Import */
+code > span.va { color: #19177c; } /* Variable */
+code > span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
+code > span.op { color: #666666; } /* Operator */
+code > span.bu { } /* BuiltIn */
+code > span.ex { } /* Extension */
+code > span.pp { color: #bc7a00; } /* Preprocessor */
+code > span.at { color: #7d9029; } /* Attribute */
+code > span.do { color: #ba2121; font-style: italic; } /* Documentation */
+code > span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* 
Annotation */
+code > span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* 
CommentVar */
+code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* 
Information */
+  </style>
 </head>
 <body>
-<p>Three instances of OFBiz run on the OFBiz demo VM2 at 
https://ofbiz-vm2.apache.org.</p>
-<ul>
-<li>trunk: the trunk version</li>
-<li>stable: the last stable version (currently 16.11)</li>
-<li>old: the previous stable version (currently 13.07)</li>
-</ul>
-<p>This is the second instance of VM we use hence the 2 in its domain name. 
The root of https://ofbiz-vm2.apache.org is the so called bigfiles directory 
which is actually at /home/ofbizDemo/big-files</p>
-<p>We own 3 Apache sub domains</p>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<h1 id="apache-ofbiz-themes">Apache OFBiz® Themes</h1>
+<h1 id="what-is-a-theme">What is a theme</h1>
+<p>A Theme is an ofbiz component that defines all elements necessary to render 
all information generated by the screen engine through an embedded technology. 
Currently themes presents in Apache OFBiz use html5/jquery/css to do that.</p>
+<p>To realize this, a theme can define some properties that can be necessary, 
can define its own ftl macro to render the different modelScreen elements and 
can define its own screen decorator to prepare the final user screen structure 
for the technology used by the theme. # How to define it A theme is a standard 
component, present in the directory themes or plugins with a file definition 
present on widget/Theme.xml and support the <a 
href="http://ofbiz.apache.org/dtds/widget-theme.xsd";>widget-theme.xsd</a></p>
+<p>To offer the possibility for end users to select the theme through the 
&quot;Select Theme Screen&quot;, the theme need to load the entity VisualTheme 
and one or more entries related to this theme.</p>
+<h1 id="structure-of-theme.xml">Structure of Theme.xml</h1>
+<p>The theme definition file help OFBiz to know what specific rendering the 
Theme want to use. It's composed by two definition elements and four optional 
blocks</p>
+<h2 id="main-definition">Main definition</h2>
+<p>The First mandatory element is one or several visualThemeId related to the 
theme Defined like that</p>
+<div class="sourceCode"><pre class="sourceCode xml"><code class="sourceCode 
xml">    <span class="kw">&lt;visual-themes&gt;</span>
+        <span class="kw">&lt;visual-theme</span><span class="ot"> 
id=</span><span class="st">&quot;MY_THEME&quot;</span><span 
class="kw">/&gt;</span>
+    <span class="kw">&lt;/visual-themes&gt;</span></code></pre></div>
+<p>You need to define in the database an entry in VisualTheme Entity for each 
visual-theme id defined.</p>
+<div class="sourceCode"><pre class="sourceCode xml"><code class="sourceCode 
xml"><span class="kw">&lt;entity-engine-xml&gt;</span>
+    <span class="kw">&lt;VisualTheme</span><span class="ot"> 
visualThemeId=</span><span class="st">&quot;MY_THEME&quot;</span><span 
class="ot"> visualThemeSetId=</span><span 
class="st">&quot;BACKOFFICE&quot;</span><span class="ot"> 
description=</span><span class="st">&quot;My theme - Example (based on 
flatgrey)&quot;</span><span class="kw">/&gt;</span>
+<span class="kw">&lt;/entity-engine-xml&gt;</span></code></pre></div>
+<blockquote>
+<p><em>Note</em>: a theme component can load one or more visual theme id. 
Usually only one is present.</p>
+</blockquote>
+<p>The second important (but not mandatory) element is 
<strong>implements</strong></p>
+<div class="sourceCode"><pre class="sourceCode xml"><code class="sourceCode 
xml">   <span class="kw">&lt;extends</span><span class="ot"> 
location=</span><span 
class="st">&quot;component://common-theme/widget/Theme.xml&quot;</span><span 
class="kw">/&gt;</span></code></pre></div>
+<p>This element indicates that your theme copies from the extend theme all 
information not present in its file definition. If this element isn't present 
in your theme, you will need to define all information present in common-theme 
to be sure that OFBiz misses nothing for a correct run. Otherwise some 
functionnalities can be broken... &gt;<em>Note</em>: It's highly recommended to 
extend the common-theme to be sure that your theme works correctly and to 
surcharge only what you need.</p>
+<p>The four following blocks are optionnal if you define an extends theme ## 
General properties This block contains all properties that the screen engine 
can use to prepare the rendering and that the theme can implement</p>
+<div class="sourceCode"><pre class="sourceCode xml"><code class="sourceCode 
xml">    <span class="kw">&lt;widget-properties&gt;</span><span 
class="co">&lt;!--Transversal properties relative to ofbiz widget 
component--&gt;</span>
+        <span class="kw">&lt;default-view-size</span><span class="ot"> 
value=</span><span class="st">&quot;20&quot;</span><span class="kw">/&gt;</span>
+        <span class="kw">&lt;autocompleter</span>
+<span class="ot">                default-view-size=</span><span 
class="st">&quot;10&quot;</span>
+<span class="ot">                default-min-lenght=</span><span 
class="st">&quot;2&quot;</span>
+<span class="ot">                default-delay=</span><span 
class="st">&quot;300&quot;</span>
+<span class="ot">                display-return-field=</span><span 
class="st">&quot;true&quot;</span><span class="kw">/&gt;</span>
+        <span class="kw">&lt;lookup</span>
+<span class="ot">                position=</span><span 
class="st">&quot;topleft&quot;</span>
+<span class="ot">                width=</span><span 
class="st">&quot;640&quot;</span>
+<span class="ot">                height=</span><span 
class="st">&quot;500&quot;</span><span class="kw">/&gt;</span>
+        <span class="kw">&lt;layered-modal</span>
+<span class="ot">                width=</span><span 
class="st">&quot;800&quot;</span>
+<span class="ot">                height=</span><span 
class="st">&quot;600&quot;</span><span class="kw">/&gt;</span>
+    <span class="kw">&lt;/widget-properties&gt;</span></code></pre></div>
+<h2 id="themes-specific-properties">Theme's specific properties</h2>
+<p>This block contains all properties specific to this theme. In general these 
are some properties present on ftl template, that are initialized by the theme 
and can be surchaged by another theme through the extends elements.</p>
+<div class="sourceCode"><pre class="sourceCode xml"><code class="sourceCode 
xml">        <span class="kw">&lt;property</span><span class="ot"> 
name=</span><span class="st">&quot;jgrowlPosition&quot;</span><span class="ot"> 
value=</span><span class="st">&quot;center&quot;</span><span class="ot"> 
type=</span><span class="st">&quot;String&quot;</span><span 
class="kw">/&gt;</span><span class="co">&lt;!--possible value: top-left, 
top-right, bottom-left, bottom-right, center--&gt;</span>
+        <span class="kw">&lt;property</span><span class="ot"> 
name=</span><span class="st">&quot;jgrowlWidth&quot;</span><span class="ot"> 
value=</span><span class="st">&quot;800&quot;</span><span class="ot"> 
type=</span><span class="st">&quot;Integer&quot;</span><span 
class="kw">/&gt;</span>
+        <span class="kw">&lt;property</span><span class="ot"> 
name=</span><span class="st">&quot;jgrowlHeight&quot;</span><span class="ot"> 
value=</span><span class="st">&quot;&quot;</span><span class="ot"> 
type=</span><span class="st">&quot;Integer&quot;</span><span 
class="kw">/&gt;</span>
+        <span class="kw">&lt;property</span><span class="ot"> 
name=</span><span class="st">&quot;jgrowlSpeed&quot;</span><span class="ot"> 
value=</span><span class="st">&quot;100&quot;</span><span class="ot"> 
type=</span><span class="st">&quot;Integer&quot;</span><span 
class="kw">/&gt;</span></code></pre></div>
+<h2 id="ftl-macro-library">Ftl macro library</h2>
+<p>This block defines for each technology implemented by the screen engine 
where it can find the macro library for each model (Screen, Form, Tree, 
Menu)</p>
+<div class="sourceCode"><pre class="sourceCode xml"><code class="sourceCode 
xml">   <span class="kw">&lt;templates&gt;</span><span class="co">&lt;!-- 
Freemarker template use by this theme to render widget model--&gt;</span>
+        <span class="kw">&lt;template</span><span class="ot"> 
name=</span><span class="st">&quot;screen&quot;</span><span class="ot"> 
type=</span><span class="st">&quot;html&quot;</span><span class="ot"> 
content-type=</span><span class="st">&quot;UTF-8&quot;</span><span class="ot"> 
encoding=</span><span class="st">&quot;none&quot;</span><span class="ot"> 
encoder=</span><span class="st">&quot;html&quot;</span><span class="ot"> 
compress=</span><span class="st">&quot;false&quot;</span><span 
class="kw">&gt;</span>
+            <span class="kw">&lt;template-file</span><span class="ot"> 
widget=</span><span class="st">&quot;screen&quot;</span><span class="ot"> 
location=</span><span 
class="st">&quot;component://common-theme/template/macro/HtmlScreenMacroLibrary.ftl&quot;</span><span
 class="kw">/&gt;</span>
+            <span class="kw">&lt;template-file</span><span class="ot"> 
widget=</span><span class="st">&quot;form&quot;</span><span class="ot"> 
location=</span><span 
class="st">&quot;component://common-theme/template/macro/HtmlFormMacroLibrary.ftl&quot;</span><span
 class="kw">/&gt;</span>
+            <span class="kw">&lt;template-file</span><span class="ot"> 
widget=</span><span class="st">&quot;tree&quot;</span><span class="ot"> 
location=</span><span 
class="st">&quot;component://common-theme/template/macro/HtmlTreeMacroLibrary.ftl&quot;</span><span
 class="kw">/&gt;</span>
+            <span class="kw">&lt;template-file</span><span class="ot"> 
widget=</span><span class="st">&quot;menu&quot;</span><span class="ot"> 
location=</span><span 
class="st">&quot;component://common-theme/template/macro/HtmlMenuMacroLibrary.ftl&quot;</span><span
 class="kw">/&gt;</span>
+        <span class="kw">&lt;/template&gt;</span>
+        ...
+   <span class="kw">&lt;/templates&gt;</span></code></pre></div>
+<blockquote>
+<p><em>Note</em>: If you want surcharge some macros, you can just create the 
desired macros and import the others from common-theme (at the top of file) 
like that : <code>&lt;#include 
&quot;component://common-theme/template/macro/HtmlFormMacroLibrary.ftl&quot;/&gt;</code></p>
+</blockquote>
+<h2 id="screen-library">Screen library</h2>
+<p>This block defines where OFBiz can find all official screens definitions in 
framework/common</p>
+<p>Normally, you don't need to change this file except if you need to define a 
default screen style that doesn't exist OOTB. If you need to extend an existing 
one, you have to do it in the theme directory.</p>
+<p>To define a new default screen style, you have to add it in this file, and 
point to the screen decorator in common-theme to define your default screen 
style as the default one.</p>
+<div class="sourceCode"><pre class="sourceCode xml"><code class="sourceCode 
xml">     <span class="kw">&lt;common-screens&gt;</span><span 
class="co">&lt;!--list all common screen and decorator global to each 
application that each theme can be surcharge or not and use the screen present 
on common theme--&gt;</span>
+        <span class="kw">&lt;structural-decorator</span><span class="ot"> 
default-location=</span><span 
class="st">&quot;component://common-theme/widget/CommonScreens.xml&quot;</span><span
 class="kw">&gt;</span>
+            <span class="kw">&lt;screen</span><span class="ot"> 
name=</span><span class="st">&quot;GlobalDecorator&quot;</span><span 
class="kw">/&gt;</span>
+            ...
+        <span class="kw">&lt;/structural-decorator&gt;</span>
+        <span class="kw">&lt;embed-decorator</span><span class="ot"> 
default-location=</span><span 
class="st">&quot;component://common-theme/widget/CommonScreens.xml&quot;</span><span
 class="kw">&gt;</span>
+            <span class="kw">&lt;screen</span><span class="ot"> 
name=</span><span class="st">&quot;FindScreenDecorator&quot;</span><span 
class="kw">/&gt;</span>
+        <span class="kw">&lt;/embed-decorator&gt;</span>
+        <span class="kw">&lt;general-screen</span><span class="ot"> 
default-location=</span><span 
class="st">&quot;component://common-theme/widget/CommonScreens.xml&quot;</span><span
 class="kw">&gt;</span>
+            <span class="kw">&lt;screen</span><span class="ot"> 
name=</span><span class="st">&quot;geoChart&quot;</span><span 
class="kw">/&gt;</span>
+            ...
+        <span class="kw">&lt;/general-screen&gt;</span>
+    <span class="kw">&lt;/common-screens&gt;</span></code></pre></div>
+<p>Screens are separated in three types : * structural-decorator : contains 
all decorators that organise the screens structures * embed-decorator : 
decorator used only on sub screens * general-screen : list all generic inter 
applications screens # The common-theme This is the root theme that contains 
all information to ensure a good basic theme for OFBiz. Currently it keeps all 
old themes system for backward compatibility with ftl template managed by the 
entity <strong>VisualThemeResource</strong></p>
+<h1 id="create-your-own-theme">Create your own theme</h1>
+<p>As a theme is a component, you can create a new theme like a plugin.</p>
+<p>After creating a component, you can add the two minimal information : * 
Theme.xml file in <strong>plugins/my-theme/widget/</strong> with minimal 
information :</p>
+<div class="sourceCode"><pre class="sourceCode xml"><code class="sourceCode 
xml"><span class="kw">&lt;theme</span><span class="ot"> name=</span><span 
class="st">&quot;my-theme&quot;</span>
+<span class="ot">        xmlns:xsi=</span><span 
class="st">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span>
+<span class="ot">        xsi:noNamespaceSchemaLocation=</span><span 
class="st">&quot;http://ofbiz.apache.org/dtds/widget-theme.xsd&quot;</span><span
 class="kw">&gt;</span>
+    <span class="kw">&lt;visual-themes&gt;</span>
+        <span class="kw">&lt;visual-theme</span><span class="ot"> 
id=</span><span class="st">&quot;MY_THEME&quot;</span><span class="ot"> 
display-name=</span><span class="st">&quot;My Theme&quot;</span><span 
class="kw">/&gt;</span>
+    <span class="kw">&lt;/visual-themes&gt;</span>
+<span class="kw">&lt;/theme&gt;</span></code></pre></div>
 <ul>
-<li>https://demo-trunk.ofbiz.apache.org</li>
-<li>https://demo-stable.ofbiz.apache.org</li>
-<li>https://demo-old.ofbiz.apache.org</li>
+<li><p>your data file to add your visual theme in 
<strong>plugins/my-theme/data/</strong></p>
+<div class="sourceCode"><pre class="sourceCode xml"><code class="sourceCode 
xml"><span class="kw">&lt;entity-engine-xml&gt;</span>
+<span class="kw">&lt;VisualTheme</span><span class="ot"> 
visualThemeId=</span><span class="st">&quot;MY_THEME&quot;</span><span 
class="ot"> visualThemeSetId=</span><span 
class="st">&quot;BACKOFFICE&quot;</span><span class="kw">/&gt;</span>
+<span class="kw">&lt;/entity-engine-xml&gt;</span></code></pre></div>
+<p>The presence of VisualTheme entity helps to indicate which theme is 
available in your instance, specially helpful for tenant installations.</p></li>
 </ul>
-<p>All demos use a Let's Encrypt certificate. There is currently a bug which 
prevents Let's Encrypt certificate to renew every 3 months. So we need to do it 
by hand and you need to have a root access for that. This is how: <a 
href="http://markmail.org/message/7c3rxrqkn4kkm6dm"; 
class="uri">http://markmail.org/message/7c3rxrqkn4kkm6dm</a></p>
-<p>The Puppet configuration is at 
https://github.com/apache/infrastructure-puppet/blob/deployment/data/nodes/ofbiz-vm2.apache.org.yaml</p>
+<p>To display your theme in OFBiz theme library, you can complete the 
information on each visual theme like</p>
+<pre><code>&lt;theme name=&quot;my-theme&quot;
+        xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
+        
xsi:noNamespaceSchemaLocation=&quot;http://ofbiz.apache.org/dtds/widget-theme.xsd&quot;&gt;
+    &lt;visual-themes&gt;
+        &lt;visual-theme id=&quot;MY_THEME&quot; display-name=&quot;My 
Theme&quot;&gt;
+            &lt;description&gt;My new funny theme under nice 
tecnno&lt;/description&gt;
+            &lt;screenshot location=&quot;/mytheme/screenshot1.png&quot;/&gt;
+            &lt;screenshot location=&quot;/mytheme/screenshot2.png&quot;/&gt;
+        &lt;/visual-theme&gt;
+    &lt;/visual-themes&gt;
+&lt;/theme&gt;</code></pre>
 <blockquote>
-<p><em>Note</em>: <strong>Only run the ofbiz demos using the 'ofbizDemo' user, 
never run as root.</strong></p>
+<p><em>Note</em>: <strong>display-name</strong> and 
<strong>description</strong> support the flexibleStringExpander syntax</p>
 </blockquote>
-<pre><code>To do this sudo to the ofbizDemo user:
-
-sudo -s -u ofbizDemo -H
+<h2 id="extends-common-theme">extends common-theme</h2>
+<p>This is a first step to understand how the theme system works. With your 
new theme, you can try to surchage different elements. To start, extends the 
common-theme :</p>
+<div class="sourceCode"><pre class="sourceCode xml"><code class="sourceCode 
xml"><span class="kw">&lt;theme</span><span class="ot"> name=</span><span 
class="st">&quot;my-theme&quot;</span>
+<span class="ot">        xmlns:xsi=</span><span 
class="st">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span>
+<span class="ot">        xsi:noNamespaceSchemaLocation=</span><span 
class="st">&quot;http://ofbiz.apache.org/dtds/widget-theme.xsd&quot;</span><span
 class="kw">&gt;</span>
+    <span class="kw">&lt;visual-themes&gt;</span>
+        <span class="kw">&lt;visual-theme</span><span class="ot"> 
id=</span><span class="st">&quot;MY_THEME&quot;</span><span class="ot"> 
display-name=</span><span class="st">&quot;My Theme&quot;</span><span 
class="kw">&gt;</span>
+            <span class="kw">&lt;description&gt;</span>My new funny theme 
under nice tecnno<span class="kw">&lt;/description&gt;</span>
+            <span class="kw">&lt;screenshot</span><span class="ot"> 
location=</span><span 
class="st">&quot;/mytheme/screenshot1.png&quot;</span><span 
class="kw">/&gt;</span>
+        <span class="kw">&lt;/visual-theme&gt;</span>
+    <span class="kw">&lt;/visual-themes&gt;</span>
+    <span class="kw">&lt;extends</span><span class="ot"> location=</span><span 
class="st">&quot;component://common-theme/widget/Theme.xml&quot;</span><span 
class="kw">/&gt;</span>
+<span class="kw">&lt;/theme&gt;</span></code></pre></div>
+<p>Now your theme should be operational, but without particularity.</p>
+<p>You can surcharge a ftl macro, to do this create your own ftl macro file in 
<strong>plugins/my-theme/templates/macro/HtmlFormMacroLibrary.ftl</strong> 
with</p>
+<pre class="ftl"><code>&lt;#include 
&quot;component://common-theme/template/macro/HtmlFormMacroLibrary.ftl&quot;/&gt;
 
-sudo uses OTP (One Time Password), so you not only need to be registered as a 
sudoer (ask Infra) but also to use a tool like Donkey on Ubuntu (jleroux: I use 
that) to generate the OTP
-Then you can start/stop as required.
+&lt;#macro renderDisplayField type imageLocation idName description title 
class alert inPlaceEditorUrl=&quot;&quot; inPlaceEditorParams=&quot;&quot;&gt;
+    &lt;#if description?has_content&gt;
+    *###*${description?replace(&quot;\n&quot;, &quot;&lt;br 
/&gt;&quot;)}**&lt;#t/&gt;
+    &lt;#else&gt;
+        *#&amp;nbsp;#*&lt;#t/&gt;
+    &lt;/#if&gt;
+&lt;/#macro&gt;</code></pre>
+<p>Now indicate to your theme that you want use this library</p>
+<div class="sourceCode"><pre class="sourceCode xml"><code class="sourceCode 
xml"><span class="kw">&lt;theme</span><span class="ot"> name=</span><span 
class="st">&quot;my-theme&quot;</span>
+<span class="ot">        xmlns:xsi=</span><span 
class="st">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span>
+<span class="ot">        xsi:noNamespaceSchemaLocation=</span><span 
class="st">&quot;http://ofbiz.apache.org/dtds/widget-theme.xsd&quot;</span><span
 class="kw">&gt;</span>
+    <span class="kw">&lt;visual-themes&gt;</span>
+        <span class="kw">&lt;visual-theme</span><span class="ot"> 
id=</span><span class="st">&quot;MY_THEME&quot;</span><span class="ot"> 
display-name=</span><span class="st">&quot;My Theme&quot;</span><span 
class="kw">&gt;</span>
+            <span class="kw">&lt;description&gt;</span>My new funny theme 
under nice tecnno<span class="kw">&lt;/description&gt;</span>
+            <span class="kw">&lt;screenshot</span><span class="ot"> 
location=</span><span 
class="st">&quot;/mytheme/screenshot1.png&quot;</span><span 
class="kw">/&gt;</span>
+        <span class="kw">&lt;/visual-theme&gt;</span>
+    <span class="kw">&lt;/visual-themes&gt;</span>
+    <span class="kw">&lt;extends</span><span class="ot"> location=</span><span 
class="st">&quot;component://common-theme/widget/Theme.xml&quot;</span><span 
class="kw">/&gt;</span>
+    <span class="kw">&lt;templates&gt;</span>
+        <span class="kw">&lt;template</span><span class="ot"> 
name=</span><span class="st">&quot;screen&quot;</span><span class="ot"> 
type=</span><span class="st">&quot;html&quot;</span><span class="ot"> 
content-type=</span><span class="st">&quot;UTF-8&quot;</span><span class="ot"> 
encoding=</span><span class="st">&quot;none&quot;</span><span class="ot"> 
encoder=</span><span class="st">&quot;html&quot;</span><span class="ot"> 
compress=</span><span class="st">&quot;false&quot;</span><span 
class="kw">&gt;</span>
+            <span class="kw">&lt;template-file</span><span class="ot"> 
widget=</span><span class="st">&quot;form&quot;</span><span class="ot"> 
location=</span><span 
class="st">&quot;component://my-theme/template/macro/HtmlFormMacroLibrary.ftl&quot;</span><span
 class="kw">/&gt;</span>
+        <span class="kw">&lt;/template&gt;</span>
+    <span class="kw">&lt;/templates&gt;</span>
+<span class="kw">&lt;/theme&gt;</span></code></pre></div>
+<p>and check the result when you select your theme. The result isn't really 
interesting but it's to understand how it works.</p>
+<h2 id="create-from-scratch">create from scratch</h2>
+<p>TODO</p>
+<h1 id="backware-compatibility-with-ofbiz-16.11-and-above">Backware 
compatibility with OFBiz 16.11 and above</h1>
+<h2 id="how-themes-worked-before">How themes worked before</h2>
+<p>Before the theme management by model definition, all configurations have 
been present in the database through entity <strong>VisualTheme</strong> and 
<strong>VisualThemeRessource</strong>. These ressources were loaded in a 
<strong>layoutProperties</strong> variable and used directly by decorator 
screens and ftl templates.</p>
+<h2 id="now-with-the-common-theme">Now with the common-theme</h2>
+<p>All this logic is still present in the common-theme template to keep 
backward compatibility, but the VisualThemeRessource is now useless and 
properties have been migrated to the Theme definition in the part 
<strong>theme-properties</strong> ### Example with BlueLight The blue light 
theme has been these properties in VisualThemeRessource :</p>
+<div class="sourceCode"><pre class="sourceCode xml"><code class="sourceCode 
xml">    <span class="kw">&lt;VisualTheme</span><span class="ot"> 
visualThemeId=</span><span class="st">&quot;BLUELIGHT&quot;</span><span 
class="ot"> visualThemeSetId=</span><span 
class="st">&quot;BACKOFFICE&quot;</span><span class="ot"> 
description=</span><span class="st">&quot;BlueLight Theme: breadcrumbs, 
drop-down menus and rounded corners&quot;</span><span class="kw">/&gt;</span>
+    <span class="kw">&lt;VisualThemeResource</span><span class="ot"> 
visualThemeId=</span><span class="st">&quot;BLUELIGHT&quot;</span><span 
class="ot"> resourceTypeEnumId=</span><span 
class="st">&quot;VT_NAME&quot;</span><span class="ot"> 
resourceValue=</span><span class="st">&quot;BLUELIGHT&quot;</span><span 
class="ot"> sequenceId=</span><span class="st">&quot;01&quot;</span><span 
class="kw">/&gt;</span>
+    <span class="kw">&lt;VisualThemeResource</span><span class="ot"> 
visualThemeId=</span><span class="st">&quot;BLUELIGHT&quot;</span><span 
class="ot"> resourceTypeEnumId=</span><span 
class="st">&quot;VT_HDR_IMAGE_URL&quot;</span><span class="ot"> 
resourceValue=</span><span 
class="st">&quot;/images/ofbiz_logo.gif&quot;</span><span class="ot"> 
sequenceId=</span><span class="st">&quot;01&quot;</span><span 
class="kw">/&gt;</span>
+    <span class="kw">&lt;VisualThemeResource</span><span class="ot"> 
visualThemeId=</span><span class="st">&quot;BLUELIGHT&quot;</span><span 
class="ot"> resourceTypeEnumId=</span><span 
class="st">&quot;VT_SHORTCUT_ICON&quot;</span><span class="ot"> 
resourceValue=</span><span class="st">&quot;/images/ofbiz.ico&quot;</span><span 
class="ot"> sequenceId=</span><span class="st">&quot;01&quot;</span><span 
class="kw">/&gt;</span>
+    <span class="kw">&lt;VisualThemeResource</span><span class="ot"> 
visualThemeId=</span><span class="st">&quot;BLUELIGHT&quot;</span><span 
class="ot"> resourceTypeEnumId=</span><span 
class="st">&quot;VT_SCREENSHOT&quot;</span><span class="ot"> 
resourceValue=</span><span 
class="st">&quot;/bluelight/screenshot.jpg&quot;</span><span class="ot"> 
sequenceId=</span><span class="st">&quot;01&quot;</span><span 
class="kw">/&gt;</span>
 
-To check if the demos are being run as the ofbizDemo user:
+    <span class="co">&lt;!-- CSS references --&gt;</span>
+    <span class="kw">&lt;VisualThemeResource</span><span class="ot"> 
visualThemeId=</span><span class="st">&quot;BLUELIGHT&quot;</span><span 
class="ot"> resourceTypeEnumId=</span><span 
class="st">&quot;VT_STYLESHEET&quot;</span><span class="ot"> 
resourceValue=</span><span 
class="st">&quot;/bluelight/style.css&quot;</span><span class="ot"> 
sequenceId=</span><span class="st">&quot;01&quot;</span><span 
class="kw">/&gt;</span>
+    <span class="kw">&lt;VisualThemeResource</span><span class="ot"> 
visualThemeId=</span><span class="st">&quot;BLUELIGHT&quot;</span><span 
class="ot"> resourceTypeEnumId=</span><span 
class="st">&quot;VT_HELPSTYLESHEET&quot;</span><span class="ot"> 
resourceValue=</span><span 
class="st">&quot;/bluelight/help.css&quot;</span><span class="ot"> 
sequenceId=</span><span class="st">&quot;01&quot;</span><span 
class="kw">/&gt;</span>
+    <span class="kw">&lt;VisualThemeResource</span><span class="ot"> 
visualThemeId=</span><span class="st">&quot;BLUELIGHT&quot;</span><span 
class="ot"> resourceTypeEnumId=</span><span 
class="st">&quot;VT_DOCBOOKSTYLESHEET&quot;</span><span class="ot"> 
resourceValue=</span><span 
class="st">&quot;/bluelight/webapp/bluelight/docbook.css&quot;</span><span 
class="ot"> sequenceId=</span><span class="st">&quot;01&quot;</span><span 
class="kw">/&gt;</span>
+    <span class="kw">&lt;VisualThemeResource</span><span class="ot"> 
visualThemeId=</span><span class="st">&quot;BLUELIGHT&quot;</span><span 
class="ot"> resourceTypeEnumId=</span><span 
class="st">&quot;VT_STYLESHEET&quot;</span><span class="ot"> 
resourceValue=</span><span 
class="st">&quot;/common/js/jquery/plugins/asmselect/jquery.asmselect-1.0.4a-beta.css&quot;</span><span
 class="ot"> sequenceId=</span><span class="st">&quot;02&quot;</span><span 
class="kw">/&gt;</span>
 
-ps aux | grep ofbizDemo
+    <span class="co">&lt;!-- Javascript references --&gt;</span>
+    <span class="kw">&lt;VisualThemeResource</span><span class="ot"> 
visualThemeId=</span><span class="st">&quot;BLUELIGHT&quot;</span><span 
class="ot"> resourceTypeEnumId=</span><span 
class="st">&quot;VT_HDR_JAVASCRIPT&quot;</span><span class="ot"> 
resourceValue=</span><span 
class="st">&quot;/common/js/jquery/jquery-1.11.0.min.js&quot;</span><span 
class="ot"> sequenceId=</span><span class="st">&quot;01&quot;</span><span 
class="kw">/&gt;</span>
+    <span class="kw">&lt;VisualThemeResource</span><span class="ot"> 
visualThemeId=</span><span class="st">&quot;BLUELIGHT&quot;</span><span 
class="ot"> resourceTypeEnumId=</span><span 
class="st">&quot;VT_HDR_JAVASCRIPT&quot;</span><span class="ot"> 
resourceValue=</span><span 
class="st">&quot;/common/js/jquery/jquery-migrate-1.2.1.js&quot;</span><span 
class="ot"> sequenceId=</span><span class="st">&quot;02&quot;</span><span 
class="kw">/&gt;</span>
+    <span class="kw">&lt;VisualThemeResource</span><span class="ot"> 
visualThemeId=</span><span class="st">&quot;BLUELIGHT&quot;</span><span 
class="ot"> resourceTypeEnumId=</span><span 
class="st">&quot;VT_HDR_JAVASCRIPT&quot;</span><span class="ot"> 
resourceValue=</span><span 
class="st">&quot;/common/js/jquery/ui/js/jquery-ui-1.10.3.min.js&quot;</span><span
 class="ot"> sequenceId=</span><span class="st">&quot;03&quot;</span><span 
class="kw">/&gt;</span>
+    <span class="kw">&lt;VisualThemeResource</span><span class="ot"> 
visualThemeId=</span><span class="st">&quot;BLUELIGHT&quot;</span><span 
class="ot"> resourceTypeEnumId=</span><span 
class="st">&quot;VT_HDR_JAVASCRIPT&quot;</span><span class="ot"> 
resourceValue=</span><span 
class="st">&quot;/common/js/jquery/plugins/asmselect/jquery.asmselect-1.0.4a-beta.js&quot;</span><span
 class="ot"> sequenceId=</span><span class="st">&quot;05&quot;</span><span 
class="kw">/&gt;</span>
+    <span class="kw">&lt;VisualThemeResource</span><span class="ot"> 
visualThemeId=</span><span class="st">&quot;BLUELIGHT&quot;</span><span 
class="ot"> resourceTypeEnumId=</span><span 
class="st">&quot;VT_HDR_JAVASCRIPT&quot;</span><span class="ot"> 
resourceValue=</span><span 
class="st">&quot;/common/js/jquery/plugins/datetimepicker/jquery-ui-timepicker-addon.min-1.4.3.js&quot;</span><span
 class="ot"> sequenceId=</span><span class="st">&quot;07&quot;</span><span 
class="kw">/&gt;</span>
+    <span class="kw">&lt;VisualThemeResource</span><span class="ot"> 
visualThemeId=</span><span class="st">&quot;BLUELIGHT&quot;</span><span 
class="ot"> resourceTypeEnumId=</span><span 
class="st">&quot;VT_HDR_JAVASCRIPT&quot;</span><span class="ot"> 
resourceValue=</span><span 
class="st">&quot;/common/js/jquery/plugins/fjTimer/jquerytimer-min.js&quot;</span><span
 class="ot"> sequenceId=</span><span class="st">&quot;09&quot;</span><span 
class="kw">/&gt;</span>
+    <span class="kw">&lt;VisualThemeResource</span><span class="ot"> 
visualThemeId=</span><span class="st">&quot;BLUELIGHT&quot;</span><span 
class="ot"> resourceTypeEnumId=</span><span 
class="st">&quot;VT_HDR_JAVASCRIPT&quot;</span><span class="ot"> 
resourceValue=</span><span 
class="st">&quot;/common/js/jquery/plugins/jquery.maskedinput-1.3.1.min.js&quot;</span><span
 class="ot"> sequenceId=</span><span class="st">&quot;10&quot;</span><span 
class="kw">/&gt;</span>
+    <span class="kw">&lt;VisualThemeResource</span><span class="ot"> 
visualThemeId=</span><span class="st">&quot;BLUELIGHT&quot;</span><span 
class="ot"> resourceTypeEnumId=</span><span 
class="st">&quot;VT_HDR_JAVASCRIPT&quot;</span><span class="ot"> 
resourceValue=</span><span 
class="st">&quot;/common/js/jquery/plugins/jeditable/jquery.jeditable.js&quot;</span><span
 class="ot"> sequenceId=</span><span class="st">&quot;11&quot;</span><span 
class="kw">/&gt;</span>
+    <span class="kw">&lt;VisualThemeResource</span><span class="ot"> 
visualThemeId=</span><span class="st">&quot;BLUELIGHT&quot;</span><span 
class="ot"> resourceTypeEnumId=</span><span 
class="st">&quot;VT_HDR_JAVASCRIPT&quot;</span><span class="ot"> 
resourceValue=</span><span 
class="st">&quot;/common/js/jquery/plugins/validate/jquery.validate.min.js&quot;</span><span
 class="ot"> sequenceId=</span><span class="st">&quot;12&quot;</span><span 
class="kw">/&gt;</span>
+    <span class="kw">&lt;VisualThemeResource</span><span class="ot"> 
visualThemeId=</span><span class="st">&quot;BLUELIGHT&quot;</span><span 
class="ot"> resourceTypeEnumId=</span><span 
class="st">&quot;VT_HDR_JAVASCRIPT&quot;</span><span class="ot"> 
resourceValue=</span><span 
class="st">&quot;/images/OpenLayers-2.13.1.js&quot;</span><span class="ot"> 
sequenceId=</span><span class="st">&quot;13&quot;</span><span 
class="kw">/&gt;</span>
+    <span class="kw">&lt;VisualThemeResource</span><span class="ot"> 
visualThemeId=</span><span class="st">&quot;BLUELIGHT&quot;</span><span 
class="ot"> resourceTypeEnumId=</span><span 
class="st">&quot;VT_HDR_JAVASCRIPT&quot;</span><span class="ot"> 
resourceValue=</span><span 
class="st">&quot;/common/js/util/OfbizUtil.js&quot;</span><span class="ot"> 
sequenceId=</span><span class="st">&quot;15&quot;</span><span 
class="kw">/&gt;</span>
+    <span class="kw">&lt;VisualThemeResource</span><span class="ot"> 
visualThemeId=</span><span class="st">&quot;BLUELIGHT&quot;</span><span 
class="ot"> resourceTypeEnumId=</span><span 
class="st">&quot;VT_HDR_JAVASCRIPT&quot;</span><span class="ot"> 
resourceValue=</span><span 
class="st">&quot;/common/js/util/fieldlookup.js&quot;</span><span class="ot"> 
sequenceId=</span><span class="st">&quot;16&quot;</span><span 
class="kw">/&gt;</span>
+    <span class="kw">&lt;VisualThemeResource</span><span class="ot"> 
visualThemeId=</span><span class="st">&quot;BLUELIGHT&quot;</span><span 
class="ot"> resourceTypeEnumId=</span><span 
class="st">&quot;VT_HDR_JAVASCRIPT&quot;</span><span class="ot"> 
resourceValue=</span><span 
class="st">&quot;/common/js/plugins/date/date.format-1.2.3-min.js&quot;</span><span
 class="ot"> sequenceId=</span><span class="st">&quot;17&quot;</span><span 
class="kw">/&gt;</span>
+    <span class="kw">&lt;VisualThemeResource</span><span class="ot"> 
visualThemeId=</span><span class="st">&quot;BLUELIGHT&quot;</span><span 
class="ot"> resourceTypeEnumId=</span><span 
class="st">&quot;VT_HDR_JAVASCRIPT&quot;</span><span class="ot"> 
resourceValue=</span><span 
class="st">&quot;/common/js/plugins/date/date.timezone-min.js&quot;</span><span 
class="ot"> sequenceId=</span><span class="st">&quot;18&quot;</span><span 
class="kw">/&gt;</span>
+    <span class="kw">&lt;VisualThemeResource</span><span class="ot"> 
visualThemeId=</span><span class="st">&quot;BLUELIGHT&quot;</span><span 
class="ot"> resourceTypeEnumId=</span><span 
class="st">&quot;VT_HDR_JAVASCRIPT&quot;</span><span class="ot"> 
resourceValue=</span><span 
class="st">&quot;/common/js/util/miscAjaxFunctions.js&quot;</span><span 
class="ot"> sequenceId=</span><span class="st">&quot;19&quot;</span><span 
class="kw">/&gt;</span>
+    <span class="kw">&lt;VisualThemeResource</span><span class="ot"> 
visualThemeId=</span><span class="st">&quot;BLUELIGHT&quot;</span><span 
class="ot"> resourceTypeEnumId=</span><span 
class="st">&quot;VT_HDR_JAVASCRIPT&quot;</span><span class="ot"> 
resourceValue=</span><span 
class="st">&quot;/common/js/util/selectMultipleRelatedValues.js&quot;</span><span
 class="ot"> sequenceId=</span><span class="st">&quot;20&quot;</span><span 
class="kw">/&gt;</span>
+    <span class="kw">&lt;VisualThemeResource</span><span class="ot"> 
visualThemeId=</span><span class="st">&quot;BLUELIGHT&quot;</span><span 
class="ot"> resourceTypeEnumId=</span><span 
class="st">&quot;VT_HDR_JAVASCRIPT&quot;</span><span class="ot"> 
resourceValue=</span><span 
class="st">&quot;/common/js/util/util.js&quot;</span><span class="ot"> 
sequenceId=</span><span class="st">&quot;21&quot;</span><span 
class="kw">/&gt;</span>
+    <span class="kw">&lt;VisualThemeResource</span><span class="ot"> 
visualThemeId=</span><span class="st">&quot;BLUELIGHT&quot;</span><span 
class="ot"> resourceTypeEnumId=</span><span 
class="st">&quot;VT_HDR_JAVASCRIPT&quot;</span><span class="ot"> 
resourceValue=</span><span 
class="st">&quot;/common/js/plugins/date/FromThruDateCheck.js&quot;</span><span 
class="ot"> sequenceId=</span><span class="st">&quot;22&quot;</span><span 
class="kw">/&gt;</span>
+    <span class="kw">&lt;VisualThemeResource</span><span class="ot"> 
visualThemeId=</span><span class="st">&quot;BLUELIGHT&quot;</span><span 
class="ot"> resourceTypeEnumId=</span><span 
class="st">&quot;VT_HDR_JAVASCRIPT&quot;</span><span class="ot"> 
resourceValue=</span><span 
class="st">&quot;/bluelight/dropdown.js&quot;</span><span class="ot"> 
sequenceId=</span><span class="st">&quot;30&quot;</span><span 
class="kw">/&gt;</span>
 
-The first column on the left tell you the username the demo is
-being run as - it should say ofbizDemo (UID) or 9997 (GID) !
-
-Type &#39;exit&#39; to exit the ofbizDemo user and return to your normal 
user.</code></pre>
-<p>Also note that the demos are usually updated and started/stopped 
automatically using the check-svn-update.sh script in this directory, it is run 
by an ofbiz cron job every 24 hours at 3 AM. You should therefore only need to 
start/stop manually if there is a problem.</p>
-<p>If you want to restart only a single instance you can respectively use</p>
-<p>trunk-manual-nicely.sh stable-manual-nicely.sh old-manual-nicely.sh</p>
+    <span class="co">&lt;!-- ftl references --&gt;</span>
+    <span class="kw">&lt;VisualThemeResource</span><span class="ot"> 
visualThemeId=</span><span class="st">&quot;BLUELIGHT&quot;</span><span 
class="ot"> resourceTypeEnumId=</span><span 
class="st">&quot;VT_HDR_TMPLT_LOC&quot;</span><span class="ot"> 
resourceValue=</span><span 
class="st">&quot;component://bluelight/template/Header.ftl&quot;</span><span 
class="ot"> sequenceId=</span><span class="st">&quot;01&quot;</span><span 
class="kw">/&gt;</span>
+    <span class="kw">&lt;VisualThemeResource</span><span class="ot"> 
visualThemeId=</span><span class="st">&quot;BLUELIGHT&quot;</span><span 
class="ot"> resourceTypeEnumId=</span><span 
class="st">&quot;VT_FTR_TMPLT_LOC&quot;</span><span class="ot"> 
resourceValue=</span><span 
class="st">&quot;component://bluelight/template/Footer.ftl&quot;</span><span 
class="ot"> sequenceId=</span><span class="st">&quot;01&quot;</span><span 
class="kw">/&gt;</span>
+    <span class="kw">&lt;VisualThemeResource</span><span class="ot"> 
visualThemeId=</span><span class="st">&quot;BLUELIGHT&quot;</span><span 
class="ot"> resourceTypeEnumId=</span><span 
class="st">&quot;VT_NAV_OPEN_TMPLT&quot;</span><span class="ot"> 
resourceValue=</span><span 
class="st">&quot;component://bluelight/template/AppBarOpen.ftl&quot;</span><span
 class="ot"> sequenceId=</span><span class="st">&quot;01&quot;</span><span 
class="kw">/&gt;</span>
+    <span class="kw">&lt;VisualThemeResource</span><span class="ot"> 
visualThemeId=</span><span class="st">&quot;BLUELIGHT&quot;</span><span 
class="ot"> resourceTypeEnumId=</span><span 
class="st">&quot;VT_NAV_CLOSE_TMPLT&quot;</span><span class="ot"> 
resourceValue=</span><span 
class="st">&quot;component://bluelight/template/AppBarClose.ftl&quot;</span><span
 class="ot"> sequenceId=</span><span class="st">&quot;01&quot;</span><span 
class="kw">/&gt;</span>
+    <span class="kw">&lt;VisualThemeResource</span><span class="ot"> 
visualThemeId=</span><span class="st">&quot;BLUELIGHT&quot;</span><span 
class="ot"> resourceTypeEnumId=</span><span 
class="st">&quot;VT_MSG_TMPLT_LOC&quot;</span><span class="ot"> 
resourceValue=</span><span 
class="st">&quot;component://bluelight/template/Messages.ftl&quot;</span><span 
class="ot"> sequenceId=</span><span class="st">&quot;01&quot;</span><span 
class="kw">/&gt;</span></code></pre></div>
+<p>Now it's just</p>
+<div class="sourceCode"><pre class="sourceCode xml"><code class="sourceCode 
xml">    <span class="kw">&lt;VisualTheme</span><span class="ot"> 
visualThemeId=</span><span class="st">&quot;BLUELIGHT&quot;</span><span 
class="ot"> visualThemeSetId=</span><span 
class="st">&quot;BACKOFFICE&quot;</span><span 
class="kw">/&gt;</span></code></pre></div>
+<p>And on theme definition</p>
+<div class="sourceCode"><pre class="sourceCode xml"><code class="sourceCode 
xml">    <span class="kw">&lt;theme-properties&gt;</span>
+        <span class="co">&lt;!--javascript lib--&gt;</span>
+        <span class="kw">&lt;property</span><span class="ot"> 
name=</span><span 
class="st">&quot;VT_HDR_JAVASCRIPT[&#39;add&#39;]&quot;</span><span class="ot"> 
value=</span><span class="st">&quot;/bluelight/dropdown.js&quot;</span><span 
class="ot"> sequenceId=</span><span class="st">&quot;30&quot;</span><span 
class="kw">/&gt;</span>
+        <span class="co">&lt;!--Css style--&gt;</span>
+        <span class="kw">&lt;property</span><span class="ot"> 
name=</span><span 
class="st">&quot;VT_STYLESHEET[&#39;add&#39;]&quot;</span><span class="ot"> 
value=</span><span class="st">&quot;/bluelight/style.css&quot;</span><span 
class="kw">/&gt;</span>
+        <span class="kw">&lt;property</span><span class="ot"> 
name=</span><span 
class="st">&quot;VT_HELPSTYLESHEET[&#39;add&#39;]&quot;</span><span class="ot"> 
value=</span><span class="st">&quot;/bluelight/help.css&quot;</span><span 
class="kw">/&gt;</span>
+        <span class="kw">&lt;property</span><span class="ot"> 
name=</span><span 
class="st">&quot;VT_DOCBOOKSTYLESHEET[&#39;add&#39;]&quot;</span><span 
class="ot"> value=</span><span 
class="st">&quot;/bluelight/webapp/bluelight/docbook.css&quot;</span><span 
class="kw">/&gt;</span>
+        <span class="co">&lt;!--template location--&gt;</span>
+        <span class="kw">&lt;property</span><span class="ot"> 
name=</span><span class="st">&quot;VT_HDR_TMPLT_LOC&quot;</span><span 
class="ot"> value=</span><span 
class="st">&quot;component://bluelight/template/Header.ftl&quot;</span><span 
class="kw">/&gt;</span>
+        <span class="kw">&lt;property</span><span class="ot"> 
name=</span><span class="st">&quot;VT_FTR_TMPLT_LOC&quot;</span><span 
class="ot"> value=</span><span 
class="st">&quot;component://bluelight/template/Footer.ftl&quot;</span><span 
class="kw">/&gt;</span>
+        <span class="kw">&lt;property</span><span class="ot"> 
name=</span><span class="st">&quot;VT_NAV_OPEN_TMPLT&quot;</span><span 
class="ot"> value=</span><span 
class="st">&quot;component://bluelight/template/AppBarOpen.ftl&quot;</span><span
 class="kw">/&gt;</span>
+        <span class="kw">&lt;property</span><span class="ot"> 
name=</span><span class="st">&quot;VT_NAV_CLOSE_TMPLT&quot;</span><span 
class="ot"> value=</span><span 
class="st">&quot;component://bluelight/template/AppBarClose.ftl&quot;</span><span
 class="kw">/&gt;</span>
+        <span class="kw">&lt;property</span><span class="ot"> 
name=</span><span class="st">&quot;VT_MSG_TMPLT_LOC&quot;</span><span 
class="ot"> value=</span><span 
class="st">&quot;component://bluelight/template/Messages.ftl&quot;</span><span 
class="kw">/&gt;</span>
+    <span class="kw">&lt;/theme-properties&gt;</span></code></pre></div>
+<p>Values with <strong>/images/...</strong> have been moved to the 
common-theme that bluelight extends, the theme definition keeps only what the 
theme adds to the extended theme.</p>
+<blockquote>
+<p><em>Note</em> property name supports the FlexibleMapAccessor syntax, so you 
can continue to populate a list (VT_STYLESHEET['add']), reset a list 
(VT_STYLESHEET[]) or add an element on the top list (VT_STYLESHEET[+0]) because 
some time the order libraries loading is important</p>
+</blockquote>
+<h3 id="migrate-you-own-theme">Migrate you own theme</h3>
+<p>Easily, create you Theme.xml and move your VisualThemeResource in 
<strong>theme-properties</strong> like in the BlueLight example above. Maybe 
you will need to update your template because the modelTheme return ressources 
not always as list. So : <code>&lt;property name=&quot;VT_HDR_TMPLT_LOC&quot; 
value=&quot;component://bluelight/template/Header.ftl&quot;/&gt;</code> -&gt; 
return a String with <code>component://bluelight/template/Header.ftl</code> 
<code>&lt;property name=&quot;VT_STYLESHEET['add'] value=&quot;...&quot;</code> 
-&gt; return a List<String></p>
 </body>
 </html>


Reply via email to