[IMP] Added populate sidebar.
bzr revid: nicolas.vanhoren@openerp.com-20110404134705-rmzbxlobntfoblub
This commit is contained in:
parent
63bf45372b
commit
19a8432167
|
@ -170,6 +170,24 @@ class Session(openerpweb.Controller):
|
||||||
'domain': domain,
|
'domain': domain,
|
||||||
'group_by': group_by_sequence
|
'group_by': group_by_sequence
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def load_actions_from_ir_values(req, key, key2, models, meta, context):
|
||||||
|
Values = req.session.model('ir.values')
|
||||||
|
actions = Values.get(key, key2, models, meta, context)
|
||||||
|
|
||||||
|
for _, _, action in actions:
|
||||||
|
# values come from the server, we can just eval them
|
||||||
|
if isinstance(action['context'], basestring):
|
||||||
|
action['context'] = eval(
|
||||||
|
action['context'],
|
||||||
|
req.session.evaluation_context()) or {}
|
||||||
|
|
||||||
|
if isinstance(action['domain'], basestring):
|
||||||
|
action['domain'] = eval(
|
||||||
|
action['domain'],
|
||||||
|
req.session.evaluation_context(
|
||||||
|
action['context'])) or []
|
||||||
|
return actions
|
||||||
|
|
||||||
class Menu(openerpweb.Controller):
|
class Menu(openerpweb.Controller):
|
||||||
_cp_path = "/base/menu"
|
_cp_path = "/base/menu"
|
||||||
|
@ -214,21 +232,8 @@ class Menu(openerpweb.Controller):
|
||||||
|
|
||||||
@openerpweb.jsonrequest
|
@openerpweb.jsonrequest
|
||||||
def action(self, req, menu_id):
|
def action(self, req, menu_id):
|
||||||
Values = req.session.model('ir.values')
|
actions = load_actions_from_ir_values(req,'action', 'tree_but_open',
|
||||||
actions = Values.get('action', 'tree_but_open', [('ir.ui.menu', menu_id)], False, {})
|
[('ir.ui.menu', menu_id)], False, {})
|
||||||
|
|
||||||
for _, _, action in actions:
|
|
||||||
# values come from the server, we can just eval them
|
|
||||||
if isinstance(action['context'], basestring):
|
|
||||||
action['context'] = eval(
|
|
||||||
action['context'],
|
|
||||||
req.session.evaluation_context()) or {}
|
|
||||||
|
|
||||||
if isinstance(action['domain'], basestring):
|
|
||||||
action['domain'] = eval(
|
|
||||||
action['domain'],
|
|
||||||
req.session.evaluation_context(
|
|
||||||
action['context'])) or []
|
|
||||||
|
|
||||||
return {"action": actions}
|
return {"action": actions}
|
||||||
|
|
||||||
|
@ -438,6 +443,15 @@ class SearchView(View):
|
||||||
def load(self, req, model, view_id):
|
def load(self, req, model, view_id):
|
||||||
fields_view = self.fields_view_get(req.session, model, view_id, 'search')
|
fields_view = self.fields_view_get(req.session, model, view_id, 'search')
|
||||||
return {'fields_view': fields_view}
|
return {'fields_view': fields_view}
|
||||||
|
|
||||||
|
class SideBar(View):
|
||||||
|
_cp_path = "/base/sidebar"
|
||||||
|
|
||||||
|
@openerpweb.jsonrequest
|
||||||
|
def get_actions(self, request, model, object_id=0):
|
||||||
|
result = load_actions_from_ir_values(request, "action", "client_action_multi",
|
||||||
|
[[model, object_id]], False, {})
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
class Action(openerpweb.Controller):
|
class Action(openerpweb.Controller):
|
||||||
|
|
|
@ -431,3 +431,26 @@ body.openerp {
|
||||||
.openerp .ui-widget {
|
.openerp .ui-widget {
|
||||||
font-size: 1em;
|
font-size: 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Sidebar */
|
||||||
|
.openerp .view-manager-main-sidebar {
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
|
||||||
|
.openerp .view-manager-main-sidebar .sidebar-main-div {
|
||||||
|
border: solid 1px #1F1F1F;
|
||||||
|
border-bottom-width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.openerp .view-manager-main-sidebar ul {
|
||||||
|
list-style-type: none;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
width: 120px;
|
||||||
|
border-bottom: solid 1px #1F1F1F;
|
||||||
|
}
|
||||||
|
|
||||||
|
.openerp .view-manager-main-sidebar li {
|
||||||
|
padding: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,8 +2,9 @@
|
||||||
openerp.base.form = function (openerp) {
|
openerp.base.form = function (openerp) {
|
||||||
|
|
||||||
openerp.base.FormView = openerp.base.Controller.extend({
|
openerp.base.FormView = openerp.base.Controller.extend({
|
||||||
init: function(session, element_id, dataset, view_id) {
|
init: function(view_manager, session, element_id, dataset, view_id) {
|
||||||
this._super(session, element_id);
|
this._super(session, element_id);
|
||||||
|
this.view_manager;
|
||||||
this.dataset = dataset;
|
this.dataset = dataset;
|
||||||
this.model = dataset.model;
|
this.model = dataset.model;
|
||||||
this.view_id = view_id;
|
this.view_id = view_id;
|
||||||
|
|
|
@ -2,8 +2,9 @@
|
||||||
openerp.base.list = function (openerp) {
|
openerp.base.list = function (openerp) {
|
||||||
|
|
||||||
openerp.base.ListView = openerp.base.Controller.extend({
|
openerp.base.ListView = openerp.base.Controller.extend({
|
||||||
init: function(session, element_id, dataset, view_id) {
|
init: function(view_manager, session, element_id, dataset, view_id) {
|
||||||
this._super(session, element_id);
|
this._super(session, element_id);
|
||||||
|
this.view_manager = view_manager;
|
||||||
this.dataset = dataset;
|
this.dataset = dataset;
|
||||||
this.model = dataset.model;
|
this.model = dataset.model;
|
||||||
this.view_id = view_id;
|
this.view_id = view_id;
|
||||||
|
@ -62,6 +63,14 @@ openerp.base.ListView = openerp.base.Controller.extend({
|
||||||
self.$table.setGridWidth(self.$element.width());
|
self.$table.setGridWidth(self.$element.width());
|
||||||
self.$element.children().show();
|
self.$element.children().show();
|
||||||
}).trigger('resize');
|
}).trigger('resize');
|
||||||
|
|
||||||
|
// sidebar stuff
|
||||||
|
this.rpc("/base/sidebar/get_actions",
|
||||||
|
{"model": this.model}, function(result) {
|
||||||
|
self.view_manager.sidebar.sections.push({elements:
|
||||||
|
_.map(result, function(x) {return {text:x[2].name, action:x}; })});
|
||||||
|
self.view_manager.sidebar.refresh();
|
||||||
|
});
|
||||||
},
|
},
|
||||||
do_fill_table: function(records) {
|
do_fill_table: function(records) {
|
||||||
this.log("do_fill_table");
|
this.log("do_fill_table");
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
openerp.base.search = function(openerp) {
|
openerp.base.search = function(openerp) {
|
||||||
|
|
||||||
openerp.base.SearchView = openerp.base.Controller.extend({
|
openerp.base.SearchView = openerp.base.Controller.extend({
|
||||||
init: function(session, element_id, dataset, view_id, defaults) {
|
init: function(view_manager, session, element_id, dataset, view_id, defaults) {
|
||||||
this._super(session, element_id);
|
this._super(session, element_id);
|
||||||
|
this.view_manager = view_manager;
|
||||||
this.dataset = dataset;
|
this.dataset = dataset;
|
||||||
this.model = dataset.model;
|
this.model = dataset.model;
|
||||||
this.view_id = view_id;
|
this.view_id = view_id;
|
||||||
|
@ -382,8 +383,10 @@ openerp.base.search.ExtendedSearch = openerp.base.BaseWidget.extend({
|
||||||
var _this = this;
|
var _this = this;
|
||||||
openerp.base.search.add_expand_listener(this.$element);
|
openerp.base.search.add_expand_listener(this.$element);
|
||||||
this.add_group();
|
this.add_group();
|
||||||
this.$element.find('.searchview_extended_add_group').click(function () {
|
this.$element.find('.searchview_extended_add_group').click(function (e) {
|
||||||
_this.add_group();
|
_this.add_group();
|
||||||
|
e.stopPropagation();
|
||||||
|
e.preventDefault();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
get_context: function() {
|
get_context: function() {
|
||||||
|
@ -415,12 +418,16 @@ openerp.base.search.ExtendedSearchGroup = openerp.base.BaseWidget.extend({
|
||||||
this._super();
|
this._super();
|
||||||
var _this = this;
|
var _this = this;
|
||||||
this.add_prop();
|
this.add_prop();
|
||||||
this.$element.find('.searchview_extended_add_proposition').click(function () {
|
this.$element.find('.searchview_extended_add_proposition').click(function (e) {
|
||||||
_this.add_prop();
|
_this.add_prop();
|
||||||
|
e.stopPropagation();
|
||||||
|
e.preventDefault();
|
||||||
});
|
});
|
||||||
var delete_btn = this.$element.find('.searchview_extended_delete_group');
|
var delete_btn = this.$element.find('.searchview_extended_delete_group');
|
||||||
delete_btn.click(function (e) {
|
delete_btn.click(function (e) {
|
||||||
_this.stop();
|
_this.stop();
|
||||||
|
e.stopPropagation();
|
||||||
|
e.preventDefault();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
get_domain: function() {
|
get_domain: function() {
|
||||||
|
@ -460,8 +467,10 @@ openerp.base.search.ExtendedSearchProposition = openerp.base.BaseWidget.extend({
|
||||||
_this.changed();
|
_this.changed();
|
||||||
});
|
});
|
||||||
var delete_btn = this.$element.find('.searchview_extended_delete_prop');
|
var delete_btn = this.$element.find('.searchview_extended_delete_prop');
|
||||||
delete_btn.click(function () {
|
delete_btn.click(function (e) {
|
||||||
_this.stop();
|
_this.stop();
|
||||||
|
e.stopPropagation();
|
||||||
|
e.preventDefault();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
changed: function() {
|
changed: function() {
|
||||||
|
@ -582,9 +591,11 @@ openerp.base.search.Filter = openerp.base.search.Input.extend({
|
||||||
start: function () {
|
start: function () {
|
||||||
this._super();
|
this._super();
|
||||||
var self = this;
|
var self = this;
|
||||||
this.$element.click(function () {
|
this.$element.click(function (e) {
|
||||||
$(this).toggleClass('enabled');
|
$(this).toggleClass('enabled');
|
||||||
self.view.do_toggle_filter(self);
|
self.view.do_toggle_filter(self);
|
||||||
|
e.stopPropagation();
|
||||||
|
e.preventDefault();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -83,7 +83,7 @@ openerp.base.ViewManager = openerp.base.Controller.extend({
|
||||||
if(this.search_visible && action.search_view_id) {
|
if(this.search_visible && action.search_view_id) {
|
||||||
this.searchview_id = action.search_view_id[0];
|
this.searchview_id = action.search_view_id[0];
|
||||||
var searchview = this.searchview = new openerp.base.SearchView(
|
var searchview = this.searchview = new openerp.base.SearchView(
|
||||||
this.session, this.element_id + "_search",
|
this, this.session, this.element_id + "_search",
|
||||||
this.dataset, this.searchview_id,
|
this.dataset, this.searchview_id,
|
||||||
this.search_defaults());
|
this.search_defaults());
|
||||||
searchview.on_search.add(this.do_search);
|
searchview.on_search.add(this.do_search);
|
||||||
|
@ -98,14 +98,14 @@ openerp.base.ViewManager = openerp.base.Controller.extend({
|
||||||
var view_id, controller;
|
var view_id, controller;
|
||||||
view_id = action.views[i][0];
|
view_id = action.views[i][0];
|
||||||
if(action.views[i][1] == "tree") {
|
if(action.views[i][1] == "tree") {
|
||||||
controller = new openerp.base.ListView(this.session, this.element_id + "_view_tree", this.dataset, view_id);
|
controller = new openerp.base.ListView(this, this.session, this.element_id + "_view_tree", this.dataset, view_id);
|
||||||
controller.start();
|
controller.start();
|
||||||
this.views.tree = { view_id: view_id, controller: controller };
|
this.views.tree = { view_id: view_id, controller: controller };
|
||||||
this.$element.find(prefix_id + "_button_tree").bind('click',function(){
|
this.$element.find(prefix_id + "_button_tree").bind('click',function(){
|
||||||
self.on_mode_switch("tree");
|
self.on_mode_switch("tree");
|
||||||
});
|
});
|
||||||
} else if(action.views[i][1] == "form") {
|
} else if(action.views[i][1] == "form") {
|
||||||
controller = new openerp.base.FormView(this.session, this.element_id + "_view_form", this.dataset, view_id);
|
controller = new openerp.base.FormView(this, this.session, this.element_id + "_view_form", this.dataset, view_id);
|
||||||
controller.start();
|
controller.start();
|
||||||
this.views.form = { view_id: view_id, controller: controller };
|
this.views.form = { view_id: view_id, controller: controller };
|
||||||
this.$element.find(prefix_id + "_button_form").bind('click',function(){
|
this.$element.find(prefix_id + "_button_form").bind('click',function(){
|
||||||
|
@ -238,8 +238,28 @@ openerp.base.BaseWidget = openerp.base.Controller.extend({
|
||||||
});
|
});
|
||||||
|
|
||||||
openerp.base.Sidebar = openerp.base.BaseWidget.extend({
|
openerp.base.Sidebar = openerp.base.BaseWidget.extend({
|
||||||
template: "ViewManager.sidebar"
|
template: "ViewManager.sidebar",
|
||||||
|
init: function(parent) {
|
||||||
|
this._super(parent);
|
||||||
|
this.sections = [];
|
||||||
|
},
|
||||||
|
refresh: function() {
|
||||||
|
this.$element.html(QWeb.render("ViewManager.sidebar.internal", this));
|
||||||
|
var self = this;
|
||||||
|
this.$element.find("a").click(function(e) {
|
||||||
|
$this = jQuery(this);
|
||||||
|
var i = $this.attr("data-i");
|
||||||
|
var j = $this.attr("data-i");
|
||||||
|
var action = self.sections[i].elements[j];
|
||||||
|
// TODO: do something with the action
|
||||||
|
e.stopPropagation();
|
||||||
|
e.preventDefault();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
start: function() {
|
||||||
|
this._super();
|
||||||
|
this.refresh();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
openerp.base.CalendarView = openerp.base.Controller.extend({
|
openerp.base.CalendarView = openerp.base.Controller.extend({
|
||||||
|
|
|
@ -417,8 +417,21 @@
|
||||||
<input t-att-id="element_id"/>
|
<input t-att-id="element_id"/>
|
||||||
</t>
|
</t>
|
||||||
<t t-name="ViewManager.sidebar">
|
<t t-name="ViewManager.sidebar">
|
||||||
<div t-att-id="element_id">
|
<div t-att-id="element_id" class="sidebar-main-div">
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</t>
|
</t>
|
||||||
|
<t t-name="ViewManager.sidebar.internal">
|
||||||
|
<t t-set="i" t-value="0"/>
|
||||||
|
<t t-foreach="sections" t-as="section">
|
||||||
|
<ul>
|
||||||
|
<t t-set="j" t-value="0"/>
|
||||||
|
<t t-foreach="section.elements" t-as="element">
|
||||||
|
<li><a t-att-data-i="i" t-att-data-j="j" href="#"><t t-esc="element.text"/></a></li>
|
||||||
|
<t t-set="j+1" t-value="0"/>
|
||||||
|
</t>
|
||||||
|
</ul>
|
||||||
|
<t t-set="i" t-value="i+1"/>
|
||||||
|
</t>
|
||||||
|
</t>
|
||||||
</templates>
|
</templates>
|
||||||
|
|
Loading…
Reference in New Issue