[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
This commit is contained in:
parent
b7a638ccde
commit
b4cd776b25
|
@ -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'):
|
||||
|
|
|
@ -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($('<link>', {
|
||||
'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<self.module_list.length; j++) {
|
||||
var mod = self.module_list[j];
|
||||
if(self.module_loaded[mod])
|
||||
for(var j=0; j<this.module_list.length; j++) {
|
||||
var mod = this.module_list[j];
|
||||
if(this.module_loaded[mod])
|
||||
continue;
|
||||
openerp[mod] = {};
|
||||
// init module mod
|
||||
if(openerp._openerp[mod] != undefined) {
|
||||
openerp._openerp[mod](openerp);
|
||||
self.module_loaded[mod] = true;
|
||||
this.module_loaded[mod] = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
{
|
||||
"name": "Hello",
|
||||
"name": "Base calendar",
|
||||
"version": "2.0",
|
||||
"depends": [],
|
||||
"js": ["static/*/js/*.js"],
|
||||
"css": [],
|
||||
'active': False
|
||||
"js": [
|
||||
'static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler.js',
|
||||
'static/src/js/calendar.js'
|
||||
],
|
||||
"css": ['static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler.css'],
|
||||
'active': True
|
||||
}
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
* OpenERP base_calendar
|
||||
*---------------------------------------------------------*/
|
||||
|
||||
openerp.base.calendar = function(openerp) {
|
||||
|
||||
openerp.base_calendar = function(openerp) {
|
||||
QWeb.add_template('/base_calendar/static/src/xml/base_calendar.xml');
|
||||
openerp.base.views.add('calendar', 'openerp.base.CalendarView');
|
||||
openerp.base.CalendarView = openerp.base.Controller.extend({
|
||||
// Dhtmlx scheduler ?
|
||||
|
@ -201,7 +201,7 @@ openerp.base.CalendarView = openerp.base.Controller.extend({
|
|||
|
||||
do_hide: function () {
|
||||
this.$element.hide();
|
||||
},
|
||||
}
|
||||
});
|
||||
|
||||
//openerp.base.Action = openerp.base.Action.extend({
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
<template>
|
||||
<t t-name="CalendarView">
|
||||
<h3 class="title"><t t-esc="view.fields_view.arch.attrs.string"/></h3>
|
||||
<table class="calendar-view" width="100%" height="100%" cellspacing="0" cellpadding="0">
|
||||
<tr>
|
||||
<td>
|
||||
<div style="height: 1000px;width: 100%;">
|
||||
<div id="calendar-sidebar">
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td style="width:85%;" align="left">
|
||||
<div id="openerp_scheduler" class="dhx_cal_container" style="height: 1000px;width: 100%;">
|
||||
<div class="dhx_cal_navline">
|
||||
<div class="dhx_cal_prev_button"/>
|
||||
<div class="dhx_cal_next_button"/>
|
||||
<div class="dhx_cal_today_button"/>
|
||||
<div class="dhx_cal_date"/>
|
||||
<div class="dhx_minical_icon" id="dhx_minical_icon"/>
|
||||
<div class="dhx_cal_tab" name="day_tab" style="right:204px;"/>
|
||||
<div class="dhx_cal_tab" name="week_tab" style="right:140px;"/>
|
||||
<div class="dhx_cal_tab" name="month_tab" style="right:76px;"/>
|
||||
</div>
|
||||
<div class="dhx_cal_header">
|
||||
</div>
|
||||
<div class="dhx_cal_data">
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</t>
|
||||
</template>
|
|
@ -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()
|
||||
|
|
Loading…
Reference in New Issue