
On 01/14/2014 02:17 PM, Rodrigo Trujillo wrote:
If the plugin tab name string is not found in kimchi i18n file, the tab name is set as 'unknown'. This patch fixes this problem and also adds routines to add tab html file in cherrypy configuration automati cally.
Signed-off-by: Rodrigo Trujillo <rodrigo.trujillo@linux.vnet.ibm.com> --- src/kimchi/server.py | 38 ++++++++++++++++++++++++++++++++++++-- ui/js/src/kimchi.main.js | 2 +- 2 files changed, 37 insertions(+), 3 deletions(-)
diff --git a/src/kimchi/server.py b/src/kimchi/server.py index b820263..919e2e0 100644 --- a/src/kimchi/server.py +++ b/src/kimchi/server.py @@ -28,6 +28,10 @@ import logging.handlers import os import sslcert
+ +from xml.etree import ElementTree + + from kimchi import auth from kimchi import config from kimchi import model @@ -208,13 +212,43 @@ class Server(object): script_name = plugin_config['kimchi']['uri'] del plugin_config['kimchi']
+ tabs_extra_file = config.get_plugin_tab_xml(plugin_name) plugin_config['/ui/config/tab-ext.xml'] = { 'tools.staticfile.on': True, - 'tools.staticfile.filename': - config.get_plugin_tab_xml(plugin_name), + 'tools.staticfile.filename': tabs_extra_file, 'tools.nocache.on': True} +
+ # Providing plugin tabs htmls + et = ElementTree.ElementTree(file=tabs_extra_file) + + tabs = et.findall('tab') + for tab in tabs: + html = tab.find('path').text + tabs_extra_file = os.path.join(config.get_prefix(), html) + if html.startswith('/'): + html = html.replace(script_name,'') + else: + html = html.replace(script_name[1:],'') + plugin_config[html] = { + 'tools.staticfile.on': True, + 'tools.staticfile.filename': tabs_extra_file, + 'tools.nocache.on': True} + except KeyError: continue + except IOError as e: + msg = "Failed to load plugin tabs file %s" %tabs_extra_file + cherrypy.log.error_log.error(msg) + cherrypy.log.error_log.error('Ignoring plugin "%s"', + plugin_name) + continue + except ElementTree.ParseError as e: + msg = "XML parse error in file %s: %s" %( + tabs_extra_file, e.msg) + cherrypy.log.error_log.error(msg) + cherrypy.log.error_log.error('Ignoring plugin "%s"', + plugin_name) + continue
From kimchi perspective, we only need to know the tabs.xml for each plugin - so UI can load the interface in one view All other cherrypy configuration should be handled by the plugin config file. So all the above code isn't needed.
try: plugin_app = import_class(plugin_class)() diff --git a/ui/js/src/kimchi.main.js b/ui/js/src/kimchi.main.js index cc8afee..8b84a34 100644 --- a/ui/js/src/kimchi.main.js +++ b/ui/js/src/kimchi.main.js @@ -211,7 +211,7 @@ kimchi.getTabHtml = function(url) { $(xmlData).find('tab').each(function() { var $tab = $(this); var titleKey = $tab.find('title').text(); - var title = i18n[titleKey]; + var title = i18n[titleKey] || titleKey; var path = $tab.find('path').text(); tabsHtml += "<li><a class='item' href=" + path + ">" + title + "</a></li>"; });