summaryrefslogtreecommitdiff
path: root/addons/web/static/src
diff options
context:
space:
mode:
authorRaphael Collet <rco@openerp.com>2012-08-31 16:53:05 +0200
committerRaphael Collet <rco@openerp.com>2012-08-31 16:53:05 +0200
commit0304a1eadad77620c1939a4c7734d4a24d420d32 (patch)
tree63441f0d83d6a0074590abd24a496a0f3b2a8904 /addons/web/static/src
parente79baa9e8a5759a3626c15dba76b1f03d8ecd098 (diff)
parent21a645fb6dbf01319cb10ff94c8dbfbda141332e (diff)
[MERGE] from trunk
bzr revid: jam@tinyerp.com-20120831045217-xoy25yc9ignfi94v bzr revid: rco@openerp.com-20120831145305-4wf3sl8un59k61he
Diffstat (limited to 'addons/web/static/src')
-rw-r--r--addons/web/static/src/css/Makefile2
-rw-r--r--addons/web/static/src/css/base.css86
-rw-r--r--addons/web/static/src/css/base.sass46
-rw-r--r--addons/web/static/src/js/chrome.js30
-rw-r--r--addons/web/static/src/js/coresetup.js7
-rw-r--r--addons/web/static/src/js/test_support.js1
-rw-r--r--addons/web/static/src/js/view_form.js121
-rw-r--r--addons/web/static/src/js/view_list_editable.js2
-rw-r--r--addons/web/static/src/js/views.js12
-rw-r--r--addons/web/static/src/xml/base.xml47
10 files changed, 127 insertions, 227 deletions
diff --git a/addons/web/static/src/css/Makefile b/addons/web/static/src/css/Makefile
index d6b4f4b2fc8..eca044497ef 100644
--- a/addons/web/static/src/css/Makefile
+++ b/addons/web/static/src/css/Makefile
@@ -1,3 +1,3 @@
base.css: base.sass
- sass --trace -t expanded base.sass base.css
+ sass -t expanded base.sass base.css
diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css
index eb641d5887e..06a37a54727 100644
--- a/addons/web/static/src/css/base.css
+++ b/addons/web/static/src/css/base.css
@@ -69,6 +69,7 @@
display: none !important;
}
}
+
.openerp.openerp_webclient_container {
height: 100%;
position: relative;
@@ -84,7 +85,7 @@
text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5);
/* http://www.quirksmode.org/dom/inputfile.html
* http://stackoverflow.com/questions/2855589/replace-input-type-file-by-an-image
- */
+ */ */
}
.openerp :-moz-placeholder {
color: #afafb6 !important;
@@ -141,6 +142,13 @@
background-image: -o-linear-gradient(top, #eeeeee, #dedede);
background-image: linear-gradient(to bottom, #eeeeee, #dedede);
}
+.openerp ul, .openerp li, .openerp ol {
+ margin: 0;
+ padding: 0;
+}
+.openerp li {
+ list-style-type: none;
+}
.openerp input, .openerp textarea, .openerp select {
padding: 2px 4px;
border: 1px solid #cccccc;
@@ -155,13 +163,6 @@
.openerp h4 {
margin: 4px 0;
}
-.openerp .oe_semantic_html_override ul, .openerp .oe_semantic_html_override li, .openerp .oe_semantic_html_override ol {
- margin: 0;
- padding: 0;
-}
-.openerp .oe_semantic_html_override ul li, .openerp .oe_semantic_html_override li li, .openerp .oe_semantic_html_override ol li {
- list-style-type: none;
-}
.openerp a.button:link, .openerp a.button:visited, .openerp button, .openerp input[type='submit'], .openerp .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button {
display: inline-block;
border: 1px solid #ababab;
@@ -626,18 +627,6 @@
padding: 0 16px;
list-style: none;
zoom: 1;
- margin: 0;
- padding: 0;
-}
-.openerp .oe_notebook li {
- list-style-type: none;
-}
-.openerp .oe_notebook ul, .openerp .oe_notebook li, .openerp .oe_notebook ol {
- margin: 0;
- padding: 0;
-}
-.openerp .oe_notebook ul li, .openerp .oe_notebook li li, .openerp .oe_notebook ol li {
- list-style-type: none;
}
.openerp .oe_notebook.ui-corner-all {
-moz-border-radius: 0;
@@ -942,13 +931,6 @@
-webkit-box-shadow: 0 0 18px rgba(0, 0, 0, 0.9);
box-shadow: 0 0 18px rgba(0, 0, 0, 0.9);
}
-.openerp .oe_login .oe_login_pane ul, .openerp .oe_login .oe_login_pane li, .openerp .oe_login .oe_login_pane ol {
- margin: 0;
- padding: 0;
-}
-.openerp .oe_login .oe_login_pane ul li, .openerp .oe_login .oe_login_pane li li, .openerp .oe_login .oe_login_pane ol li {
- list-style-type: none;
-}
.openerp .oe_login .oe_login_pane h2 {
margin-top: 0;
font-size: 18px;
@@ -1028,13 +1010,6 @@
background-image: -o-linear-gradient(top, #646060, #262626);
background-image: linear-gradient(to bottom, #646060, #262626);
}
-.openerp .oe_topbar ul, .openerp .oe_topbar li, .openerp .oe_topbar ol {
- margin: 0;
- padding: 0;
-}
-.openerp .oe_topbar ul li, .openerp .oe_topbar li li, .openerp .oe_topbar ol li {
- list-style-type: none;
-}
.openerp .oe_topbar .oe_topbar_item {
display: block;
padding: 5px 10px 7px;
@@ -1107,13 +1082,6 @@
text-shadow: 0 1px 1px white;
padding-bottom: 16px;
}
-.openerp .oe_leftbar ul, .openerp .oe_leftbar li, .openerp .oe_leftbar ol {
- margin: 0;
- padding: 0;
-}
-.openerp .oe_leftbar ul li, .openerp .oe_leftbar li li, .openerp .oe_leftbar ol li {
- list-style-type: none;
-}
.openerp a.oe_logo {
width: 220px;
display: block;
@@ -1316,13 +1284,6 @@
width: 100%;
table-layout: fixed;
}
-.openerp .oe_view_manager table.oe_view_manager_header ul, .openerp .oe_view_manager table.oe_view_manager_header li, .openerp .oe_view_manager table.oe_view_manager_header ol {
- margin: 0;
- padding: 0;
-}
-.openerp .oe_view_manager table.oe_view_manager_header ul li, .openerp .oe_view_manager table.oe_view_manager_header li li, .openerp .oe_view_manager table.oe_view_manager_header ol li {
- list-style-type: none;
-}
.openerp .oe_view_manager table.oe_view_manager_header .oe_header_row {
clear: both;
text-shadow: 0 1px 1px white;
@@ -1989,10 +1950,12 @@
margin: 0 auto;
padding: 16px 0 48px;
}
-.openerp .oe_form div.oe_form_configuration div.oe_horizontal_separator {
- margin: 12px 0 8px 0;
+.openerp .oe_form .oe_grey {
+ color: #aaaaaa;
+ max-width: 650px;
+ margin: 0 0 10px 0;
}
-.openerp .oe_form div.oe_form_configuration p, .openerp .oe_form div.oe_form_configuration ul, .openerp .oe_form div.oe_form_configuration ol {
+.openerp .oe_form div.oe_form_configuration p {
color: #aaaaaa;
max-width: 650px;
}
@@ -2041,7 +2004,6 @@
padding-left: 24px;
margin: 0;
position: relative;
- z-index: 10;
}
.openerp ul.oe_form_steps li .arrow, .openerp ul.oe_form_steps_clickable li .arrow {
width: 17px;
@@ -2052,7 +2014,6 @@
}
.openerp ul.oe_form_steps li .arrow span, .openerp ul.oe_form_steps_clickable li .arrow span {
position: relative;
- z-index: 11;
width: 24px;
height: 24px;
display: inline-block;
@@ -2227,7 +2188,7 @@
.openerp .oe_horizontal_separator {
font-weight: bold;
font-size: 20px;
- margin: 8px 0px 8px 0px;
+ margin: 15px 0px 10px 0px;
color: #7c7bad;
}
.openerp .oe_horizontal_separator:empty {
@@ -2441,19 +2402,12 @@
float: right;
padding-left: 2px;
}
-.openerp .oe_form_field_status {
- margin: 0;
- padding: 0;
-}
-.openerp .oe_form_field_status ul, .openerp .oe_form_field_status li, .openerp .oe_form_field_status ol {
- margin: 0;
- padding: 0;
-}
-.openerp .oe_form_field_status ul li, .openerp .oe_form_field_status li li, .openerp .oe_form_field_status ol li {
- list-style-type: none;
+.openerp.ui-autocomplete li.oe_m2o_dropdown_option a {
+ font-style: italic;
+ padding-left: 2em;
}
-.openerp .oe_form_field_status li {
- list-style-type: none;
+.openerp.ui-autocomplete li:not(.oe_m2o_dropdown_option) + li.oe_m2o_dropdown_option {
+ margin-top: 10px;
}
.openerp .oe_form .oe_form_field_one2many > .oe_view_manager .oe_list_pager_single_page {
display: none;
diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass
index aa75956f0a1..c238ef6ee07 100644
--- a/addons/web/static/src/css/base.sass
+++ b/addons/web/static/src/css/base.sass
@@ -111,16 +111,6 @@ $sheet-max-width: 860px
content: $icon-name
color: $color
-@mixin ul-html-override()
- margin: 0
- padding: 0
- li
- list-style-type: none
-
-@mixin semantic-html-override()
- ul, li, ol
- @include ul-html-override()
-
// }}}
// CSS animation bounces {{{
@-moz-keyframes bounce
@@ -204,6 +194,11 @@ $sheet-max-width: 860px
@include vertical-gradient(#f0f0fa, #eeeef6)
.zebra tbody tr:hover td
@include vertical-gradient(#eee, #dedede)
+ ul, li, ol
+ margin: 0
+ padding: 0
+ li
+ list-style-type: none
input, textarea, select
padding: 2px 4px
border: 1px solid #ccc
@@ -213,8 +208,6 @@ $sheet-max-width: 860px
vertical-align: middle
h4
margin: 4px 0
- .oe_semantic_html_override
- @include semantic-html-override
// }}}
// Button style {{{
a.button:link, a.button:visited, button, input[type='submit'], .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button
@@ -516,8 +509,6 @@ $sheet-max-width: 860px
padding: 0 16px
list-style: none
zoom: 1
- @include ul-html-override
- @include semantic-html-override
.oe_notebook.ui-corner-all
@include radius(0)
.oe_notebook:before, .oe_notebook:after
@@ -737,7 +728,6 @@ $sheet-max-width: 860px
text-align: left
@include radius(8px)
@include box-shadow(0 0 18px rgba(0, 0, 0, 0.9))
- @include semantic-html-override
h2
margin-top: 0
font-size: 18px
@@ -803,7 +793,6 @@ $sheet-max-width: 860px
height: 31px
border-top: solid 1px #d3d3d3
@include vertical-gradient(#646060, #262626)
- @include semantic-html-override
.oe_topbar_item
display: block
padding: 5px 10px 7px
@@ -854,7 +843,6 @@ $sheet-max-width: 860px
border-right: 1px solid $tag-border
text-shadow: 0 1px 1px white
padding-bottom: 16px
- @include semantic-html-override
a.oe_logo
width: 220px
display: block
@@ -1019,7 +1007,6 @@ $sheet-max-width: 860px
table.oe_view_manager_header
width: 100%
table-layout: fixed
- @include semantic-html-override
.oe_header_row
//min-height: 26px
//line-height: 26px
@@ -1529,10 +1516,12 @@ $sheet-max-width: 860px
max-width: $sheet-max-width
margin: 0 auto
padding: 16px 0 48px
+ .oe_grey
+ color: #aaa
+ max-width: 650px
+ margin: 0 0 10px 0
div.oe_form_configuration
- div.oe_horizontal_separator
- margin: 12px 0 8px 0
- p, ul, ol
+ p
color: #aaa
max-width: 650px
label
@@ -1567,7 +1556,6 @@ $sheet-max-width: 860px
padding-left: 24px
margin: 0
position: relative
- z-index: 10
.arrow
width: 17px
display: inline-block
@@ -1576,7 +1564,6 @@ $sheet-max-width: 860px
margin-left: -5px
span
position: relative
- z-index: 11
width: 24px
height: 24px
display: inline-block
@@ -1692,7 +1679,7 @@ $sheet-max-width: 860px
.oe_horizontal_separator
font-weight: bold
font-size: 20px
- margin: 8px 0px 8px 0px
+ margin: 15px 0px 10px 0px
color: $section-title-color
.oe_horizontal_separator:empty
height: 5px
@@ -1866,11 +1853,12 @@ $sheet-max-width: 860px
line-height: 14px
float: right
padding-left: 2px
- // }}}
- // FormView.fieldstatus {{{
- .oe_form_field_status
- @include semantic-html-override
- @include ul-html-override
+ &.ui-autocomplete
+ li.oe_m2o_dropdown_option a
+ font-style: italic
+ padding-left: 2em
+ li:not(.oe_m2o_dropdown_option) + li.oe_m2o_dropdown_option
+ margin-top: 10px
// }}}
// FormView.one2many {{{
.oe_form .oe_form_field_one2many > .oe_view_manager
diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js
index 19493fefb05..736e10875f6 100644
--- a/addons/web/static/src/js/chrome.js
+++ b/addons/web/static/src/js/chrome.js
@@ -193,29 +193,9 @@ instance.web.CrashManager = instance.web.CallbackEnabled.extend({
on_traceback: function(error) {
var self = this;
var buttons = {};
- if (instance.session.openerp_entreprise) {
- buttons[_t("Send OpenERP Enterprise Report")] = function() {
- var $this = $(this);
- var issuename = $('#issuename').val();
- var explanation = $('#explanation').val();
- var remark = $('#remark').val();
- // Call the send method from server to send mail with details
- new instance.web.DataSet(self, 'publisher_warranty.contract').call_and_eval('send', [error.data,explanation,remark,issuename]).then(function(result){
- if (result === false) {
- alert('There was a communication error.');
- } else {
- $this.dialog('close');
- }
- });
- };
- buttons[_t("Dont send")] = function() {
- $(this).dialog("close");
- };
- } else {
- buttons[_t("Ok")] = function() {
- $(this).dialog("close");
- };
- }
+ buttons[_t("Ok")] = function() {
+ $(this).dialog("close");
+ };
var dialog = new instance.web.Dialog(this, {
title: "OpenERP " + _.str.capitalize(error.type),
width: '80%',
@@ -1043,10 +1023,6 @@ instance.web.WebClient = instance.web.Client.extend({
self.user_menu.on_action.add(this.proxy('on_menu_action'));
self.user_menu.do_update();
self.bind_hashchange();
- if (!self.session.openerp_entreprise) {
- var version_label = _t("OpenERP - Unsupported/Community Version");
- self.$el.find('.oe_footer_powered').append(_.str.sprintf('<span> - <a href="http://www.openerp.com/support-or-publisher-warranty-contract" target="_blank">%s</a></span>', version_label));
- }
self.set_title();
},
destroy_content: function() {
diff --git a/addons/web/static/src/js/coresetup.js b/addons/web/static/src/js/coresetup.js
index 8e0f4da4148..38cf57387d1 100644
--- a/addons/web/static/src/js/coresetup.js
+++ b/addons/web/static/src/js/coresetup.js
@@ -35,7 +35,6 @@ instance.web.Session = instance.web.JsonRPC.extend( /** @lends instance.web.Sess
this.username = false;
this.user_context= {};
this.db = false;
- this.openerp_entreprise = false;
this.module_list = instance._modules.slice();
this.module_loaded = {};
_(this.module_list).each(function (mod) {
@@ -78,8 +77,7 @@ instance.web.Session = instance.web.JsonRPC.extend( /** @lends instance.web.Sess
db: result.db,
username: result.login,
uid: result.uid,
- user_context: result.context,
- openerp_entreprise: result.openerp_entreprise
+ user_context: result.context
});
});
},
@@ -103,8 +101,7 @@ instance.web.Session = instance.web.JsonRPC.extend( /** @lends instance.web.Sess
db: result.db,
username: result.login,
uid: result.uid,
- user_context: result.context,
- openerp_entreprise: result.openerp_entreprise
+ user_context: result.context
});
if (!_volatile) {
self.set_cookie('session_id', self.session_id);
diff --git a/addons/web/static/src/js/test_support.js b/addons/web/static/src/js/test_support.js
index 314a12c91c6..8e1317ba2b0 100644
--- a/addons/web/static/src/js/test_support.js
+++ b/addons/web/static/src/js/test_support.js
@@ -12,7 +12,6 @@ openerp.test_support = {
username: false,
user_context: {},
db: false,
- openerp_entreprise: false,
// this.module_list = openerp._modules.slice();
// this.module_loaded = {};
// _(this.module_list).each(function (mod) {
diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js
index a6b8fe346b9..2e577e740f8 100644
--- a/addons/web/static/src/js/view_form.js
+++ b/addons/web/static/src/js/view_form.js
@@ -697,7 +697,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
},
on_button_save: function() {
var self = this;
- return this.do_save().then(function(result) {
+ return this.do_save().then(function(result) {
self.to_view_mode();
});
},
@@ -767,10 +767,11 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
* record or saving an existing one depending on whether the record
* already has an id property.
*
- * @param {Function} [success] callback on save success
- * @param {Boolean} [prepend_on_create=false] if ``do_save`` creates a new record, should that record be inserted at the start of the dataset (by default, records are added at the end)
+ * @param {Boolean} [prepend_on_create=false] if ``do_save`` creates a new
+ * record, should that record be inserted at the start of the dataset (by
+ * default, records are added at the end)
*/
- do_save: function(success, prepend_on_create) {
+ do_save: function(prepend_on_create) {
var self = this;
return this.mutating_mutex.exec(function() { return self.is_initialized.pipe(function() {
try {
@@ -805,21 +806,21 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
self.set({'display_invalid_fields': false});
var save_deferral;
if (!self.datarecord.id) {
- // console.log("FormView(", self, ") : About to create", values);
+ // Creation save
save_deferral = self.dataset.create(values).pipe(function(r) {
- return self.on_created(r, undefined, prepend_on_create);
+ return self.on_created(r, prepend_on_create);
}, null);
} else if (_.isEmpty(values) && ! self.force_dirty) {
- // console.log("FormView(", self, ") : Nothing to save");
+ // Not dirty, noop save
save_deferral = $.Deferred().resolve({}).promise();
} else {
self.force_dirty = false;
- // console.log("FormView(", self, ") : About to save", values);
+ // Write save
save_deferral = self.dataset.write(self.datarecord.id, values, {}).pipe(function(r) {
return self.on_saved(r);
}, null);
}
- return save_deferral.then(success);
+ return save_deferral;
}
} catch (e) {
console.error(e);
@@ -838,14 +839,19 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
warnings.push('</ul>');
this.do_warn("The following fields are invalid :", warnings.join(''));
},
- on_saved: function(r, success) {
+ /**
+ * Reload the form after saving
+ *
+ * @param {Object} r result of the write function.
+ */
+ on_saved: function(r) {
if (!r.result) {
// should not happen in the server, but may happen for internal purpose
return $.Deferred().reject();
} else {
return $.when(this.reload()).pipe(function () {
- return r; })
- .then(success);
+ return r;
+ });
}
},
/**
@@ -858,10 +864,10 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
* * Updates the pager and sidebar displays
*
* @param {Object} r
- * @param {Function} success callback to execute after having updated the dataset
- * @param {Boolean} [prepend_on_create=false] adds the newly created record at the beginning of the dataset instead of the end
+ * @param {Boolean} [prepend_on_create=false] adds the newly created record
+ * at the beginning of the dataset instead of the end
*/
- on_created: function(r, success, prepend_on_create) {
+ on_created: function(r, prepend_on_create) {
if (!r.result) {
// should not happen in the server, but may happen for internal purpose
return $.Deferred().reject();
@@ -880,8 +886,8 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
}
//openerp.log("The record has been created with id #" + this.datarecord.id);
return $.when(this.reload()).pipe(function () {
- return _.extend(r, {created: true}); })
- .then(success);
+ return _.extend(r, {created: true});
+ });
}
},
on_action: function (action) {
@@ -2324,11 +2330,16 @@ instance.web.form.FieldDate = instance.web.form.FieldDatetime.extend({
instance.web.form.FieldText = instance.web.form.AbstractField.extend(instance.web.form.ReinitializeFieldMixin, {
template: 'FieldText',
+ init: function (field_manager, node) {
+ this._super(field_manager, node);
+ },
initialize_content: function() {
+ var self = this;
this.$textarea = this.$el.find('textarea');
+ this.default_height = this.$textarea.css('height');
if (!this.get("effective_readonly")) {
this.$textarea.change(_.bind(function() {
- this.set({'value': instance.web.parse_value(this.$textarea.val(), this)});
+ self.set({'value': instance.web.parse_value(self.$textarea.val(), self)});
}, this));
} else {
this.$textarea.attr('disabled', 'disabled');
@@ -2341,15 +2352,17 @@ instance.web.form.FieldText = instance.web.form.AbstractField.extend(instance.we
this.setupFocus(this.$textarea);
},
set_value: function(value_) {
- this._super.apply(this, arguments);
+ this._super(value_);
this.render_value();
+ $(window).resize();
},
render_value: function() {
var show_value = instance.web.format_value(this.get('value'), this, '');
- this.$textarea.val(show_value);
- if (show_value && this.view.options.resize_textareas) {
- this.do_resize(this.view.options.resize_textareas);
+ if (show_value === '') {
+ this.$textarea.css('height', parseInt(this.default_height)+"px");
}
+ this.$textarea.val(show_value);
+ this.$textarea.autosize();
},
is_syntax_valid: function() {
if (!this.get("effective_readonly")) {
@@ -2368,26 +2381,6 @@ instance.web.form.FieldText = instance.web.form.AbstractField.extend(instance.we
focus: function($el) {
this.$textarea.focus();
},
- do_resize: function(max_height) {
- max_height = parseInt(max_height, 10);
- var $input = this.$textarea,
- $div = $('<div style="position: absolute; z-index: 1000; top: 0"/>').width($input.width()),
- new_height;
- $div.text($input.val());
- _.each('font-family,font-size,white-space'.split(','), function(style) {
- $div.css(style, $input.css(style));
- });
- $div.appendTo($('body'));
- new_height = $div.height();
- if (new_height < 90) {
- new_height = 90;
- }
- if (!isNaN(max_height) && new_height > max_height) {
- new_height = max_height;
- }
- $div.remove();
- $input.height(new_height);
- },
});
/**
@@ -2412,7 +2405,7 @@ instance.web.form.FieldTextHtml = instance.web.form.AbstractField.extend(instanc
self._updating_editor = false;
this.$textarea = this.$el.find('textarea');
var width = ((this.node.attrs || {}).editor_width || 468);
- var height = ((this.node.attrs || {}).editor_height || 100);
+ var height = ((this.node.attrs || {}).editor_height || 250);
this.$textarea.cleditor({
width: width, // width not including margins, borders or padding
height: height, // height not including margins, borders or padding
@@ -2565,7 +2558,7 @@ instance.web.form.FieldSelection = instance.web.form.AbstractField.extend(instan
}
});
-// jquery autocomplete tweak to allow html
+// jquery autocomplete tweak to allow html and classnames
(function() {
var proto = $.ui.autocomplete.prototype,
initSource = proto._initSource;
@@ -2592,7 +2585,8 @@ instance.web.form.FieldSelection = instance.web.form.AbstractField.extend(instan
return $( "<li></li>" )
.data( "item.autocomplete", item )
.append( $( "<a></a>" )[ this.options.html ? "html" : "text" ]( item.label ) )
- .appendTo( ul );
+ .appendTo( ul )
+ .addClass(item.classname);
}
});
})();
@@ -2632,25 +2626,36 @@ instance.web.form.CompletionFieldMixin = {
// search more... if more results that max
if (values.length > self.limit) {
values = values.slice(0, self.limit);
- values.push({label: _t("<em>   Search More...</em>"), action: function() {
- dataset.name_search(search_val, self.build_domain(), 'ilike'
- , false, function(data) {
- self._search_create_popup("search", data);
- });
- }});
+ values.push({
+ label: _t("Search More..."),
+ action: function() {
+ dataset.name_search(search_val, self.build_domain(), 'ilike', false, function(data) {
+ self._search_create_popup("search", data);
+ });
+ },
+ classname: 'oe_m2o_dropdown_option'
+ });
}
// quick create
var raw_result = _(data.result).map(function(x) {return x[1];});
if (search_val.length > 0 && !_.include(raw_result, search_val)) {
- values.push({label: _.str.sprintf(_t('<em>   Create "<strong>%s</strong>"</em>'),
- $('<span />').text(search_val).html()), action: function() {
- self._quick_create(search_val);
- }});
+ values.push({
+ label: _.str.sprintf(_t('Create "<strong>%s</strong>"'),
+ $('<span />').text(search_val).html()),
+ action: function() {
+ self._quick_create(search_val);
+ },
+ classname: 'oe_m2o_dropdown_option'
+ });
}
// create...
- values.push({label: _t("<em>   Create and Edit...</em>"), action: function() {
- self._search_create_popup("form", undefined, self._create_context(search_val));
- }});
+ values.push({
+ label: _t("Create and Edit..."),
+ action: function() {
+ self._search_create_popup("form", undefined, self._create_context(search_val));
+ },
+ classname: 'oe_m2o_dropdown_option'
+ });
return values;
});
diff --git a/addons/web/static/src/js/view_list_editable.js b/addons/web/static/src/js/view_list_editable.js
index 5256b0268a4..2615d8c66dd 100644
--- a/addons/web/static/src/js/view_list_editable.js
+++ b/addons/web/static/src/js/view_list_editable.js
@@ -716,7 +716,7 @@ openerp.web.list_editable = function (instance) {
save: function () {
var self = this;
return this.form
- .do_save(null, this.delegate.prepends_on_create())
+ .do_save(this.delegate.prepends_on_create())
.pipe(function (result) {
var created = result.created && !self.record.id;
if (created) {
diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js
index 79e9704cad4..6ec579e59e4 100644
--- a/addons/web/static/src/js/views.js
+++ b/addons/web/static/src/js/views.js
@@ -874,7 +874,7 @@ instance.web.Sidebar = instance.web.Widget.extend({
var view = this.getParent();
this.sections = [
{ 'name' : 'print', 'label' : _t('Print'), },
- { 'name' : 'files', 'label' : _t('Attachment'), },
+ { 'name' : 'files', 'label' : _t('Attachment(s)'), },
{ 'name' : 'other', 'label' : _t('More'), }
];
this.items = {
@@ -1077,14 +1077,13 @@ instance.web.TranslateDialog = instance.web.Dialog.extend({
start: function() {
var self = this;
this._super();
- $.when(this.languages_loaded).then(function() {
+ return $.when(this.languages_loaded).then(function() {
self.$el.html(instance.web.qweb.render('TranslateDialog', { widget: self }));
self.$fields_form = self.$el.find('.oe_translation_form');
self.$fields_form.find('.oe_trad_field').change(function() {
$(this).toggleClass('touched', ($(this).val() != $(this).attr('data-value')));
});
});
- return this;
},
on_languages_loaded: function(langs) {
this.languages = langs;
@@ -1136,9 +1135,9 @@ instance.web.TranslateDialog = instance.web.Dialog.extend({
});
},
on_btn_save: function() {
- var trads = {},
- self = this,
- trads_mutex = new $.Mutex();
+ var trads = {};
+ var self = this;
+ var trads_mutex = new $.Mutex();
self.$fields_form.find('.oe_trad_field.touched').each(function() {
var field = $(this).attr('name').split('-');
if (!trads[field[0]]) {
@@ -1157,6 +1156,7 @@ instance.web.TranslateDialog = instance.web.Dialog.extend({
});
});
this.close();
+ return trads_mutex;
},
on_btn_close: function() {
this.close();
diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml
index 068f36d04e1..3bee6eebcc5 100644
--- a/addons/web/static/src/xml/base.xml
+++ b/addons/web/static/src/xml/base.xml
@@ -51,29 +51,6 @@
</table>
</t>
<t t-name="CrashManager.error">
- <t t-if="!session.openerp_entreprise">
- <span>Your version of OpenERP is unsupported. Support &amp; maintenance services are available here: <a href="http://www.openerp.com/support-or-publisher-warranty-contract" target="_blank">OpenERP Entreprise</a>.</span>
- </t>
- <t t-if="session.openerp_entreprise">
- <div class="oe_error_send">
- <div>
- <div class="oe_centeralign"><b>OpenERP Enterprise Contract.</b></div>
- <div><br/>Your report will be sent to the OpenERP Enterprise team.<br/></div><br/>
- <div>
- <label>Summary:</label><br/>
- <input id="issuename" type="text" class="oe_fielddiv"/>
- </div><br/><br/>
- <div>
- <label>Description:</label><br/>
- <textarea id="explanation" rows="6"></textarea>
- </div><br/><br/>
- <div>
- <label>What you did:</label><br/>
- <textarea id="remark" rows="6" ></textarea>
- </div>
- </div>
- </div><br/>
- </t>
<div class="oe_error_detail">
<pre><t t-esc="error.message"/></pre>
<hr/>
@@ -143,7 +120,7 @@
</tr>
<tr>
<td><label for="db_name">New database name:</label></td>
- <td><input type="text" name="db_name" class="required" matches="^[a-zA-Z][a-zA-Z0-9_]+$" autofocus="true"/></td>
+ <td><input type="text" name="db_name" class="required" matches="^[a-zA-Z][a-zA-Z0-9_-]+$" autofocus="true"/></td>
</tr>
<tr>
<td><label for="demo_data">Load Demonstration data:</label></td>
@@ -563,6 +540,7 @@
<t t-foreach="widget.sections" t-as="section">
<div class="oe_form_dropdown_section">
<button class="oe_dropdown_toggle oe_dropdown_arrow">
+ <t t-if="section.name == 'files'" t-raw="widget.items[section.name].length || ''"/>
<t t-esc="section.label"/>
</button>
<ul class="oe_dropdown_menu">
@@ -749,15 +727,17 @@
<span class="oe_form_buttons_view">
<t t-if="widget._is_action_enabled('edit')">
<div style="display: inline-block;"> <!-- required for the bounce effect on button -->
- <button type="button" class="oe_button oe_form_button_edit">Edit</button>
+ <button type="button" class="oe_button oe_form_button_edit" accesskey="E">Edit</button>
</div>
- </t>
- <t t-if="widget._is_action_enabled('create')">
- <button type="button" class="oe_button oe_form_button_create">Create</button>
- </t>
+ </t>
+ <t t-if="widget._is_action_enabled('create')">
+ <button type="button" class="oe_button oe_form_button_create" accesskey="C">Create</button>
+ </t>
</span>
<span class="oe_form_buttons_edit">
- <button type="button" class="oe_button oe_form_button_save oe_highlight">Save</button> <span class="oe_fade">or</span> <a href="#" class="oe_bold oe_form_button_cancel">Discard</a>
+ <button type="button" class="oe_button oe_form_button_save oe_highlight" accesskey="S">Save</button>
+ <span class="oe_fade">or</span>
+ <a href="#" class="oe_bold oe_form_button_cancel" accesskey="D">Discard</a>
</span>
</t>
</div>
@@ -843,7 +823,7 @@
<div class="oe_clear">
<ul t-attf-class="oe_notebook #{classnames}">
<li t-foreach="pages" t-as="page" t-att-modifiers="page.modifiers">
- <a t-attf-href="##{page.id}">
+ <a t-attf-href="##{page.id}" t-att-accesskey="page.accesskey">
<t t-esc="page.string"/>
</a>
</li>
@@ -1087,7 +1067,7 @@
</span>
</t>
<t t-name="FieldStatus">
- <ul t-att-class="'oe_form_field_status ' + (widget.options.clickable ? 'oe_form_steps_clickable' : 'oe_form_steps')" t-att-style="widget.node.attrs.style"/>
+ <ul t-att-class="widget.options.clickable ? 'oe_form_steps_clickable' : 'oe_form_steps'" t-att-style="widget.node.attrs.style"/>
</t>
<t t-name="FieldStatus.content">
<t t-foreach="widget.selection" t-as="i">
@@ -1191,7 +1171,8 @@
<button type="button" class="oe_button oe_form_button"
t-att-style="widget.node.attrs.style"
t-att-tabindex="widget.node.attrs.tabindex"
- t-att-autofocus="widget.node.attrs.autofocus">
+ t-att-autofocus="widget.node.attrs.autofocus"
+ t-att-accesskey="widget.node.attrs.accesskey">
<img t-if="widget.node.attrs.icon" t-att-src="_s + widget.node.attrs.icon" width="16" height="16"/>
<span t-if="widget.string"><t t-esc="widget.string"/></span>
</button>