Mohammed Shekha(Open ERP) has proposed merging 
lp:~openerp-dev/openerp-web/6.1-opw-574224-msh into lp:openerp-web/6.1.

Requested reviews:
  OpenERP Core Team (openerp)

For more details, see:
https://code.launchpad.net/~openerp-dev/openerp-web/6.1-opw-574224-msh/+merge/105957

Hello,

Improved the notification message, when record is unsaved which was not working 
when user clicks on home, company logo, menu, switch view and on process view 
button.

Hence checked whether form is dirty or not using can_be_discarded method on 
each of above event so that it can show the notification about the record 
changed.

Thanks.

-- 
https://code.launchpad.net/~openerp-dev/openerp-web/6.1-opw-574224-msh/+merge/105957
Your team OpenERP R&D Team is subscribed to branch 
lp:~openerp-dev/openerp-web/6.1-opw-574224-msh.
=== modified file 'addons/web/static/src/js/chrome.js'
--- addons/web/static/src/js/chrome.js	2012-04-25 21:19:12 +0000
+++ addons/web/static/src/js/chrome.js	2012-05-16 11:37:17 +0000
@@ -645,6 +645,8 @@
             return func(self.session.uid, ["name", "company_id"]).pipe(function(res) {
                 self.$content = $(QWeb.render("Header-content", {widget: self, user: res}));
                 self.$content.appendTo(self.$element);
+                self.$element.find(".home").click(self.on_home);
+                self.$element.find(".company_logo_link").click(self.on_company_logo);
                 self.$element.find(".logout").click(self.on_logout);
                 self.$element.find("a.preferences").click(self.on_preferences);
                 self.$element.find(".about").click(self.on_about);
@@ -653,6 +655,20 @@
         };
         this.update_promise = this.update_promise.pipe(fct, fct);
     },
+    on_home: function(){
+    	inner_viewmanager = this.widget_parent.action_manager.inner_viewmanager
+    	if(inner_viewmanager && inner_viewmanager.active_view == 'form' && !inner_viewmanager.views['form'].controller.can_be_discarded()){
+    		return false;
+    	}
+    	window.location.href = "/" + this.qs    	
+    },
+    on_company_logo: function(){
+    	inner_viewmanager = this.widget_parent.action_manager.inner_viewmanager
+    	if(inner_viewmanager && inner_viewmanager.active_view == 'form' && !inner_viewmanager.views['form'].controller.can_be_discarded()){
+    		return false;
+    	}
+    	window.location.href = "/" + this.qs
+    },
     on_about: function() {
         var self = this;
         self.rpc("/web/webclient/version_info", {}).then(function(res) {
@@ -711,11 +727,7 @@
                     e.stopPropagation();
                     var id = $(this).data('id');
                     self.session.active_id = id;
-                    self.rpc('/web/menu/action', {'menu_id':id}, function(ir_menu_data) {
-                        if (ir_menu_data.action.length){
-                            self.on_action(ir_menu_data.action[0][2]);
-                        }
-                    });
+                    self.widget_parent.menu.on_menu_click(e,id)
                 });
         });
     },
@@ -889,6 +901,11 @@
             'div[data-menu-parent=' + $primary_menu.data('menu') + ']').addClass('active').toggle(!this.folded);
     },
     on_menu_click: function(ev, id) {
+
+    	var inner_viewmanager = this.widget_parent.action_manager.inner_viewmanager;
+    	if(inner_viewmanager && inner_viewmanager.active_view == 'form' && !inner_viewmanager.views['form'].controller.can_be_discarded()){
+    		return false;
+    	}
         id = id || 0;
         var $clicked_menu, manual = false;
 
@@ -1124,6 +1141,10 @@
     },
     on_logout: function() {
         var self = this;
+        inner_viewmanager = this.action_manager.inner_viewmanager
+    	if(inner_viewmanager && inner_viewmanager.active_view == 'form' && !inner_viewmanager.views['form'].controller.can_be_discarded()){
+    		return false;
+    	}
         this.session.session_logout().then(function () {
             $(window).unbind('hashchange', self.on_hashchange);
             self.do_push_state({});

=== modified file 'addons/web/static/src/js/views.js'
--- addons/web/static/src/js/views.js	2012-03-06 20:59:55 +0000
+++ addons/web/static/src/js/views.js	2012-05-16 11:37:17 +0000
@@ -259,6 +259,9 @@
         this._super();
         var self = this;
         this.$element.find('.oe_vm_switch button').click(function() {
+        	if(self.active_view == 'form' && !self.views['form'].controller.can_be_discarded()){
+            	return $.Deferred().reject();
+            }
             self.on_mode_switch($(this).data('view-type'));
         });
         var views_ids = {};

=== modified file 'addons/web/static/src/xml/base.xml'
--- addons/web/static/src/xml/base.xml	2012-05-15 10:45:20 +0000
+++ addons/web/static/src/xml/base.xml	2012-05-16 11:37:17 +0000
@@ -337,7 +337,7 @@
 </t>
 <t t-name="Header">
     <div>
-        <a t-att-href="'/' + widget.qs" class="company_logo_link">
+        <a href="javascript:void(0)" class="company_logo_link">
             <div class="company_logo" />
         </a>
     </div>
@@ -350,7 +350,7 @@
     <div class="header_corner">
         <ul class="block">
             <li>
-                <a t-att-href="'/' + widget.qs" title="Home" class="home"><img t-att-src='_s + "/web/static/src/img/header-home.png"' width="16" height="16" border="0"/></a>
+                <a href="javascript:void(0)" title="Home" class="home"><img t-att-src='_s + "/web/static/src/img/header-home.png"' width="16" height="16" border="0"/></a>
             </li>
             <li class="preferences">
                 <a href="javascript:void(0)" title="Preferences" class="preferences"><img t-att-src='_s + "/web/static/src/img/header-preferences.png"' width="16" height="16" border="0"/></a>

=== modified file 'addons/web_process/static/src/js/process.js'
--- addons/web_process/static/src/js/process.js	2012-01-31 10:58:46 +0000
+++ addons/web_process/static/src/js/process.js	2012-05-16 11:37:17 +0000
@@ -27,6 +27,12 @@
         },
         initialize_process_view: function() {
             var self = this;
+
+            if(this.active_view == 'form' && !this.views['form'].controller.can_be_discarded()){
+    			return $.Deferred().reject();
+    		}
+    		this.views['form'].controller.$element.removeClass('oe_form_dirty');
+
             this.record_id = false;
             if(this.active_view  == 'page' || this.active_view == 'form') {
                 this.record_id = this.views[this.active_view].controller.datarecord.id;

_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help   : https://help.launchpad.net/ListHelp

Reply via email to