From b4cd776b253be161fafa577f7e759181d8fb9032 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 13 Apr 2011 14:50:42 +0200 Subject: [PATCH] [FIX] correctly load calendar addon * Fix loading of active modules (don't hardcode list) * Implement loading of CSS files via css list * Fix Calendar addon - Add list of JS files to descriptor - Add list of CSS files to descriptor - Have calendar load its own qweb template file - Put calendar in the correct namespace (openerp.base_calendar) instead of a nonsensical one bzr revid: xmo@openerp.com-20110413125042-feiimul8617a51d6 --- addons/base/controllers/main.py | 24 +++++++++----- addons/base/static/src/js/chrome.js | 23 +++++++++---- addons/base_calendar/__openerp__.py | 11 ++++--- .../base_calendar/static/src/js/calendar.js | 6 ++-- .../static/src/xml/base_calendar.xml | 33 +++++++++++++++++++ openerpweb/openerpweb.py | 9 +++-- 6 files changed, 79 insertions(+), 27 deletions(-) create mode 100644 addons/base_calendar/static/src/xml/base_calendar.xml diff --git a/addons/base/controllers/main.py b/addons/base/controllers/main.py index 8a2c31b42eb..bdedb85e63d 100644 --- a/addons/base/controllers/main.py +++ b/addons/base/controllers/main.py @@ -58,13 +58,17 @@ class Xml2Json: class Session(openerpweb.Controller): _cp_path = "/base/session" - def manifest_glob(self, modlist, key): + def manifest_glob(self, addons, key): files = [] - for i in modlist: - globlist = openerpweb.addons_manifest.get(i, {}).get(key, []) - for j in globlist: - for k in glob.glob(os.path.join(openerpweb.path_addons, i, j)): - files.append(k[len(openerpweb.path_addons):]) + for addon in addons: + globlist = openerpweb.addons_manifest.get(addon, {}).get(key, []) + + files.extend([ + resource_path[len(openerpweb.path_addons):] + for pattern in globlist + for resource_path in glob.glob(os.path.join( + openerpweb.path_addons, addon, pattern)) + ]) return files def concat_files(self, file_list): @@ -96,14 +100,16 @@ class Session(openerpweb.Controller): @openerpweb.jsonrequest def modules(self, req): - return {"modules": ["base", "base_hello", "base_calendar", "base_gantt"]} + return {"modules": [name + for name, manifest in openerpweb.addons_manifest.iteritems() + if manifest.get('active', True)]} @openerpweb.jsonrequest - def csslist(self, req, mods='base,base_hello'): + def csslist(self, req, mods='base'): return {'files': self.manifest_glob(mods.split(','), 'css')} @openerpweb.jsonrequest - def jslist(self, req, mods='base,base_hello'): + def jslist(self, req, mods='base'): return {'files': self.manifest_glob(mods.split(','), 'js')} def css(self, req, mods='base,base_hello'): diff --git a/addons/base/static/src/js/chrome.js b/addons/base/static/src/js/chrome.js index 6a46021edd4..77cdd264d20 100644 --- a/addons/base/static/src/js/chrome.js +++ b/addons/base/static/src/js/chrome.js @@ -450,10 +450,22 @@ openerp.base.Session = openerp.base.BasicController.extend( /** @lends openerp.b var self = this; this.rpc('/base/session/modules', {}, function(result) { self.module_list = result['modules']; - self.rpc('/base/session/jslist', {"mods": self.module_list.join(',')}, self.debug ? self.do_load_modules_debug : self.do_load_modules_prod); + var modules = self.module_list.join(','); + self.rpc('/base/session/csslist', {mods: modules}, self.do_load_css); + self.rpc('/base/session/jslist', {"mods": modules}, self.debug ? self.do_load_modules_debug : self.do_load_modules_prod); openerp._modules_loaded = true; }); }, + do_load_css: function (result) { + console.log('loading CSS files'); + _.each(result.files, function (file) { + $('head').append($('', { + 'href': file, + 'rel': 'stylesheet', + 'type': 'text/css' + })); + }); + }, do_load_modules_debug: function(result) { $LAB.setOptions({AlwaysPreserveOrder: true}) .script(result.files) @@ -466,16 +478,15 @@ openerp.base.Session = openerp.base.BasicController.extend( /** @lends openerp.b // use $.getScript(‘your_3rd_party-script.js’); ? i want to keep lineno ! }, on_modules_loaded: function() { - var self = this; - for(var j=0; j + +

+ + + + + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ diff --git a/openerpweb/openerpweb.py b/openerpweb/openerpweb.py index 027a86a8f78..8423dc878ab 100644 --- a/openerpweb/openerpweb.py +++ b/openerpweb/openerpweb.py @@ -436,11 +436,10 @@ class Root(object): manifest_path = os.path.join(path_addons, i, '__openerp__.py') if os.path.isfile(manifest_path): manifest = eval(open(manifest_path).read()) - if manifest.get('active', True): - print "Loading", i - m = __import__(i) - addons_module[i] = m - addons_manifest[i] = manifest + print "Loading", i + m = __import__(i) + addons_module[i] = m + addons_manifest[i] = manifest for k, v in controllers_class.items(): if k not in controllers_object: o = v()