diff --git a/addons/event/__manifest__.py b/addons/event/__manifest__.py index 838dbcf3a77..005e66e6a98 100644 --- a/addons/event/__manifest__.py +++ b/addons/event/__manifest__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- { 'name': 'Events Organization', - 'version': '1.3', + 'version': '1.4', 'website': 'https://www.odoo.com/page/events', 'category': 'Marketing/Events', 'summary': 'Trainings, Conferences, Meetings, Exhibitions, Registrations', diff --git a/addons/event/models/res_config_settings.py b/addons/event/models/res_config_settings.py index 14f5aebf6d9..390ef942a20 100644 --- a/addons/event/models/res_config_settings.py +++ b/addons/event/models/res_config_settings.py @@ -1,7 +1,9 @@ # -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. from odoo import api, fields, models + class ResConfigSettings(models.TransientModel): _inherit = 'res.config.settings' @@ -10,7 +12,7 @@ class ResConfigSettings(models.TransientModel): module_website_event_track = fields.Boolean("Tracks and Agenda") module_website_event_track_live = fields.Boolean("Live Mode") module_website_event_track_quiz = fields.Boolean("Quiz on Tracks") - module_website_event_track_exhibitor = fields.Boolean("Advanced Sponsors") + module_website_event_exhibitor = fields.Boolean("Advanced Sponsors") module_website_event_questions = fields.Boolean("Registration Survey") module_event_barcode = fields.Boolean("Barcode") module_website_event_sale = fields.Boolean("Online Ticketing") @@ -24,4 +26,3 @@ class ResConfigSettings(models.TransientModel): if not config.module_website_event_track: config.module_website_event_track_live = False config.module_website_event_track_quiz = False - config.module_website_event_track_exhibitor = False diff --git a/addons/event/views/res_config_settings_views.xml b/addons/event/views/res_config_settings_views.xml index 15cb95fbc97..8882cd20c18 100644 --- a/addons/event/views/res_config_settings_views.xml +++ b/addons/event/views/res_config_settings_views.xml @@ -52,12 +52,12 @@
- +
-
diff --git a/addons/test_event_full/__manifest__.py b/addons/test_event_full/__manifest__.py index 8423fc06d7f..19f6c5c2473 100644 --- a/addons/test_event_full/__manifest__.py +++ b/addons/test_event_full/__manifest__.py @@ -15,12 +15,13 @@ automatic lead generation, full Online support, ... 'event_crm', 'event_sale', 'website_event_crm_questions', + 'website_event_exhibitor', 'website_event_questions', 'website_event_questions', 'website_event_meet', 'website_event_sale', 'website_event_track', - 'website_event_track_exhibitor', + 'website_event_exhibitor', 'website_event_track_live', 'website_event_track_quiz', ], diff --git a/addons/website_event/static/src/scss/website_event_templates.scss b/addons/website_event/static/src/scss/event_templates_common.scss similarity index 79% rename from addons/website_event/static/src/scss/website_event_templates.scss rename to addons/website_event/static/src/scss/event_templates_common.scss index 49a9f8aeab9..a4184f34d60 100644 --- a/addons/website_event/static/src/scss/website_event_templates.scss +++ b/addons/website_event/static/src/scss/event_templates_common.scss @@ -1,5 +1,3 @@ -// Color tags according to assigned background color. - .o_wevent_index, .o_wevent_event { // Simple colored tags according to assigned background color @@ -49,6 +47,40 @@ } } + /* + * COMMON MENU STYLING + */ + + .o_wevent_index_topbar_filters { + .dropdown-toggle { + border: $border-width solid gray('400'); + @include o-bg-color(gray('white'), $with-extras: false); + @include border-radius($dropdown-border-radius); + @include hover-focus { + border-color: theme-color('primary'); + color: theme-color('primary'); + text-decoration: none; + } + &:after { + margin-left: 1.2em; + } + .fa { + margin-right: .4em; + color: theme-color('primary'); + } + } + .dropdown-menu { + margin-top: $navbar-padding-y; + min-width: 12rem; + } + .dropdown-item { + &.active .badge { // Invert badge display when the item is active + background-color: color-yiq(theme-color('primary')); + color: theme-color('primary'); + } + } + } + /* * COMMON TO ALL ONLINE-* PAGES */ @@ -159,3 +191,15 @@ } } } + +.o_wevent_badge { + padding: ($spacer * .5) $spacer; + border-radius: 10rem; + font-weight: $font-weight-normal; +} + +.modal-open { + > .modal-backdrop { + z-index: $zindex-dropdown - 1; + } +} diff --git a/addons/website_event/static/src/scss/event_templates_list.scss b/addons/website_event/static/src/scss/event_templates_list.scss new file mode 100644 index 00000000000..54a5002ad7f --- /dev/null +++ b/addons/website_event/static/src/scss/event_templates_list.scss @@ -0,0 +1,112 @@ +.o_wevent_social_link { + $o_link_size: 3em; + display: inline-block; + @include size($o_link_size); + margin: 0 ($spacer * .25) ($spacer * .5) ($spacer * .25); + line-height: $o_link_size; + background-color: gray('100'); + border: $border-width solid $border-color; + border-radius: 50%; + text-align: center; + @include hover-focus { + background-color: gray('300'); + } +} + +// Index +.o_wevent_index { + // Events List + .o_wevent_events_list { + header { + a { + transition: all .25s ease-in-out; + @include hover-focus { + transform: scale(1.05); + } + } + } + &.opt_event_list_cards_bg { + @if (color('body') == $o-portal-default-body-bg) { + @extend .bg-200; + } + } + .opt_events_list_columns { + header { + height: 200px; + } + } + .opt_events_list_rows { + @include media-breakpoint-down(sm) { + header { + height: 200px; + } + } + } + .o_wevent_badge_event { + @include o-position-absolute($top: 0, $left: 0); + @include border-left-radius(0); + padding: ($spacer * .5) $card-spacer-x; + transform: translateY(-50%); + } + .o_wevent_event_date { + top: $card-spacer-x; + right: $card-spacer-x; + display: flex; + flex-direction: column; + justify-content: center; + @include size(4rem); + border-radius: 50%; + text-align: center; + + .o_wevent_event_day { + font-size: 1.125rem; + font-weight: 300; + line-height: 1; + } + .o_wevent_event_month { + font-size: 0.75rem; + font-weight: $font-weight-bold; + text-transform: uppercase; + } + } + .o_wevent_participating, + .o_wevent_unpublished { + position: absolute; + bottom: 0; + width: 100%; + padding: $card-spacer-y $card-spacer-x; + text-align: right; + } + .card-title { + color: $body-color; + } + } + .o_wevent_sidebar_title { + margin: 0 0 ($spacer * 1.5) 0; + border-bottom: $border-width solid $border-color; + padding: 0 0 ($spacer * .5) 0; + font-weight: $font-weight-bold; + text-transform: uppercase; + } + .o_wevent_sidebar_block { + margin: 0 0 ($spacer * 2.5) 0; + } + .o_wevent_sidebar_figure { + position: relative; + + .figure-img { + margin-bottom: 0; + } + .figure-caption { + @include o-position-absolute($left: 0, $bottom: 0); + width: 100%; + padding: $spacer; + background-color: rgba($color: #000, $alpha: 0.5); + @include border-bottom-radius($border-radius); + color: #fff; + } + } + #o_wevent_index_main_col .form-inline { + width: 100%; + } +} diff --git a/addons/website_event/static/src/scss/event_templates_page.scss b/addons/website_event/static/src/scss/event_templates_page.scss new file mode 100644 index 00000000000..abc2e5a6289 --- /dev/null +++ b/addons/website_event/static/src/scss/event_templates_page.scss @@ -0,0 +1,152 @@ +.o_wevent_event { + // Multi-line event title, even in mobile mode + nav > div > a.navbar-brand { + text-overflow: revert; + white-space: normal; + overflow: hidden; + max-width: calc(100% - 80px); + } + + // Ensure menu labels are not split + #o_wevent_event_submenu { + li.nav-item { + white-space: nowrap; + } + } + + .o_wevent_event_title { + margin: 3rem 0; + + .o_wevent_event_name { + font-weight: $display4-weight; + line-height: $display-line-height; + @include font-size($display4-size); + } + .o_wevent_event_subtitle { + font-weight: $lead-font-weight; + @include font-size($lead-font-size); + } + } + + .o_wevent_registration_single { + .o_wevent_nowrap { + white-space: nowrap; + } + } + + .o_wevent_registration_btn { + flex: 0 0 100%; + + &.collapsed { + flex: 0 0 33%; + + .close { + display: none; + } + } + .close { + display: block; + } + &:not(.collapsed) { + box-shadow: none; + font-weight: $font-weight-bold; + text-transform: uppercase; + transition: none; + } + } + + .o_wevent_sidebar_title { + margin-bottom: $spacer; + opacity: .5; + text-transform: uppercase; + } + + .o_wevent_sidebar_block { + padding: $spacer * 3; + border-bottom: $border-width solid $border-color; + + &:last-child { + border-bottom: 0; + } + } +} + +.o_wevent_event { + .o_record_cover_container { + overflow: hidden; + z-index: 0; + + .o_record_cover_component { + z-index: -1; + } + &.o_record_has_cover { + .o_record_cover_image { + background-attachment: fixed; + + &::after { + content: ""; + display: block; + @include o-position-absolute(0,0,50%,0); + } + } + .o_wevent_event_title { + color: white; + } + } + } +} + +/* + * EVENT PAGE VIEW + */ + +.o_wevent_event .event_color_0 { + background-color: white; + color: #5a5a5a; +} +.o_wevent_event .event_color_1 { + background-color: #cccccc; + color: #424242; +} +.o_wevent_event .event_color_2 { + background-color: #ffc7c7; + color: #7a3737; +} +.o_wevent_event .event_color_3 { + background-color: #fff1c7; + color: #756832; +} +.o_wevent_event .event_color_4 { + background-color: #e3ffc7; + color: #5d6937; +} +.o_wevent_event .event_color_5 { + background-color: #c7ffd5; + color: #1a7759; +} +.o_wevent_event .event_color_6 { + background-color: #c7ffff; + color: #1a5d83; +} +.o_wevent_event .event_color_7 { + background-color: #c7d5ff; + color: #3b3e75; +} +.o_wevent_event .event_color_8 { + background-color: #e3c7ff; + color: #4c3668; +} +.o_wevent_event .event_color_9 { + background-color: #ffc7f1; + color: #6d2c70; +} + +/* + * SPONSORS + */ + +// small hack to hide sponsors on specific views +.o_wevent_hide_sponsors .container.mt32.mb16.d-none.d-md-block.d-print-none { + // Not a very accurate way to target the 'sponsors' block -> improve in master + display: none !important; +} diff --git a/addons/website_event/static/src/scss/website_event.scss b/addons/website_event/static/src/scss/website_event.scss deleted file mode 100644 index 48b2342b806..00000000000 --- a/addons/website_event/static/src/scss/website_event.scss +++ /dev/null @@ -1,252 +0,0 @@ -.o_wevent_index_topbar_filters { - .dropdown-toggle { - border: $border-width solid gray('400'); - @include o-bg-color(gray('white'), $with-extras: false); - @include border-radius($dropdown-border-radius); - @include hover-focus { - border-color: theme-color('primary'); - color: theme-color('primary'); - text-decoration: none; - } - &:after { - margin-left: 1.2em; - } - .fa { - margin-right: .4em; - color: theme-color('primary'); - } - } - .dropdown-menu { - margin-top: $navbar-padding-y; - min-width: 12rem; - } - .dropdown-item { - &.active .badge { // Invert badge display when the item is active - background-color: color-yiq(theme-color('primary')); - color: theme-color('primary'); - } - } -} - -.o_wevent_social_link { - $o_link_size: 3em; - display: inline-block; - @include size($o_link_size); - margin: 0 ($spacer * .25) ($spacer * .5) ($spacer * .25); - line-height: $o_link_size; - background-color: gray('100'); - border: $border-width solid $border-color; - border-radius: 50%; - text-align: center; - @include hover-focus { - background-color: gray('300'); - } -} - -.o_wevent_badge { - padding: ($spacer * .5) $spacer; - border-radius: 10rem; - font-weight: $font-weight-normal; -} - -// Index -.o_wevent_index { - // Events List - .o_wevent_events_list { - header { - a { - transition: all .25s ease-in-out; - @include hover-focus { - transform: scale(1.05); - } - } - } - &.opt_event_list_cards_bg { - @if (color('body') == $o-portal-default-body-bg) { - @extend .bg-200; - } - } - .opt_events_list_columns { - header { - height: 200px; - } - } - .opt_events_list_rows { - @include media-breakpoint-down(sm) { - header { - height: 200px; - } - } - } - .o_wevent_badge_event { - @include o-position-absolute($top: 0, $left: 0); - @include border-left-radius(0); - padding: ($spacer * .5) $card-spacer-x; - transform: translateY(-50%); - } - .o_wevent_event_date { - top: $card-spacer-x; - right: $card-spacer-x; - display: flex; - flex-direction: column; - justify-content: center; - @include size(4rem); - border-radius: 50%; - text-align: center; - - .o_wevent_event_day { - font-size: 1.125rem; - font-weight: 300; - line-height: 1; - } - .o_wevent_event_month { - font-size: 0.75rem; - font-weight: $font-weight-bold; - text-transform: uppercase; - } - } - .o_wevent_participating, - .o_wevent_unpublished { - position: absolute; - bottom: 0; - width: 100%; - padding: $card-spacer-y $card-spacer-x; - text-align: right; - } - .card-title { - color: $body-color; - } - } - .o_wevent_sidebar_title { - margin: 0 0 ($spacer * 1.5) 0; - border-bottom: $border-width solid $border-color; - padding: 0 0 ($spacer * .5) 0; - font-weight: $font-weight-bold; - text-transform: uppercase; - } - .o_wevent_sidebar_block { - margin: 0 0 ($spacer * 2.5) 0; - } - .o_wevent_sidebar_figure { - position: relative; - - .figure-img { - margin-bottom: 0; - } - .figure-caption { - @include o-position-absolute($left: 0, $bottom: 0); - width: 100%; - padding: $spacer; - background-color: rgba($color: #000, $alpha: 0.5); - @include border-bottom-radius($border-radius); - color: #fff; - } - } - #o_wevent_index_main_col .form-inline { - width: 100%; - } -} - -.o_wevent_event { - // Multi-line event title, even in mobile mode - nav > div > a.navbar-brand { - text-overflow: revert; - white-space: normal; - overflow: hidden; - max-width: calc(100% - 80px); - } - - // Ensure menu labels are not split - #o_wevent_event_submenu { - li.nav-item { - white-space: nowrap; - } - } - - .o_wevent_event_title { - margin: 3rem 0; - - .o_wevent_event_name { - font-weight: $display4-weight; - line-height: $display-line-height; - @include font-size($display4-size); - } - .o_wevent_event_subtitle { - font-weight: $lead-font-weight; - @include font-size($lead-font-size); - } - } - - .o_wevent_registration_single { - .o_wevent_nowrap { - white-space: nowrap; - } - } - - .o_wevent_registration_btn { - flex: 0 0 100%; - - &.collapsed { - flex: 0 0 33%; - - .close { - display: none; - } - } - .close { - display: block; - } - &:not(.collapsed) { - box-shadow: none; - font-weight: $font-weight-bold; - text-transform: uppercase; - transition: none; - } - } - - .o_wevent_sidebar_title { - margin-bottom: $spacer; - opacity: .5; - text-transform: uppercase; - } - - .o_wevent_sidebar_block { - padding: $spacer * 3; - border-bottom: $border-width solid $border-color; - - &:last-child { - border-bottom: 0; - } - } -} - -.o_wevent_event { - .o_record_cover_container { - overflow: hidden; - z-index: 0; - - .o_record_cover_component { - z-index: -1; - } - &.o_record_has_cover { - .o_record_cover_image { - background-attachment: fixed; - - &::after { - content: ""; - display: block; - @include o-position-absolute(0,0,50%,0); - } - } - .o_wevent_event_title { - color: white; - } - } - } -} - -.modal-open { - > .modal-backdrop { - z-index: $zindex-dropdown - 1; - } -} diff --git a/addons/website_event/tests/common.py b/addons/website_event/tests/common.py index a3bf2e87a30..fc20210549e 100644 --- a/addons/website_event/tests/common.py +++ b/addons/website_event/tests/common.py @@ -16,6 +16,7 @@ class EventDtPatcher(TransactionCase): def setUpClass(cls): super(EventDtPatcher, cls).setUpClass() + # Mock dates to have reproducible computed fields based on time cls.reference_now = datetime(2020, 7, 6, 10, 0, 0) cls.reference_today = datetime(2020, 7, 6) diff --git a/addons/website_event/views/assets.xml b/addons/website_event/views/assets.xml index cbf9e23a6bf..508d915038f 100644 --- a/addons/website_event/views/assets.xml +++ b/addons/website_event/views/assets.xml @@ -9,8 +9,9 @@