diff options
| author | Raphael Collet <rco@openerp.com> | 2012-08-31 16:53:05 +0200 |
|---|---|---|
| committer | Raphael Collet <rco@openerp.com> | 2012-08-31 16:53:05 +0200 |
| commit | 0304a1eadad77620c1939a4c7734d4a24d420d32 (patch) | |
| tree | 63441f0d83d6a0074590abd24a496a0f3b2a8904 /addons/web/static/src | |
| parent | e79baa9e8a5759a3626c15dba76b1f03d8ecd098 (diff) | |
| parent | 21a645fb6dbf01319cb10ff94c8dbfbda141332e (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/Makefile | 2 | ||||
| -rw-r--r-- | addons/web/static/src/css/base.css | 86 | ||||
| -rw-r--r-- | addons/web/static/src/css/base.sass | 46 | ||||
| -rw-r--r-- | addons/web/static/src/js/chrome.js | 30 | ||||
| -rw-r--r-- | addons/web/static/src/js/coresetup.js | 7 | ||||
| -rw-r--r-- | addons/web/static/src/js/test_support.js | 1 | ||||
| -rw-r--r-- | addons/web/static/src/js/view_form.js | 121 | ||||
| -rw-r--r-- | addons/web/static/src/js/view_list_editable.js | 2 | ||||
| -rw-r--r-- | addons/web/static/src/js/views.js | 12 | ||||
| -rw-r--r-- | addons/web/static/src/xml/base.xml | 47 |
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 & 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> |
