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 @@
-
- +
- - - -
@@ -325,4 +347,4 @@
- + \ No newline at end of file