summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js
diff options
context:
space:
mode:
authorVo Minh Thu <vmt@openerp.com>2012-01-18 11:12:52 +0100
committerVo Minh Thu <vmt@openerp.com>2012-01-18 11:12:52 +0100
commit75b3fc0907ee873c6e16d1fa8e8bfe58d4f520c1 (patch)
tree3e7f7bbe9110eeae766b46bb9c16a867579b6452 /addons/web/static/src/js
parent3203d264aecd751a8c261cea4f72fa323a3098be (diff)
parent152f92916bc36d00c0e59fbc49fb655a4fd85908 (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.js17
-rw-r--r--addons/web/static/src/js/core.js6
-rw-r--r--addons/web/static/src/js/data.js4
-rw-r--r--addons/web/static/src/js/data_export.js3
-rw-r--r--addons/web/static/src/js/view_editor.js12
-rw-r--r--addons/web/static/src/js/view_form.js36
-rw-r--r--addons/web/static/src/js/view_list.js31
-rw-r--r--addons/web/static/src/js/view_page.js1
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',