diff options
| author | Vo Minh Thu <vmt@openerp.com> | 2012-01-18 11:12:52 +0100 |
|---|---|---|
| committer | Vo Minh Thu <vmt@openerp.com> | 2012-01-18 11:12:52 +0100 |
| commit | 75b3fc0907ee873c6e16d1fa8e8bfe58d4f520c1 (patch) | |
| tree | 3e7f7bbe9110eeae766b46bb9c16a867579b6452 /addons/web/static/src/js | |
| parent | 3203d264aecd751a8c261cea4f72fa323a3098be (diff) | |
| parent | 152f92916bc36d00c0e59fbc49fb655a4fd85908 (diff) | |
[MERGE] merged trunk.
bzr revid: vmt@openerp.com-20120118101252-e81nlyzym2nkebf4
Diffstat (limited to 'addons/web/static/src/js')
| -rw-r--r-- | addons/web/static/src/js/chrome.js | 17 | ||||
| -rw-r--r-- | addons/web/static/src/js/core.js | 6 | ||||
| -rw-r--r-- | addons/web/static/src/js/data.js | 4 | ||||
| -rw-r--r-- | addons/web/static/src/js/data_export.js | 3 | ||||
| -rw-r--r-- | addons/web/static/src/js/view_editor.js | 12 | ||||
| -rw-r--r-- | addons/web/static/src/js/view_form.js | 36 | ||||
| -rw-r--r-- | addons/web/static/src/js/view_list.js | 31 | ||||
| -rw-r--r-- | addons/web/static/src/js/view_page.js | 1 |
8 files changed, 57 insertions, 53 deletions
diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js index 39bc0181e16..8b9a0d4efc6 100644 --- a/addons/web/static/src/js/chrome.js +++ b/addons/web/static/src/js/chrome.js @@ -205,7 +205,7 @@ openerp.web.CrashManager = openerp.web.CallbackEnabled.extend({ buttons: buttons }).open(); dialog.$element.html(QWeb.render('CrashManagerError', {session: openerp.connection, error: error})); - }, + } }); openerp.web.Loading = openerp.web.Widget.extend(/** @lends openerp.web.Loading# */{ @@ -280,6 +280,9 @@ openerp.web.Database = openerp.web.Widget.extend(/** @lends openerp.web.Database init: function(parent, element_id, option_id) { this._super(parent, element_id); this.unblockUIFunction = $.unblockUI; + $.validator.addMethod('matches', function (s, _, re) { + return new RegExp(re).test(s); + }, _t("Invalid database name")); }, start: function() { this.$option_id = $("#oe_db_options"); @@ -646,7 +649,7 @@ openerp.web.Login = openerp.web.Widget.extend(/** @lends openerp.web.Login# */{ } } }); - }, + } }); openerp.web.Header = openerp.web.Widget.extend(/** @lends openerp.web.Header# */{ @@ -1059,13 +1062,9 @@ openerp.web.WebClient = openerp.web.Widget.extend(/** @lends openerp.web.WebClie this._current_state = null; }, - render_element: function() { - this.$element = $('<body/>'); - this.$element.attr("id", "oe"); - this.$element.addClass("openerp"); - }, start: function() { var self = this; + this.$element = $(document.body); if (jQuery.param != undefined && jQuery.deparam(jQuery.param.querystring()).kitten != undefined) { this.$element.addClass("kitten-mode-activated"); this.$element.delegate('img.oe-record-edit-link-img', 'hover', function(e) { @@ -1089,7 +1088,7 @@ openerp.web.WebClient = openerp.web.Widget.extend(/** @lends openerp.web.WebClie self.bind_hashchange(); if (!self.session.openerp_entreprise) { self.$element.find('.oe_footer_powered').append('<span> - <a href="http://www.openerp.com/support-or-publisher-warranty-contract" target="_blank">Unsupported/Community Version</a></span>'); - $('title').html('OpenERP - Unsupported/Community Version'); + document.title = _t("OpenERP - Unsupported/Community Version"); } }); }, @@ -1212,7 +1211,7 @@ openerp.web.EmbeddedClient = openerp.web.Widget.extend({ self.am.do_action(action); }); - }, + } }); diff --git a/addons/web/static/src/js/core.js b/addons/web/static/src/js/core.js index b36e576ae47..3005fc80d13 100644 --- a/addons/web/static/src/js/core.js +++ b/addons/web/static/src/js/core.js @@ -491,7 +491,7 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp. dataType: 'json', contentType: 'application/json', data: JSON.stringify(payload), - processData: false, + processData: false }, url); if (this.synch) ajax.async = false; @@ -502,7 +502,7 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp. // extracted from payload to set on the url var data = { session_id: this.session_id, - id: payload.id, + id: payload.id }; url.url = this.get_url(url.url); var ajax = _.extend({ @@ -864,7 +864,7 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp. } finally { this.synch = synch; } - }, + } }); /** diff --git a/addons/web/static/src/js/data.js b/addons/web/static/src/js/data.js index 447b95d17cf..bb53fb2175a 100644 --- a/addons/web/static/src/js/data.js +++ b/addons/web/static/src/js/data.js @@ -829,9 +829,9 @@ openerp.web.Model = openerp.web.CallbackEnabled.extend({ model: this.model_name, method: method, args: args, - kwargs: kwargs, + kwargs: kwargs }); - }, + } }); openerp.web.CompoundContext = openerp.web.Class.extend({ diff --git a/addons/web/static/src/js/data_export.js b/addons/web/static/src/js/data_export.js index 78be735edc7..3d15a4e3607 100644 --- a/addons/web/static/src/js/data_export.js +++ b/addons/web/static/src/js/data_export.js @@ -364,9 +364,8 @@ openerp.web.DataExport = openerp.web.Dialog.extend({ on_click_export_data: function() { var self = this; var exported_fields = this.$element.find('#fields_list option').map(function () { - var name = self.records[this.value] || this.value // DOM property is textContent, but IE8 only knows innerText - return {name: this.value, + return {name: self.records[this.value] || this.value, label: this.textContent || this.innerText}; }).get(); diff --git a/addons/web/static/src/js/view_editor.js b/addons/web/static/src/js/view_editor.js index bf920380ff9..6e58886fadd 100644 --- a/addons/web/static/src/js/view_editor.js +++ b/addons/web/static/src/js/view_editor.js @@ -806,7 +806,7 @@ openerp.web.ViewEditor = openerp.web.Widget.extend({ 'widget' : {'name':'widget', 'string': 'widget', 'type': 'selection'}, 'colors' : {'name':'colors', 'string': 'Colors', 'type': 'char'}, 'editable' : {'name':'editable', 'string': 'Editable', 'type': 'selection', 'selection': [["",""],["top","Top"],["bottom", "Bottom"]]}, - 'groups' : {'name':'groups', 'string': 'Groups', 'type': 'seleciton_multi'}, + 'groups' : {'name':'groups', 'string': 'Groups', 'type': 'seleciton_multi'} }; var arch_val = self.get_object_by_id(this.one_object.clicked_tr_id,this.one_object['main_object'], []); this.edit_node_dialog.$element.append('<table id="rec_table" style="width:400px" class="oe_forms"></table>'); @@ -928,7 +928,7 @@ openerp.web.ViewEditor = openerp.web.Widget.extend({ type: 'ir.actions.act_window', target: "new", flags: { - action_buttons: true, + action_buttons: true } } var action_manager = new openerp.web.ActionManager(self); @@ -982,7 +982,7 @@ openerp.web.ViewEditor.Field = openerp.web.Class.extend({ }, render: function() { return _.str.sprintf("<td id = %s>%s</td>", this.name, QWeb.render(this.template, {widget: this})) - }, + } }); openerp.web.ViewEditor.FieldBoolean = openerp.web.ViewEditor.Field.extend({ template : "vieweditor_boolean", @@ -1084,7 +1084,7 @@ var _PROPERTIES = { 'action' : ['name', 'string', 'colspan', 'groups'], 'tree' : ['string', 'colors', 'editable', 'link', 'limit', 'min_rows'], 'graph' : ['string', 'type'], - 'calendar' : ['string', 'date_start', 'date_stop', 'date_delay', 'day_length', 'color', 'mode'], + 'calendar' : ['string', 'date_start', 'date_stop', 'date_delay', 'day_length', 'color', 'mode'] }; var _CHILDREN = { 'form': ['notebook', 'group', 'field', 'label', 'button','board', 'newline', 'separator'], @@ -1100,7 +1100,7 @@ var _CHILDREN = { 'label': [], 'button' : [], 'newline': [], - 'separator': [], + 'separator': [] }; var _ICONS = ['','STOCK_ABOUT', 'STOCK_ADD', 'STOCK_APPLY', 'STOCK_BOLD', 'STOCK_CANCEL', 'STOCK_CDROM', 'STOCK_CLEAR', 'STOCK_CLOSE', 'STOCK_COLOR_PICKER', @@ -1134,6 +1134,6 @@ openerp.web.ViewEditor.property_widget = new openerp.web.Registry({ 'seleciton_multi' : 'openerp.web.ViewEditor.FieldSelectMulti', 'selection' : 'openerp.web.ViewEditor.FieldSelect', 'char' : 'openerp.web.ViewEditor.FieldChar', - 'float' : 'openerp.web.ViewEditor.FieldFloat', + 'float' : 'openerp.web.ViewEditor.FieldFloat' }); }; diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index ebe1ca26785..ebcbfc18100 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -40,7 +40,6 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# this.fields = {}; this.fields_order = []; this.datarecord = {}; - this.show_invalid = true; this.default_focus_field = null; this.default_focus_button = null; this.registry = openerp.web.form.widgets; @@ -179,7 +178,6 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# }); return $.when.apply(null, set_values).pipe(function() { if (!record.id) { - self.show_invalid = false; // New record: Second pass in order to trigger the onchanges // respecting the fields order defined in the view _.each(self.fields_order, function(field_name) { @@ -192,7 +190,6 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# } self.on_form_changed(); self.is_initialized.resolve(); - self.show_invalid = true; self.do_update_pager(record.id == null); if (self.sidebar) { self.sidebar.attachments.do_update(); @@ -429,7 +426,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# f = self.fields[f]; if (!f.is_valid()) { form_invalid = true; - f.update_dom(); + f.update_dom(true); if (!first_invalid_field) { first_invalid_field = f; } @@ -716,9 +713,11 @@ openerp.web.form.compute_domain = function(expr, fields) { stack.push(field_value >= val); break; case 'in': + if (!_.isArray(val)) val = [val]; stack.push(_(val).contains(field_value)); break; case 'not in': + if (!_.isArray(val)) val = [val]; stack.push(!_(val).contains(field_value)); break; default: @@ -791,6 +790,11 @@ openerp.web.form.Widget = openerp.web.Widget.extend(/** @lends openerp.web.form. return QWeb.render(template, { "widget": this }); }, do_attach_tooltip: function(widget, trigger, options) { + if ($.browser.mozilla && parseInt($.browser.version.split('.')[0], 10) < 2) { + // Unknown bug in old version of firefox : + // input type=text onchange event not fired when tootip is shown + return; + } widget = widget || this; trigger = trigger || this.$element; options = _.extend({ @@ -1063,7 +1067,6 @@ openerp.web.form.WidgetButton = openerp.web.form.Widget.extend({ this.execute_action().always(function() { self.force_disabled = false; self.check_disable(); - $.tipTipClear(); }); }, execute_action: function() { @@ -1075,17 +1078,17 @@ openerp.web.form.WidgetButton = openerp.web.form.Widget.extend({ title: _t('Confirm'), modal: true, buttons: [ + {text: _t("Cancel"), click: function() { + def.resolve(); + $(this).dialog("close"); + } + }, {text: _t("Ok"), click: function() { self.on_confirmed().then(function() { def.resolve(); }); $(this).dialog("close"); } - }, - {text: _t("Cancel"), click: function() { - def.resolve(); - $(this).dialog("close"); - } } ] }); @@ -1116,7 +1119,7 @@ openerp.web.form.WidgetButton = openerp.web.form.Widget.extend({ }); }, update_dom: function() { - this._super(); + this._super.apply(this, arguments); this.check_disable(); }, check_disable: function() { @@ -1238,7 +1241,7 @@ openerp.web.form.Field = openerp.web.form.Widget.extend(/** @lends openerp.web.f get_on_change_value: function() { return this.get_value(); }, - update_dom: function() { + update_dom: function(show_invalid) { this._super.apply(this, arguments); if (this.field.translate) { this.$element.find('.oe_field_translate').toggle(!!this.view.datarecord.id); @@ -1246,7 +1249,7 @@ openerp.web.form.Field = openerp.web.form.Widget.extend(/** @lends openerp.web.f if (!this.disable_utility_classes) { this.$element.toggleClass('disabled', this.readonly); this.$element.toggleClass('required', this.required); - if (this.view.show_invalid) { + if (show_invalid) { this.$element.toggleClass('invalid', !this.is_valid()); } } @@ -1259,7 +1262,7 @@ openerp.web.form.Field = openerp.web.form.Widget.extend(/** @lends openerp.web.f this.view.do_onchange(this); this.view.on_form_changed(); } else { - this.update_dom(); + this.update_dom(true); } }, validate: function() { @@ -1281,7 +1284,7 @@ openerp.web.form.Field = openerp.web.form.Widget.extend(/** @lends openerp.web.f this.definition_options = JSON.parse(str); } return this.definition_options; - }, + } }); openerp.web.form.FieldChar = openerp.web.form.Field.extend({ @@ -2424,7 +2427,7 @@ openerp.web.form.One2ManyListView = openerp.web.ListView.extend({ var self = this; var def = $.Deferred().then(callback).then(function() {self.o2m.view.reload();}); return this._super(name, id, _.bind(def.resolve, def)); - }, + } }); openerp.web.form.One2ManyFormView = openerp.web.FormView.extend({ @@ -3214,7 +3217,6 @@ openerp.web.form.widgets = new openerp.web.Registry({ 'email' : 'openerp.web.form.FieldEmail', 'url' : 'openerp.web.form.FieldUrl', 'text' : 'openerp.web.form.FieldText', - 'text_wiki' : 'openerp.web.form.FieldText', 'date' : 'openerp.web.form.FieldDate', 'datetime' : 'openerp.web.form.FieldDatetime', 'selection' : 'openerp.web.form.FieldSelection', diff --git a/addons/web/static/src/js/view_list.js b/addons/web/static/src/js/view_list.js index aa970c31649..1f8a6020f46 100644 --- a/addons/web/static/src/js/view_list.js +++ b/addons/web/static/src/js/view_list.js @@ -1316,19 +1316,24 @@ openerp.web.ListView.Groups = openerp.web.Class.extend( /** @lends openerp.web.L if (!self.datagroup.openable) { view.configure_pager(dataset); } else { - var pages = Math.ceil(dataset.ids.length / limit); - self.$row - .find('.oe-pager-state') - .text(_.str.sprintf(_t("%(page)d/%(page_count)d"), { - page: page + 1, - page_count: pages - })) - .end() - .find('button[data-pager-action=previous]') - .attr('disabled', page === 0) - .end() - .find('button[data-pager-action=next]') - .attr('disabled', page === pages - 1); + if (dataset.ids.length == records.length) { + // only one page + self.$row.find('td.oe-group-pagination').empty(); + } else { + var pages = Math.ceil(dataset.ids.length / limit); + self.$row + .find('.oe-pager-state') + .text(_.str.sprintf(_t("%(page)d/%(page_count)d"), { + page: page + 1, + page_count: pages + })) + .end() + .find('button[data-pager-action=previous]') + .attr('disabled', page === 0) + .end() + .find('button[data-pager-action=next]') + .attr('disabled', page === pages - 1); + } } self.records.add(records, {silent: true}); diff --git a/addons/web/static/src/js/view_page.js b/addons/web/static/src/js/view_page.js index d3ee79effca..31190d70f85 100644 --- a/addons/web/static/src/js/view_page.js +++ b/addons/web/static/src/js/view_page.js @@ -241,7 +241,6 @@ openerp.web.page = function (openerp) { 'email': 'openerp.web.page.FieldEmailReadonly', 'url': 'openerp.web.page.FieldUrlReadonly', 'text': 'openerp.web.page.FieldCharReadonly', - 'text_wiki' : 'openerp.web.page.FieldCharReadonly', 'date': 'openerp.web.page.FieldCharReadonly', 'datetime': 'openerp.web.page.FieldCharReadonly', 'selection' : 'openerp.web.page.FieldSelectionReadonly', |
