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..717a540b --- /dev/null +++ b/web_confirm_window_close/__openerp__.py @@ -0,0 +1,44 @@ +# -*- 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 7.0. +''', + 'version': '7.0.1', + 'author': 'Therp BV', + 'category': 'Usability', + 'website': 'https://launchpad.net/web-addons', + '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..a8ceb7bb --- /dev/null +++ b/web_confirm_window_close/static/src/js/web_confirm_window_close.js @@ -0,0 +1,42 @@ +/* + + Copyright (C) 2013 Therp BV + License: GNU AFFERO GENERAL PUBLIC LICENSE + Version 3 or any later version + +*/ + +openerp.web_confirm_window_close = function(instance) { + + instance.web.FormView.include({ + init: function(parent, dataset, view_id, options) { + res = this._super(parent, dataset, view_id, options); + instance.web.bus.on('report_uncommitted_changes', this, function(e) { + if (this.$el.is('.oe_form_dirty')) { + e.preventDefault(); + } + }); + return res; + } + }), + + instance.web.WebClient.include({ + warning_on_close: function() { + var $e = $.Event('report_uncommitted_changes'); + instance.web.bus.trigger('report_uncommitted_changes', $e); + if ($e.isDefaultPrevented()) { + return instance.web._t( + "You have unsaved data in this window. " + + "Do you really want to leave?"); + } + }, + + start: function() { + res = this._super(); + $(window).on("beforeunload", _.bind( + this.warning_on_close, this)); + return res; + } + + }); +}