summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnkita Raval <anr@odoo.com>2020-01-29 09:57:23 +0000
committerSimon Lejeune <sle@openerp.com>2020-01-29 09:57:23 +0000
commit0052222b549ca0607a295e08f282452e2231f6fc (patch)
tree94482a60c4b082a5e02c7e7a291c0da5ffd01507
parent3dc7a7355e6cc1cd6ca3fe20fd8dc1b08a16a57b (diff)
[REF] web: calendar: allow disabling the delete button
In this commit, we add a new attribute "Delete" for user conveniency if he don't want 'Delete' button on popover card they easily achive by "delete=false" attribute and also add a testcase for it. task-id:2088954
-rw-r--r--addons/web/static/src/js/views/calendar/calendar_popover.js1
-rw-r--r--addons/web/static/src/js/views/calendar/calendar_renderer.js2
-rw-r--r--addons/web/static/src/js/views/calendar/calendar_view.js1
-rw-r--r--addons/web/static/src/xml/web_calendar.xml2
-rw-r--r--addons/web/static/tests/views/calendar_tests.js32
-rw-r--r--doc/reference/views.rst3
-rw-r--r--odoo/addons/base/rng/calendar_view.rng1
7 files changed, 41 insertions, 1 deletions
diff --git a/addons/web/static/src/js/views/calendar/calendar_popover.js b/addons/web/static/src/js/views/calendar/calendar_popover.js
index e6e5518d752..1094f345c7d 100644
--- a/addons/web/static/src/js/views/calendar/calendar_popover.js
+++ b/addons/web/static/src/js/views/calendar/calendar_popover.js
@@ -27,6 +27,7 @@ var CalendarPopover = Widget.extend(StandaloneFieldManagerMixin, {
this.fields = eventInfo.fields;
this.event = eventInfo.event;
this.modelName = eventInfo.modelName;
+ this.canDelete = eventInfo.canDelete;
},
/**
* @override
diff --git a/addons/web/static/src/js/views/calendar/calendar_renderer.js b/addons/web/static/src/js/views/calendar/calendar_renderer.js
index 7755097d412..471ccfbb0c3 100644
--- a/addons/web/static/src/js/views/calendar/calendar_renderer.js
+++ b/addons/web/static/src/js/views/calendar/calendar_renderer.js
@@ -191,6 +191,7 @@ return AbstractRenderer.extend({
this.color_map = {};
this.hideDate = params.hideDate;
this.hideTime = params.hideTime;
+ this.canDelete = params.canDelete;
},
/**
* @override
@@ -695,6 +696,7 @@ return AbstractRenderer.extend({
displayFields: this.displayFields,
event: eventData,
modelName: this.model,
+ canDelete: this.canDelete,
};
var start = moment(eventData.r_start || eventData.start);
diff --git a/addons/web/static/src/js/views/calendar/calendar_view.js b/addons/web/static/src/js/views/calendar/calendar_view.js
index d55493186aa..dfdb41a54e0 100644
--- a/addons/web/static/src/js/views/calendar/calendar_view.js
+++ b/addons/web/static/src/js/views/calendar/calendar_view.js
@@ -148,6 +148,7 @@ var CalendarView = AbstractView.extend({
this.rendererParams.model = viewInfo.model;
this.rendererParams.hideDate = utils.toBoolElse(attrs.hide_date || '', false);
this.rendererParams.hideTime = utils.toBoolElse(attrs.hide_time || '', false);
+ this.rendererParams.canDelete = this.controllerParams.activeActions.delete;
this.loadParams.fieldNames = _.uniq(fieldNames);
this.loadParams.mapping = mapping;
diff --git a/addons/web/static/src/xml/web_calendar.xml b/addons/web/static/src/xml/web_calendar.xml
index 4166b5e123e..41020c9939a 100644
--- a/addons/web/static/src/xml/web_calendar.xml
+++ b/addons/web/static/src/xml/web_calendar.xml
@@ -45,7 +45,7 @@
<ul class="list-group list-group-flush o_cw_popover_fields_secondary"/>
<div class="card-footer border-top">
<a href="#" class="btn btn-primary o_cw_popover_edit">Edit</a>
- <a href="#" class="btn btn-secondary o_cw_popover_delete ml-2">Delete</a>
+ <a t-if="widget.canDelete" href="#" class="btn btn-secondary o_cw_popover_delete ml-2">Delete</a>
</div>
</div>
</t>
diff --git a/addons/web/static/tests/views/calendar_tests.js b/addons/web/static/tests/views/calendar_tests.js
index 25007283826..a58c857d49e 100644
--- a/addons/web/static/tests/views/calendar_tests.js
+++ b/addons/web/static/tests/views/calendar_tests.js
@@ -247,6 +247,38 @@ QUnit.module('Views', {
calendar.destroy();
});
+ QUnit.test('delete attribute on calendar doesn\'t show delete button in popover', async function (assert) {
+ assert.expect(2);
+
+ const calendar = await createCalendarView({
+ View: CalendarView,
+ model: 'event',
+ data: this.data,
+ arch:
+ '<calendar class="o_calendar_test" ' +
+ 'string="Events" ' +
+ 'event_open_popup="true" ' +
+ 'date_start="start" ' +
+ 'date_stop="stop" ' +
+ 'all_day="allday" ' +
+ 'delete="0" ' +
+ 'mode="month"/>',
+ archs: archs,
+ viewOptions: {
+ initialDate: initialDate,
+ },
+ });
+
+ await testUtils.dom.click(calendar.$('.fc-event:contains(event 4) .fc-content'));
+
+ assert.containsOnce(calendar, '.o_cw_popover',
+ "should open a popover clicking on event");
+ assert.containsNone(calendar, '.o_cw_popover .o_cw_popover_delete',
+ "should not have the 'Delete' Button");
+
+ calendar.destroy();
+ });
+
QUnit.test('breadcrumbs are updated with the displayed period', async function (assert) {
assert.expect(3);
diff --git a/doc/reference/views.rst b/doc/reference/views.rst
index 4a4ab2f1206..66cc4d36482 100644
--- a/doc/reference/views.rst
+++ b/doc/reference/views.rst
@@ -913,6 +913,9 @@ calendar view are:
``create``
allows *dis*\ abling the corresponding action in the view by setting the
corresponding attribute to ``false``
+``delete``
+ allows *dis*\ abling the corresponding action in the view by setting the
+ corresponding attribute to ``false``
``<field>``
declares fields to aggregate or to use in kanban *logic*. If the field is
simply displayed in the calendar cards.
diff --git a/odoo/addons/base/rng/calendar_view.rng b/odoo/addons/base/rng/calendar_view.rng
index 3e122fd018d..842a0857e3e 100644
--- a/odoo/addons/base/rng/calendar_view.rng
+++ b/odoo/addons/base/rng/calendar_view.rng
@@ -23,6 +23,7 @@
<rng:optional><rng:attribute name="hide_time"/></rng:optional>
<rng:optional><rng:attribute name="hide_date"/></rng:optional>
<rng:optional><rng:attribute name="create"/></rng:optional>
+ <rng:optional><rng:attribute name="delete"/></rng:optional>
<rng:optional>
<rng:attribute name="mode">
<rng:choice>