From b3f9f2b4362c24135d06cfe8655ba84cc91b84e0 Mon Sep 17 00:00:00 2001 From: Sunil Shrimali Date: Mon, 24 May 2021 12:11:16 +0000 Subject: [PATCH 1/4] [IMP] website_event_meet: properly handle unpublished rooms Currently, if the room is unpublished, it`s never shown to users (even if user is event user / manager). This commit improves behaviour by displaying unpublished rooms to specific users (in /community page). Below are the main changes: - The unpublished rooms are now displayed to event users and managers, after published ones and with lower opacity. - The drop-down menu for managing rooms is now absolutely positioned so that the opacity does not apply on the buttons for unpublished rooms. taskID-2346612 --- .../controllers/community.py | 2 +- .../static/src/scss/event_meet_templates.scss | 5 +++ .../views/event_meet_templates_list.xml | 33 +++++++++---------- 3 files changed, 22 insertions(+), 18 deletions(-) diff --git a/addons/website_event_meet/controllers/community.py b/addons/website_event_meet/controllers/community.py index 32c8cbafb41..784389753eb 100644 --- a/addons/website_event_meet/controllers/community.py +++ b/addons/website_event_meet/controllers/community.py @@ -23,7 +23,7 @@ class WebsiteEventMeetController(EventCommunityController): return search_domain_base def _sort_event_rooms(self, room): - return (room.is_pinned, room.room_last_activity, room.id) + return (room.website_published, room.is_pinned, room.room_last_activity, room.id) # ------------------------------------------------------------ # MAIN PAGE diff --git a/addons/website_event_meet/static/src/scss/event_meet_templates.scss b/addons/website_event_meet/static/src/scss/event_meet_templates.scss index ddd9e030f3c..dffd340dc0d 100644 --- a/addons/website_event_meet/static/src/scss/event_meet_templates.scss +++ b/addons/website_event_meet/static/src/scss/event_meet_templates.scss @@ -57,3 +57,8 @@ position: absolute; opacity: 0.6; } + +.o_wevent_meeting_room_manager_menu { + top: $spacer / 2; + right: $spacer; +} diff --git a/addons/website_event_meet/views/event_meet_templates_list.xml b/addons/website_event_meet/views/event_meet_templates_list.xml index 4dc72bd2a5e..4d08ecc4084 100644 --- a/addons/website_event_meet/views/event_meet_templates_list.xml +++ b/addons/website_event_meet/views/event_meet_templates_list.xml @@ -122,27 +122,14 @@ t-att-href="meeting_room_href" t-att-data-toggle="meeting_room_data_toggle" t-att-data-target="meeting_room_data_target"> -
+
Full
-
-

-
+
+

+
Unpublished
-
- - -

@@ -155,6 +142,18 @@

+
+ + +
From b3d1a0349f747966a5a88c1d35ed911f3bc5a821 Mon Sep 17 00:00:00 2001 From: Sunil Shrimali Date: Mon, 24 May 2021 12:36:37 +0000 Subject: [PATCH 2/4] [IMP] website_event_{meet, exhibitor}: handle unpublished sponsors Currently, the usability for unpublished exhibitor is not optimum. For example, on `/exhibitors` page, we show the exhibitors in random order where sometimes unpublished ones might come before the published ones. And on the sidebar of the exhibitors, there's no visual indication for unpublished record and they do not always appear after the published ones. Same for the sponsor/exhibitor list that appears at he bottom of almost all event pages. This commit does the following improvements: - For `/exhibitors` page, now first there will be random published exhibitors, and after that, there will be random unpublished exhibitors (class used to lower opacity is now removed as it will be handled by publish management related data attributes). - Clicking on any of this exhibitors, on the left sidebar, now we display unpublished exhibitors at the last, with lower opacity and 'Unpublished' tag. - The 'Connect' button on exhibitors is now positioned absolutely so that the opacity does not apply on it for unpublished exhibitors. - For the sponsors list appearing at the bottom of almost all event pages, now the unpublished sponsors will appear at last with lower opacity and 'Unpublished' tag below them. - In a special case of sponsor list appearing in `/community` page, the unpublished sponsors were displayed to all the users, because the event record was passed with sudo. We remove this sudo attribute, which seems not necessary. taskID-2346612 --- .../controllers/exhibitor.py | 29 +++++++---- .../static/src/js/event_exhibitor_connect.js | 2 +- .../src/scss/event_exhibitor_templates.scss | 18 +++---- .../views/event_exhibitor_templates_list.xml | 48 ++++++++----------- .../views/event_exhibitor_templates_page.xml | 6 ++- .../views/event_templates_sponsor.xml | 38 ++++++++------- .../controllers/community.py | 2 +- 7 files changed, 76 insertions(+), 67 deletions(-) diff --git a/addons/website_event_exhibitor/controllers/exhibitor.py b/addons/website_event_exhibitor/controllers/exhibitor.py index e141d2a78e6..d609139fb2b 100644 --- a/addons/website_event_exhibitor/controllers/exhibitor.py +++ b/addons/website_event_exhibitor/controllers/exhibitor.py @@ -77,16 +77,26 @@ class ExhibitorController(WebsiteEventController): sponsor_types = sponsors_all.mapped('sponsor_type_id') sponsor_countries = sponsors_all.mapped('partner_id.country_id').sorted('name') # organize sponsors into categories to help display - sponsor_categories = dict() + sponsor_categories_dict = dict() + sponsor_categories = [] + is_event_user = request.env.user.has_group('event.group_event_registration_desk') for sponsor in sponsors: - if not sponsor_categories.get(sponsor.sponsor_type_id): - sponsor_categories[sponsor.sponsor_type_id] = request.env['event.sponsor'].sudo() - sponsor_categories[sponsor.sponsor_type_id] |= sponsor - sponsor_categories = [ - dict({ + if not sponsor_categories_dict.get(sponsor.sponsor_type_id): + sponsor_categories_dict[sponsor.sponsor_type_id] = request.env['event.sponsor'].sudo() + sponsor_categories_dict[sponsor.sponsor_type_id] |= sponsor + + for sponsor_category, sponsors in sponsor_categories_dict.items(): + # To display random published sponsors first and random unpublished sponsors last + if is_event_user: + published_sponsors = sponsors.filtered(lambda s: s.website_published) + unpublished_sponsors = sponsors - published_sponsors + random_sponsors = sample(published_sponsors, len(published_sponsors)) + sample(unpublished_sponsors, len(unpublished_sponsors)) + else: + random_sponsors = sample(sponsors, len(sponsors)) + sponsor_categories.append({ 'sponsorship': sponsor_category, - 'sponsors': sample(sponsors, len(sponsors)), - }) for sponsor_category, sponsors in sponsor_categories.items()] + 'sponsors': random_sponsors, + }) # return rendering values return { @@ -104,7 +114,7 @@ class ExhibitorController(WebsiteEventController): 'sponsor_countries': sponsor_countries, # environment 'hostname': request.httprequest.host.split(':')[0], - 'is_event_user': request.env.user.has_group('event.group_event_registration_desk'), + 'is_event_user': is_event_user, } # ------------------------------------------------------------ @@ -139,6 +149,7 @@ class ExhibitorController(WebsiteEventController): current_country = sponsor.partner_id.country_id sponsors_other = sponsors_other.sorted(key=lambda sponsor: ( + sponsor.website_published, sponsor.is_in_opening_hours, sponsor.partner_id.country_id == current_country, -1 * sponsor.sponsor_type_id.sequence, diff --git a/addons/website_event_exhibitor/static/src/js/event_exhibitor_connect.js b/addons/website_event_exhibitor/static/src/js/event_exhibitor_connect.js index 154b0d1b773..7743147d87f 100644 --- a/addons/website_event_exhibitor/static/src/js/event_exhibitor_connect.js +++ b/addons/website_event_exhibitor/static/src/js/event_exhibitor_connect.js @@ -61,7 +61,7 @@ var ExhibitorConnectClosedDialog = Dialog.extend({ publicWidget.registry.eventExhibitorConnect = publicWidget.Widget.extend({ - selector: '.o_wesponsor_js_connect', + selector: '.o_wesponsor_connect_button', xmlDependencies: ['/website_event_exhibitor/static/src/xml/event_exhibitor_connect.xml'], /** diff --git a/addons/website_event_exhibitor/static/src/scss/event_exhibitor_templates.scss b/addons/website_event_exhibitor/static/src/scss/event_exhibitor_templates.scss index 6e2d39536fb..61a9c973c9f 100644 --- a/addons/website_event_exhibitor/static/src/scss/event_exhibitor_templates.scss +++ b/addons/website_event_exhibitor/static/src/scss/event_exhibitor_templates.scss @@ -61,19 +61,19 @@ a { display: none; } - } + @include media-breakpoint-up(md) { + &:hover { + cursor: pointer; + transition: background-color .2s linear; + background-color: rgba(0,0,0,.1); - @include media-breakpoint-up(md) { - :hover .o_wesponsor_connect_button { - cursor: pointer; - transition: background-color .2s linear; - background-color: rgba(0,0,0,.1); - - a { - display: inline-block; + a { + display: inline-block; + } } } } + } /* diff --git a/addons/website_event_exhibitor/views/event_exhibitor_templates_list.xml b/addons/website_event_exhibitor/views/event_exhibitor_templates_list.xml index 52423d57acc..6054b8f4f36 100644 --- a/addons/website_event_exhibitor/views/event_exhibitor_templates_list.xml +++ b/addons/website_event_exhibitor/views/event_exhibitor_templates_list.xml @@ -156,52 +156,28 @@ diff --git a/addons/website_event_exhibitor/views/event_exhibitor_templates_page.xml b/addons/website_event_exhibitor/views/event_exhibitor_templates_page.xml index 5573b0f83a2..fd8455facb1 100644 --- a/addons/website_event_exhibitor/views/event_exhibitor_templates_page.xml +++ b/addons/website_event_exhibitor/views/event_exhibitor_templates_page.xml @@ -161,7 +161,8 @@