diff options
| author | Fabien Meghazi <fme@openerp.com> | 2012-09-05 17:03:41 +0200 |
|---|---|---|
| committer | Fabien Meghazi <fme@openerp.com> | 2012-09-05 17:03:41 +0200 |
| commit | 404acf222cb2b097c8da608e6bfd24ed494069a5 (patch) | |
| tree | 049da8f718d0e656cdb40eeedd71c5bd87d74855 /addons/web/static/src/js | |
| parent | b675eb40de439b126fb4dffa00fde0c883f5f7b0 (diff) | |
[ADD] Implement dirty form check at the breadcrumbs level
bzr revid: fme@openerp.com-20120905150341-1188kodv77bys922
Diffstat (limited to 'addons/web/static/src/js')
| -rw-r--r-- | addons/web/static/src/js/views.js | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index 2f015dab7a0..0d8430d53ee 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -101,7 +101,9 @@ instance.web.ActionManager = instance.web.Widget.extend({ select_breadcrumb: function(index, subindex) { for (var i = this.breadcrumbs.length - 1; i >= 0; i--) { if (i > index) { - this.remove_breadcrumb(i); + if (this.remove_breadcrumb(i) === false) { + return false; + } } } var item = this.breadcrumbs[index]; @@ -110,10 +112,11 @@ instance.web.ActionManager = instance.web.Widget.extend({ return true; }, clear_breadcrumbs: function() { - while (this.breadcrumbs.length) { - this.remove_breadcrumb(0); + for (var i = this.breadcrumbs.length - 1; i >= 0; i--) { + if (this.remove_breadcrumb(0) === false) { + break; + } } - this.inner_widget = null; }, remove_breadcrumb: function(index) { var item = this.breadcrumbs.splice(index, 1)[0]; @@ -122,9 +125,19 @@ instance.web.ActionManager = instance.web.Widget.extend({ return item.widget === it.widget; }); if (!dups.length) { - item.destroy(); + var $e = $.Event("about_to_destroy"); + item.widget.trigger("about_to_destroy", $e); + if ($e.isDefaultPrevented()) { + this.inner_widget = item.widget; + this.breadcrumbs.splice(index, 0, item); + return false; + } else { + item.destroy(); + } } } + var last_widget = this.breadcrumbs.slice(-1)[0]; + this.inner_widget = last_widget && last_widget.widget; }, get_title: function() { var titles = []; |
