From 79c84e44853a5c6fc3838ec6f7d31c4f3362b2da Mon Sep 17 00:00:00 2001 From: Stefan Rijnhart Date: Fri, 24 May 2013 14:42:31 +0200 Subject: [PATCH] [ADD] Ask confirmation when closing a form page with unsaved data --- web_confirm_window_close/__init__.py | 0 web_confirm_window_close/__openerp__.py | 45 +++++++++++++++++++ .../static/src/js/web_confirm_window_close.js | 30 +++++++++++++ 3 files changed, 75 insertions(+) create mode 100644 web_confirm_window_close/__init__.py create mode 100644 web_confirm_window_close/__openerp__.py create mode 100644 web_confirm_window_close/static/src/js/web_confirm_window_close.js diff --git a/web_confirm_window_close/__init__.py b/web_confirm_window_close/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/web_confirm_window_close/__openerp__.py b/web_confirm_window_close/__openerp__.py new file mode 100644 index 00000000..b7e1679a --- /dev/null +++ b/web_confirm_window_close/__openerp__.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# This module copyright (C) 2013 Therp BV (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +{ + 'name': 'Check for unsaved data when closing browser window', + 'description': ''' +This addon will show a confirmation dialog when the user closes +a window with an OpenERP form containing unsaved data. + +This functionality is browser dependent. Opera ignores it at all, +while Firefox displays a generic confirmation message. + +This module is compatible with OpenERP 6.1. +''', + 'version': '6.1.1', + 'author': 'Therp BV', + 'category': 'Usability', + 'website': 'http://therp.nl', + 'email': 'info@therp.nl', + 'license': 'AGPL-3', + 'depends': [ + 'web', + ], + 'js': [ + 'static/src/js/web_confirm_window_close.js' + ], +} diff --git a/web_confirm_window_close/static/src/js/web_confirm_window_close.js b/web_confirm_window_close/static/src/js/web_confirm_window_close.js new file mode 100644 index 00000000..d07dc6a1 --- /dev/null +++ b/web_confirm_window_close/static/src/js/web_confirm_window_close.js @@ -0,0 +1,30 @@ +/* + + Copyright (C) 2013 Therp BV + License: GNU AFFERO GENERAL PUBLIC LICENSE + Version 3 or any later version + +*/ + +openerp.web_confirm_window_close = function(openerp) { + openerp.web.FormView.include({ + + warning_on_close: function() { + if (this.widget_parent && this.widget_parent.active_view == 'form' && this.$element.hasClass('oe_form_dirty')) { + // Firefox will show a generic confirmation dialog + // When any text is returned here. + return openerp.web._t('You have unsaved data in this window. Do you really want to leave?'); + } + }, + + start: function() { + res = this._super(); + if (!(this.embedded_view)) { + $(window).bind('beforeunload', _.bind( + this.warning_on_close, this)); + } + return res; + } + + }); +}