diff options
| author | Christophe Simonis <chs@odoo.com> | 2015-01-06 11:49:04 +0100 |
|---|---|---|
| committer | Christophe Simonis <chs@odoo.com> | 2015-01-06 11:49:04 +0100 |
| commit | fab4d6d442ebbf081ead7e747f04b61e01ae9db2 (patch) | |
| tree | 3dd9aad0f429f4229e500db503bbf8b7155f9c38 /addons/web/static | |
| parent | 7fea986fd9f6f3ce1cc6c015a2523fdd23cf814d (diff) | |
| parent | ea54d4af9f75e518c5871213a668a9f516e56830 (diff) | |
[MERGE] forward port of branch 8.0 up to ea54d4a
Diffstat (limited to 'addons/web/static')
| -rw-r--r-- | addons/web/static/lib/fontawesome/css/font-awesome.css | 1 | ||||
| -rw-r--r-- | addons/web/static/src/css/base.css | 17 | ||||
| -rw-r--r-- | addons/web/static/src/css/base.sass | 15 | ||||
| -rw-r--r-- | addons/web/static/src/js/tour.js | 14 | ||||
| -rw-r--r-- | addons/web/static/src/js/view_form.js | 100 | ||||
| -rw-r--r-- | addons/web/static/src/js/view_list.js | 12 | ||||
| -rw-r--r-- | addons/web/static/src/xml/base.xml | 2 |
7 files changed, 109 insertions, 52 deletions
diff --git a/addons/web/static/lib/fontawesome/css/font-awesome.css b/addons/web/static/lib/fontawesome/css/font-awesome.css index 4040b3cf859..dbaac90cc0b 100644 --- a/addons/web/static/lib/fontawesome/css/font-awesome.css +++ b/addons/web/static/lib/fontawesome/css/font-awesome.css @@ -13,6 +13,7 @@ } .fa { display: inline-block; + font-family: FontAwesome !important; font: normal normal normal 14px/1 FontAwesome; font-size: inherit; text-rendering: auto; diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 5b9afb52df4..52c5a73ecd1 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -41,6 +41,10 @@ margin-right: 0px !important; } +.apps-client { + border: 0; +} + .oe_notification { z-index: 1600; } @@ -2846,6 +2850,7 @@ div.ui-widget-overlay { } .ui-menu .ui-menu-item a { padding: 1px 16px; + color: #404040; } .ui-menu .ui-menu-item a.ui-corner-all { -moz-border-radius: 0; @@ -3033,11 +3038,23 @@ body.oe_single_form .oe_single_form_container { } @media print { + body { + height: auto !important; + } + + .openerp#announcement_bar_table { + display: none; + } + .openerp { text-shadow: none; } + .openerp .oe_application, .openerp .oe_view_manager_wrapper { + height: auto !important; + } .openerp .oe_application > div > .oe_view_manager > .oe_view_manager_wrapper > div > .oe_view_manager_body { overflow: visible; + position: relative !important; } .openerp .oe_header_row, .openerp ul.oe_header, .openerp div.oe_mail_thread_action, .openerp .oe_mail_recthread_actions, .openerp .oe_button_box, .openerp .oe_form button, .openerp button.oe_invite, .openerp .oe_form header, .openerp .openerp .oe_notebook > li.ui-state-default, .openerp .oe_topbar, .openerp .oe_leftbar, .openerp .oe_loading { display: none !important; diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index d19d0e0a177..740c0b6c01e 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -161,6 +161,9 @@ $sheet-padding: 16px .oe_systray margin-right: 0px !important +.apps-client + border: 0 + // Notifications {{{ .oe_notification z-index: 1600 @@ -198,7 +201,7 @@ $sheet-padding: 16px font-size: 13px background: white &.openerp_webclient_container - height: 95% + height: 95% // fallback for browsers without support for calc() height: -webkit-calc(100% - 34px) height: calc(100% - 34px) display: -ms-flexbox @@ -206,7 +209,7 @@ $sheet-padding: 16px display: flex @media (max-width: 768px) &.openerp_webclient_container - height: 95% + height: 95% // fallback for browsers without support for calc() height: -webkit-calc(100% - 52px) height: calc(100% - 52px) // }}} @@ -2339,6 +2342,7 @@ div.ui-widget-overlay padding: 0 a padding: 1px 16px + color: #404040 a.ui-corner-all @include radius(0) a.ui-state-active @@ -2504,9 +2508,16 @@ body.oe_single_form // @media print {{{ @media print + body + height: auto !important + .openerp#announcement_bar_table + display: none .openerp + .oe_application, .oe_view_manager_wrapper + height: auto !important .oe_application > div > .oe_view_manager > .oe_view_manager_wrapper > div > .oe_view_manager_body overflow: visible + position: relative !important .oe_header_row, ul.oe_header, div.oe_mail_thread_action, .oe_mail_recthread_actions, .oe_button_box, .oe_form button, button.oe_invite, .oe_form header, .openerp .oe_notebook > li.ui-state-default, .oe_topbar, .oe_leftbar, .oe_loading // We use !important here because jQuery adds @style = display: block on elements when using $.fn.show() display: none !important diff --git a/addons/web/static/src/js/tour.js b/addons/web/static/src/js/tour.js index 08738ac019e..c42dc439c82 100644 --- a/addons/web/static/src/js/tour.js +++ b/addons/web/static/src/js/tour.js @@ -256,12 +256,20 @@ var Tour = { }, repositionPopover: function() { var popover = Tour.$element.data("bs.popover"); - var $tip = Tour.$element.data("bs.popover").tip(); + var $tip = popover.tip(); if (popover.options.orphan) { return $tip.css("top", $(window).outerHeight() / 2 - $tip.outerHeight() / 2); } + if (Tour.$element.parents("div").filter(function(){ return getComputedStyle(this).position === 'fixed'; }).length) { + var pos = popover.getPosition(); + var top = pos.top; + if (popover.options.placement === "top") top -= $tip.height(); + if (popover.options.placement === "bottom") top += pos.height; + $tip.css({'top': top+'px'}); + } + var offsetBottom, offsetHeight, offsetRight, offsetWidth, originalLeft, originalTop, tipOffset; offsetWidth = $tip[0].offsetWidth; offsetHeight = $tip[0].offsetHeight; @@ -285,10 +293,10 @@ var Tour = { $tip.offset(tipOffset); if (popover.options.placement === "bottom" || popover.options.placement === "top") { var left = Tour.$element.offset().left + Tour.$element.outerWidth()/2 - tipOffset.left; - $tip.find(".arrow").css("left", left ? left + "px" : ""); + popover.arrow().css("left", left ? left + "px" : ""); } else if (popover.options.placement !== "auto") { var top = Tour.$element.offset().top + Tour.$element.outerHeight()/2 - tipOffset.top; - $tip.find(".arrow").css("top", top ? top + "px" : ""); + popover.arrow().css("top", top ? top + "px" : ""); } }, _load_template: false, diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 933b662d3ff..b004fef331f 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -510,38 +510,47 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM } this.onchanges_mutex.exec(function(){ return def.then(function(response) { - if (widget && widget.field['change_default']) { - var fieldname = widget.name; - var value_; - if (response.value && (fieldname in response.value)) { - // Use value from onchange if onchange executed - value_ = response.value[fieldname]; - } else { - // otherwise get form value for field - value_ = self.fields[fieldname].get_value(); - } - var condition = fieldname + '=' + value_; - - if (value_) { - return self.alive(new instance.web.Model('ir.values').call( - 'get_defaults', [self.model, condition] - )).then(function (results) { - if (!results.length) { + var fields = {}; + if (widget){ + fields[widget.name] = widget.field; + } + else{ + fields = self.fields_view.fields; + } + var defs = []; + _.each(fields, function(field, fieldname){ + if (field && field.change_default) { + var value_; + if (response.value && (fieldname in response.value)) { + // Use value from onchange if onchange executed + value_ = response.value[fieldname]; + } else { + // otherwise get form value for field + value_ = self.fields[fieldname].get_value(); + } + var condition = fieldname + '=' + value_; + + if (value_) { + defs.push(self.alive(new instance.web.Model('ir.values').call( + 'get_defaults', [self.model, condition] + )).then(function (results) { + if (!results.length) { + return response; + } + if (!response.value) { + response.value = {}; + } + for(var i=0; i<results.length; ++i) { + // [whatever, key, value] + var triplet = results[i]; + response.value[triplet[1]] = triplet[2]; + } return response; - } - if (!response.value) { - response.value = {}; - } - for(var i=0; i<results.length; ++i) { - // [whatever, key, value] - var triplet = results[i]; - response.value[triplet[1]] = triplet[2]; - } - return response; - }); + })); + } } - } - return response; + }); + return _.isEmpty(defs) ? response : $.when.apply(null, defs); }).then(function(response) { return self.on_processed_onchange(response); }); @@ -1151,7 +1160,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM }, build_eval_context: function() { var a_dataset = this.dataset; - return new instance.web.CompoundContext(a_dataset.get_context(), this._build_view_fields_values()); + return new instance.web.CompoundContext(this._build_view_fields_values(), a_dataset.get_context()); }, }); @@ -3244,9 +3253,7 @@ instance.web.form.FieldRadio = instance.web.form.AbstractField.extend(instance.w click_change_value: function (event) { var val = $(event.target).val(); val = this.field.type == "selection" ? val : +val; - if (val == this.get_value()) { - this.set_value(false); - } else { + if (val !== this.get_value()) { this.set_value(val); } }, @@ -3762,7 +3769,14 @@ instance.web.form.FieldMany2One = instance.web.form.AbstractField.extend(instanc // disabled to solve a bug, but may cause others //close: anyoneLoosesFocus, minLength: 0, - delay: 250 + delay: 250, + }); + var appendTo = this.$el.parents('.oe_view_manager_body, .modal-dialog').last(); + if (appendTo.length === 0){ + appendTo = '.oe_application > *'; + } + this.$input.autocomplete({ + appendTo: appendTo }); // set position for list of suggestions box this.$input.autocomplete( "option", "position", { my : "left top", at: "left bottom" } ); @@ -4069,16 +4083,18 @@ instance.web.form.FieldOne2Many = instance.web.form.AbstractField.extend({ var self = this; self.load_views(); - this.is_loaded.done(function() { - self.on("change:effective_readonly", self, function() { - self.is_loaded = self.is_loaded.then(function() { - self.viewmanager.destroy(); - return $.when(self.load_views()).done(function() { - self.reload_current_view(); - }); + var destroy = function() { + self.is_loaded = self.is_loaded.then(function() { + self.viewmanager.destroy(); + return $.when(self.load_views()).done(function() { + self.reload_current_view(); }); }); + }; + this.is_loaded.done(function() { + self.on("change:effective_readonly", self, destroy); }); + this.view.on("on_button_cancel", self, destroy); this.is_started = true; this.reload_current_view(); }, diff --git a/addons/web/static/src/js/view_list.js b/addons/web/static/src/js/view_list.js index 97b3fde17bd..08d7d6f9da6 100644 --- a/addons/web/static/src/js/view_list.js +++ b/addons/web/static/src/js/view_list.js @@ -1537,9 +1537,11 @@ instance.web.ListView.Groups = instance.web.Class.extend( /** @lends instance.we }); }, setup_resequence_rows: function (list, dataset) { - // drag and drop enabled if list is not sorted and there is a - // visible column with @widget=handle or "sequence" column in the view. - if ((dataset.sort && dataset.sort()) + // drag and drop enabled if list is not sorted (unless it is sorted by + // sequence (ASC)), and there is a visible column with @widget=handle + // or "sequence" column in the view. + if ((dataset.sort && dataset.sort() && dataset.sort() !== 'sequence' + && dataset.sort() !== 'sequence ASC') || !_(this.columns).any(function (column) { return column.widget === 'handle' || column.name === 'sequence'; })) { @@ -1611,7 +1613,9 @@ instance.web.ListView.Groups = instance.web.Class.extend( /** @lends instance.we .filter(function (column) { return column.tag === 'field';}) .pluck('name').value(), function (groups) { - self.view.$pager.hide(); + // page count is irrelevant on grouped page, replace by limit + self.view.$pager.find('.oe_pager_group').hide(); + self.view.$pager.find('.oe_list_pager_state').text(self.view._limit ? self.view._limit : '∞'); $el[0].appendChild( self.render_groups(groups)); if (post_render) { post_render(); } diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 8dd6aeb34c4..0bface3a4d4 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -84,7 +84,7 @@ </p> <p class="oe_grey" style="margin: 10px"> By default, the master password is 'admin'. This password - is required to created, delete dump or restore databases. + is required to create, delete, dump or restore databases. </p> <table class="db_option_table" style="margin: 10px"> <tr> |
