diff options
| author | Ankita Raval <anr@odoo.com> | 2020-01-29 09:57:23 +0000 |
|---|---|---|
| committer | Simon Lejeune <sle@openerp.com> | 2020-01-29 09:57:23 +0000 |
| commit | 0052222b549ca0607a295e08f282452e2231f6fc (patch) | |
| tree | 94482a60c4b082a5e02c7e7a291c0da5ffd01507 | |
| parent | 3dc7a7355e6cc1cd6ca3fe20fd8dc1b08a16a57b (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.js | 1 | ||||
| -rw-r--r-- | addons/web/static/src/js/views/calendar/calendar_renderer.js | 2 | ||||
| -rw-r--r-- | addons/web/static/src/js/views/calendar/calendar_view.js | 1 | ||||
| -rw-r--r-- | addons/web/static/src/xml/web_calendar.xml | 2 | ||||
| -rw-r--r-- | addons/web/static/tests/views/calendar_tests.js | 32 | ||||
| -rw-r--r-- | doc/reference/views.rst | 3 | ||||
| -rw-r--r-- | odoo/addons/base/rng/calendar_view.rng | 1 |
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> |
