On 5/17/2014 3:30 AM, shaohef@linux.vnet.ibm.com wrote:
From: Zhou Zheng Sheng <zhshzhou@linux.vnet.ibm.com>

Add minimal UI just enough to re-produce issue 342.

https://github.com/kimchi-project/kimchi/issues/342

Signed-off-by: Zhou Zheng Sheng <zhshzhou@linux.vnet.ibm.com>
Signed-off-by: ShaoHe Feng <shaohef@linux.vnet.ibm.com>
---
 plugins/sample/__init__.py             | 3 ++-
 plugins/sample/sample.conf             | 5 +++++
 plugins/sample/ui/config/tab-ext.xml   | 9 +++++----
 plugins/sample/ui/pages/i18n.json.tmpl | 9 +++++++++
 plugins/sample/ui/pages/tab.html.tmpl  | 6 ++++++
 5 files changed, 27 insertions(+), 5 deletions(-)
 create mode 100644 plugins/sample/ui/pages/i18n.json.tmpl
 create mode 100644 plugins/sample/ui/pages/tab.html.tmpl

diff --git a/plugins/sample/__init__.py b/plugins/sample/__init__.py
index 3183898..2101aed 100644
--- a/plugins/sample/__init__.py
+++ b/plugins/sample/__init__.py
@@ -26,6 +26,7 @@ from cherrypy import expose

 from kimchi.config import PluginPaths
 from kimchi.control.base import Collection, Resource
+from kimchi.root import Root
 from plugins.sample.i18n import messages
 from plugins.sample.model import Model

@@ -33,7 +34,7 @@ from plugins.sample.model import Model
 model = Model()


-class Drawings(Resource):
+class Drawings(Root):
     def __init__(self):
         Resource.__init__(self, model)
         self.description = Description(model)
diff --git a/plugins/sample/sample.conf b/plugins/sample/sample.conf
index c4e80f7..78a9f4e 100644
--- a/plugins/sample/sample.conf
+++ b/plugins/sample/sample.conf
@@ -5,3 +5,8 @@ uri = "/plugins/sample"

 [/]
 tools.trailing_slash.on = False
+tools.sessions.on = True
+tools.sessions.name = 'kimchi'
+tools.sessions.httponly = True
+tools.sessions.locking = 'explicit'
+tools.sessions.storage_type = 'ram'
diff --git a/plugins/sample/ui/config/tab-ext.xml b/plugins/sample/ui/config/tab-ext.xml
index 948fa07..b98c126 100644
--- a/plugins/sample/ui/config/tab-ext.xml
+++ b/plugins/sample/ui/config/tab-ext.xml
@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!--<tabs-ext>
+<tabs-ext>
     <tab>
-        <title>Test</title>
-        <filePath>plugins/sample/ui/tab.html</filePath>
+        <title>SampleTab</title>
+        <path>plugins/sample/tab.html</path>
+        <nls>plugins/sample/i18n.html</nls>
here, an nls tag is designed for user to specify which file is used for i18n content.

But go through ' [PATCH V2 5/7] Issue #342: load i18n.html of the plugin'.

In javascript code, the path is hardcoded to be  below
	var pluginI18nUrl = 'plugins/{plugin}/i18n.json';

If it is mandatory for a plugin to put i18n content to a file named i18n.html directly under the plugin folder. then remove that nls tag.

Personally, as a plugin descriptor xml file is provided for a plugin developer to specify configuration of a plugin, 
I prefer to leave the nls tag there to give the plugin developer the freedom to put wherever the i18n file to be.
     </tab>
-</tabs-ext>-->
\ No newline at end of file
+</tabs-ext>
diff --git a/plugins/sample/ui/pages/i18n.json.tmpl b/plugins/sample/ui/pages/i18n.json.tmpl
new file mode 100644
index 0000000..a153e2d
--- /dev/null
+++ b/plugins/sample/ui/pages/i18n.json.tmpl
@@ -0,0 +1,9 @@
+#unicode UTF-8
+#import gettext
+#from kimchi.cachebust import href
+#silent t = gettext.translation($lang.domain, $lang.localedir, languages=$lang.lang)
+#silent _ = t.gettext
+#silent _t = t.gettext
+{
+    "SampleTab": "$_("SampleTab")"
+}
diff --git a/plugins/sample/ui/pages/tab.html.tmpl b/plugins/sample/ui/pages/tab.html.tmpl
new file mode 100644
index 0000000..49fc4ec
--- /dev/null
+++ b/plugins/sample/ui/pages/tab.html.tmpl
@@ -0,0 +1,6 @@
+<!DOCTYPE html>
+<html>
+<body>
+Hello, world
+</body>
+</html>