summaryrefslogtreecommitdiff
path: root/addons/web/static
diff options
context:
space:
mode:
authorniv-openerp <nicolas.vanhoren@openerp.com>2012-04-06 14:30:28 +0200
committerniv-openerp <nicolas.vanhoren@openerp.com>2012-04-06 14:30:28 +0200
commitf6dc29f71a994c4e5b244b8d79ecb20bf14da306 (patch)
treec778422eb0835d5ae13d6ae566ed7d75c64d97cd /addons/web/static
parent2dab47541858047cd82a96dc42680ac1a931d237 (diff)
[imp] make kanban view open records in popup when inside a o2m
bzr revid: nicolas.vanhoren@openerp.com-20120406123028-qjod7l590tzafimf
Diffstat (limited to 'addons/web/static')
-rw-r--r--addons/web/static/src/js/view_form.js35
1 files changed, 33 insertions, 2 deletions
diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js
index 0dec0cad603..9abf8fdfbf9 100644
--- a/addons/web/static/src/js/view_form.js
+++ b/addons/web/static/src/js/view_form.js
@@ -2317,6 +2317,7 @@ openerp.web.form.FieldOne2Many = openerp.web.form.Field.extend({
multi_selection: false,
init: function(view, node) {
this._super(view, node);
+ lazy_build_o2m_kanban_view();
this.is_loaded = $.Deferred();
this.initial_is_loaded = this.is_loaded;
this.is_setted = $.Deferred();
@@ -2388,7 +2389,8 @@ openerp.web.form.FieldOne2Many = openerp.web.form.Field.extend({
this.viewmanager.registry = openerp.web.views.extend({
list: 'openerp.web.form.One2ManyListView',
form: 'openerp.web.form.One2ManyFormView',
- page: 'openerp.web.PageView'
+ page: 'openerp.web.PageView',
+ kanban: 'openerp.web.form.One2ManyKanbanView',
});
var once = $.Deferred().then(function() {
self.init_form_last_update.resolve();
@@ -2397,8 +2399,8 @@ openerp.web.form.FieldOne2Many = openerp.web.form.Field.extend({
self.initial_is_loaded.resolve();
});
this.viewmanager.on_controller_inited.add_last(function(view_type, controller) {
+ controller.o2m = self;
if (view_type == "list") {
- controller.o2m = self;
if (self.is_readonly())
controller.set_editable(false);
} else if (view_type == "form" || view_type == 'page') {
@@ -2686,6 +2688,35 @@ openerp.web.form.One2ManyFormView = openerp.web.FormView.extend({
}
});
+var lazy_build_o2m_kanban_view = function() {
+if (! openerp.web_kanban || openerp.web.form.One2ManyKanbanView)
+ return;
+openerp.web.form.One2ManyKanbanView = openerp.web_kanban.KanbanView.extend({
+ open_record: function(id) {
+ var self = this;
+ var pop = new openerp.web.form.FormOpenPopup(self.o2m.view);
+ pop.show_element(self.o2m.field.relation, id, self.o2m.build_context(), {
+ title: _t("Open: ") + self.name,
+ auto_write: false,
+ alternative_form_view: self.o2m.field.views ? self.o2m.field.views["form"] : undefined,
+ parent_view: self.o2m.view,
+ child_name: self.o2m.name,
+ read_function: function() {
+ return self.o2m.dataset.read_ids.apply(self.o2m.dataset, arguments);
+ },
+ form_view_options: {'not_interactible_on_create':true},
+ readonly: self.o2m.is_readonly()
+ });
+ pop.on_write.add(function(id, data) {
+ self.o2m.dataset.write(id, data, {}, function(r) {
+ self.o2m.reload_current_view();
+ });
+ });
+
+ },
+});
+}
+
openerp.web.form.FieldMany2Many = openerp.web.form.Field.extend({
form_template: 'FieldMany2Many',
multi_selection: false,