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