diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 62391547040..c1969fafae3 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -1829,7 +1829,6 @@ color: black; padding: 0px 3px 0px 3px; margin: 0 2px 2px 0; - cursor: pointer; height: 16px; font: 11px "lucida grande", tahoma, verdana, arial, sans-serif; } diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index 18026b60070..c2b92343bf4 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -1463,7 +1463,6 @@ $colour4: #8a89ba color: black padding: 0px 3px 0px 3px margin: 0 2px 2px 0 - cursor: pointer height: 16px font: 11px "lucida grande", tahoma, verdana, arial, sans-serif .text-core .text-wrap .text-dropdown .text-list .text-suggestion em diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 017293f5d6d..e5b60c49a46 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -2754,9 +2754,12 @@ instance.web.form.FieldOne2Many = instance.web.form.AbstractField.extend({ } view.options.not_interactible_on_create = true; } else if (view.view_type === "kanban") { + view.options.confirm_on_delete = false; if (self.get("effective_readonly")) { view.options.action_buttons = false; view.options.quick_creatable = false; + view.options.creatable = false; + view.options.read_only_mode = true; } } views.push(view); @@ -3106,7 +3109,7 @@ instance.web.form.FieldMany2ManyTags = instance.web.form.AbstractField.extend(_. if (this.get("effective_readonly")) return; var self = this; - self. $text = $("textarea", this.$element); + self.$text = $("textarea", this.$element); self.$text.textext({ plugins : 'tags arrow autocomplete', autocomplete: { @@ -3158,19 +3161,6 @@ instance.web.form.FieldMany2ManyTags = instance.web.form.AbstractField.extend(_. return _.extend(el, {index:i}); })}); }); - }).bind('tagClick', function(e, tag, value, callback) { - var pop = new instance.web.form.FormOpenPopup(self.view); - pop.show_element( - self.field.relation, - value.id, - self.build_context(), - { - title: _t("Open: ") + (self.string || self.name) - } - ); - pop.on_write_completed.add_last(function() { - self.render_value(); - }); }).bind('hideDropdown', function() { self._drop_shown = false; }).bind('showDropdown', function() { @@ -3178,7 +3168,7 @@ instance.web.form.FieldMany2ManyTags = instance.web.form.AbstractField.extend(_. }); self.tags = self.$text.textext()[0].tags(); $("textarea", this.$element).focusout(function() { - $("textarea", this.$element).val(""); + self.$text.trigger("setInputData", ""); }).keydown(function(e) { if (event.keyCode === 9 && self._drop_shown) { self.$text.textext()[0].autocomplete().selectFromDropdown(); @@ -3214,17 +3204,6 @@ instance.web.form.FieldMany2ManyTags = instance.web.form.AbstractField.extend(_. self.tags.addTags(_.map(data, function(el) {return {name: el[1], id:el[0]};})); } else { self.$element.html(QWeb.render("FieldMany2ManyTags.box", {elements: data})); - $(".oe_form_field_many2manytags_box", self.$element).click(function() { - var index = Number($(this).data("index")); - self.do_action({ - type: 'ir.actions.act_window', - res_model: self.field.relation, - res_id: self.get("value")[index], - context: self.build_context(), - views: [[false, 'form']], - target: 'current' - }); - }); } }; if (! self.get('values') || self.get('values').length > 0) { @@ -3417,6 +3396,8 @@ instance.web.form.FieldMany2ManyKanban = instance.web.form.AbstractField.extend( 'create_text': _t("Add"), 'creatable': self.get("effective_readonly") ? false : true, 'quick_creatable': self.get("effective_readonly") ? false : true, + 'read_only_mode': self.get("effective_readonly") ? true : false, + 'confirm_on_delete': false, }); var embedded = (this.field.views || {}).kanban; if (embedded) { @@ -3563,6 +3544,7 @@ instance.web.form.Many2ManyQuickCreate = instance.web.Widget.extend({ var self = this; self.$text.val(""); self.trigger('added', id); + this.m2m.dataset_changed(); }, }); } @@ -3617,7 +3599,7 @@ instance.web.form.AbstractFormPopup = instance.web.OldWidget.extend({ width: '90%', min_width: '800px', close: function() { - self.check_exit(); + self.check_exit(true); }, title: this.options.title || "", }, this.$element).open(); @@ -3675,9 +3657,10 @@ instance.web.form.AbstractFormPopup = instance.web.OldWidget.extend({ }, on_select_elements: function(element_ids) { }, - check_exit: function() { + check_exit: function(no_destroy) { if (this.created_elements.length > 0) { this.on_select_elements(this.created_elements); + this.created_elements = []; } this.destroy(); }, diff --git a/addons/web_kanban/static/src/css/kanban.css b/addons/web_kanban/static/src/css/kanban.css index dd376ef44e5..c341475c169 100644 --- a/addons/web_kanban/static/src/css/kanban.css +++ b/addons/web_kanban/static/src/css/kanban.css @@ -107,8 +107,8 @@ box-sizing: border-box; width: 100%; } -.openerp .oe_kanban_view .oe_kanban_quick_create button { - float: right; +.openerp .oe_kanban_view .oe_kanban_quick_create .oe_kanban_quick_create_buttons { + margin-bottom: 10px; } .openerp .oe_kanban_view .oe_kanban_vignette { padding: 8px; diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index 3f1d944a62b..96487fa8b7e 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -14,7 +14,13 @@ instance.web_kanban.KanbanView = instance.web.View.extend({ number_of_color_schemes: 10, init: function (parent, dataset, view_id, options) { this._super(parent, dataset, view_id, options); - _.defaults(this.options, {"quick_creatable": true, "creatable": true, "create_text": undefined}); + _.defaults(this.options, { + "quick_creatable": true, + "creatable": true, + "create_text": undefined, + "read_only_mode": false, + "confirm_on_delete": true, + }); this.fields_view = {}; this.fields_keys = []; this.group_by = null; @@ -417,7 +423,7 @@ instance.web_kanban.KanbanGroup = instance.web.OldWidget.extend({ this.quick.destroy(); delete this.quick; }); - self.quick.appendTo(self.$element.find('.oe_kanban_header')); + self.quick.appendTo($(".oe_kanban_group_list_header", self.$records)); self.quick.focus(); }); this.$records.find('.oe_kanban_show_more').click(this.do_show_more); @@ -466,7 +472,7 @@ instance.web_kanban.KanbanGroup = instance.web.OldWidget.extend({ rec.insertBefore(self.$records.find('.oe_kanban_show_more')); self.records.push(rec); } else { - rec.prependTo(self.$records); + rec.insertAfter($(".oe_kanban_group_list_header", self.$records)); self.records.unshift(rec); } }); @@ -503,7 +509,7 @@ instance.web_kanban.KanbanGroup = instance.web.OldWidget.extend({ this.dataset.read_ids([id], this.view.fields_keys) .then(function (records) { self.view.dataset.ids.push(id); - self.do_add_records(records, 'prepend'); + self.do_add_records(records, true); }); } }); @@ -550,7 +556,8 @@ instance.web_kanban.KanbanRecord = instance.web.OldWidget.extend({ render: function() { this.qweb_context = { record: this.record, - widget: this + widget: this, + read_only_mode: this.view.options.read_only_mode, }; for (var p in this) { if (_.str.startsWith(p, 'kanban_')) { @@ -653,12 +660,18 @@ instance.web_kanban.KanbanRecord = instance.web.OldWidget.extend({ }, do_action_delete: function($action) { var self = this; - if (confirm(_t("Are you sure you want to delete this record ?"))) { - return $.when(this.view.dataset.unlink([this.id])).then(function() { + function do_it() { + return $.when(self.view.dataset.unlink([self.id])).then(function() { self.group.remove_record(self.id); self.destroy(); }); - } + }; + if (this.view.options.confirm_on_delete) { + if (confirm(_t("Are you sure you want to delete this record ?"))) { + return do_it(); + } + } else + return do_it(); }, do_action_edit: function($action) { var self = this; @@ -775,6 +788,11 @@ instance.web_kanban.QuickCreate = instance.web.Widget.extend({ $(".oe-kanban-quick_create_close", this.$element).click(function () { self.trigger('close'); }); + self.$input.keyup(function(e) { + if (e.keyCode == 27 && self._buttons) { + self.trigger('close'); + } + }); }, focus: function() { this.$element.find('input').focus(); diff --git a/addons/web_kanban/static/src/xml/web_kanban.xml b/addons/web_kanban/static/src/xml/web_kanban.xml index cabe9cb52fb..b50c2910e3c 100644 --- a/addons/web_kanban/static/src/xml/web_kanban.xml +++ b/addons/web_kanban/static/src/xml/web_kanban.xml @@ -48,6 +48,7 @@ +
@@ -64,10 +65,12 @@
- + - - +
+ + or Cancel +