summaryrefslogtreecommitdiff
path: root/addons/web/static/src
diff options
context:
space:
mode:
authorCedric Snauwaert <csn@openerp.com>2014-04-11 15:29:34 +0200
committerCedric Snauwaert <csn@openerp.com>2014-04-11 15:29:34 +0200
commit280caaa95ce16b73503bdd2b06bf6379650f2edd (patch)
tree3d3d2c6235d869eec98608119a2425cb9e0461a1 /addons/web/static/src
parent27738154c3fd6a47e02c6a11413b5054cba1093f (diff)
parentc8607c8b818b4554c01294f5c05bc5d20f226f82 (diff)
[MERGE]change modal windows to only use bootstrap3
bzr revid: csn@openerp.com-20140411132934-iodyidypjxb7v9ug
Diffstat (limited to 'addons/web/static/src')
-rw-r--r--addons/web/static/src/css/base.css172
-rw-r--r--addons/web/static/src/css/base.sass128
-rw-r--r--addons/web/static/src/js/chrome.js155
-rw-r--r--addons/web/static/src/js/data_export.js2
-rw-r--r--addons/web/static/src/js/view_form.js39
-rw-r--r--addons/web/static/src/js/views.js10
-rw-r--r--addons/web/static/src/xml/base.xml15
7 files changed, 133 insertions, 388 deletions
diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css
index 08ae6df5e0b..ace5ef2dbf6 100644
--- a/addons/web/static/src/css/base.css
+++ b/addons/web/static/src/css/base.css
@@ -127,7 +127,7 @@
font-weight: bold;
font-size: inherit;
}
-.openerp a.button:link, .openerp a.button:visited, .openerp button, .openerp .oe_button, .openerp input[type='submit'], .openerp .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button {
+.openerp a.button:link, .openerp a.button:visited, .openerp button, .openerp .oe_button, .openerp input[type='submit'] {
display: inline-block;
border: 1px solid rgba(0, 0, 0, 0.4);
color: #4c4c4c;
@@ -152,7 +152,7 @@
-webkit-font-smoothing: antialiased;
outline: none;
}
-.openerp a.button:hover, .openerp button:hover, .openerp .oe_button:hover, .openerp input[type='submit']:hover, .openerp .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button.ui-state-hover {
+.openerp a.button:hover, .openerp button:hover, .openerp .oe_button:hover, .openerp input[type='submit']:hover {
background-color: #ececec;
background-image: -webkit-gradient(linear, left top, left bottom, from(#f6f6f6), to(#e3e3e3));
background-image: -webkit-linear-gradient(top, #f6f6f6, #e3e3e3);
@@ -163,7 +163,7 @@
cursor: pointer;
background-position: 0;
}
-.openerp a.button:focus, .openerp button:focus, .openerp .oe_button:focus, .openerp input[type='submit']:focus, .openerp .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button.ui-state-focus {
+.openerp a.button:focus, .openerp button:focus, .openerp .oe_button:focus, .openerp input[type='submit']:focus {
border: 1px solid #80bfff;
background-position: 0;
background-color: #ececec;
@@ -177,7 +177,7 @@
-webkit-box-shadow: 0 0 3px #80bfff, 0 1px 1px rgba(255, 255, 255, 0.8) inset;
box-shadow: 0 0 3px #80bfff, 0 1px 1px rgba(255, 255, 255, 0.8) inset;
}
-.openerp a.button:active, .openerp a.button.active, .openerp button:active, .openerp .oe_button:active, .openerp .oe_button.active, .openerp input[type='submit']:active, .openerp input[type='submit'].active, .openerp .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button.ui-state-active {
+.openerp a.button:active, .openerp a.button.active, .openerp button:active, .openerp .oe_button:active, .openerp .oe_button.active, .openerp input[type='submit']:active, .openerp input[type='submit'].active {
background-color: #ececec;
background-image: -webkit-gradient(linear, left top, left bottom, from(#e3e3e3), to(#f6f6f6));
background-image: -webkit-linear-gradient(top, #e3e3e3, #f6f6f6);
@@ -212,148 +212,6 @@
.openerp .ui-tabs {
position: static;
}
-.openerp.ui-dialog {
- display: none;
- height: auto !important;
- padding: 6px;
- background-color: rgba(60, 60, 60, 0.7);
- border: 1px solid;
- border-color: #888888 #555555 #444444;
- -moz-border-radius: 8px;
- -webkit-border-radius: 8px;
- border-radius: 8px;
- -moz-box-shadow: 0 1px 12px rgba(0, 0, 0, 0.6);
- -webkit-box-shadow: 0 1px 12px rgba(0, 0, 0, 0.6);
- box-shadow: 0 1px 12px rgba(0, 0, 0, 0.6);
- -webkit-background-clip: padding-box;
- -moz-background-clip: padding-box;
- background-clip: padding-box;
-}
-.openerp.ui-dialog .ui-dialog-content {
- padding: 0;
-}
-.openerp.ui-dialog .ui-dialog-titlebar, .openerp.ui-dialog .ui-dialog-content, .openerp.ui-dialog .ui-dialog-buttonpane {
- padding: 16px;
-}
-.openerp.ui-dialog .ui-dialog-titlebar {
- border-top: none;
- border-left: none;
- border-right: none;
- border-bottom: 1px solid #cacaca;
- -moz-border-radius: 2px 2px 0 0;
- -webkit-border-radius: 2px 2px 0 0;
- border-radius: 2px 2px 0 0;
- background-color: #ededed;
- background-image: -webkit-gradient(linear, left top, left bottom, from(#fcfcfc), to(#dedede));
- background-image: -webkit-linear-gradient(top, #fcfcfc, #dedede);
- background-image: -moz-linear-gradient(top, #fcfcfc, #dedede);
- background-image: -ms-linear-gradient(top, #fcfcfc, #dedede);
- background-image: -o-linear-gradient(top, #fcfcfc, #dedede);
- background-image: linear-gradient(to bottom, #fcfcfc, #dedede);
-}
-.openerp.ui-dialog .ui-dialog-titlebar .ui-dialog-title {
- margin: 0;
- padding: 0;
-}
-.openerp.ui-dialog .ui-dialog-content {
- background: white;
- width: auto !important;
-}
-.openerp.ui-dialog .ui-dialog-buttonpane {
- border-top: 1px solid #e0e0e0;
- background: #f5f7f9;
- margin: 0;
- -moz-border-radius: 0 0 2px 2px;
- -webkit-border-radius: 0 0 2px 2px;
- border-radius: 0 0 2px 2px;
-}
-.openerp.ui-dialog .ui-dialog-buttonpane button {
- margin: 0 4px 0 0;
-}
-.openerp.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
- float: left;
-}
-.openerp.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button {
- margin-right: 4px;
-}
-.openerp.ui-dialog .ui-dialog-titlebar-close {
- padding: 0;
-}
-.openerp.ui-dialog .ui-dialog-titlebar-close .ui-icon-closethick {
- display: none;
-}
-.openerp.ui-dialog .ui-dialog-titlebar-close:before {
- content: "×";
- font-size: 18px;
- font-weight: bold;
- line-height: 16px;
- color: black;
- text-shadow: 0 1px 0 white;
- padding: 0;
- cursor: pointer;
- background: transparent;
- border: 0;
-}
-.openerp.ui-dialog .ui-dialog-titlebar-close:before:hover {
- color: black;
- text-decoration: none;
-}
-.openerp.ui-dialog .oe_about {
- background-color: white;
- background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAAKUlEQVQIHWO8e/fufwYsgAUkJigoiCIF5DMyoYggcUiXgNnBiGQKmAkARpcEQeriln4AAAAASUVORK5CYII=);
- -moz-border-radius: 0 0 2px 2px;
- -webkit-border-radius: 0 0 2px 2px;
- border-radius: 0 0 2px 2px;
-}
-.openerp.ui-dialog .oe_about a {
- color: #7c7bad;
-}
-.openerp.ui-dialog .oe_about a:hover {
- text-decoration: underline;
-}
-.openerp.ui-dialog .oe_about a:focus {
- outline: none;
-}
-.openerp.ui-dialog .oe_about .oe_logo {
- margin-left: -6px;
-}
-.openerp.ui-dialog .oe_about .oe_bottom {
- position: absolute;
- top: 50%;
- left: 0;
- right: 0;
- bottom: 0;
- text-shadow: 0 1px 1px #999999;
- background-color: #8a0e0e;
- background-image: -webkit-gradient(linear, left top, left bottom, from(#b41616), to(#600606));
- background-image: -webkit-linear-gradient(top, #b41616, #600606);
- background-image: -moz-linear-gradient(top, #b41616, #600606);
- background-image: -ms-linear-gradient(top, #b41616, #600606);
- background-image: -o-linear-gradient(top, #b41616, #600606);
- background-image: linear-gradient(to bottom, #b41616, #600606);
- color: #eeeeee;
- padding: 0 16px;
- -moz-border-radius: 0 0 2px 2px;
- -webkit-border-radius: 0 0 2px 2px;
- border-radius: 0 0 2px 2px;
-}
-.openerp.ui-dialog .oe_about .oe_bottom a {
- color: #eeeeee;
-}
-.openerp.ui-dialog.oe_act_window .ui-dialog-content {
- padding: 0px;
-}
-.openerp .modal-backdrop {
- position: fixed;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
- z-index: 1040;
- background-color: black;
- filter: alpha(opacity=30);
- opacity: 0.3;
-}
.openerp .oe_i {
font-family: "mnmliconsRegular" !important;
font-size: 21px;
@@ -1233,11 +1091,6 @@
margin-left: -6px;
}
.openerp .oe_about .oe_bottom {
- position: absolute;
- top: 50%;
- left: 0;
- right: 0;
- bottom: 0;
text-shadow: 0 1px 1px #999999;
background-color: #8a0e0e;
background-image: -webkit-gradient(linear, left top, left bottom, from(#b41616), to(#600606));
@@ -3425,9 +3278,6 @@ body.oe_single_form .oe_single_form_container {
.openerp_ie ul.oe_form_status li.oe_active > .arrow span, .openerp_ie ul.oe_form_status_clickable li.oe_active > .arrow span {
background-color: #729fcf !important;
}
-.openerp_ie .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button {
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#EFEFEF', endColorstr='#D8D8D8');
-}
@media print {
.openerp {
@@ -3473,7 +3323,19 @@ body.oe_single_form .oe_single_form_container {
width: 18px;
height: 18px;
}
-
+.modal .modal-header button.close {
+ border: none;
+ background: none;
+ padding: 1px;
+ height: 18px;
+ font-size: 20px;
+}
+.modal .modal-footer {
+ text-align: left;
+}
+.modal .oe_act_window.modal-body{
+ padding: 0;
+}
input[type="radio"], input[type="checkbox"] {
margin-right: 4px;
margin-left: 4px;
diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass
index 7ebc7408127..c148d95d7b1 100644
--- a/addons/web/static/src/css/base.sass
+++ b/addons/web/static/src/css/base.sass
@@ -218,7 +218,7 @@ $sheet-padding: 16px
font-size: inherit
// }}}
// Button style {{{
- a.button:link, a.button:visited, button, .oe_button, input[type='submit'], .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button
+ a.button:link, a.button:visited, button, .oe_button, input[type='submit']
display: inline-block
border: 1px solid rgba(0,0,0,0.4)
color: #4c4c4c
@@ -233,18 +233,18 @@ $sheet-padding: 16px
-webkit-font-smoothing: antialiased
outline: none
- a.button:hover, button:hover,.oe_button:hover, input[type='submit']:hover, .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button.ui-state-hover
+ a.button:hover, button:hover,.oe_button:hover, input[type='submit']:hover
@include vertical-gradient(#f6f6f6, #e3e3e3)
cursor: pointer
background-position: 0
- a.button:focus, button:focus, .oe_button:focus, input[type='submit']:focus, .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button.ui-state-focus
+ a.button:focus, button:focus, .oe_button:focus, input[type='submit']:focus
border: 1px solid #80bfff
background-position: 0
@include vertical-gradient(#f6f6f6, #e3e3e3)
@include box-shadow((0 0 3px #80bfff, 0 1px 1px rgba(255, 255, 255, .8) inset))
- a.button:active, a.button.active, button:active, .oe_button:active, .oe_button.active, input[type='submit']:active, input[type='submit'].active, .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button.ui-state-active
+ a.button:active, a.button.active, button:active, .oe_button:active, .oe_button.active, input[type='submit']:active, input[type='submit'].active
@include vertical-gradient(#e3e3e3, #f6f6f6)
@include box-shadow(none)
@@ -272,105 +272,6 @@ $sheet-padding: 16px
.ui-tabs
position: static
- // Modal box
- &.ui-dialog
- display: none
- height: auto !important
- padding: 6px
- //overflow: hidden
- background-color: rgba(60,60,60,0.7)
- border: 1px solid
- border-color: #888 #555 #444
- //overflow: hidden
- @include radius(8px)
- @include box-shadow(0 1px 12px rgba(0, 0, 0, 0.6))
- @include background-clip()
- .ui-dialog-content
- padding: 0
- .ui-dialog-titlebar, .ui-dialog-content, .ui-dialog-buttonpane
- padding: 16px
- .ui-dialog-titlebar
- border-top: none
- border-left: none
- border-right: none
- border-bottom: 1px solid #cacaca
- @include radius(2px 2px 0 0)
- @include vertical-gradient(#FCFCFC, #DEDEDE)
- .ui-dialog-title
- margin: 0
- padding: 0
- .ui-dialog-content
- background: white
- width: auto !important
- .ui-dialog-buttonpane
- border-top: 1px solid #e0e0e0
- background: #f5f7f9
- margin: 0
- @include radius(0 0 2px 2px)
- button
- margin: 0 4px 0 0
- .ui-dialog-buttonset
- float: left
- .ui-button
- margin-right: 4px
- .ui-dialog-titlebar-close
- padding: 0
- .ui-icon-closethick
- display: none
- &:before
- content: "×"
- font-size: 18px
- font-weight: bold
- line-height: 16px
- color: black
- text-shadow: 0 1px 0 white
- padding: 0
- cursor: pointer
- background: transparent
- border: 0
- &:hover
- color: black
- text-decoration: none
- .oe_about
- background-color: white
- background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAAKUlEQVQIHWO8e/fufwYsgAUkJigoiCIF5DMyoYggcUiXgNnBiGQKmAkARpcEQeriln4AAAAASUVORK5CYII=)
- @include radius(0 0 2px 2px)
- a
- color: $link-color
- &:hover
- text-decoration: underline
- &:focus
- outline: none
- .oe_logo
- margin-left: -6px
- .oe_bottom
- position: absolute
- top: 50%
- left: 0
- right: 0
- bottom: 0
- text-shadow: 0 1px 1px #999999
- @include vertical-gradient(#b41616, #600606)
- color: #eee
- padding: 0 16px
- @include radius(0 0 2px 2px)
- a
- color: #eee
-
- &.ui-dialog.oe_act_window
- .ui-dialog-content
- padding: 0px
-
- .modal-backdrop
- position: fixed
- top: 0
- right: 0
- bottom: 0
- left: 0
- z-index: 1040
- background-color: black
- @include opacity(.3)
-
// }}}
// Generic classes {{{
.oe_i
@@ -1030,11 +931,6 @@ $sheet-padding: 16px
.oe_logo
margin-left: -6px
.oe_bottom
- position: absolute
- top: 50%
- left: 0
- right: 0
- bottom: 0
text-shadow: 0 1px 1px #999999
@include vertical-gradient(#b41616, #600606)
color: #eee
@@ -2764,9 +2660,6 @@ body.oe_single_form
> .arrow span
background-color: #729fcf !important
- // jquery ui for ie
- .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#EFEFEF', endColorstr='#D8D8D8')
// }}}
// @media print {{{
@@ -2811,6 +2704,19 @@ body.oe_single_form
height: 18px
// End hack}}}
+// Customized modal according bootstrap3
+.modal
+ .modal-header button.close
+ border: none
+ background: none
+ padding: 1px
+ height: 18px
+ font-size: 20px
+ .modal-footer
+ text-align: left
+ .oe_act_window.modal-body
+ padding: 0
+
input[type="radio"], input[type="checkbox"]
margin-right: 4px
margin-left: 4px
diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js
index de56927799e..ee88839e656 100644
--- a/addons/web/static/src/js/chrome.js
+++ b/addons/web/static/src/js/chrome.js
@@ -57,16 +57,6 @@ instance.web.action_warn = function(element, action) {
instance.web.client_actions.add("action_warn", "instance.web.action_warn");
/**
- * The very minimal function everything should call to create a dialog
- * in OpenERP Web Client.
- */
-instance.web.dialog = function(element) {
- var result = element.dialog.apply(element, _.rest(_.toArray(arguments)));
- result.dialog("widget").openerpClass();
- return result;
-};
-
-/**
A useful class to handle dialogs.
Attributes:
@@ -81,6 +71,8 @@ instance.web.Dialog = instance.web.Widget.extend({
@param {Widget} parent
@param {dictionary} options A dictionary that will be forwarded to jQueryUI Dialog. Additionaly, that
dictionary can contain the following keys:
+ - size: one of the following: 'large', 'medium', 'small'
+ - dialogClass: class to add to the body of dialog
- buttons: Deprecated. The buttons key is not propagated to jQueryUI Dialog. It must be a dictionary (key = button
label, value = click handler) or a list of dictionaries (each element in the dictionary is send to the
corresponding method of a jQuery element targeting the <button> tag). It is deprecated because all dialogs
@@ -94,57 +86,15 @@ instance.web.Dialog = instance.web.Widget.extend({
this._super(parent);
this.content_to_set = content;
this.dialog_options = {
- modal: true,
destroy_on_close: true,
- width: 900,
- min_width: 0,
- max_width: '95%',
- height: 'auto',
- min_height: 0,
- max_height: $(window.top).height() - 200,
- autoOpen: false,
- position: [false, 40],
+ size: 'large', //'medium', 'small'
buttons: null,
- resizeStop: function() {
- self.trigger("resized");
- },
};
if (options) {
_.extend(this.dialog_options, options);
}
this.on("closing", this, this._closing);
- this.$buttons = $('<div class="ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"><span class="oe_dialog_custom_buttons"/></div>');
- },
- _get_options: function() {
- var self = this;
- var o = _.extend({}, this.dialog_options);
- var sizes = {
- width: $(window.top).width(),
- height: $(window.top).height(),
- };
- _.each(sizes, function(available_size, unit) {
- o[unit] = self._get_size(o[unit], available_size);
- o['min_' + unit] = self._get_size(o['min_' + unit] || 0, available_size);
- o['max_' + unit] = self._get_size(o['max_' + unit] || 0, available_size);
- if (o[unit] !== 'auto' && o['min_' + unit] && o[unit] < o['min_' + unit]) {
- o[unit] = o['min_' + unit];
- }
- if (o[unit] !== 'auto' && o['max_' + unit] && o[unit] > o['max_' + unit]) {
- o[unit] = o['max_' + unit];
- }
- });
- o.title = o.title || this.dialog_title;
- return o;
- },
- _get_size: function(val, available_size) {
- val = val.toString();
- if (val === 'auto') {
- return val;
- } else if (val.slice(-1) === "%") {
- return Math.round(available_size / 100 * parseInt(val.slice(0, -1), 10));
- } else {
- return parseInt(val, 10);
- }
+ this.$buttons = $('<div class="modal-footer"><span class="oe_dialog_custom_buttons"/></div>');
},
renderElement: function() {
if (this.content_to_set) {
@@ -162,8 +112,7 @@ instance.web.Dialog = instance.web.Widget.extend({
if (!this.dialog_inited) {
this.init_dialog();
}
- this.$el.dialog('open');
- this.$el.dialog("widget").append(this.$buttons);
+ this.$buttons.insertAfter(this.$dialog_box.find(".modal-body"));
return this;
},
_add_buttons: function(buttons) {
@@ -188,16 +137,39 @@ instance.web.Dialog = instance.web.Widget.extend({
@return The result returned by start().
*/
init_dialog: function() {
- var options = this._get_options();
+ var self = this;
+ var options = _.extend({}, this.dialog_options);
+ options.title = options.title || this.dialog_title;
if (options.buttons) {
this._add_buttons(options.buttons);
delete(options.buttons);
}
this.renderElement();
- instance.web.dialog(this.$el, options);
- if (options.height === 'auto' && options.max_height) {
- this.$el.css({ 'max-height': options.max_height, 'overflow-y': 'auto' });
+
+ this.$dialog_box = $(QWeb.render('Dialog', options)).appendTo("body");
+ this.$el.modal({
+ 'backdrop': false,
+ 'keyboard': true,
+ });
+ if (options.size !== 'large'){
+ var dialog_class_size = this.$dialog_box.find('.modal-lg').removeClass('modal-lg')
+ if (options.size === 'small'){
+ dialog_class_size.addClass('modal-sm');
+ }
}
+
+ this.$el.appendTo(this.$dialog_box.find(".modal-body"));
+ var $dialog_content = this.$dialog_box.find('.modal-content');
+ if (options.dialogClass){
+ $dialog_content.find(".modal-body").addClass(options.dialogClass);
+ }
+ $dialog_content.openerpClass();
+
+ this.$dialog_box.on('hidden.bs.modal', this, function(){
+ self.trigger("closing");
+ });
+ this.$dialog_box.modal('show');
+
this.dialog_inited = true;
var res = this.start();
return res;
@@ -206,9 +178,8 @@ instance.web.Dialog = instance.web.Widget.extend({
Closes the popup, if destroy_on_close was passed to the constructor, it is also destroyed.
*/
close: function(reason) {
- if (this.dialog_inited && this.$el.is(":data(dialog)")) {
- this.trigger("closing", reason);
- this.$el.dialog('close');
+ if (this.dialog_inited && this.$el.is(":data(bs.modal)")) {
+ this.$el.parents('.modal').modal('hide');
}
},
_closing: function() {
@@ -233,8 +204,8 @@ instance.web.Dialog = instance.web.Widget.extend({
this.close(reason);
this.__tmp_dialog_destroying = undefined;
}
- if (this.dialog_inited && !this.isDestroyed() && this.$el.is(":data(dialog)")) {
- this.$el.dialog('destroy');
+ if (this.dialog_inited && !this.isDestroyed() && this.$el.is(":data(bs.modal)")) {
+ this.$el.parents('.modal').remove();
}
this._super();
}
@@ -272,12 +243,13 @@ instance.web.CrashManager = instance.web.Class.extend({
if (error.data.exception_type === "except_osv") {
error = _.extend({}, error, {data: _.extend({}, error.data, {message: error.data.arguments[0] + "\n\n" + error.data.arguments[1]})});
}
- instance.web.dialog($('<div>' + QWeb.render('CrashManager.warning', {error: error}) + '</div>'), {
+ new instance.web.Dialog(this, {
+ size: 'medium',
title: "OpenERP " + (_.str.capitalize(error.type) || "Warning"),
buttons: [
- {text: _t("Ok"), click: function() { $(this).dialog("close"); }}
- ]
- });
+ {text: _t("Ok"), click: function() { this.parents('.modal').modal('hide'); }}
+ ],
+ }, $('<div>' + QWeb.render('CrashManager.warning', {error: error}) + '</div>')).open();
},
show_error: function(error) {
if (!this.active) {
@@ -285,17 +257,12 @@ instance.web.CrashManager = instance.web.Class.extend({
}
var buttons = {};
buttons[_t("Ok")] = function() {
- $(this).dialog("close");
+ this.parents('.modal').modal('hide');
};
- var dialog = new instance.web.Dialog(this, {
+ new instance.web.Dialog(this, {
title: "OpenERP " + _.str.capitalize(error.type),
- width: '80%',
- height: '50%',
- min_width: '800px',
- min_height: '600px',
buttons: buttons
- }).open();
- dialog.$el.html(QWeb.render('CrashManager.error', {session: instance.session, error: error}));
+ }, QWeb.render('CrashManager.error', {session: instance.session, error: error})).open();
},
show_message: function(exception) {
this.show_error({
@@ -342,16 +309,17 @@ instance.web.RedirectWarningHandler = instance.web.Dialog.extend(instance.web.Ex
error = this.error;
error.data.message = error.data.arguments[0];
- instance.web.dialog($('<div>' + QWeb.render('CrashManager.warning', {error: error}) + '</div>'), {
+ new instance.web.Dialog(this, {
+ size: 'medium',
title: "OpenERP " + (_.str.capitalize(error.type) || "Warning"),
buttons: [
- {text: _t("Ok"), click: function() { $(this).dialog("close"); }},
+ {text: _t("Ok"), click: function() { this.$el.parents('.modal').modal('hide'); }},
{text: error.data.arguments[2], click: function() {
window.location.href='#action='+error.data.arguments[1];
- $(this).dialog("close");
+ this.$el.parents('.modal').modal('hide');
}}
- ]
- });
+ ],
+ }, QWeb.render('CrashManager.warning', {error: error})).open();
this.destroy();
}
});
@@ -498,13 +466,13 @@ instance.web.DatabaseManager = instance.web.Widget.extend({
* @param {String} error.error message of the error dialog
*/
display_error: function (error) {
- return instance.web.dialog($('<div>'), {
- modal: true,
+ return new instance.web.Dialog(this, {
+ size: 'medium',
title: error.title,
buttons: [
- {text: _t("Ok"), click: function() { $(this).dialog("close"); }}
+ {text: _t("Ok"), click: function() { this.$el.parents('.modal').modal('hide'); }}
]
- }).html(error.error);
+ }, $('<div>').html(error.error)).open();
},
do_create: function(form) {
var self = this;
@@ -731,13 +699,13 @@ instance.web.ChangePassword = instance.web.Widget.extend({
});
},
display_error: function (error) {
- return instance.web.dialog($('<div>'), {
- modal: true,
+ return new instance.web.Dialog(this, {
+ size: 'medium',
title: error.title,
buttons: [
- {text: _t("Ok"), click: function() { $(this).dialog("close"); }}
+ {text: _t("Ok"), click: function() { this.$el.parents('.modal').modal('hide'); }}
]
- }).html(error.error);
+ }, $('<div>').html(error.error)).open();
},
});
instance.web.client_actions.add("change_password", "instance.web.ChangePassword");
@@ -1052,8 +1020,11 @@ instance.web.UserMenu = instance.web.Widget.extend({
e.preventDefault();
window.location = $.param.querystring( window.location.href, 'debug');
});
- instance.web.dialog($help, {autoOpen: true,
- modal: true, width: 507, height: 290, resizable: false, title: _t("About")});
+ new instance.web.Dialog(this, {
+ size: 'medium',
+ dialogClass: 'oe_act_window',
+ title: _t("About"),
+ }, $help).open();
});
},
});
diff --git a/addons/web/static/src/js/data_export.js b/addons/web/static/src/js/data_export.js
index 252a5a378cc..2de933f45e8 100644
--- a/addons/web/static/src/js/data_export.js
+++ b/addons/web/static/src/js/data_export.js
@@ -46,7 +46,6 @@ instance.web.DataExport = instance.web.Dialog.extend({
start: function() {
var self = this;
this._super.apply(this, arguments);
- self.$el.removeClass('ui-dialog-content ui-widget-content');
var got_fields = new $.Deferred();
this.$el.find('#import_compat').change(function() {
@@ -413,7 +412,6 @@ instance.web.DataExport = instance.web.Dialog.extend({
});
},
close: function() {
- this.$el.remove();
this._super();
}
});
diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js
index 37c60a36f04..83745133a3b 100644
--- a/addons/web/static/src/js/view_form.js
+++ b/addons/web/static/src/js/view_form.js
@@ -586,13 +586,13 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
this._internal_set_values(result.value, processed);
}
if (!_.isEmpty(result.warning)) {
- instance.web.dialog($(QWeb.render("CrashManager.warning", result.warning)), {
+ new instance.web.Dialog(this, {
+ size: 'medium',
title:result.warning.title,
- modal: true,
buttons: [
- {text: _t("Ok"), click: function() { $(this).dialog("close"); }}
+ {text: _t("Ok"), click: function() { this.parents('.modal').modal('hide'); }}
]
- });
+ }, QWeb.render("CrashManager.warning", result.warning)).open();
}
return $.Deferred().resolve();
@@ -1080,7 +1080,6 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
};
})
.value();
-
var d = new instance.web.Dialog(this, {
title: _t("Set Default"),
args: {
@@ -1956,26 +1955,23 @@ instance.web.form.WidgetButton = instance.web.form.FormWidget.extend({
var exec_action = function() {
if (self.node.attrs.confirm) {
var def = $.Deferred();
- var dialog = instance.web.dialog($('<div/>').text(self.node.attrs.confirm), {
+ var dialog = instance.web.Dialog(this, {
title: _t('Confirm'),
- modal: true,
buttons: [
{text: _t("Cancel"), click: function() {
- $(this).dialog("close");
+ this.parents('.modal').modal('hide');
}
},
{text: _t("Ok"), click: function() {
var self2 = this;
self.on_confirmed().always(function() {
- $(self2).dialog("close");
+ self2.parents('.modal').modal('hide');
});
}
}
],
- beforeClose: function() {
- def.resolve();
- },
- });
+ }, $('<div/>').text(self.node.attrs.confirm)).open();
+ dialog.on("closing", null, function() {def.resolve();});
return def.promise();
} else {
return self.on_confirmed();
@@ -3234,7 +3230,7 @@ instance.web.form.M2ODialog = instance.web.Dialog.extend({
init: function(parent) {
this._super(parent, {
title: _.str.sprintf(_t("Add %s"), parent.string),
- width: 312,
+ size: 'medium',
});
},
start: function() {
@@ -3302,7 +3298,7 @@ instance.web.form.FieldMany2One = instance.web.form.AbstractField.extend(instanc
delete this.$drop_down;
}
if (this.$input) {
- this.$input.closest(".ui-dialog .ui-dialog-content").off('scroll');
+ this.$input.closest(".modal .modal-content").off('scroll');
this.$input.off('keyup blur autocompleteclose autocompleteopen ' +
'focus focusout change keydown');
delete this.$input;
@@ -3395,7 +3391,7 @@ instance.web.form.FieldMany2One = instance.web.form.AbstractField.extend(instanc
self.$input.autocomplete("close");
}
}, 50);
- this.$input.closest(".ui-dialog .ui-dialog-content").on('scroll', this, close_autocomplete);
+ this.$input.closest(".modal .modal-content").on('scroll', this, close_autocomplete);
self.ed_def = $.Deferred();
self.uned_def = $.Deferred();
@@ -4921,13 +4917,12 @@ instance.web.form.AbstractFormPopup = instance.web.Widget.extend({
var self = this;
this.renderElement();
var dialog = new instance.web.Dialog(this, {
- min_width: '800px',
dialogClass: 'oe_act_window',
- close: function() {
- self.check_exit(true);
- },
title: this.options.title || "",
}, this.$el).open();
+ dialog.on('closing', this, function (e){
+ self.check_exit(true);
+ });
this.$buttonpane = dialog.$buttons;
this.start();
},
@@ -4994,8 +4989,8 @@ instance.web.form.AbstractFormPopup = instance.web.Widget.extend({
},
destroy: function () {
this.trigger('closed');
- if (this.$el.is(":data(dialog)")) {
- this.$el.dialog('close');
+ if (this.$el.is(":data(bs.modal)")) {
+ this.$el.parents('.modal').modal('hide');
}
this._super();
},
diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js
index 2f401445f7e..dc9f706d40e 100644
--- a/addons/web/static/src/js/views.js
+++ b/addons/web/static/src/js/views.js
@@ -410,10 +410,10 @@ instance.web.ActionManager = instance.web.Widget.extend({
}
this.dialog_stop(executor.action);
this.dialog = new instance.web.Dialog(this, {
+ title: executor.action.name,
dialogClass: executor.klass,
});
this.dialog.on("closing", null, options.on_close);
- this.dialog.dialog_title = executor.action.name;
if (widget instanceof instance.web.ViewManager) {
_.extend(widget.flags, {
$buttons: this.dialog.$buttons,
@@ -926,7 +926,7 @@ instance.web.ViewManagerAction = instance.web.ViewManager.extend({
current_view = this.views[this.active_view].controller;
switch (val) {
case 'fvg':
- var dialog = new instance.web.Dialog(this, { title: _t("Fields View Get"), width: '95%' }).open();
+ var dialog = new instance.web.Dialog(this, { title: _t("Fields View Get") }).open();
$('<pre>').text(instance.web.json_node_to_xml(current_view.fields_view.arch, true)).appendTo(dialog.$el);
break;
case 'tests':
@@ -943,7 +943,7 @@ instance.web.ViewManagerAction = instance.web.ViewManager.extend({
this.dataset.call('perm_read', [ids]).done(function(result) {
var dialog = new instance.web.Dialog(this, {
title: _.str.sprintf(_t("View Log (%s)"), self.dataset.model),
- width: 400
+ size: 'medium',
}, QWeb.render('ViewManagerDebugViewLog', {
perm : result[0],
format : instance.web.format_value
@@ -986,7 +986,7 @@ instance.web.ViewManagerAction = instance.web.ViewManager.extend({
new instance.web.Dialog(self, {
title: _.str.sprintf(_t("Model %s fields"),
self.dataset.model),
- width: '95%'}, $root).open();
+ }, $root).open();
});
break;
case 'edit_workflow':
@@ -1223,7 +1223,7 @@ instance.web.Sidebar = instance.web.Widget.extend({
domain = $.Deferred().resolve(undefined);
}
if (ids.length === 0) {
- instance.web.dialog($("<div />").text(_t("You must choose at least one record.")), { title: _t("Warning"), modal: true });
+ new instance.web.Dialog(this, { title: _t("Warning"), size: 'medium',}, $("<div />").text(_t("You must choose at least one record."))).open();
return false;
}
var active_ids_context = {
diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml
index 12827157c24..b03fc8fc168 100644
--- a/addons/web/static/src/xml/base.xml
+++ b/addons/web/static/src/xml/base.xml
@@ -32,7 +32,20 @@
<t t-esc="message"/>
</div>
</t>
-
+<t t-name="Dialog">
+ <div class="modal" tabindex="-1" data-backdrop="static" role="dialog" aria-hidden="true">
+ <div class="modal-dialog modal-lg">
+ <div class="modal-content">
+ <div class="modal-header">
+ <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
+ <h3 class="modal-title"><t t-raw="title"/></h3>
+ </div>
+ <div class="modal-body">
+ </div>
+ </div>
+ </div>
+ </div>
+</t>
<t t-name="CrashManager.warning">
<table cellspacing="0" cellpadding="0" border="0" class="oe_dialog_warning">
<tr>