diff --git a/addons/event/data/event_demo.xml b/addons/event/data/event_demo.xml index 2c43e748401..f9f877e1e9a 100644 --- a/addons/event/data/event_demo.xml +++ b/addons/event/data/event_demo.xml @@ -2,10 +2,10 @@ - + - + Seminar @@ -26,7 +26,11 @@ Training - + + Sport + + + Design Fair Los Angeles @@ -36,41 +40,16 @@ 500 - -
Join us to our main event of the year: the Design Fair
-

 

-

Every year we invite our community, partners and end-users to come and meet us! It's the ideal event to get together and present new features, roadmap of future versions, achievements of the software, workshops, training sessions, etc.... This event is also an opportunity to showcase our partners' case studies, methodology or developments. Be there and see directly from the source the features of the version 8! -

-

This event and all the conferences are in english!

-

 

-

What's new for this year?

-
    -
  • The Design Fair is preceded by 2 days of optional training sessions for experts! We propose 3 different training sessions, 2 days each.
  • -
  • The whole event is open to all public! We ask a participation fee of 49.50€ for the costs for the 3 days (morning coffee, coffee breaks, drinks, sandwiches for lunch and the surprising beer party of Wednesday evening) but it's optional. For those who do not want to contribute, there is a free ticket, therefore, catering is not inclued.
  • -
  • The plenary sessions in the morning will be shorter and we will give more time for thematical meetings, conferences, workshops and tutorial sessions in the afternoon.
  • -
-

 

-

Program:

-

Conferences, workshops and trainings will be organized in 6 rooms:

-
    -
  • 2 technical rooms: one dedicated to advanced Odoo developers, one for new developers.
  • -
  • 2 technical rooms: one dedicated to advanced Odoo developers, one for new developers.
  • -
  • 1 business room: to discuss implementation methodologies, best sales practices, etc.
  • -
  • 1 workshop room: mainly for developers.
  • -
-

If you wish to make a presentation, please send your topic proposal as soon as possible for approval to Mr. Famke Jenssens at ngh (a) yourcompany (dot) com. The presentations should be, for example, a presentation of a community module, a case study, methodology feedback, technical, etc. Each presentation must be in English.

-

 

-

Where to find us:

-

OpenElec Applications 23 Rockwell Lane, Los Angeles, CA 90001, United States

-

For any additional information, please contact us at events@yourcompany.com.

-

 

-

Best regards,

-

Luigi Roni, Senior Event Manager

-

 

-

(OpenElec Applications reserves the right to cancel, re-name or re-locate
the event or change the dates on which it is held.)

- -]]>
+
+ + + Great Reno Ballon Race + + + + + + unlimited @@ -82,43 +61,54 @@ limited 200 - -
Conference for Architects
-

 

-

During this conference, our team will give a detailed overview of our business applications. You’ll know all the benefits of using it.

-

 

-

Objectives:

-

Having attended this conference, participants should be able to:

-
    -
  • Understand the various modules;
  • -
  • Functional flow of the main applications;
  • -
-

 

-

Program:

-
    -
  • Introduction, CRM, Sales Management
  • -
  • Purchase, Sales & Purchase management, Financial accounting.
  • -
  • Project management, Human resources, Contract management.
  • -
  • Warehouse management, Manufacturing (MRP) & Sales, Import/Export.
  • -
  • Point of Sale (POS), Introduction to report customization.
  • -
-

 

-

Where to find us:

-

Chamber Works 60, Rosewood Court Detroit, MI 48212 (United States)

-

For any additional information, please contact us at events@odoo.com.

-

 

-

Best regards,

-

Luigi Roni, Senior Event Manager

-

 

-

(Chamber Works reserves the right to cancel, re-name or re-locate
the event or change the dates on which it is held.)

- -]]>
+
+ + + Live Music Festival + + + + + + unlimited + + + + Business workshops + + + + + + + + + Hockey Tournament + + + + + + + + + An unpublished event + + + + + + + + + + + Camptocamp odoo@camptocamp.com diff --git a/addons/event/models/event.py b/addons/event/models/event.py index dd92bae2899..684976122a9 100644 --- a/addons/event/models/event.py +++ b/addons/event/models/event.py @@ -157,6 +157,7 @@ class EventEvent(models.Model): tracking=True, states={'done': [('readonly', True)]}) date_begin_located = fields.Char(string='Start Date Located', compute='_compute_date_begin_tz') date_end_located = fields.Char(string='End Date Located', compute='_compute_date_end_tz') + is_one_day = fields.Boolean(compute='_compute_field_is_one_day') state = fields.Selection([ ('draft', 'Unconfirmed'), ('cancel', 'Cancelled'), @@ -234,6 +235,14 @@ class EventEvent(models.Model): else: event.date_end_located = False + @api.depends('date_begin', 'date_end', 'date_tz') + def _compute_field_is_one_day(self): + for event in self: + # Need to localize because it could begin late and finish early in + # another timezone + event = event.with_context(tz=event.date_tz) + event.is_one_day = (event.date_begin.date() == event.date_end.date()) + @api.onchange('is_online') def _onchange_is_online(self): if self.is_online: diff --git a/addons/event_sale/data/event_demo.xml b/addons/event_sale/data/event_demo.xml index 46be242ca7a..28ef85b1bd8 100644 --- a/addons/event_sale/data/event_demo.xml +++ b/addons/event_sale/data/event_demo.xml @@ -18,7 +18,16 @@ 1500.0 10 - + + + General Admission + + + + 99.0 + 100 + + Standard diff --git a/addons/website/views/snippets.xml b/addons/website/views/snippets.xml index 167f3084b5d..1454ac8fa5b 100644 --- a/addons/website/views/snippets.xml +++ b/addons/website/views/snippets.xml @@ -292,22 +292,22 @@ diff --git a/addons/website_event/controllers/main.py b/addons/website_event/controllers/main.py index 6ee8b01a42b..1476c02da8a 100644 --- a/addons/website_event/controllers/main.py +++ b/addons/website_event/controllers/main.py @@ -10,6 +10,7 @@ from dateutil.relativedelta import relativedelta from odoo import fields, http, _ from odoo.addons.http_routing.models.ir_http import slug +from odoo.addons.website.controllers.main import QueryURL from odoo.http import request @@ -24,6 +25,7 @@ class WebsiteEventController(http.Controller): Event = request.env['event.event'] EventType = request.env['event.type'] + searches.setdefault('search', '') searches.setdefault('date', 'all') searches.setdefault('type', 'all') searches.setdefault('country', 'all') @@ -65,6 +67,10 @@ class WebsiteEventController(http.Controller): # search domains domain_search = {'website_specific': website.website_domain()} + + if searches['search']: + domain_search['search'] = [('name', 'ilike', searches['search'])] + current_date = None current_type = None current_country = None @@ -73,6 +79,7 @@ class WebsiteEventController(http.Controller): domain_search["date"] = date[2] if date[0] != 'all': current_date = date[1] + if searches["type"] != 'all': current_type = EventType.browse(int(searches['type'])) domain_search["type"] = [("event_type_id", "=", int(searches["type"]))] @@ -113,7 +120,7 @@ class WebsiteEventController(http.Controller): event_count = Event.search_count(dom_without("none")) pager = website.pager( url="/event", - url_args={'date': searches.get('date'), 'type': searches.get('type'), 'country': searches.get('country')}, + url_args=searches, total=event_count, page=page, step=step, @@ -127,6 +134,8 @@ class WebsiteEventController(http.Controller): order = 'is_published desc, ' + order events = Event.search(dom_without("none"), limit=step, offset=pager['offset'], order=order) + keep = QueryURL('/event', **{key: value for key, value in searches.items() if (key == 'search' or value != 'all')}) + values = { 'current_date': current_date, 'current_country': current_country, @@ -137,7 +146,7 @@ class WebsiteEventController(http.Controller): 'countries': countries, 'pager': pager, 'searches': searches, - 'search_path': "?%s" % werkzeug.url_encode(searches), + 'keep': keep, } if searches['date'] == 'old': @@ -188,11 +197,14 @@ class WebsiteEventController(http.Controller): if not event.can_access_from_current_website(): raise werkzeug.exceptions.NotFound() + urls = event._get_event_resource_urls() values = { 'event': event, 'main_object': event, 'range': range, - 'registrable': event.sudo()._is_event_registrable() + 'registrable': event.sudo()._is_event_registrable(), + 'google_url': urls.get('google_url'), + 'iCal_url': urls.get('iCal_url'), } return request.render("website_event.event_description_full", values) @@ -282,7 +294,7 @@ class WebsiteEventController(http.Controller): Attendees += Attendees.sudo().create( Attendees._prepare_attendee_values(registration)) - urls = event._get_event_resource_urls(Attendees.ids) + urls = event._get_event_resource_urls() return request.render("website_event.registration_complete", { 'attendees': Attendees.sudo(), 'event': event, diff --git a/addons/website_event/data/event_demo.xml b/addons/website_event/data/event_demo.xml index b1c120dc471..dedc2d82d2d 100644 --- a/addons/website_event/data/event_demo.xml +++ b/addons/website_event/data/event_demo.xml @@ -1,188 +1,144 @@ - - - True - - - - True - odoo - - -
-
-
-

5 Intensive Days

-

to learn Odoo Programming

+ + True + DesignFair + Get Inspired • Stay Connected • Have Fun + {"background-image": "url('/website_event/static/src/img/event_cover_0.jpg')", "background-color": "oe_black", "resize_class": "o_record_has_cover cover_mid", "opacity": "0.4"} + +
Join us for this 3-day Event
+

Every year we invite our community, partners and end-users to come and meet us! It's the ideal event to get together and present new features, roadmap of future versions, achievements of the software, workshops, training sessions, etc....

+

This event is also an opportunity to showcase our partners' case studies, methodology or developments. Be there and see directly from the source the features of the version 12! +

+
+

This event and all the conferences are in English!

+
+
What's new?
+
    +
  • The Design Fair is preceded by 2 days of Training Sessions for experts!
    We propose 3 different training sessions, 2 days each.
  • +
  • The whole event is open to all public!
    We ask a participation fee of 49.50€ for the costs for the 3 days (coffee breaks, catering, drinks and a surprising concert and beer party).
    For those who don't want to contribute, there is a free ticket, therefore, catering and access to evening events aren't included.
  • +
  • The plenary sessions in the morning will be shorter and we will give more time for thematical meetings, conferences, workshops and tutorial sessions in the afternoon.
  • +
+
Program
+

Conferences, workshops and trainings will be organized in 6 rooms:

+
    +
  • Technical Rooms - One dedicated to advanced Odoo developers, one for new developers.
  • +
  • Technical Rooms - One dedicated to advanced Odoo developers, one for new developers.
  • +
  • Business Room - To discuss implementation methodologies, best sales practices, etc.
  • +
  • Workshop Room - Mainly for developers.
  • +
+
+

If you wish to make a presentation, please send your topic proposal as soon as possible for approval to Mr. Famke Jenssens at ngh (a) yourcompany (dot) com. The presentations should be, for example, a presentation of a community module, a case study, methodology feedback, technical, etc. Each presentation must be in English.

+
+

For any additional information, please contact us at events@yourcompany.com.

+
+

OpenElec Applications reserves the right to cancel, re-name or re-locate the event or change the dates on which it is held.

+
+ ]]> + + + + True + True + The Great Reno Balloon Race is the world's largest free hot-air ballooning event. + RenoRace + {"background-image": "url('/website_event/static/src/img/event_cover_1.jpg')", "background-color": "oe_black", "resize_class": "o_record_has_cover cover_mid", "opacity": "0.4"} + + + + True + Enhance your architectural business and improve professional skills. + odoo + {"background-image": "url('/website_event/static/src/img/event_cover_2.jpg')", "background-color": "oe_black", "resize_class": "o_record_has_cover cover_mid", "opacity": "0.4"} + +
Conference for Architects
+

During this conference, our team will give a detailed overview of our business applications. You’ll know all the benefits of using it.

+
Objectives
+

Having attended this conference, participants should be able to:

+
    +
  • Understand the various modules;
  • +
  • Functional flow of the main applications;
  • +
+
Program
+
    +
  • Introduction, CRM, Sales Management
  • +
  • Purchase, Sales & Purchase management, Financial accounting.
  • +
  • Project management, Human resources, Contract management.
  • +
  • Warehouse management, Manufacturing (MRP) & Sales, Import/Export.
  • +
  • Point of Sale (POS), Introduction to report customization.
  • +
+ +

For any additional information, please contact us at events@odoo.com

+ +
+ SPEAKER + +
+

John DOE

+
Company
+

At just 13 years old, John DOE was already starting to develop his first business applications for customers. After mastering civil engineering, he founded TinyERP. This was the first phase of OpenERP which would later became Odoo, the most installed open-source business software worldwide.

+
+ +
+

Chamber Works reserves the right to cancel, re-name or re-locate the event or change the dates on which it is held.

- - -
-
-

Course Summary

+ ]]> + -
-

This course is dedicated to developers who need to grasp knowledge of the business applications development process. This course is for new developers or for IT professionals eager to learn more about technical aspects.

-
-
+ + True + Experience live music, local food and beverages. + odoo + {"background-image": "url('/website_event/static/src/img/event_cover_3.jpg')", "background-color": "oe_black", "resize_class": "o_record_has_cover cover_mid", "opacity": "0.4"} + -
-
-
-

What you will learn?

-
+ + True + Discover how to grow a sustainable business with our experts. + odoo + {"background-image": "url('/website_event/static/src/img/event_cover_4.jpg')", "background-color": "oe_black", "resize_class": "o_record_has_cover cover_mid", "opacity": "0.4"} + -
-
-
-

Day 1

+ + True + Bring your outdoor field hockey season to the next level by taking the field at this 9th annual Field Hockey tournament. + odoo + {"background-image": "url('/website_event/static/src/img/event_cover_5.jpg')", "background-color": "oe_black", "resize_class": "o_record_has_cover cover_mid", "opacity": "0.4"} + -

Introduction to Javascript

-
+ + False + odoo + {"background-image": "none", "background-color": "secondary", "opacity": ""} + -
  • Hello World
  • -
  • Variables & Operators
  • -
  • Dive into Strings
  • -
  • Functions
  • -
  • Loops
  • -
  • Arrays
  • -
-
-
+ + True + -
-
-
-

Day 2

+ + True + -

Odoo Web Client

-
+ + True + -
  • Introduction to JQuery
  • -
  • Advanced JQuery
  • -
  • Underscore
  • -
  • Introduction to QWeb
  • -
  • Controllers and Views
  • -
  • Bootstrap CSS
  • -
  • Calling the ORM
  • -
-
-
+ + True + -
-
-
-

Day 3

+ + True + odoo + -

Building a Full Application

-
- -
  • Modules
  • -
  • Python Objects
  • -
  • Report Engine
  • -
  • Workflows
  • -
  • Training Center Module
  • -
  • Integrated Help
  • -
  • How to Debug
  • -
-
-
-
-
- -
-
-
-

Requirements

-
- -
-

Objectives:

- -

Having attended this course, participants should be able to:

- -
  • Understand the development concepts and architecture;
  • -
  • Install and administer your own server;
  • -
  • Develop a new module for a particular application.
  • -

- -

Our prices include:

- -
  • drinks and lunch;
  • -
  • training material.
  • -

- -

Requirements:

- -
  • Bring your own laptop.
  • -
  • Participants are expected to have some knowledge in programming. A basic knowledge of the Python programming is recommended.
  • -
  • Participants preferably have a functional knowledge of our software (see Functional Training).
  • -

- -

To get more information, visit the Odoo Official Website.

-
-
-
-
- - -
-
-
-
-
-

Read Great Contents

- -

What do people say about this course?

-
- -
-
- -

I did not expect such a great learning experience. I feel like I can develop anything now.

-John Doe, CEO
-
- -
-
- -

This course help me build my first application within a month. Definetly worth its price.

-John Doe, CEO
-
-
-
-
- -
-]]> - - - True - - - - True - - - True - odoo - - - - True - - - True - + + True + diff --git a/addons/website_event/models/event.py b/addons/website_event/models/event.py index 1f7525e26aa..ac9cb12dafb 100644 --- a/addons/website_event/models/event.py +++ b/addons/website_event/models/event.py @@ -2,6 +2,7 @@ import pytz import werkzeug +import json from odoo import api, fields, models, _ from odoo.addons.http_routing.models.ir_http import slug @@ -24,8 +25,14 @@ class Event(models.Model): website_published = fields.Boolean(tracking=True) + subtitle = fields.Char('Event Subtitle', translate=True) + is_participating = fields.Boolean("Is Participating", compute="_compute_is_participating") + cover_properties = fields.Text( + 'Cover Properties', + default='{"background-image": "none", "background-color": "oe_blue", "opacity": "0.4", "resize_class": "cover_mid"}') + website_menu = fields.Boolean('Dedicated Menu', help="Creates menus Introduction, Location and Register on the page " " of the event on the website.", copy=False) @@ -129,7 +136,7 @@ class Event(models.Model): 'url': '/report/html/%s/%s?enable_editor' % ('event.event_event_report_template_badge', self.id), } - def _get_event_resource_urls(self, attendees): + def _get_event_resource_urls(self): url_date_start = self.date_begin.strftime('%Y%m%dT%H%M%SZ') url_date_stop = self.date_end.strftime('%Y%m%dT%H%M%SZ') params = { @@ -147,8 +154,10 @@ class Event(models.Model): def _default_website_meta(self): res = super(Event, self)._default_website_meta() + event_cover_properties = json.loads(self.cover_properties) + res['default_opengraph']['og:image'] = res['default_twitter']['twitter:image'] = event_cover_properties.get('background-image', 'none')[4:-1] res['default_opengraph']['og:title'] = res['default_twitter']['twitter:title'] = self.name - res['default_opengraph']['og:description'] = res['default_twitter']['twitter:description'] = self.date_begin + res['default_opengraph']['og:description'] = res['default_twitter']['twitter:description'] = self.subtitle res['default_twitter']['twitter:card'] = 'summary' - res['default_meta_description'] = self.date_begin + res['default_meta_description'] = self.subtitle return res diff --git a/addons/website_event/static/src/img/event_cover_0.jpg b/addons/website_event/static/src/img/event_cover_0.jpg new file mode 100644 index 00000000000..c77c47f21da Binary files /dev/null and b/addons/website_event/static/src/img/event_cover_0.jpg differ diff --git a/addons/website_event/static/src/img/event_cover_1.jpg b/addons/website_event/static/src/img/event_cover_1.jpg new file mode 100644 index 00000000000..0dc8960e79d Binary files /dev/null and b/addons/website_event/static/src/img/event_cover_1.jpg differ diff --git a/addons/website_event/static/src/img/event_cover_2.jpg b/addons/website_event/static/src/img/event_cover_2.jpg new file mode 100644 index 00000000000..6fda12d4a3c Binary files /dev/null and b/addons/website_event/static/src/img/event_cover_2.jpg differ diff --git a/addons/website_event/static/src/img/event_cover_3.jpg b/addons/website_event/static/src/img/event_cover_3.jpg new file mode 100644 index 00000000000..4ccf99f23e8 Binary files /dev/null and b/addons/website_event/static/src/img/event_cover_3.jpg differ diff --git a/addons/website_event/static/src/img/event_cover_4.jpg b/addons/website_event/static/src/img/event_cover_4.jpg new file mode 100644 index 00000000000..157a101a679 Binary files /dev/null and b/addons/website_event/static/src/img/event_cover_4.jpg differ diff --git a/addons/website_event/static/src/img/event_cover_5.jpg b/addons/website_event/static/src/img/event_cover_5.jpg new file mode 100644 index 00000000000..89070a4f629 Binary files /dev/null and b/addons/website_event/static/src/img/event_cover_5.jpg differ diff --git a/addons/website_event/static/src/img/event_past_0.jpg b/addons/website_event/static/src/img/event_past_0.jpg new file mode 100644 index 00000000000..0c070fbed27 Binary files /dev/null and b/addons/website_event/static/src/img/event_past_0.jpg differ diff --git a/addons/website_event/static/src/img/event_training_0.jpg b/addons/website_event/static/src/img/event_training_0.jpg new file mode 100644 index 00000000000..2a2897f8ae7 Binary files /dev/null and b/addons/website_event/static/src/img/event_training_0.jpg differ diff --git a/addons/website_event/static/src/img/s_country_events.png b/addons/website_event/static/src/img/s_country_events.png new file mode 100755 index 00000000000..7fa595bc280 Binary files /dev/null and b/addons/website_event/static/src/img/s_country_events.png differ diff --git a/addons/website_event/static/src/img/speaker.png b/addons/website_event/static/src/img/speaker.png new file mode 100644 index 00000000000..b1921736d32 Binary files /dev/null and b/addons/website_event/static/src/img/speaker.png differ diff --git a/addons/website_event/static/src/js/website_event.js b/addons/website_event/static/src/js/website_event.js index 39bc211abc7..cdaf012448d 100644 --- a/addons/website_event/static/src/js/website_event.js +++ b/addons/website_event/static/src/js/website_event.js @@ -9,6 +9,13 @@ var _t = core._t; // Catch registration form event, because of JS for attendee details var EventRegistrationForm = Widget.extend({ + events: { + 'click .o_wevent_registration_btn': '_onRegistrationBtnClick', + }, + + /** + * @override + */ start: function () { var self = this; var res = this._super.apply(this.arguments).then(function () { @@ -21,6 +28,15 @@ var EventRegistrationForm = Widget.extend({ }); return res; }, + + //-------------------------------------------------------------------------- + // Handlers + //-------------------------------------------------------------------------- + + /** + * @private + * @param {Event} ev + */ on_click: function (ev) { ev.preventDefault(); ev.stopPropagation(); @@ -54,6 +70,15 @@ var EventRegistrationForm = Widget.extend({ }); } }, + /** + * @private + * @param {Event} ev + */ + _onRegistrationBtnClick: function (ev) { + var $btn = $(ev.currentTarget); + $btn.toggleClass('btn-primary text-left pl-0'); + $btn.siblings().toggleClass('d-none'); + }, }); publicWidget.registry.EventRegistrationFormInstance = publicWidget.Widget.extend({ @@ -65,7 +90,7 @@ publicWidget.registry.EventRegistrationFormInstance = publicWidget.Widget.extend start: function () { var def = this._super.apply(this, arguments); var instance = new EventRegistrationForm(this); - return Promise.all([def, instance.appendTo(this.$el)]); + return Promise.all([def, instance.attachTo(this.$el)]); }, }); diff --git a/addons/website_event/static/src/scss/website_event.scss b/addons/website_event/static/src/scss/website_event.scss index 05c436a140a..a1cfb155082 100644 --- a/addons/website_event/static/src/scss/website_event.scss +++ b/addons/website_event/static/src/scss/website_event.scss @@ -1,13 +1,276 @@ -.o_wevent_participating_container { - position: relative; +$o-wevent-event-title-sizes-variants: ( + tiny: ( + title: $display4-size*0.6, + subtitle: $lead-font-size + ), + small: ( + title: $display4-size*0.75, + subtitle: $lead-font-size + ), + big: ( + title: $display3-size, + subtitle: $lead-font-size*1.25 + ), + huge: ( + title: $display2-size, + subtitle: $lead-font-size*1.5 + ), + hero: ( + title: $display1-size, + subtitle: $lead-font-size*1.75 + ) +) !default; - &::before { - content: ""; - @include o-position-absolute(0, auto, 0, 0); - width: 3px; - background-color: theme-color('info'); +.o_wevent_event_searchbar_form { + flex: 0 0 100%; + + @include media-breakpoint-up(lg) { + flex: 0 0 33%; } } -.o_wevent_registration_list_attendees:nth-child(2n) { - background-color: gray('200'); + +.o_wevent_index_topbar_filters { + .dropdown-toggle { + border: $border-width solid gray('400'); + @include o-bg-color(gray('white'), $with-muted: 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') == #FCFCFC) { + @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_event { + .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); + } + } + + @each $size, $map in $o-wevent-event-title-sizes-variants { + .o_record_cover_font_#{$size} .o_wevent_event_title { + .o_wevent_event_name { + @include font-size(map-get($map, title)); + } + .o_wevent_event_subtitle { + @include font-size(map-get($map, subtitle)); + } + } + } + + .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 { + display: none; + } + &.o_record_has_cover { + .o_record_cover_image { + background-attachment: fixed; + + &::after { + content: ""; + display: block; + @include o-position-absolute(0,0,50%,0); + } + } + .o_record_cover_component { + display: block; + z-index: -1; + } + .o_wevent_event_title { + color: white; + } + &.cover_full { + min-height: 600px; + min-height: 100vh; + } + &.cover_mid { + min-height: 400px; + min-height: 55vh; + } + } + } } diff --git a/addons/website_event/views/event_snippets.xml b/addons/website_event/views/event_snippets.xml index cd2ac5cb59e..438a19fbd15 100644 --- a/addons/website_event/views/event_snippets.xml +++ b/addons/website_event/views/event_snippets.xml @@ -1,68 +1,80 @@ - -