diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index 412ea9abda2..7f9710f8aa6 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -258,8 +258,7 @@ class WebClient(openerpweb.Controller): file_map = dict(files) rx_import = re.compile(r"""@import\s+('|")(?!'|"|/|https?://)""", re.U) - rx_url = re.compile(r"""url\s*\(\s*('|"|)(?!'|"|/|https?://)""", re.U) - + rx_url = re.compile(r"""url\s*\(\s*('|"|)(?!'|"|/|https?://|data:)""", re.U) def reader(f): """read the a css file and absolutify all relative uris""" @@ -1494,10 +1493,6 @@ class Binary(openerpweb.Controller): class Action(openerpweb.Controller): _cp_path = "/web/action" - - action_mapping = { - "ir.actions.act_url": "ir.actions.url", - } # For most actions, the type attribute and the model name are the same, but # there are exceptions. This dict is used to remap action type attributes @@ -1511,6 +1506,17 @@ class Action(openerpweb.Controller): Actions = req.session.model('ir.actions.actions') value = False context = req.session.eval_context(req.context) + + try: + action_id = int(action_id) + except ValueError: + try: + module, xmlid = action_id.split('.', 1) + model, action_id = req.session.model('ir.model.data').get_object_reference(module, xmlid) + assert model.startswith('ir.actions.') + except Exception: + action_id = 0 # force failed read + base_action = Actions.read([action_id], ['type'], context) if base_action: ctx = {} diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 466faec219a..f97bd83cdd0 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -1,4 +1,4 @@ -@charset "UTF-8"; +@charset "utf-8"; @font-face { font-family: "mnmliconsRegular"; src: url("/web/static/src/font/mnmliconsv21-webfont.eot") format("eot"); @@ -34,7 +34,7 @@ background: white; /* http://www.quirksmode.org/dom/inputfile.html * http://stackoverflow.com/questions/2855589/replace-input-type-file-by-an-image - */ + */ */ } .openerp a { text-decoration: none; @@ -202,6 +202,9 @@ -moz-background-clip: padding-box; background-clip: padding-box; } +.openerp.ui-dialog .ui-dialog-content { + padding: 0px; +} .openerp.ui-dialog .ui-dialog-titlebar, .openerp.ui-dialog .ui-dialog-content, .openerp.ui-dialog .ui-dialog-buttonpane { padding: 16px; } @@ -265,6 +268,9 @@ color: black; text-decoration: none; } +.openerp.ui-dialog.oe_act_window .ui-dialog-content { + padding: 0px; +} .openerp .modal-backdrop { position: fixed; top: 0; @@ -447,27 +453,24 @@ .openerp .oe_webclient .oe_star_on { color: gold; } -.openerp .oe_tags .text-wrap { - width: 100% !important; -} -.openerp .oe_tags .text-wrap textarea { - width: 100% !important; -} -.openerp .oe_tags .oe_tag { +.openerp .oe_tag { border-radius: 2px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; - position: relative; - float: left; border: 1px solid #9daccc; background: #e2e6f0; - color: black; + color: black !important; padding: 0px 3px 0px 3px; margin: 0 2px 2px 0; height: 16px; - font: 11px "lucida grande", tahoma, verdana, arial, sans-serif; +} +.openerp .oe_tags .text-wrap { + width: 100% !important; +} +.openerp .oe_tags .text-wrap textarea { + width: 100% !important; } .openerp .oe_tags .text-core .text-wrap .text-dropdown .text-list .text-suggestion em { font-style: italic; @@ -1159,63 +1162,63 @@ .openerp .oe_view_manager .oe_view_manager_view_kanban { height: inherit; } -.openerp .oe_view_manager .oe_view_manager_header { +.openerp .oe_view_manager table.oe_view_manager_header { width: 100%; + table-layout: fixed; } -.openerp .oe_view_manager .oe_view_manager_header .oe_header_row { +.openerp .oe_view_manager table.oe_view_manager_header .oe_header_row { clear: both; text-shadow: 0 1px 1px white; } -.openerp .oe_view_manager .oe_view_manager_header .oe_header_row:last-child td { +.openerp .oe_view_manager table.oe_view_manager_header .oe_header_row:last-child td { padding-top: 0; } -.openerp .oe_view_manager .oe_view_manager_header .oe_view_manager_sidebar { +.openerp .oe_view_manager table.oe_view_manager_header .oe_view_manager_sidebar { margin: 0px auto; - width: 400px; text-align: center; } -.openerp .oe_view_manager .oe_view_manager_header td { +.openerp .oe_view_manager table.oe_view_manager_header td { line-height: 26px; } -.openerp .oe_view_manager .oe_view_manager_header h2 { +.openerp .oe_view_manager table.oe_view_manager_header h2 { font-size: 18px; margin: 0; float: left; } -.openerp .oe_view_manager .oe_view_manager_header h2 a { +.openerp .oe_view_manager table.oe_view_manager_header h2 a { color: #8a89ba; } -.openerp .oe_view_manager .oe_view_manager_header .oe_button_group { +.openerp .oe_view_manager table.oe_view_manager_header .oe_button_group { display: inline-block; border: 1px solid #ababab; -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; } -.openerp .oe_view_manager .oe_view_manager_header .oe_button_group li { +.openerp .oe_view_manager table.oe_view_manager_header .oe_button_group li { float: left; border-right: 1px solid #ababab; } -.openerp .oe_view_manager .oe_view_manager_header .oe_button_group li:last-child { +.openerp .oe_view_manager table.oe_view_manager_header .oe_button_group li:last-child { border: none; } -.openerp .oe_view_manager .oe_view_manager_header .oe_button_group a { +.openerp .oe_view_manager table.oe_view_manager_header .oe_button_group a { color: #4c4c4c; } -.openerp .oe_view_manager .oe_view_manager_header .oe_button_group a:hover { +.openerp .oe_view_manager table.oe_view_manager_header .oe_button_group a:hover { text-decoration: none; } -.openerp .oe_view_manager .oe_view_manager_header .oe_button_group .active { +.openerp .oe_view_manager table.oe_view_manager_header .oe_button_group .active { background: #999999; -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3) inset; -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3) inset; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3) inset; } -.openerp .oe_view_manager .oe_view_manager_header .oe_button_group .active a { +.openerp .oe_view_manager table.oe_view_manager_header .oe_button_group .active a { color: white; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.4); } -.openerp .oe_view_manager .oe_view_manager_header .oe_view_manager_buttons { +.openerp .oe_view_manager table.oe_view_manager_header .oe_view_manager_buttons { white-space: nowrap; } .openerp .oe_view_manager .oe_view_manager_pager { @@ -1342,7 +1345,7 @@ float: right; padding: 1px 0; line-height: 18px; - width: 480px; + width: 400px; border: 1px solid #ababab; background: white; -moz-border-radius: 13px; @@ -1763,9 +1766,13 @@ .openerp .oe_form_readonly .oe_form .oe_form_field_date { width: auto; } +.openerp .oe_form_nosheet { + margin: 20px; +} .openerp .oe_form_nosheet > header { - margin-left: -10px; - margin-right: -10px; + margin-top: -20px; + margin-left: -20px; + margin-right: -20px; } .openerp .oe_form header { position: relative; @@ -1837,6 +1844,7 @@ border-right: none; } .openerp .oe_form .oe_subtotal_footer .oe_subtotal_footer_separator { + width: 108px; border-top: 1px solid #cacaca; font-weight: bold; font-size: 18px; @@ -1889,8 +1897,8 @@ width: 100%; margin: 4px 0 4px 0; } -.openerp .oe_form .oe_form_group .oe_group_right > tbody > tr > td:first-child { - padding-left: 18px; +.openerp .oe_form .oe_form_group .oe_form_group_cell.oe_group_right { + padding-left: 20px; } .openerp .oe_form .oe_form_label_help[for], .openerp .oe_form .oe_form_label[for] { font-weight: bold; @@ -1960,15 +1968,6 @@ .openerp .oe_form .oe_form_field_text.oe_inline, .openerp .oe_form .oe_form_field_text.oe_inline > textarea { width: 500px; } -.openerp .oe_form .oe_form_field_float input { - width: 100px; -} -.openerp .oe_form h1 .oe_form_field_float input { - width: 140px; -} -.openerp .oe_form h2 .oe_form_field_float input { - width: 120px; -} .openerp .oe_form h1, .openerp .oe_form h2, .openerp .oe_form h3, .openerp .oe_form h4, .openerp .oe_form h5, .openerp .oe_form h6 { margin: 0 0 4px 0; } @@ -1985,18 +1984,6 @@ .openerp .oe_form .oe_form_field input { margin: 0px; } -.openerp .oe_form .oe_form_field_integer { - width: 180px; -} -.openerp .oe_form .oe_form_field_float { - width: 112px; -} -.openerp .oe_form .oe_form_field_date { - width: 7.5em; -} -.openerp .oe_form .oe_form_field_datetime { - width: 11em; -} .openerp .oe_form input[type="text"], .openerp .oe_form input[type="password"], .openerp .oe_form input[type="file"], .openerp .oe_form select { height: 22px; padding-top: 2px; @@ -2089,6 +2076,18 @@ position: relative; overflow: hidden; } +.openerp .oe_form_editable .oe_form .oe_form_field_integer { + width: 7em !important; +} +.openerp .oe_form_editable .oe_form .oe_form_field_float { + width: 8em !important; +} +.openerp .oe_form_editable .oe_form .oe_form_field_date { + width: 7.5em !important; +} +.openerp .oe_form_editable .oe_form .oe_form_field_datetime { + width: 11.5em !important; +} .openerp .oe_hidden_input_file { overflow: hidden; position: relative; @@ -2146,33 +2145,33 @@ .openerp .oe_form .oe_form_field_one2many > .oe_view_manager .oe_list_pager_single_page { display: none; } -.openerp .oe_form_field_one2many .oe_list_content > thead { +.openerp .oe_form_field_one2many .oe_list_content > thead, .openerp .oe_form_field_many2many .oe_list_content > thead { border-bottom: 1px; } -.openerp .oe_form_field_one2many .oe_list_content > tbody tr:nth-child(odd) { +.openerp .oe_form_field_one2many .oe_list_content > tbody tr:nth-child(odd), .openerp .oe_form_field_many2many .oe_list_content > tbody tr:nth-child(odd) { background: transparent; } -.openerp .oe_form_field_one2many .oe_list .oe_list_edit_row_save { +.openerp .oe_form_field_one2many .oe_list .oe_list_edit_row_save, .openerp .oe_form_field_many2many .oe_list .oe_list_edit_row_save { background: url(/web/static/src/img/iconset-b-remove.png) 50% 50% no-repeat; } -.openerp .oe_form_field_one2many .oe_list .oe_list_edit_row_save:before { +.openerp .oe_form_field_one2many .oe_list .oe_list_edit_row_save:before, .openerp .oe_form_field_many2many .oe_list .oe_list_edit_row_save:before { visibility: hidden; } -.openerp .oe_form_field_one2many > .oe_view_manager .oe_header_row_top { +.openerp .oe_form_field_one2many > .oe_view_manager .oe_header_row_top, .openerp .oe_form_field_many2many > .oe_view_manager .oe_header_row_top { display: none; } -.openerp .oe_form_field_one2many > .oe_view_manager .oe_view_manager_header2 td { +.openerp .oe_form_field_one2many > .oe_view_manager .oe_view_manager_header2 td, .openerp .oe_form_field_many2many > .oe_view_manager .oe_view_manager_header2 td { padding: 0px 8px; line-height: 16px; } -.openerp .oe_form_field_one2many > .oe_view_manager .oe_view_manager_header2 td .oe_i { +.openerp .oe_form_field_one2many > .oe_view_manager .oe_view_manager_header2 td .oe_i, .openerp .oe_form_field_many2many > .oe_view_manager .oe_view_manager_header2 td .oe_i { font-size: 13px; } -.openerp .oe_form_field_one2many > .oe_view_manager .oe_view_manager_header2 td .oe_pager_group { +.openerp .oe_form_field_one2many > .oe_view_manager .oe_view_manager_header2 td .oe_pager_group, .openerp .oe_form_field_many2many > .oe_view_manager .oe_view_manager_header2 td .oe_pager_group { height: auto; line-height: 16px; } -.openerp .oe_form_field_one2many > .oe_view_manager .oe_view_manager_header2 td .oe_pager_group li { +.openerp .oe_form_field_one2many > .oe_view_manager .oe_view_manager_header2 td .oe_pager_group li, .openerp .oe_form_field_many2many > .oe_view_manager .oe_view_manager_header2 td .oe_pager_group li { height: auto; line-height: 16px; } @@ -2233,6 +2232,9 @@ .openerp .oe_list_content > tbody > tr > td.oe_list_field_cell { padding: 3px 6px; } +.openerp .oe_list_content > tbody > tr > td.oe_list_field_cell progress { + width: 100%; +} .openerp .oe_list_content > tbody > tr > td, .openerp .oe_list_content > tbody > tr > th { line-height: 18px; } @@ -2252,7 +2254,7 @@ } .openerp .oe_list_content > tbody > tr > td.oe_number { text-align: right !important; - width: 100px; + max-width: 100px; } .openerp .oe_list_content > tbody > tr:nth-child(odd) { background-color: #f0f0fa; diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index ea052495911..23cce1e9c9e 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -214,6 +214,8 @@ $sheet-max-width: 860px @include radius(8px) @include box-shadow(0 1px 12px rgba(0, 0, 0, 0.6)) @include background-clip() + .ui-dialog-content + padding: 0px .ui-dialog-titlebar, .ui-dialog-content, .ui-dialog-buttonpane padding: 16px .ui-dialog-titlebar @@ -256,6 +258,10 @@ $sheet-max-width: 860px color: black text-decoration: none + &.ui-dialog.oe_act_window + .ui-dialog-content + padding: 0px + .modal-backdrop position: fixed top: 0 @@ -360,23 +366,21 @@ $sheet-max-width: 860px color: gold // }}} // Tags (for many2many tags, among others) {{{ + .oe_tag + border-radius: 2px + @include box-sizing(border) + border: 1px solid #9DACCC + background: #E2E6F0 + color: black !important + padding: 0px 3px 0px 3px + margin: 0 2px 2px 0 + height: 16px + // font: 11px "lucida grande", tahoma, verdana, arial, sans-serif .oe_tags .text-wrap width: 100% !important textarea width: 100% !important - .oe_tag - border-radius: 2px - @include box-sizing(border) - position: relative - float: left - border: 1px solid #9DACCC - background: #E2E6F0 - color: black - padding: 0px 3px 0px 3px - margin: 0 2px 2px 0 - height: 16px - font: 11px "lucida grande", tahoma, verdana, arial, sans-serif .text-core .text-wrap .text-dropdown .text-list .text-suggestion em font-style: italic text-decoration: none @@ -904,8 +908,9 @@ $sheet-max-width: 860px .oe_view_manager_view_kanban height: inherit - .oe_view_manager_header + table.oe_view_manager_header width: 100% + table-layout: fixed .oe_header_row //min-height: 26px //line-height: 26px @@ -916,7 +921,6 @@ $sheet-max-width: 860px padding-top: 0 .oe_view_manager_sidebar margin: 0px auto - width: 400px text-align: center td line-height: 26px @@ -1049,7 +1053,7 @@ $sheet-max-width: 860px float: right padding: 1px 0 line-height: 18px - width: 480px + width: 400px border: 1px solid #ababab background: white @include radius(13px) @@ -1372,9 +1376,12 @@ $sheet-max-width: 860px display: none !important .oe_form .oe_form_field_date width: auto + .oe_form_nosheet + margin: 20px .oe_form_nosheet > header - margin-left: -10px - margin-right: -10px + margin-top: -20px + margin-left: -20px + margin-right: -20px // }}} // FormView.custom tags and classes {{{ .oe_form @@ -1428,6 +1435,7 @@ $sheet-max-width: 860px td.oe_form_group_cell_label border-right: none .oe_subtotal_footer_separator + width: 108px border-top: 1px solid #cacaca font-weight: bold font-size: 18px @@ -1471,9 +1479,8 @@ $sheet-max-width: 860px .oe_form_group width: 100% margin: 4px 0 4px 0 - .oe_group_right - > tbody > tr > td:first-child - padding-left: 18px + .oe_form_group_cell.oe_group_right + padding-left: 20px // }}} // FormView.label {{{ .oe_form @@ -1534,12 +1541,6 @@ $sheet-max-width: 860px width: 100% .oe_form_field_text.oe_inline, .oe_form_field_text.oe_inline > textarea width: 500px - .oe_form_field_float input - width: 100px - h1 .oe_form_field_float input - width: 140px - h2 .oe_form_field_float input - width: 120px h1, h2, h3, h4, h5, h6 margin: 0 0 4px 0 input @@ -1552,14 +1553,6 @@ $sheet-max-width: 860px line-height: 18px input margin: 0px - .oe_form_field_integer - width: 180px - .oe_form_field_float - width: 112px - .oe_form_field_date - width: 7.5em - .oe_form_field_datetime - width: 11em input[type="text"], input[type="password"], input[type="file"], select height: 22px padding-top: 2px @@ -1629,6 +1622,16 @@ $sheet-max-width: 860px > div position: relative overflow: hidden + .oe_form_editable + .oe_form + .oe_form_field_integer + width: 7em !important + .oe_form_field_float + width: 8em !important + .oe_form_field_date + width: 7.5em !important + .oe_form_field_datetime + width: 11.5em !important // }}} // FormView.fields_binary {{{ /* http://www.quirksmode.org/dom/inputfile.html @@ -1688,7 +1691,7 @@ $sheet-max-width: 860px .oe_form .oe_form_field_one2many > .oe_view_manager .oe_list_pager_single_page display: none - .oe_form_field_one2many + .oe_form_field_one2many,.oe_form_field_many2many // TODO: oe_form_field_one2many_list? .oe_list_content > thead @@ -1763,6 +1766,8 @@ $sheet-max-width: 860px border-top: 1px solid #ddd > td.oe_list_field_cell padding: 3px 6px + progress + width: 100% > td, > th line-height: 18px > button @@ -1776,7 +1781,7 @@ $sheet-max-width: 860px border-width: 0 > td.oe_number text-align: right !important - width: 100px + max-width: 100px > tr:nth-child(odd) background-color: #f0f0fa @include vertical-gradient(#f0f0fa, #eeeef6) diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js index e4d543c69ce..094e2f184e6 100644 --- a/addons/web/static/src/js/chrome.js +++ b/addons/web/static/src/js/chrome.js @@ -63,7 +63,7 @@ instance.web.Dialog = instance.web.Widget.extend({ this.dialog_options = { modal: true, destroy_on_close: true, - width: 700, + width: 900, min_width: 0, max_width: '95%', height: 'auto', @@ -86,7 +86,7 @@ instance.web.Dialog = instance.web.Widget.extend({ if (this.dialog_options.autoOpen) { this.open(); } else { - test = instance.web.dialog(this.$element, this.get_options()); + instance.web.dialog(this.$element, this.get_options()); } }, get_options: function(options) { @@ -145,9 +145,9 @@ instance.web.Dialog = instance.web.Widget.extend({ _.each(this.getChildren(), function(el) { el.destroy(); }); - if (! this.isDestroyed()) { - this.$element.dialog('destroy'); - } + if (! this.isDestroyed()) { + this.$element.dialog('destroy'); + } this._super(); } }); @@ -212,11 +212,11 @@ instance.web.CrashManager = instance.web.CallbackEnabled.extend({ dialog.$element.html(QWeb.render('CrashManager.error', {session: instance.connection, error: error})); }, on_javascript_exception: function(exception) { - this.on_traceback({ - type: _t("Client Error"), - message: exception, - data: {debug: ""} - }); + this.on_traceback({ + type: _t("Client Error"), + message: exception, + data: {debug: ""} + }); }, }); @@ -482,24 +482,26 @@ instance.web.Login = instance.web.Widget.extend({ } } }, + open_db_manager: function(){ + var self = this; + self.$element.find('.oe_login_bottom').hide(); + self.$element.find('.oe_login_pane').hide(); + self.databasemanager = new instance.web.DatabaseManager(self); + self.databasemanager.appendTo(self.$element); + self.databasemanager.do_exit.add_last(function() { + self.databasemanager.destroy(); + self.$element.find('.oe_login_bottom').show(); + self.$element.find('.oe_login_pane').show(); + self.load_db_list(true).then(self.on_db_list_loaded); + }); + }, start: function() { var self = this; - self.$element.find("form").submit(self.on_submit); - self.$element.find('.oe_login_manage_db').click(function() { - self.$element.find('.oe_login_bottom').hide(); - self.$element.find('.oe_login_pane').hide(); - self.databasemanager = new instance.web.DatabaseManager(self); - self.databasemanager.appendTo(self.$element); - self.databasemanager.do_exit.add_last(function() { - self.databasemanager.destroy(); - self.$element.find('.oe_login_bottom').show(); - self.$element.find('.oe_login_pane').show(); - self.load_db_list(true).then(self.proxy('_db_list_loaded')); - }); + self.open_db_manager(); }); - return self.load_db_list().then(self.proxy('_db_list_loaded')); + return self.load_db_list().then(self.on_db_list_loaded); }, load_db_list: function (force) { var d = $.when(), self = this; @@ -514,11 +516,14 @@ instance.web.Login = instance.web.Widget.extend({ } return d; }, - _db_list_loaded: function () { - var list = this._db_list, - dbdiv = this.$element.find('div.oe_login_dbpane'); + on_db_list_loaded: function () { + var self = this; + var list = this._db_list; + var dbdiv = this.$element.find('div.oe_login_dbpane'); this.$element.find("[name=db]").replaceWith(instance.web.qweb.render('Login.dblist', { db_list: list, selected_db: this.selected_db})); - if(list && list.length === 1) { + if(list.length === 0) { + self.open_db_manager(); + } else if(list && list.length === 1) { dbdiv.hide(); } else { dbdiv.show(); @@ -667,7 +672,7 @@ instance.web.Menu = instance.web.Widget.extend({ * @param {Number} id the action_id to match */ open_action: function (id) { - var $menu = this.$element.add(this.$secondary_menus).find('a[data-action-id=' + id + ']'); + var $menu = this.$element.add(this.$secondary_menus).find('a[data-action-id="' + id + '"]'); var menu_id = $menu.data('menu'); if (menu_id) { this.open_menu(menu_id); diff --git a/addons/web/static/src/js/coresetup.js b/addons/web/static/src/js/coresetup.js index a00ca4002e5..a5a62b9bcc1 100644 --- a/addons/web/static/src/js/coresetup.js +++ b/addons/web/static/src/js/coresetup.js @@ -404,10 +404,11 @@ instance.web.Session = instance.web.JsonRPC.extend( /** @lends instance.web.Sess } }); + /** * Event Bus used to bind events scoped in the current instance */ -instance.web.bus = new (instance.web.Class.extend(instance.web.EventDispatcherMixin, { +instance.web.Bus = instance.web.Class.extend(instance.web.EventDispatcherMixin, { init: function() { instance.web.EventDispatcherMixin.init.call(this, parent); var self = this; @@ -425,7 +426,8 @@ instance.web.bus = new (instance.web.Class.extend(instance.web.EventDispatcherMi }); }); } -}))(); +}) +instance.web.bus = new instance.web.Bus(); /** OpenERP Translations */ instance.web.TranslationDataBase = instance.web.Class.extend(/** @lends instance.web.TranslationDataBase# */{ diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 3a3c49b2375..8fdaffa81eb 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -802,13 +802,13 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM }); }, get_fields_values: function(blacklist) { - blacklist = blacklist || []; + blacklist = blacklist || []; var values = {}; var ids = this.get_selected_ids(); values["id"] = ids.length > 0 ? ids[0] : false; _.each(this.fields, function(value_, key) { - if (_.include(blacklist, key)) - return; + if (_.include(blacklist, key)) + return; var val = value_.get_value(); values[key] = val; }); @@ -1186,8 +1186,7 @@ instance.web.form.FormRenderingEngine = instance.web.form.FormRenderingEngineInt row_cols = cols; } else if (tagName==='group') { // When , we need a spacing between the two groups - $child.addClass('oe_group_right') - + $td.addClass('oe_group_right') } row_cols -= colspan; @@ -1587,7 +1586,7 @@ instance.web.form.FormWidget = instance.web.Widget.extend(instance.web.form.Invi parent: {} }); if (a_dataset.parent_view) { - fields_values.parent = a_dataset.parent_view.get_fields_values([a_dataset.child_name]); + fields_values.parent = a_dataset.parent_view.get_fields_values([a_dataset.child_name]); } return fields_values; }, @@ -3084,30 +3083,30 @@ instance.web.form.FieldOne2Many = instance.web.form.AbstractField.extend({ save_any_view: function() { if (this.doing_on_change) return false; - return this.session.synchronized_mode(_.bind(function() { - if (this.viewmanager && this.viewmanager.views && this.viewmanager.active_view && - this.viewmanager.views[this.viewmanager.active_view] && - this.viewmanager.views[this.viewmanager.active_view].controller) { - var view = this.viewmanager.views[this.viewmanager.active_view].controller; - if (this.viewmanager.active_view === "form") { - if (!view.is_initialized.isResolved()) { - return false; - } - var res = $.when(view.do_save()); - if (!res.isResolved() && !res.isRejected()) { - console.warn("Asynchronous get_value() is not supported in form view."); - } - return res; - } else if (this.viewmanager.active_view === "list") { - var res = $.when(view.ensure_saved()); - if (!res.isResolved() && !res.isRejected()) { - console.warn("Asynchronous get_value() is not supported in list view."); - } - return res; - } - } - return false; - }, this)); + return this.session.synchronized_mode(_.bind(function() { + if (this.viewmanager && this.viewmanager.views && this.viewmanager.active_view && + this.viewmanager.views[this.viewmanager.active_view] && + this.viewmanager.views[this.viewmanager.active_view].controller) { + var view = this.viewmanager.views[this.viewmanager.active_view].controller; + if (this.viewmanager.active_view === "form") { + if (!view.is_initialized.isResolved()) { + return false; + } + var res = $.when(view.do_save()); + if (!res.isResolved() && !res.isRejected()) { + console.warn("Asynchronous get_value() is not supported in form view."); + } + return res; + } else if (this.viewmanager.active_view === "list") { + var res = $.when(view.ensure_saved()); + if (!res.isResolved() && !res.isRejected()) { + console.warn("Asynchronous get_value() is not supported in list view."); + } + return res; + } + } + return false; + }, this)); }, is_syntax_valid: function() { if (!this.viewmanager.views[this.viewmanager.active_view]) @@ -3868,8 +3867,8 @@ instance.web.form.AbstractFormPopup = instance.web.OldWidget.extend({ var self = this; this.renderElement(); new instance.web.Dialog(this, { - width: '90%', min_width: '800px', + dialogClass: 'oe_act_window', close: function() { self.check_exit(true); }, diff --git a/addons/web/static/src/js/view_list.js b/addons/web/static/src/js/view_list.js index 3033404b387..edc53f82042 100644 --- a/addons/web/static/src/js/view_list.js +++ b/addons/web/static/src/js/view_list.js @@ -1045,7 +1045,7 @@ instance.web.ListView.List = instance.web.Class.extend( /** @lends instance.web. render_cell: function () { return self.render_cell.apply(self, arguments); } }, this))); - this.pad_table_to(5); + this.pad_table_to(4); }, pad_table_to: function (count) { if (this.records.length >= count || diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index 1bfd7d18776..5fc1463232a 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -114,7 +114,7 @@ instance.web.ActionManager = instance.web.Widget.extend({ } } } - return titles.join(' / '); + return titles.join(' / '); }, do_push_state: function(state) { if (this.getParent() && this.getParent().do_push_state) { @@ -178,7 +178,7 @@ instance.web.ActionManager = instance.web.Widget.extend({ }); }, do_action: function(action, on_close) { - if (_.isNumber(action)) { + if (_.isNumber(action) || _.isString(action)) { var self = this; return self.rpc("/web/action/load", { action_id: action }, function(result) { self.do_action(result.result, on_close); @@ -222,7 +222,8 @@ instance.web.ActionManager = instance.web.Widget.extend({ if (this.dialog === null) { // These buttons will be overwrited by