Browse Source

Merge pull request #631 from StefanRijnhart/10.0-web_confirm_window_close

10.0 web confirm window close
pull/644/head
Sylvain LE GAL 8 years ago
committed by GitHub
parent
commit
0a9b75227b
  1. 60
      web_confirm_window_close/README.rst
  2. 47
      web_confirm_window_close/__manifest__.py
  3. BIN
      web_confirm_window_close/static/description/icon.png
  4. 46
      web_confirm_window_close/static/src/js/web_confirm_window_close.js
  5. 9
      web_confirm_window_close/views/assets.xml

60
web_confirm_window_close/README.rst

@ -0,0 +1,60 @@
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
==================================================
Check for unsaved data when closing browser window
==================================================
This module will show a confirmation dialog when the user closes
a window with an Odoo form containing unsaved data.
Usage
=====
.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
:alt: Try me on Runbot
:target: https://runbot.odoo-community.org/runbot/162/10.0
Known issues
============
This module depends on the 'dirty' flag that Odoo sets on modified forms. Odoo
only sets this flag when the focus is changed, so if you modified only one
field and the focus is still on that field, you won't be prevented from closing
the browser window.
Bug Tracker
===========
Bugs are tracked on `GitHub Issues
<https://github.com/OCA/web/issues>`_. In case of trouble, please
check there if your issue has already been reported. If you spotted it first,
help us smash it by providing detailed and welcomed feedback.
Credits
=======
Images
------
* Odoo Community Association: `Icon <https://github.com/OCA/maintainer-tools/blob/master/template/module/static/description/icon.svg>`_.
Contributors
------------
* Stefan Rijnhart <stefan@opener.amsterdam>
Maintainer
----------
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
This module is maintained by the OCA.
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
To contribute to this module, please visit https://odoo-community.org.

47
web_confirm_window_close/__manifest__.py

@ -1,45 +1,18 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# This module copyright (C) 2013 Therp BV (<http://therp.nl>).
#
# 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 <http://www.gnu.org/licenses/>.
#
##############################################################################
# coding: utf-8
# Copyright 2013 Therp BV (<http://therp.nl>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{ {
'name': 'Check for unsaved data when closing browser window', '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',
'version': '10.0.1.0.0',
'author': "Therp BV,Odoo Community Association (OCA)", 'author': "Therp BV,Odoo Community Association (OCA)",
'category': 'Usability', 'category': 'Usability',
'website': 'https://launchpad.net/web-addons',
'website': 'https://github.com/oca/web',
'license': 'AGPL-3', 'license': 'AGPL-3',
'installable': False,
'installable': True,
'data': [
'views/assets.xml',
],
'depends': [ 'depends': [
'web', 'web',
],
'js': [
'static/src/js/web_confirm_window_close.js'
],
],
} }

BIN
web_confirm_window_close/static/description/icon.png

After

Width: 128  |  Height: 128  |  Size: 9.2 KiB

46
web_confirm_window_close/static/src/js/web_confirm_window_close.js

@ -1,42 +1,22 @@
/*
// Copyright 2013 Therp BV (<http://therp.nl>)
// 2017 Opener B.V. (<https://opener.amsterdam>)
// License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
odoo.define('web_confirm_window_close', function (require) {
"use strict";
var WebClient = require('web.WebClient');
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?");
WebClient.include({
warning_on_close: function(e) {
if ($('html').find('.oe_form_dirty').length) {
e.preventDefault();
} }
}, },
start: function() { start: function() {
res = this._super();
$(window).on("beforeunload", _.bind(
this.warning_on_close, this));
var res = this._super();
$(window).on("beforeunload", _.bind(this.warning_on_close, this));
return res; return res;
} }
}); });
}
});

9
web_confirm_window_close/views/assets.xml

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="assets_backend" name="web_confirm_window_close assets" inherit_id="web.assets_backend">
<xpath expr="." position="inside">
<script type="text/javascript" src="/web_confirm_window_close/static/src/js/web_confirm_window_close.js"></script>
</xpath>
</template>
</odoo>
Loading…
Cancel
Save