summaryrefslogtreecommitdiff
path: root/addons/web/static/src
diff options
context:
space:
mode:
authorFabien Meghazi <fme@openerp.com>2012-09-05 17:03:41 +0200
committerFabien Meghazi <fme@openerp.com>2012-09-05 17:03:41 +0200
commit404acf222cb2b097c8da608e6bfd24ed494069a5 (patch)
tree049da8f718d0e656cdb40eeedd71c5bd87d74855 /addons/web/static/src
parentb675eb40de439b126fb4dffa00fde0c883f5f7b0 (diff)
[ADD] Implement dirty form check at the breadcrumbs level
bzr revid: fme@openerp.com-20120905150341-1188kodv77bys922
Diffstat (limited to 'addons/web/static/src')
-rw-r--r--addons/web/static/src/js/views.js23
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 = [];