[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):
|
class Session(openerpweb.Controller):
|
||||||
_cp_path = "/base/session"
|
_cp_path = "/base/session"
|
||||||
|
|
||||||
def manifest_glob(self, modlist, key):
|
def manifest_glob(self, addons, key):
|
||||||
files = []
|
files = []
|
||||||
for i in modlist:
|
for addon in addons:
|
||||||
globlist = openerpweb.addons_manifest.get(i, {}).get(key, [])
|
globlist = openerpweb.addons_manifest.get(addon, {}).get(key, [])
|
||||||
for j in globlist:
|
|
||||||
for k in glob.glob(os.path.join(openerpweb.path_addons, i, j)):
|
files.extend([
|
||||||
files.append(k[len(openerpweb.path_addons):])
|
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
|
return files
|
||||||
|
|
||||||
def concat_files(self, file_list):
|
def concat_files(self, file_list):
|
||||||
|
@ -96,14 +100,16 @@ class Session(openerpweb.Controller):
|
||||||
|
|
||||||
@openerpweb.jsonrequest
|
@openerpweb.jsonrequest
|
||||||
def modules(self, req):
|
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
|
@openerpweb.jsonrequest
|
||||||
def csslist(self, req, mods='base,base_hello'):
|
def csslist(self, req, mods='base'):
|
||||||
return {'files': self.manifest_glob(mods.split(','), 'css')}
|
return {'files': self.manifest_glob(mods.split(','), 'css')}
|
||||||
|
|
||||||
@openerpweb.jsonrequest
|
@openerpweb.jsonrequest
|
||||||
def jslist(self, req, mods='base,base_hello'):
|
def jslist(self, req, mods='base'):
|
||||||
return {'files': self.manifest_glob(mods.split(','), 'js')}
|
return {'files': self.manifest_glob(mods.split(','), 'js')}
|
||||||
|
|
||||||
def css(self, req, mods='base,base_hello'):
|
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;
|
var self = this;
|
||||||
this.rpc('/base/session/modules', {}, function(result) {
|
this.rpc('/base/session/modules', {}, function(result) {
|
||||||
self.module_list = result['modules'];
|
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;
|
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) {
|
do_load_modules_debug: function(result) {
|
||||||
$LAB.setOptions({AlwaysPreserveOrder: true})
|
$LAB.setOptions({AlwaysPreserveOrder: true})
|
||||||
.script(result.files)
|
.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 !
|
// use $.getScript(‘your_3rd_party-script.js’); ? i want to keep lineno !
|
||||||
},
|
},
|
||||||
on_modules_loaded: function() {
|
on_modules_loaded: function() {
|
||||||
var self = this;
|
for(var j=0; j<this.module_list.length; j++) {
|
||||||
for(var j=0; j<self.module_list.length; j++) {
|
var mod = this.module_list[j];
|
||||||
var mod = self.module_list[j];
|
if(this.module_loaded[mod])
|
||||||
if(self.module_loaded[mod])
|
|
||||||
continue;
|
continue;
|
||||||
openerp[mod] = {};
|
openerp[mod] = {};
|
||||||
// init module mod
|
// init module mod
|
||||||
if(openerp._openerp[mod] != undefined) {
|
if(openerp._openerp[mod] != undefined) {
|
||||||
openerp._openerp[mod](openerp);
|
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",
|
"version": "2.0",
|
||||||
"depends": [],
|
"depends": [],
|
||||||
"js": ["static/*/js/*.js"],
|
"js": [
|
||||||
"css": [],
|
'static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler.js',
|
||||||
'active': False
|
'static/src/js/calendar.js'
|
||||||
|
],
|
||||||
|
"css": ['static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler.css'],
|
||||||
|
'active': True
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
* OpenERP base_calendar
|
* 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.views.add('calendar', 'openerp.base.CalendarView');
|
||||||
openerp.base.CalendarView = openerp.base.Controller.extend({
|
openerp.base.CalendarView = openerp.base.Controller.extend({
|
||||||
// Dhtmlx scheduler ?
|
// Dhtmlx scheduler ?
|
||||||
|
@ -201,7 +201,7 @@ openerp.base.CalendarView = openerp.base.Controller.extend({
|
||||||
|
|
||||||
do_hide: function () {
|
do_hide: function () {
|
||||||
this.$element.hide();
|
this.$element.hide();
|
||||||
},
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
//openerp.base.Action = openerp.base.Action.extend({
|
//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')
|
manifest_path = os.path.join(path_addons, i, '__openerp__.py')
|
||||||
if os.path.isfile(manifest_path):
|
if os.path.isfile(manifest_path):
|
||||||
manifest = eval(open(manifest_path).read())
|
manifest = eval(open(manifest_path).read())
|
||||||
if manifest.get('active', True):
|
print "Loading", i
|
||||||
print "Loading", i
|
m = __import__(i)
|
||||||
m = __import__(i)
|
addons_module[i] = m
|
||||||
addons_module[i] = m
|
addons_manifest[i] = manifest
|
||||||
addons_manifest[i] = manifest
|
|
||||||
for k, v in controllers_class.items():
|
for k, v in controllers_class.items():
|
||||||
if k not in controllers_object:
|
if k not in controllers_object:
|
||||||
o = v()
|
o = v()
|
||||||
|
|
Loading…
Reference in New Issue