From 74cb5782aa6b8ed6bc8b2210664dc682d045707d Mon Sep 17 00:00:00 2001 From: "Vaibhav (OpenERP)" Date: Fri, 23 Sep 2011 12:22:51 +0530 Subject: [PATCH] [FIX] Gantview contextmenu Action should affects to record. lp bug: https://launchpad.net/bugs/855346 fixed bzr revid: vda@tinyerp.com-20110923065251-uj5ywar45xyj2y64 --- addons/web/static/src/js/views.js | 3 +- addons/web_gantt/static/src/js/gantt.js | 115 ++++++++++++++---------- 2 files changed, 72 insertions(+), 46 deletions(-) diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index 88db848118f..e8068fb90d0 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -424,7 +424,8 @@ db.web.ViewManagerAction = db.web.ViewManager.extend(/** @lends oepnerp.web.View return $.when( this._super(view_type), this.shortcut_check(this.views[view_type])).then(function () { - var view_id = self.views[self.active_view].controller.fields_view.view_id; + var active_controller = self.views[self.active_view].controller; + var view_id = active_controller.fields_view ? active_controller.fields_view.view_id : active_controller.view_id; self.$element.find('.oe_get_xml_view span').text(view_id); }); }, diff --git a/addons/web_gantt/static/src/js/gantt.js b/addons/web_gantt/static/src/js/gantt.js index a045bae64e1..378951b2a4f 100644 --- a/addons/web_gantt/static/src/js/gantt.js +++ b/addons/web_gantt/static/src/js/gantt.js @@ -43,7 +43,7 @@ init: function(parent, dataset, view_id) { this.name = this.fields_view.arch.attrs.string; this.view_id = this.fields_view.view_id; - + this.date_start = this.fields_view.arch.attrs.date_start; this.date_delay = this.fields_view.arch.attrs.date_delay; this.date_stop = this.fields_view.arch.attrs.date_stop; @@ -228,7 +228,7 @@ init: function(parent, dataset, view_id) { var evt_date = ""; var evt_duration = ""; var evt_end_date = ""; - + var project_tree_field = []; for (var i in final_events){ evt_id = final_events[i]; evt_date = all_events[evt_id]['evt'][2]; @@ -254,7 +254,7 @@ init: function(parent, dataset, view_id) { self.render_events(all_events, 0); } - for (var i in final_events){ + for (var i in final_events) { evt_id = final_events[i]; res = all_events[evt_id]; task=new GanttTaskInfo(res['evt'][0], res['evt'][1], res['evt'][2], res['evt'][3], res['evt'][4], "",res['evt'][6]); @@ -278,8 +278,9 @@ init: function(parent, dataset, view_id) { ganttChartControl.attachEvent("onTaskStartDrag", function(task) {self.on_drag_start(task);}); ganttChartControl.attachEvent("onTaskEndResize", function(task) {self.on_resize_drag_end(task, "resize");}); ganttChartControl.attachEvent("onTaskEndDrag", function(task) {self.on_resize_drag_end(task, "drag");}); + ganttChartControl.attachEvent("onTaskDblClick", function(task) {self.open_popup(task);}); - + var taskdiv = jQuery("div.taskPanel").parent(); taskdiv.addClass('ganttTaskPanel'); taskdiv.prev().addClass('ganttDayPanel'); @@ -293,7 +294,7 @@ init: function(parent, dataset, view_id) { self.set_width(); }); - jQuery(window).bind('resize',function(){ + jQuery(window).bind('resize',function() { window.clearTimeout(ganttChartControl._resize_timer); ganttChartControl._resize_timer = window.setTimeout(function(){ self.reload_gantt(); @@ -301,6 +302,37 @@ init: function(parent, dataset, view_id) { }); jQuery("div #_1, div #_1 + div").hide(); + + //Custom events + var context_menu = ganttChartControl.contextMenu, + buttons = [], + values = {}; + + _.each(context_menu.arrTabs, function(tab, tab_index) { + buttons.push(_.filter(tab.arrItems,function(b) { + return b.control.type == "button"; + })[0]); + }); + _.each(buttons, function(b, index) { + $(b.control).click(function() { + if(!context_menu.arrTabs[index].object.parentTask) + return false; + var task_info = context_menu.arrTabs[index].object.TaskInfo; + project_id = task_info.Id;; + switch(index) { + case 0: + values[self.text] = task_info.Name; + return self.dataset.write(project_id, values); + case 1: + return self.dataset.unlink([project_id]); + case 3: + if(self.date_delay) { + values[self.date_delay] = task_info.Duration; + return self.dataset.write(project_id, values); + } + } + }) + }); }, set_width: function() { @@ -385,53 +417,46 @@ init: function(parent, dataset, view_id) { }, open_popup : function(task) { + var self = this; var event_id = task.getId(); if(event_id.toString().search("_") != -1) return; if(event_id) event_id = parseInt(event_id, 10); + + var action_manager = new openerp.web.ActionManager(this); + + var dialog = new openerp.web.Dialog(this, { + width: 800, + height: 600, + buttons : { + Cancel : function() { + $(this).dialog('destroy'); + }, + Save : function() { + var form_view = action_manager.inner_viewmanager.views.form.controller; - var action = { - "res_model": this.dataset.model, - "res_id": event_id, - "views":[[false,"form"]], - "type":"ir.actions.act_window", - "view_type":"form", - "view_mode":"form" - }; - - action.flags = { - search_view: false, - sidebar : false, - views_switcher : false, - pager: false - }; - var element_id = _.uniqueId("act_window_dialog"); - var dialog = jQuery('
', { - 'id': element_id - }).dialog({ - modal: true, - width: 'auto', - height: 'auto', - buttons: { - Cancel: function() { - $(this).dialog("destroy"); - }, - Save: function() { - var view_manager = action_manager.viewmanager; - var _dialog = this; - view_manager.views[view_manager.active_view].controller.do_save(function(r) { - $(_dialog).dialog("destroy"); - self.reload_gantt(); - }) - } + form_view.do_save(function() { + self.get_events(); + }); + $(this).dialog('destroy'); } + } + }).start().open(); + action_manager.appendTo(dialog.$element); + action_manager.do_action({ + res_model : this.dataset.model, + res_id: event_id, + views : [[false, 'form']], + type : 'ir.actions.act_window', + auto_search : false, + flags : { + search_view: false, + sidebar : false, + views_switcher : false, + action_buttons : false, + pager: false + } }); - var action_manager = new openerp.web.ActionManager(this, element_id); - action_manager.start(); - action_manager.do_action(action); - - //Default_get - if(!event_id) action_manager.viewmanager.dataset.index = null; }, on_drag_start : function(task){