Jiten (OpenERP) has proposed merging 
lp:~openerp-dev/openerp-web/trunk-form-notifier-vda into lp:openerp-web.

Requested reviews:
  OpenERP R&D Web Team (openerp-dev-web)
Related bugs:
  Bug #986042 in OpenERP Web: "[6.1/Trunk] Web client does not warn of unsaved 
changes when navigating away from page"
  https://bugs.launchpad.net/openerp-web/+bug/986042

For more details, see:
https://code.launchpad.net/~openerp-dev/openerp-web/trunk-form-notifier-vda/+merge/104228

Fix the issue of Web client does not warn of unsaved changes when navigating 
away from page.
-- 
https://code.launchpad.net/~openerp-dev/openerp-web/trunk-form-notifier-vda/+merge/104228
Your team OpenERP R&D Team is subscribed to branch 
lp:~openerp-dev/openerp-web/trunk-form-notifier-vda.
=== modified file 'addons/web/static/src/js/view_form.js'
--- addons/web/static/src/js/view_form.js	2012-04-26 15:28:00 +0000
+++ addons/web/static/src/js/view_form.js	2012-05-01 10:29:19 +0000
@@ -583,7 +583,7 @@
         return def.promise();
     },
     can_be_discarded: function() {
-        return !this.$element.is('.oe_form_dirty') || confirm(_t("Warning, the record has been modified, your changes will be discarded."));
+        return !this.$element.is('.oe_form_dirty') || confirm(_t("Warning! \nThe record has been modified, your changes will be discarded.\nAre you sure you want to leave this page ?"));
     },
     /**
      * Triggers saving the form's record. Chooses between creating a new

=== added directory 'addons/web_notification'
=== added file 'addons/web_notification/__init__.py'
=== added file 'addons/web_notification/__openerp__.py'
--- addons/web_notification/__openerp__.py	1970-01-01 00:00:00 +0000
+++ addons/web_notification/__openerp__.py	2012-05-01 10:29:19 +0000
@@ -0,0 +1,11 @@
+{
+    "name": "web notification",
+    "category" : "Hidden",
+    "description":'Openerp web Notication',
+    "version": "2.0",
+    "depends": ['web'],
+    "js": ["static/src/js/notification.js"],
+    "css": [],
+    'qweb' : [],
+    "auto_install": True
+}
\ No newline at end of file

=== added directory 'addons/web_notification/static'
=== added directory 'addons/web_notification/static/src'
=== added directory 'addons/web_notification/static/src/js'
=== added file 'addons/web_notification/static/src/js/notification.js'
--- addons/web_notification/static/src/js/notification.js	1970-01-01 00:00:00 +0000
+++ addons/web_notification/static/src/js/notification.js	2012-05-01 10:29:19 +0000
@@ -0,0 +1,119 @@
+openerp.web_notification = function(instance) {
+    instance.web.Menu = instance.web.Menu.extend({
+        on_menu_click: function() {
+            var action_manager = this.getParent().action_manager;
+            if(action_manager.inner_viewmanager && action_manager.inner_viewmanager.active_view == 'form') {
+                var active_view = action_manager.inner_viewmanager.active_view,
+                    controller = action_manager.inner_viewmanager.views[active_view].controller;
+                if( ! controller.can_be_discarded()) {
+                     return false;
+                }
+            }
+            this._super.apply(this, arguments);
+        }
+    });
+    
+    instance.web.UserMenu.include({
+        on_menu_settings: function() {
+            var action_manager = this.getParent().action_manager;
+            if(action_manager.inner_viewmanager && action_manager.inner_viewmanager.active_view == 'form') {
+                var active_view = action_manager.inner_viewmanager.active_view,
+                    controller = action_manager.inner_viewmanager.views[active_view].controller;
+                if(!controller.can_be_discarded()) {
+                    return $.Deferred().reject();
+                }
+            }
+            this._super.apply(this, arguments);
+        },
+        
+        on_menu_shortcut: function() {
+            var action_manager = this.getParent().action_manager;
+            if(action_manager.inner_viewmanager && action_manager.inner_viewmanager.active_view == 'form') {
+                var active_view = action_manager.inner_viewmanager.active_view,
+                    controller = action_manager.inner_viewmanager.views[active_view].controller;
+                if(!controller.can_be_discarded()) {
+                    return $.Deferred().reject();
+                }
+            }
+            this._super.apply(this, arguments);
+        }
+    });
+    
+    instance.web.ViewManager.include({
+        initialize_process_view: function() {
+            if(this.active_view === 'form') {
+               var controller = this.views[this.active_view].controller;
+               var def = $.Deferred();
+               if(!controller.can_be_discarded()) {
+                    return def.reject();
+                } else {
+                    controller.$element.removeClass('oe_form_dirty');
+                }
+            }
+            return this._super.apply(this, arguments);
+        },
+        on_mode_switch: function(view_type, no_store) {
+            if(this.active_view === 'form') {
+               var controller = this.views[this.active_view].controller;
+               var def = $.Deferred();
+               if(!no_store && !controller.can_be_discarded()) {
+                    return def.reject();
+                }
+            }
+            return this._super.apply(this, arguments);
+        }
+    });
+    
+    instance.web.FormView.include({
+        do_save: function() {
+            if(this.dataset.index === null & !this.dataset.o2m) {
+                this.$element.removeClass('oe_form_dirty');
+            }
+            return this._super.apply(this, arguments);
+        }
+    });
+    
+    
+    instance.web.View.include({
+        on_sidebar_translate: function() {
+            if(this.getParent().active_view === 'form') {
+                var def = $.Deferred();
+                if(!this.can_be_discarded()) {
+                    return def.reject();
+                }
+            }
+            return this._super.apply(this, arguments);
+        }
+    });
+    
+    instance.web.Sidebar.include({
+        on_item_action_clicked: function() {
+            var controller = this.getParent();
+            if(controller.can_be_discarded) {
+                var def = $.Deferred();
+                if(!controller.can_be_discarded()) {
+                    return def.reject();
+                }
+            }
+            this._super.apply(this, arguments);
+        }
+    });
+    
+    var base_logout = instance.webclient.on_logout;
+    
+    instance.webclient.on_logout = function() {
+        var action_manager = openerp.webclient.action_manager;
+        if(action_manager.inner_viewmanager && action_manager.inner_viewmanager.active_view == 'form') {
+            var active_view = action_manager.inner_viewmanager.active_view,
+                controller = action_manager.inner_viewmanager.views[active_view].controller;
+            if(!controller.can_be_discarded()) {
+                return $.Deferred().reject();
+            } else {
+                base_logout.apply(this, arguments);
+            }
+        } else {
+            base_logout.apply(this, arguments);
+        }
+    }
+}
+

_______________________________________________
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