diff options
| author | Martin Geubelle <mge@odoo.com> | 2017-11-17 14:59:10 +0100 |
|---|---|---|
| committer | Martin Geubelle <mge@odoo.com> | 2017-11-17 16:21:01 +0100 |
| commit | 5ba6d93810ba447f94ca2bb0d6804865a32b5cbf (patch) | |
| tree | 4d7403932ce08cfb5bc92dcd502cf1de0506f801 /addons/web/static/src/js | |
| parent | 11ff01af9b3887e7ec70dae204cd0d2c1bc0f8f0 (diff) | |
[FIX] web: Kanban: prevent drag&drop for readonly
If the kanban view is grouped by a readonly field, it should not be possible
to drag&drop the record from one column to another as this will trigger a
write on this readonly field.
It should however be possible to resequence records so the option `containment`
is used in the records.
Closes #19390
Diffstat (limited to 'addons/web/static/src/js')
| -rw-r--r-- | addons/web/static/src/js/views/kanban/kanban_column.js | 5 | ||||
| -rw-r--r-- | addons/web/static/src/js/views/kanban/kanban_record.js | 1 | ||||
| -rw-r--r-- | addons/web/static/src/js/views/kanban/kanban_renderer.js | 7 |
3 files changed, 9 insertions, 4 deletions
diff --git a/addons/web/static/src/js/views/kanban/kanban_column.js b/addons/web/static/src/js/views/kanban/kanban_column.js index 269e37e7082..82fc5d168ff 100644 --- a/addons/web/static/src/js/views/kanban/kanban_column.js +++ b/addons/web/static/src/js/views/kanban/kanban_column.js @@ -50,7 +50,7 @@ var KanbanColumn = Widget.extend({ this.grouped_by_m2o = options.grouped_by_m2o; this.editable = options.editable; this.deletable = options.deletable; - this.draggable = recordOptions.draggable; + this.draggable = options.draggable; this.records_editable = options.records_editable; this.records_deletable = options.records_deletable; this.relation = options.relation; @@ -87,12 +87,13 @@ var KanbanColumn = Widget.extend({ } this.$header.tooltip(); - if (config.device.size_class > config.device.SIZES.XS && this.draggable !== false) { + if (config.device.size_class > config.device.SIZES.XS) { // deactivate sortable in mobile mode. It does not work anyway, // and it breaks horizontal scrolling in kanban views. Someday, we // should find a way to use the touch events to make sortable work. this.$el.sortable({ connectWith: '.o_kanban_group', + containment: this.draggable ? '.o_kanban_view' : 'parent', revert: 0, delay: 0, items: '> .o_kanban_record:not(.o_updating)', diff --git a/addons/web/static/src/js/views/kanban/kanban_record.js b/addons/web/static/src/js/views/kanban/kanban_record.js index e5846e55cf4..7eb8b126508 100644 --- a/addons/web/static/src/js/views/kanban/kanban_record.js +++ b/addons/web/static/src/js/views/kanban/kanban_record.js @@ -33,7 +33,6 @@ var KanbanRecord = Widget.extend({ this.options = options; this.editable = options.editable; this.deletable = options.deletable; - this.draggable = options.draggable; this.read_only_mode = options.read_only_mode; this.qweb = options.qweb; this.subWidgets = {}; diff --git a/addons/web/static/src/js/views/kanban/kanban_renderer.js b/addons/web/static/src/js/views/kanban/kanban_renderer.js index cd9572b0fc5..b8c2e3c0bcd 100644 --- a/addons/web/static/src/js/views/kanban/kanban_renderer.js +++ b/addons/web/static/src/js/views/kanban/kanban_renderer.js @@ -316,7 +316,7 @@ var KanbanRenderer = BasicRenderer.extend({ var groupByFieldInfo = state.fieldsInfo.kanban[state.groupedBy[0]]; // Deactivate the drag'n'drop if the groupedBy field: // - is a date or datetime since we group by month or - // - is readonly + // - is readonly (on the field attrs or in the view) var draggable = true; if (groupByFieldAttrs) { if (groupByFieldAttrs.type === "date" || groupByFieldAttrs.type === "datetime") { @@ -325,6 +325,11 @@ var KanbanRenderer = BasicRenderer.extend({ draggable = !(groupByFieldAttrs.readonly); } } + if (groupByFieldInfo) { + if (draggable && groupByFieldInfo.readonly !== undefined) { + draggable = !(groupByFieldInfo.readonly); + } + } this.groupedByM2O = groupByFieldAttrs && (groupByFieldAttrs.type === 'many2one'); var grouped_by_field = this.groupedByM2O && groupByFieldAttrs.relation; var groupByTooltip = groupByFieldInfo && groupByFieldInfo.options.group_by_tooltip; |
