diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py
index 6f72d836ea4..72868647a48 100644
--- a/addons/web/controllers/main.py
+++ b/addons/web/controllers/main.py
@@ -1417,6 +1417,7 @@ class ExcelExport(Export):
for cell_index, cell_value in enumerate(row):
if isinstance(cell_value, basestring):
cell_value = re.sub("\r", " ", cell_value)
+ if cell_value is False: cell_value = None
worksheet.write(row_index + 1, cell_index, cell_value, style)
fp = StringIO()
diff --git a/addons/web/static/src/js/core.js b/addons/web/static/src/js/core.js
index 1929c573e42..0b49e1cc52d 100644
--- a/addons/web/static/src/js/core.js
+++ b/addons/web/static/src/js/core.js
@@ -887,8 +887,11 @@ openerp.web.Widget = openerp.web.CallbackEnabled.extend(/** @lends openerp.web.W
*/
render_element: function() {
var rendered = this.render();
- if (rendered || rendered === "")
- this.$element = $(rendered);
+ if (rendered) {
+ var elem = $(rendered);
+ this.$element.replaceWith(elem);
+ this.$element = elem;
+ }
return this;
},
/**
@@ -900,7 +903,7 @@ openerp.web.Widget = openerp.web.CallbackEnabled.extend(/** @lends openerp.web.W
render: function (additional) {
if (this.template)
return openerp.web.qweb.render(this.template, _.extend({widget: this}, additional || {}));
- return false;
+ return null;
},
/**
* Method called after rendering. Mostly used to bind actions, perform asynchronous
@@ -912,12 +915,6 @@ openerp.web.Widget = openerp.web.CallbackEnabled.extend(/** @lends openerp.web.W
* @returns {jQuery.Deferred}
*/
start: function() {
- /* The default implementation is only useful for retro-compatibility, it is
- not necessary to call it using _super() when using Widget for new components. */
- if (!this.$element) {
- var tmp = document.getElementById(this.element_id);
- this.$element = tmp ? $(tmp) : undefined;
- }
return $.Deferred().done().promise();
},
/**
diff --git a/addons/web/static/src/js/dates.js b/addons/web/static/src/js/dates.js
index 036cf8cd90b..7861dd21b79 100644
--- a/addons/web/static/src/js/dates.js
+++ b/addons/web/static/src/js/dates.js
@@ -18,11 +18,11 @@ openerp.web.str_to_datetime = function(str) {
var regex = /^(\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d)(?:\.\d+)?$/;
var res = regex.exec(str);
if ( !res ) {
- throw "'" + str + "' is not a valid datetime";
+ throw new Error("'" + str + "' is not a valid datetime");
}
var obj = Date.parse(res[1] + " GMT");
if (! obj) {
- throw "'" + str + "' is not a valid datetime";
+ throw new Error("'" + str + "' is not a valid datetime");
}
return obj;
};
@@ -41,11 +41,11 @@ openerp.web.str_to_date = function(str) {
var regex = /^\d\d\d\d-\d\d-\d\d$/;
var res = regex.exec(str);
if ( !res ) {
- throw "'" + str + "' is not a valid date";
+ throw new Error("'" + str + "' is not a valid date");
}
var obj = Date.parse(str);
if (! obj) {
- throw "'" + str + "' is not a valid date";
+ throw new Error("'" + str + "' is not a valid date");
}
return obj;
};
@@ -64,11 +64,11 @@ openerp.web.str_to_time = function(str) {
var regex = /^(\d\d:\d\d:\d\d)(?:\.\d+)?$/;
var res = regex.exec(str);
if ( !res ) {
- throw "'" + str + "' is not a valid time";
+ throw new Error("'" + str + "' is not a valid time");
}
var obj = Date.parse(res[1]);
if (! obj) {
- throw "'" + str + "' is not a valid time";
+ throw new Error("'" + str + "' is not a valid time");
}
return obj;
};
diff --git a/addons/web/static/src/js/formats.js b/addons/web/static/src/js/formats.js
index ca540844b7f..d5fcdd35b62 100644
--- a/addons/web/static/src/js/formats.js
+++ b/addons/web/static/src/js/formats.js
@@ -93,7 +93,7 @@ openerp.web.parse_value = function (value, descriptor, value_if_empty) {
} while(tmp !== value);
tmp = Number(value);
if (isNaN(tmp))
- throw value + " is not a correct integer";
+ throw new Error(value + " is not a correct integer");
return tmp;
case 'float':
var tmp = Number(value);
@@ -107,42 +107,42 @@ openerp.web.parse_value = function (value, descriptor, value_if_empty) {
} while(tmp !== tmp2);
tmp = Number(tmp);
if (isNaN(tmp))
- throw value + " is not a correct float";
+ throw new Error(value + " is not a correct float");
return tmp;
case 'float_time':
- var tmp = value.split(":");
- if (tmp.length != 2)
- throw value + " is not a correct float_time";
- var tmp1 = openerp.web.parse_value(tmp[0], {type: "integer"});
- var tmp2 = openerp.web.parse_value(tmp[1], {type: "integer"});
- return tmp1 + (tmp2 / 60);
+ var float_time_pair = value.split(":");
+ if (float_time_pair.length != 2)
+ return openerp.web.parse_value(value, {type: "float"});
+ var hours = openerp.web.parse_value(float_time_pair[0], {type: "integer"});
+ var minutes = openerp.web.parse_value(float_time_pair[1], {type: "integer"});
+ return hours + (minutes / 60);
case 'progressbar':
return openerp.web.parse_value(value, {type: "float"});
case 'datetime':
- var tmp = Date.parseExact(value, _.sprintf("%s %s", Date.CultureInfo.formatPatterns.shortDate,
- Date.CultureInfo.formatPatterns.longTime));
- if (tmp !== null)
- return openerp.web.datetime_to_str(tmp);
- tmp = Date.parse(value);
- if (tmp !== null)
- return openerp.web.datetime_to_str(tmp);
- throw value + " is not a valid datetime";
+ var datetime = Date.parseExact(value, _.sprintf("%s %s", Date.CultureInfo.formatPatterns.shortDate,
+ Date.CultureInfo.formatPatterns.longTime));
+ if (datetime !== null)
+ return openerp.web.datetime_to_str(datetime);
+ datetime = Date.parse(value);
+ if (datetime !== null)
+ return openerp.web.datetime_to_str(datetime);
+ throw new Error(value + " is not a valid datetime");
case 'date':
- var tmp = Date.parseExact(value, Date.CultureInfo.formatPatterns.shortDate);
- if (tmp !== null)
- return openerp.web.date_to_str(tmp);
- tmp = Date.parse(value);
- if (tmp !== null)
- return openerp.web.date_to_str(tmp);
- throw value + " is not a valid date";
+ var date = Date.parseExact(value, Date.CultureInfo.formatPatterns.shortDate);
+ if (date !== null)
+ return openerp.web.date_to_str(date);
+ date = Date.parse(value);
+ if (date !== null)
+ return openerp.web.date_to_str(date);
+ throw new Error(value + " is not a valid date");
case 'time':
- var tmp = Date.parseExact(value, Date.CultureInfo.formatPatterns.longTime);
- if (tmp !== null)
- return openerp.web.time_to_str(tmp);
- tmp = Date.parse(value);
- if (tmp !== null)
- return openerp.web.time_to_str(tmp);
- throw value + " is not a valid time";
+ var time = Date.parseExact(value, Date.CultureInfo.formatPatterns.longTime);
+ if (time !== null)
+ return openerp.web.time_to_str(time);
+ time = Date.parse(value);
+ if (time !== null)
+ return openerp.web.time_to_str(time);
+ throw new Error(value + " is not a valid time");
}
return value;
};
@@ -157,7 +157,7 @@ openerp.web.auto_str_to_date = function(value, type) {
try {
return openerp.web.str_to_time(value);
} catch(e) {}
- throw "'" + value + "' is not a valid date, datetime nor time"
+ throw new Error("'" + value + "' is not a valid date, datetime nor time");
};
openerp.web.auto_date_to_str = function(value, type) {
@@ -169,7 +169,7 @@ openerp.web.auto_date_to_str = function(value, type) {
case 'time':
return openerp.web.time_to_str(value);
default:
- throw type + " is not convertible to date, datetime nor time"
+ throw new Error(type + " is not convertible to date, datetime nor time");
}
};
diff --git a/addons/web/static/src/js/search.js b/addons/web/static/src/js/search.js
index 18e035a40b8..0ceab43f1fd 100644
--- a/addons/web/static/src/js/search.js
+++ b/addons/web/static/src/js/search.js
@@ -963,10 +963,7 @@ openerp.web.search.ExtendedSearch = openerp.web.OldWidget.extend({
this.check_last_element();
},
start: function () {
- this._super();
- if (!this.$element) {
- return; // not a logical state but sometimes it happens
- }
+ this.$element = $("#" + this.element_id);
this.$element.closest("table.oe-searchview-render-line").css("display", "none");
var self = this;
this.rpc("/web/searchview/fields_get",
@@ -1028,7 +1025,7 @@ openerp.web.search.ExtendedSearchGroup = openerp.web.OldWidget.extend({
prop.start();
},
start: function () {
- this._super();
+ this.$element = $("#" + this.element_id);
var _this = this;
this.add_prop();
this.$element.find('.searchview_extended_add_proposition').click(function () {
@@ -1080,7 +1077,7 @@ openerp.web.search.ExtendedSearchProposition = openerp.web.OldWidget.extend(/**
this.value = null;
},
start: function () {
- this._super();
+ this.$element = $("#" + this.element_id);
this.select_field(this.fields.length > 0 ? this.fields[0] : null);
var _this = this;
this.$element.find(".searchview_extended_prop_field").change(function() {
@@ -1188,7 +1185,7 @@ openerp.web.search.ExtendedSearchProposition.DateTime = openerp.web.OldWidget.ex
return this.datewidget.get_value();
},
start: function() {
- this._super();
+ this.$element = $("#" + this.element_id);
this.datewidget = new openerp.web.DateTimeWidget(this);
this.datewidget.prependTo(this.$element);
}
@@ -1208,7 +1205,7 @@ openerp.web.search.ExtendedSearchProposition.Date = openerp.web.OldWidget.extend
return this.datewidget.get_value();
},
start: function() {
- this._super();
+ this.$element = $("#" + this.element_id);
this.datewidget = new openerp.web.DateWidget(this);
this.datewidget.prependTo(this.$element);
}
diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js
index 15790d3c1c0..53d7eeb60fb 100644
--- a/addons/web/static/src/js/view_form.js
+++ b/addons/web/static/src/js/view_form.js
@@ -387,10 +387,16 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
var def = $.Deferred();
$.when(this.has_been_loaded).then(function() {
if (self.can_be_discarded() && self.datarecord.id) {
- self.dataset.unlink([self.datarecord.id]).then(function() {
- self.on_pager_action('next');
- def.resolve();
- });
+ if (confirm(_t("Do you really want to delete this record?"))) {
+ self.dataset.unlink([self.datarecord.id]).then(function() {
+ self.on_pager_action('next');
+ def.resolve();
+ });
+ } else {
+ setTimeout(function () {
+ def.reject();
+ }, 0)
+ }
}
});
return def.promise();
@@ -2035,7 +2041,7 @@ openerp.web.form.FieldOne2Many = openerp.web.form.Field.extend({
once.resolve();
});
controller.on_pager_action.add_first(function() {
- self.save_form_view();
+ self.save_any_view();
});
controller.$element.find(".oe_form_button_save").hide();
} else if (view_type == "graph") {
@@ -2044,7 +2050,7 @@ openerp.web.form.FieldOne2Many = openerp.web.form.Field.extend({
def.resolve();
});
this.viewmanager.on_mode_switch.add_first(function(n_mode, b, c, d, e) {
- $.when(self.save_form_view()).then(function() {
+ $.when(self.save_any_view()).then(function() {
if(n_mode === "list")
setTimeout(function() {self.reload_current_view();}, 0);
});
@@ -2154,7 +2160,7 @@ openerp.web.form.FieldOne2Many = openerp.web.form.Field.extend({
this.dataset.to_delete, function(x) {
return commands['delete'](x.id);}));
},
- save_form_view: function() {
+ save_any_view: 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) {
@@ -2166,6 +2172,13 @@ openerp.web.form.FieldOne2Many = openerp.web.form.Field.extend({
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());
+ // it seems line there are some cases when this happens
+ /*if (!res.isResolved() && !res.isRejected()) {
+ console.warn("Asynchronous get_value() is not supported in list view.");
+ }*/
+ return res;
}
}
return false;
@@ -2190,7 +2203,7 @@ openerp.web.form.FieldOne2Many = openerp.web.form.Field.extend({
}
},
is_dirty: function() {
- this.save_form_view();
+ this.save_any_view();
return this._super();
},
update_dom: function() {
@@ -2318,6 +2331,10 @@ openerp.web.form.FieldMany2Many = openerp.web.form.Field.extend({
'deletable': self.is_readonly() ? false : true,
'selectable': self.multi_selection
});
+ var embedded = (this.field.views || {}).tree;
+ if (embedded) {
+ this.list_view.set_embedded_view(embedded);
+ }
this.list_view.m2m_field = this;
var loaded = $.Deferred();
this.list_view.on_loaded.add_last(function() {
@@ -2419,7 +2436,8 @@ openerp.web.form.SelectCreatePopup = openerp.web.OldWidget.extend(/** @lends ope
}, read_function: null});
this.initial_ids = this.options.initial_ids;
this.created_elements = [];
- openerp.web.form.dialog(this.render(), {close:function() {
+ this.render_element();
+ openerp.web.form.dialog(this.$element, {close:function() {
self.check_exit();
}});
this.start();
@@ -2607,7 +2625,8 @@ openerp.web.form.FormOpenPopup = openerp.web.OldWidget.extend(/** @lends openerp
this.row_id = row_id;
this.context = context || {};
this.options = _.defaults(options || {}, {"auto_write": true});
- jQuery(this.render()).dialog({title: '',
+ this.render_element();
+ this.$element.dialog({title: '',
modal: true,
width: 960,
height: 600});
@@ -3013,7 +3032,7 @@ openerp.web.form.FieldSelectionReadonly = openerp.web.form.FieldReadonly.extend(
this.$element.find('div').text(option ? option[1] : this.values[0][1]);
}
});
-openerp.web.form.FieldMany2OneReadonly = openerp.web.form.FieldCharReadonly.extend({
+openerp.web.form.FieldMany2OneReadonly = openerp.web.form.FieldURIReadonly.extend({
set_value: function (value) {
value = value || null;
this.invalid = false;
@@ -3023,24 +3042,39 @@ openerp.web.form.FieldMany2OneReadonly = openerp.web.form.FieldCharReadonly.exte
self.on_value_changed();
var real_set_value = function(rval) {
self.value = rval;
- var div = $(self.$element.find('div'));
- div.html('');
- var a = $(div.find("a"));
- a.text(rval ? rval[1] : '');
- a.click(function() {
- var pop = new openerp.web.form.FormOpenPopup(self.view);
- pop.show_element(self.field.relation, self.value[0],self.build_context(), {readonly:true});
- });
+ self.$element.find('a')
+ .unbind('click')
+ .text(rval ? rval[1] : '')
+ .click(function () {
+ self.do_action({
+ type: 'ir.actions.act_window',
+ res_model: self.field.relation,
+ res_id: self.value[0],
+ context: self.build_context(),
+ views: [[false, 'form']],
+ target: 'current'
+ });
+ return false;
+ });
};
if (value && !(value instanceof Array)) {
- var dataset = new openerp.web.DataSetStatic(
- this, this.field.relation, self.build_context());
- dataset.name_get([value], function(data) {
- real_set_value(data[0]);
- }).fail(function() {self.tmp_value = undefined;});
+ new openerp.web.DataSetStatic(
+ this, this.field.relation, self.build_context())
+ .name_get([value], function(data) {
+ real_set_value(data[0]);
+ });
} else {
setTimeout(function() {real_set_value(value);}, 0);
}
+ },
+ get_value: function() {
+ if (!this.value) {
+ return false;
+ } else if (this.value instanceof Array) {
+ return this.value[0];
+ } else {
+ return this.value;
+ }
}
});
diff --git a/addons/web/static/src/js/view_list.js b/addons/web/static/src/js/view_list.js
index e891a6c7db7..207d12a64e1 100644
--- a/addons/web/static/src/js/view_list.js
+++ b/addons/web/static/src/js/view_list.js
@@ -476,7 +476,7 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView#
* @param {Array} ids the ids of the records to delete
*/
do_delete: function (ids) {
- if (!(ids.length && confirm(_t("Are you sure to remove those records ?")))) {
+ if (!(ids.length && confirm(_t("Do you really want to remove these records?")))) {
return;
}
var self = this;
@@ -1145,9 +1145,12 @@ openerp.web.ListView.Groups = openerp.web.Class.extend( /** @lends openerp.web.L
row_data[group.grouped_on] = group;
var group_column = _(self.columns).detect(function (column) {
return column.id === group.grouped_on; });
- $group_column.html(openerp.web.format_cell(
- row_data, group_column, _t("Undefined")
- ));
+ try {
+ $group_column.html(openerp.web.format_cell(
+ row_data, group_column, _t("Undefined")));
+ } catch (e) {
+ $group_column.html(row_data[group_column.id].value);
+ }
if (group.openable) {
// Make openable if not terminal group & group_by_no_leaf
$group_column
diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js
index a6aaf02d5e6..92ad85232c4 100644
--- a/addons/web/static/src/js/views.js
+++ b/addons/web/static/src/js/views.js
@@ -471,7 +471,7 @@ session.web.ViewManagerAction = session.web.ViewManager.extend(/** @lends oepner
$search_prefix = $title.find('span');
if (controller.searchable !== false) {
if (!$search_prefix.length) {
- $title.prepend('' + _t("Search:") + '');
+ $title.prepend('' + _t("Search: ") + '');
}
} else {
$search_prefix.remove();
diff --git a/addons/web_graph/static/src/js/graph.js b/addons/web_graph/static/src/js/graph.js
index 04e9d77f5d0..e183fc5cc43 100644
--- a/addons/web_graph/static/src/js/graph.js
+++ b/addons/web_graph/static/src/js/graph.js
@@ -373,9 +373,8 @@ openerp.web_graph.GraphView = openerp.web.View.extend({
},
open_list_view : function (id){
var self = this;
- if($(".dhx_tooltip").is(":visible")) {
- $(".dhx_tooltip").remove('div');
- }
+ // unconditionally nuke tooltips before switching view
+ $(".dhx_tooltip").remove('div');
id = id[this.abscissa];
if (typeof id == 'object'){
id = id[0];
diff --git a/addons/web_mobile/static/src/js/chrome_mobile.js b/addons/web_mobile/static/src/js/chrome_mobile.js
index 99b9651fa7b..516de784adc 100644
--- a/addons/web_mobile/static/src/js/chrome_mobile.js
+++ b/addons/web_mobile/static/src/js/chrome_mobile.js
@@ -20,13 +20,10 @@ openerp.web_mobile.MobileWebClient = openerp.web.Widget.extend({
openerp.web.qweb.add_template("xml/web_mobile.xml");
var params = {};
this.$element.html(this.render());
- this.session = new openerp.web.Session("oe_errors");
this.crashmanager = new openerp.web.CrashManager(this);
this.login = new openerp.web_mobile.Login(this, "oe_login");
-// this.session.on_session_invalid.add(this.login.do_ask_login);
},
start: function() {
- this.session.start();
this.login.start();
}
});
diff --git a/addons/web_mobile/static/src/js/form_mobile.js b/addons/web_mobile/static/src/js/form_mobile.js
index 1cb1dfb494e..598f3c29739 100644
--- a/addons/web_mobile/static/src/js/form_mobile.js
+++ b/addons/web_mobile/static/src/js/form_mobile.js
@@ -96,10 +96,6 @@ openerp.web_mobile.FormView = openerp.web.Widget.extend({
}
}
}
- }
- if(notebook){
- $(this).find('div#page_content').html(self.render({'get_fields': get_fields,'fields' : result.fields, 'values' : self.datarecord,'til': notebook.attrs.string }));
- }else{
$(this).find('div#page_content').html(self.render({'get_fields': get_fields,'fields' : result.fields, 'values' : self.datarecord}));
}
self.formatdata(get_fields, fields, result, self.datarecord,'page_content','element');
@@ -135,16 +131,19 @@ openerp.web_mobile.FormView = openerp.web.Widget.extend({
var relational = $(this).attr('for');
if(result.fields[relational]){
var head = $.trim($(this).text());
- var dataset = new openerp.web.DataSetStatic(self, result.fields[relational].relation, result.fields[relational].context);
+ var dataset = new openerp.web.DataSetSearch(self, result.fields[relational].relation, result.fields[relational].context);
dataset.domain=[['id', 'in', self.datarecord[relational]]];
- dataset.name_search('', dataset.domain, 'in',false ,function(res){
- for(var i=0;i ').appendTo('#moe');
- $('[id^="oe_list_'+relational+'_'+self.element_id+'"]').html(openerp.web.qweb.render("ListView", {'records' : res}));
+ $('[id^="oe_list_'+relational+'_'+self.element_id+'"]').html(openerp.web.qweb.render("ListView", {'records' : res,'data': additional}));
$('[id^="oe_list_'+relational+'_'+self.element_id+'"]').find("[data-role=header]").find('h1').html(head);
$('[id^="oe_list_'+relational+'_'+self.element_id+'"]').find("[data-role=header]").find('#home').click(function(){
$.mobile.changePage("#oe_menu", "slide", false, true);
@@ -179,6 +178,7 @@ openerp.web_mobile.FormView = openerp.web.Widget.extend({
}
if(!$('[id^="oe_form_'+listid+result.fields[relational].relation+'"]').html()){
$('
').appendTo('#moe');
+
for (var k = 0; k < notebooks.children.length; k++) {
if (notebooks.children[k].attrs.string == lastid) {
get_fields = self.get_fields(notebooks.children[k].children);
@@ -194,7 +194,11 @@ openerp.web_mobile.FormView = openerp.web.Widget.extend({
}
}
}
- $('[id^="oe_form_'+listid+result.fields[relational].relation+'"]').html(self.render({'get_fields': get_fields_test, 'notebooks': false, 'fields' : fields_test, 'values' : data_relational, 'temp_flag':'1' }));
+ if(notebook){
+ $('[id^="oe_form_'+listid+result.fields[relational].relation+'"]').html(self.render({'get_fields': get_fields_test, 'notebooks': false, 'fields' : fields_test, 'values' : data_relational, 'temp_flag':'1' }));
+ }else{
+ $('[id^="oe_form_'+listid+result.fields[relational].relation+'"]').html(self.render({'get_fields': get_fields_test, 'notebooks': false, 'fields' : fields, 'values' : data_relational, 'temp_flag':'1' }));
+ }
$('[id^="oe_form_'+listid+result.fields[relational].relation+'"]').find("[data-role=header]").find('h1').html(head_title);
$('[id^="oe_form_'+listid+result.fields[relational].relation+'"]').find("[data-role=header]").find('#home').click(function(){
$.mobile.changePage("#oe_menu", "slide", false, true);
@@ -229,7 +233,11 @@ openerp.web_mobile.FormView = openerp.web.Widget.extend({
}
}
});
- self.formatdata(get_fields_test, fields_test, result, data_relational,'oe_form_'+listid+result.fields[relational].relation,'element');
+ if(notebook){
+ self.formatdata(get_fields_test, fields_test, result, data_relational,'oe_form_'+listid+result.fields[relational].relation,'element');
+ }else{
+ self.formatdata(get_fields_test, fields, result, data_relational,'oe_form_'+listid+result.fields[relational].relation,'element');
+ }
$.mobile.changePage('#oe_form_'+listid+result.fields[relational].relation, "slide", false, true);
self.formatdata('', '', '', '','oe_form_'+listid+result.fields[relational].relation,'slider');
}else{
@@ -241,7 +249,8 @@ openerp.web_mobile.FormView = openerp.web.Widget.extend({
}else{
$.mobile.changePage("#oe_list_"+relational+"_"+self.element_id, "slide", false, true);
}
- });
+ });
+ });
}
});
$.mobile.changePage("#"+self.element_id, "slide", false, true);
@@ -256,6 +265,12 @@ openerp.web_mobile.FormView = openerp.web.Widget.extend({
if (view_fields[i].tag == 'group') {
this.get_fields(view_fields[i].children, this.fields);
}
+ if (view_fields[i].tag == 'level') {
+ this.get_fields(view_fields[i].children, this.fields);
+ }
+ if (view_fields[i].tag == 'page') {
+ this.get_fields(view_fields[i].children, this.fields);
+ }
}
return this.fields;
},
@@ -280,6 +295,18 @@ openerp.web_mobile.FormView = openerp.web.Widget.extend({
$(this).val(dateresult);
}
}
+ $('[id^="'+id+'"]').find('#website').each(function(){
+ $(this).css('display','inline-block');
+ $(this).css('width','60%');
+ });
+ $('[id^="'+id+'"]').find('#email').each(function(){
+ $(this).css('display','inline-block');
+ $(this).css('width','60%');
+ });
+ $('[id^="'+id+'"]').find('#email_from').each(function(){
+ $(this).css('display','inline-block');
+ $(this).css('width','60%');
+ });
});
// Temp: Selection set as disabled
$('[id^="'+id+'"]').find('select').each(function() {
@@ -297,6 +324,16 @@ openerp.web_mobile.FormView = openerp.web.Widget.extend({
$(this).css('left', '-9999px');
});
});
+ // image displayed with m2o field
+ $('[id^="'+id+'"]').find('div[class=ui-select]').each(function(){
+ $(this).next().each(function(){
+ if($(this).attr('id')=="formbutton"){
+ $(this).prev().css('display','inline-table');
+ $(this).prev().find('a').find('.ui-btn-inner').removeClass('ui-btn-inner');
+ $(this).prev().find('a').find('span:first').css('padding-right','150px');
+ }
+ });
+ });
}
}
});
diff --git a/addons/web_mobile/static/src/js/list_mobile.js b/addons/web_mobile/static/src/js/list_mobile.js
index ec6de48e941..7e9fff16262 100644
--- a/addons/web_mobile/static/src/js/list_mobile.js
+++ b/addons/web_mobile/static/src/js/list_mobile.js
@@ -19,36 +19,52 @@ openerp.web_mobile.ListView = openerp.web.Widget.extend({
var self = this;
if (data.action.length) {
this.action = data.action[0][2];
- this.on_search_data();
+ return this.rpc('/web/listview/load', {
+ model: this.action.res_model,
+ view_id: this.action.views[0][0],
+ view_type: "tree",
+ context: this.action.context,
+ toolbar: false
+ }, this.on_search_data);
}
},
on_search_data: function(ev){
var self = this;
- var dataset = new openerp.web.DataSetStatic(this, this.action.res_model, this.action.context);
- dataset.name_search('', this.action.domain, 'ilike', false, function(result){
- self.$element.html(self.render({'records' : result}));
- self.$element.find("[data-role=header]").find('h1').html(self.action.name);
- self.$element.find("[data-role=header]").find('#home').click(function(){
- $.mobile.changePage("#oe_menu", "slide", false, true);
- });
- self.$element.find("[data-role=footer]").find('#shrotcuts').click(function(){
- if (!$('#oe_shortcuts').html().length) {
- this.shortcuts = new openerp.web_mobile.Shortcuts(self, "oe_shortcuts");
- this.shortcuts.start();
- }else{
- $.mobile.changePage("#oe_shortcuts", "slide", false, true);
+ var dataset = new openerp.web.DataSetSearch(this, this.action.res_model,this.action.context);
+ dataset.domain = self.action.domain;
+ dataset.read_slice([], {}, function(result,ids){
+ _.extend(self.action.context,{"html_name_get" : true});
+
+ var dataset1 = new openerp.web.DataSet(self, self.action.res_model,self.action.context);
+ dataset1.name_get(dataset.ids,function(res){
+ var additional = "";
+ if(res['html_name_get']){
+ additional = res['display'];
}
+ self.$element.html(self.render({'records': res, 'data': additional }));
+ self.$element.find("[data-role=header]").find('h1').html(self.action.name);
+ self.$element.find("[data-role=header]").find('#home').click(function(){
+ $.mobile.changePage("#oe_menu", "slide", false, true);
+ });
+ self.$element.find("[data-role=footer]").find('#shrotcuts').click(function(){
+ if (!$('#oe_shortcuts').html().length) {
+ this.shortcuts = new openerp.web_mobile.Shortcuts(self, "oe_shortcuts");
+ this.shortcuts.start();
+ }else{
+ $.mobile.changePage("#oe_shortcuts", "slide", false, true);
+ }
+ });
+ self.$element.find("[data-role=footer]").find('#preference').click(function(){
+ if(!$('#oe_options').html().length){
+ this.options = new openerp.web_mobile.Options(self, "oe_options");
+ this.options.start();
+ }else{
+ $.mobile.changePage("#oe_options", "slide", false, true);
+ }
+ });
+ self.$element.find("a#list-id").click(self.on_list_click);
+ $.mobile.changePage("#"+self.element_id, "slide", false, true);
});
- self.$element.find("[data-role=footer]").find('#preference').click(function(){
- if(!$('#oe_options').html().length){
- this.options = new openerp.web_mobile.Options(self, "oe_options");
- this.options.start();
- }else{
- $.mobile.changePage("#oe_options", "slide", false, true);
- }
- });
- self.$element.find("a#list-id").click(self.on_list_click);
- $.mobile.changePage("#"+self.element_id, "slide", false, true);
});
},
on_list_click: function(ev) {
diff --git a/addons/web_mobile/static/src/xml/web_mobile.xml b/addons/web_mobile/static/src/xml/web_mobile.xml
index 775ac90c66c..8299d40c171 100644
--- a/addons/web_mobile/static/src/xml/web_mobile.xml
+++ b/addons/web_mobile/static/src/xml/web_mobile.xml
@@ -132,13 +132,32 @@
-
+
+ No one record is created
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -148,12 +167,11 @@