summaryrefslogtreecommitdiff
path: root/addons/website_event
diff options
context:
space:
mode:
authorThibault Delavallée <tde@odoo.com>2020-08-18 13:36:34 +0000
committerThibault Delavallée <tde@odoo.com>2020-08-21 17:30:13 +0000
commit0a17b8a7ef350043db1403d847d67ff884131b07 (patch)
tree153325bc9506298cda8654a3aa049771cc9864f8 /addons/website_event
parent97b3d262720da451de5e0f06a2c73f3a1611aa82 (diff)
[MOV] website_event: reorganize module content
PURPOSE Clean organization and models linked to Event Online feature introduced in semi stable saas-13.3 at odoo/odoo@981f95bbf46658eda9f2d33751b9310cc67d86aa and odoo/enterprise@14722028ae0773c3710ea48ce48ff44703e83b5a Also clean website event menu not being available in website event but only in website event track, which implies some extra-code to manage it. In short: merge website_event_online in website_event, website_event_track _(online/session) in website_event_track. RATIONALE _online modules have been added to extend content of website_event and website_event_track without having any impact on those module. First step of cleaning is to move this content directly in base module. track_session module is mainly a rewrite of track module. Second step of cleaning is to move its content directly in website_event_track. SPECIFICATIONS Quickly reorganize some bits of code in website_event module to ease future integration of code from _online sub-modules. It also helps understanding and finding its way through the module. Split python files by model: notably event.type outside of event.event file and code. Reorganize templates by main use * _list: list view of events; * _page: page view of events, either event itself or registration flow (_page_registration); * move side templates in side files; LINKS Task ID-2319779 COM odoo/odoo#56067 ENT odoo/enterprise#12520 UPG odoo/upgrade#1654
Diffstat (limited to 'addons/website_event')
-rw-r--r--addons/website_event/__manifest__.py20
-rw-r--r--addons/website_event/models/__init__.py1
-rw-r--r--addons/website_event/models/event_event.py16
-rw-r--r--addons/website_event/models/event_type.py11
-rw-r--r--addons/website_event/views/event_event_views.xml (renamed from addons/website_event/views/event_views.xml)24
-rw-r--r--addons/website_event/views/event_snippets.xml34
-rw-r--r--addons/website_event/views/event_templates_list.xml (renamed from addons/website_event/views/event_templates.xml)166
-rw-r--r--addons/website_event/views/event_templates_page.xml66
-rw-r--r--addons/website_event/views/event_templates_page_misc.xml (renamed from addons/website_event/views/event_templates_misc_pages.xml)0
-rw-r--r--addons/website_event/views/event_templates_page_registration.xml (renamed from addons/website_event/views/event_templates_registration.xml)88
-rw-r--r--addons/website_event/views/event_templates_widgets.xml55
-rw-r--r--addons/website_event/views/event_type_views.xml28
12 files changed, 271 insertions, 238 deletions
diff --git a/addons/website_event/__manifest__.py b/addons/website_event/__manifest__.py
index db44af018fd..54df14666d4 100644
--- a/addons/website_event/__manifest__.py
+++ b/addons/website_event/__manifest__.py
@@ -1,23 +1,33 @@
# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
{
'name': 'Events',
+ 'version': '1.1',
'category': 'Marketing/Events',
'sequence': 140,
'summary': 'Publish events, sell tickets',
'website': 'https://www.odoo.com/page/events',
'description': "",
- 'depends': ['website', 'website_partner', 'website_mail', 'event'],
+ 'depends': [
+ 'event',
+ 'website',
+ 'website_partner',
+ 'website_mail',
+ ],
'data': [
'data/event_data.xml',
'views/assets.xml',
'views/res_config_settings_views.xml',
'views/event_snippets.xml',
- 'views/event_templates.xml',
- 'views/event_templates_misc_pages.xml',
- 'views/event_templates_registration.xml',
+ 'views/event_templates_list.xml',
+ 'views/event_templates_page.xml',
+ 'views/event_templates_page_registration.xml',
+ 'views/event_templates_page_misc.xml',
+ 'views/event_templates_widgets.xml',
'views/website_templates.xml',
- 'views/event_views.xml',
+ 'views/event_event_views.xml',
+ 'views/event_type_views.xml',
'security/ir.model.access.csv',
'security/event_security.xml',
],
diff --git a/addons/website_event/models/__init__.py b/addons/website_event/models/__init__.py
index 67661173e03..cf46b000f81 100644
--- a/addons/website_event/models/__init__.py
+++ b/addons/website_event/models/__init__.py
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
from . import event_event
+from . import event_type
from . import website
diff --git a/addons/website_event/models/event_event.py b/addons/website_event/models/event_event.py
index 925aed32996..e796b916705 100644
--- a/addons/website_event/models/event_event.py
+++ b/addons/website_event/models/event_event.py
@@ -1,8 +1,8 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
-import werkzeug.urls
import json
+import werkzeug.urls
from odoo import api, fields, models, _
from odoo.addons.http_routing.models.ir_http import slug
@@ -10,16 +10,14 @@ from odoo.addons.http_routing.models.ir_http import slug
GOOGLE_CALENDAR_URL = 'https://www.google.com/calendar/render?'
-class EventType(models.Model):
- _name = 'event.type'
- _inherit = ['event.type']
-
- website_menu = fields.Boolean('Display a dedicated menu on Website')
-
-
class Event(models.Model):
_name = 'event.event'
- _inherit = ['event.event', 'website.seo.metadata', 'website.published.multi.mixin', 'website.cover_properties.mixin']
+ _inherit = [
+ 'event.event',
+ 'website.seo.metadata',
+ 'website.published.multi.mixin',
+ 'website.cover_properties.mixin'
+ ]
def _default_cover_properties(self):
res = super()._default_cover_properties()
diff --git a/addons/website_event/models/event_type.py b/addons/website_event/models/event_type.py
new file mode 100644
index 00000000000..6aee644c7d3
--- /dev/null
+++ b/addons/website_event/models/event_type.py
@@ -0,0 +1,11 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo import fields, models
+
+
+class EventType(models.Model):
+ _name = 'event.type'
+ _inherit = ['event.type']
+
+ website_menu = fields.Boolean('Display a dedicated menu on Website')
diff --git a/addons/website_event/views/event_views.xml b/addons/website_event/views/event_event_views.xml
index e78bee85014..a8028029219 100644
--- a/addons/website_event/views/event_views.xml
+++ b/addons/website_event/views/event_event_views.xml
@@ -1,30 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
- <record id="event_type_view_form_inherit_website" model="ir.ui.view">
- <field name="name">event.type.view.form.inherit.website</field>
- <field name="model">event.type</field>
- <field name="inherit_id" ref="event.view_event_type_form"/>
- <field name="arch" type="xml">
- <div name="event_type_visibility_seats" position="after">
- <div class="col-12 col-lg-6 o_setting_box" name="event_type_visibility_website">
- <div class="o_setting_left_pane">
- <field name="website_menu"/>
- </div>
- <div class="o_setting_right_pane">
- <label for="website_menu"/>
- <div class="row" name="website_menu">
- <div class="col-lg-8 mt16 text-muted">
- Check this option to have menus for your event on the
- website: registrations, schedule, map, ...
- </div>
- </div>
- </div>
- </div>
- </div>
- </field>
- </record>
-
<record id="event_event_view_form_inherit_website" model="ir.ui.view">
<field name="name">event.event.view.form.inherit.website</field>
<field name="model">event.event</field>
diff --git a/addons/website_event/views/event_snippets.xml b/addons/website_event/views/event_snippets.xml
index 4407b19f7e3..15634348006 100644
--- a/addons/website_event/views/event_snippets.xml
+++ b/addons/website_event/views/event_snippets.xml
@@ -12,40 +12,6 @@
</div>
</template>
-<!-- Snippet - Country Events - List -->
-<template id="country_events_list" name="Country Events List">
- <div class="country_events_list">
- <t t-if="events">
- <h6 class="o_wevent_sidebar_title">
- <t t-if="country">
- <i class="fa fa-flag mr-2"/>Events: <span t-esc="country.name"/>
- <img class="img-fluid" t-att-src="website.image_url(country, 'image')" alt=""/>
- </t>
- <t t-else="">
- <i class="fa fa-globe mr-2"/>Upcoming Events
- </t>
- </h6>
- <ul class="list-group mb-3">
- <li t-foreach="events[:5]" t-as="event_dict" class="list-group-item d-flex justify-content-between">
- <a t-att-href="event_dict['url']">
- <i t-if="not event_dict['event'].website_published" class="fa fa-ban text-danger mr-1" role="img" aria-label="Unpublished" title="Unpublished"/>
- <span t-esc="event_dict['event'].name" t-attf-class="#{(not event_dict['event'].website_published) and 'text-danger' or ''}"/>
- </a>
- <span t-esc="event_dict['date']"/>
- </li>
- </ul>
- <div t-if="len(events) &gt; 5">
- <t t-if="country">
- <a t-attf-href="/event?country=#{country.id}" class="small"><b>See all events from <span t-esc="country.name"/></b></a>
- </t>
- <t t-else="">
- <a href="/event" class="small"><b>View all</b></a>
- </t>
- </div>
- </t>
- </div>
-</template>
-
<!-- Snippets and options -->
<template id="snippets" inherit_id="website.snippets">
<xpath expr="//t[@id='event_local_events_hook']" position="replace">
diff --git a/addons/website_event/views/event_templates.xml b/addons/website_event/views/event_templates_list.xml
index d2d5ce204a6..89b8c1cd62f 100644
--- a/addons/website_event/views/event_templates.xml
+++ b/addons/website_event/views/event_templates_list.xml
@@ -144,23 +144,6 @@
</xpath>
</template>
-<!-- Search Box -->
-<template id="events_search_box" inherit_id="website.website_search_box" primary="True">
- <xpath expr="//div[@role='search']" position="replace">
- <form t-attf-class="o_wevent_event_searchbar_form o_wait_lazy_js w-100 my-1 my-lg-0 #{_classes}"
- t-att-action="action if action else '/event'" method="get">
- <t t-set="search" t-value="search or _searches and _searches['search']"/>
- <t t-set="placeholder" t-value="placeholder or _placeholder"/>
- <t>$0</t>
- <t t-foreach="_searches" t-as="search">
- <input t-if="search != 'search' and search_value != 'all'" type="hidden"
- t-att-name="search" t-att-value="search_value"/>
- </t>
- <t t-raw="0"/>
- </form>
- </xpath>
-</template>
-
<!-- Index - Events list -->
<template id="events_list" name="Events list">
<!-- Options -->
@@ -343,153 +326,4 @@
</xpath>
</template>
-<!-- Event -->
-<template id="layout" name="Event">
- <t t-call="website.layout">
- <!-- Options -->
- <t t-set="opt_events_list_categories" t-value="request.website.viewref('website_event.opt_events_list_categories').active"/>
- <div id="wrap" class="o_wevent_event js_event">
- <t t-if="not event.menu_id">
- <nav class="navbar navbar-light border-top shadow-sm d-print-none">
- <div class="container align-items-baseline justify-content-start">
- <a href="/event" class="navbar-brand h4 my-0 mr-0 mr-md-4">
- <i class="fa fa-long-arrow-left text-primary mr-2"/>
- <span>All Events</span>
- </a>
- <ul class="navbar-nav flex-row ml-md-auto ml-0">
- <li t-if="opt_events_list_categories" class="nav-item mr-3">
- <a t-attf-href="/event?type=#{event.event_type_id.id}" t-if="event.event_type_id" class="nav-link">
- <i class="fa fa-folder-open text-primary mr-2"/><span t-field="event.event_type_id"/>
- </a>
- </li>
- <li class="nav-item mr-3">
- <a t-if="event.country_id" t-attf-href="/event?country=#{event.country_id.id}" class="nav-link">
- <i class="fa fa-map-marker text-primary mr-2"/><span t-field="event.country_id"/>
- </a>
- </li>
- </ul>
- <div class="d-flex align-items-centerflex-wrap pl-sm-3 pr-0">
- <t t-call="website_event.events_search_box">
- <t t-set="_classes" t-value="'ml-auto'"/>
- <t t-set="_searches" t-value="searches"/>
- <t t-set="_placeholder">Search an event ...</t>
- </t>
- </div>
- </div>
- </nav>
- </t>
- <t t-else="">
- <nav class="navbar navbar-light border-top shadow-sm navbar-expand-md">
- <div class="container align-items-baseline">
- <a href="#" t-field="event.name" class="navbar-brand h4 my-0 mr-0 mr-md-4"/>
- <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#o_wevent_event_submenu" aria-controls="o_wevent_event_submenu" aria-expanded="false" aria-label="Toggle navigation">
- <span class="navbar-toggler-icon"></span>
- </button>
- <div id="o_wevent_event_submenu" class="collapse navbar-collapse">
- <ul class="navbar-nav w-100" t-att-data-menu_name="editable and 'Event Menu'" t-att-data-content_menu_id="editable and event.menu_id.id">
- <t t-foreach="event.menu_id.child_id" t-as="submenu">
- <t t-call="website.submenu">
- <t t-set="item_class" t-value="'nav-item'"/>
- <t t-set="link_class" t-value="'nav-link'"/>
- </t>
- </t>
- </ul>
- </div>
- </div>
- </nav>
- </t>
- <t t-raw="0"/>
- <t t-set="editor_sub_message">Following content will appear on all events.</t>
- <div class="oe_structure oe_empty" id="oe_structure_website_event_layout_1" t-att-data-editor-sub-message="editor_sub_message"/>
- </div>
- </t>
-</template>
-
-<!-- Event - Description -->
-<template id="event_description_full" name="Event Description" track="1">
- <t t-call="website_event.event_details">
- <section class="bg-200 mt-n5">
- <div class="container overflow-hidden">
- <div class="row no-gutters mt-n4 mb-3">
- <!-- Description -->
- <div id="o_wevent_event_main_col" class="col-lg-8 bg-white px-3 pt-5 pb-0 shadow-sm">
- <span t-field="event.description" itemprop="description"/>
- </div>
- <div class="col-lg-4 bg-light shadow-sm d-print-none">
- <!-- Date & Time -->
- <div class="o_wevent_sidebar_block">
- <h6 class="o_wevent_sidebar_title">Date &amp; Time</h6>
- <div class="d-flex">
- <h5 t-field="event.with_context(tz=event.date_tz).date_begin" class="my-1 mr-1" t-options="{'date_only': 'true', 'format': 'EEEE'}"/>
- <h5 class="my-1" t-field="event.with_context(tz=event.date_tz).date_begin" t-options="{'date_only': 'true', 'format': 'long'}" itemprop="startDate" t-att-datetime="event.date_begin"/>
- </div>
- <t t-if="not event.is_one_day">Start -</t>
- <span t-field="event.with_context(tz=event.date_tz).date_begin" t-options="{'time_only': 'true', 'format': 'short'}"/>
- <t t-if="event.is_one_day">
- <i class="fa fa-long-arrow-right mx-1"/>
- <span t-field="event.with_context(tz=event.date_tz).date_end" t-options="{'time_only': 'true', 'format': 'short'}"/>
- </t>
- <t t-else="">
- <i class="fa fa-long-arrow-down d-block text-muted mx-3 my-2" style="font-size: 1.5rem"/>
- <div class="d-flex">
- <h5 t-field="event.with_context(tz=event.date_tz).date_end" class="my-1 mr-1" t-options="{'date_only': 'true', 'format': 'EEEE'}"/>
- <h5 class="my-1" t-field="event.with_context(tz=event.date_tz).date_end" t-options="{'date_only': 'true', 'format': 'long'}"/>
- </div>
- <t t-if="not event.is_one_day">End -</t>
- <span t-field="event.with_context(tz=event.date_tz).date_end" t-options="{'time_only': 'true', 'format': 'short'}"/>
- </t>
- <!-- Timezone -->
- <small t-esc="event.date_tz" class="d-block my-3 text-muted"/>
-
- <div class="dropdown">
- <i class="fa fa-calendar mr-1"/>
- <a href="#" role="button" data-toggle="dropdown">Add to Calendar</a>
- <div class="dropdown-menu">
- <a t-att-href="iCal_url" class="dropdown-item">iCal/Outlook</a>
- <a t-att-href="google_url" class="dropdown-item" target="_blank">Google</a>
- </div>
- </div>
- </div>
- <!-- Location -->
- <div t-if="event.address_id" class="o_wevent_sidebar_block">
- <h6 class="o_wevent_sidebar_title">Location</h6>
- <h4 t-field="event.address_id" class="" t-options='{
- "widget": "contact",
- "fields": ["name"]
- }'/>
- <div itemprop="location" class="mb-2" t-field="event.address_id" t-options='{
- "widget": "contact",
- "fields": ["address"],
- "no_marker": True
- }'/>
- <div class="mb-3" t-field="event.address_id" t-options='{
- "widget": "contact",
- "fields": ["phone", "mobile", "email"]
- }'/>
- <i class="fa fa-map-marker fa-fw" role="img"/>
- <a t-att-href="event._google_map_link()" target="_blank">Get the direction</a>
- </div>
- <!-- Organizer -->
- <div t-if="event.organizer_id" class="o_wevent_sidebar_block">
- <h6 class="o_wevent_sidebar_title">Organizer</h6>
- <h4 t-field="event.organizer_id"/>
- <div itemprop="location" t-field="event.organizer_id" t-options="{'widget': 'contact', 'fields': ['phone', 'mobile', 'email']}"/>
- </div>
- <!-- Social -->
- <div class="o_wevent_sidebar_block">
- <h6 class="o_wevent_sidebar_title">SHARE</h6>
- <p class="mb-2">Find out what people see and say about this event, and join the conversation.</p>
- <t t-snippet-call="website.s_share">
- <t t-set="_no_title" t-value="True"/>
- <t t-set="_classes" t-valuef="o_wevent_sidebar_social mx-n1"/>
- <t t-set="_link_classes" t-valuef="o_wevent_social_link"/>
- </t>
- </div>
- </div>
- </div>
- </div>
- </section>
- </t>
-</template>
-
</odoo>
diff --git a/addons/website_event/views/event_templates_page.xml b/addons/website_event/views/event_templates_page.xml
new file mode 100644
index 00000000000..5a9b449b634
--- /dev/null
+++ b/addons/website_event/views/event_templates_page.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+
+<!-- Event -->
+<template id="layout" name="Event">
+ <t t-call="website.layout">
+ <!-- Options -->
+ <t t-set="opt_events_list_categories" t-value="request.website.viewref('website_event.opt_events_list_categories').active"/>
+ <div id="wrap" class="o_wevent_event js_event">
+ <t t-if="not event.menu_id">
+ <nav class="navbar navbar-light border-top shadow-sm d-print-none">
+ <div class="container align-items-baseline justify-content-start">
+ <a href="/event" class="navbar-brand h4 my-0 mr-0 mr-md-4">
+ <i class="fa fa-long-arrow-left text-primary mr-2"/>
+ <span>All Events</span>
+ </a>
+ <ul class="navbar-nav flex-row ml-md-auto ml-0">
+ <li t-if="opt_events_list_categories" class="nav-item mr-3">
+ <a t-attf-href="/event?type=#{event.event_type_id.id}" t-if="event.event_type_id" class="nav-link">
+ <i class="fa fa-folder-open text-primary mr-2"/><span t-field="event.event_type_id"/>
+ </a>
+ </li>
+ <li class="nav-item mr-3">
+ <a t-if="event.country_id" t-attf-href="/event?country=#{event.country_id.id}" class="nav-link">
+ <i class="fa fa-map-marker text-primary mr-2"/><span t-field="event.country_id"/>
+ </a>
+ </li>
+ </ul>
+ <div class="d-flex align-items-centerflex-wrap pl-sm-3 pr-0">
+ <t t-call="website_event.events_search_box">
+ <t t-set="_classes" t-value="'ml-auto'"/>
+ <t t-set="_searches" t-value="searches"/>
+ <t t-set="_placeholder">Search an event ...</t>
+ </t>
+ </div>
+ </div>
+ </nav>
+ </t>
+ <t t-else="">
+ <nav class="navbar navbar-light border-top shadow-sm navbar-expand-md">
+ <div class="container align-items-baseline">
+ <a href="#" t-field="event.name" class="navbar-brand h4 my-0 mr-0 mr-md-4"/>
+ <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#o_wevent_event_submenu" aria-controls="o_wevent_event_submenu" aria-expanded="false" aria-label="Toggle navigation">
+ <span class="navbar-toggler-icon"></span>
+ </button>
+ <div id="o_wevent_event_submenu" class="collapse navbar-collapse">
+ <ul class="navbar-nav w-100" t-att-data-menu_name="editable and 'Event Menu'" t-att-data-content_menu_id="editable and event.menu_id.id">
+ <t t-foreach="event.menu_id.child_id" t-as="submenu">
+ <t t-call="website.submenu">
+ <t t-set="item_class" t-value="'nav-item'"/>
+ <t t-set="link_class" t-value="'nav-link'"/>
+ </t>
+ </t>
+ </ul>
+ </div>
+ </div>
+ </nav>
+ </t>
+ <t t-raw="0"/>
+ <t t-set="editor_sub_message">Following content will appear on all events.</t>
+ <div class="oe_structure oe_empty" id="oe_structure_website_event_layout_1" t-att-data-editor-sub-message="editor_sub_message"/>
+ </div>
+ </t>
+</template>
+
+</odoo>
diff --git a/addons/website_event/views/event_templates_misc_pages.xml b/addons/website_event/views/event_templates_page_misc.xml
index 50bfc4cb637..50bfc4cb637 100644
--- a/addons/website_event/views/event_templates_misc_pages.xml
+++ b/addons/website_event/views/event_templates_page_misc.xml
diff --git a/addons/website_event/views/event_templates_registration.xml b/addons/website_event/views/event_templates_page_registration.xml
index acc8705a9c3..e57a50212fe 100644
--- a/addons/website_event/views/event_templates_registration.xml
+++ b/addons/website_event/views/event_templates_page_registration.xml
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
+
<template id="event_details" name="Event Header">
<t t-call="website_event.layout">
<div name="event" itemscope="itemscope" itemtype="http://schema.org/Event">
@@ -26,6 +27,93 @@
</t>
</template>
+<!-- Event - Description -->
+<template id="event_description_full" name="Event Description" track="1">
+ <t t-call="website_event.event_details">
+ <section class="bg-200 mt-n5">
+ <div class="container overflow-hidden">
+ <div class="row no-gutters mt-n4 mb-3">
+ <!-- Description -->
+ <div id="o_wevent_event_main_col" class="col-lg-8 bg-white px-3 pt-5 pb-0 shadow-sm">
+ <span t-field="event.description" itemprop="description"/>
+ </div>
+ <div class="col-lg-4 bg-light shadow-sm d-print-none">
+ <!-- Date & Time -->
+ <div class="o_wevent_sidebar_block">
+ <h6 class="o_wevent_sidebar_title">Date &amp; Time</h6>
+ <div class="d-flex">
+ <h5 t-field="event.with_context(tz=event.date_tz).date_begin" class="my-1 mr-1" t-options="{'date_only': 'true', 'format': 'EEEE'}"/>
+ <h5 class="my-1" t-field="event.with_context(tz=event.date_tz).date_begin" t-options="{'date_only': 'true', 'format': 'long'}" itemprop="startDate" t-att-datetime="event.date_begin"/>
+ </div>
+ <t t-if="not event.is_one_day">Start -</t>
+ <span t-field="event.with_context(tz=event.date_tz).date_begin" t-options="{'time_only': 'true', 'format': 'short'}"/>
+ <t t-if="event.is_one_day">
+ <i class="fa fa-long-arrow-right mx-1"/>
+ <span t-field="event.with_context(tz=event.date_tz).date_end" t-options="{'time_only': 'true', 'format': 'short'}"/>
+ </t>
+ <t t-else="">
+ <i class="fa fa-long-arrow-down d-block text-muted mx-3 my-2" style="font-size: 1.5rem"/>
+ <div class="d-flex">
+ <h5 t-field="event.with_context(tz=event.date_tz).date_end" class="my-1 mr-1" t-options="{'date_only': 'true', 'format': 'EEEE'}"/>
+ <h5 class="my-1" t-field="event.with_context(tz=event.date_tz).date_end" t-options="{'date_only': 'true', 'format': 'long'}"/>
+ </div>
+ <t t-if="not event.is_one_day">End -</t>
+ <span t-field="event.with_context(tz=event.date_tz).date_end" t-options="{'time_only': 'true', 'format': 'short'}"/>
+ </t>
+ <!-- Timezone -->
+ <small t-esc="event.date_tz" class="d-block my-3 text-muted"/>
+
+ <div class="dropdown">
+ <i class="fa fa-calendar mr-1"/>
+ <a href="#" role="button" data-toggle="dropdown">Add to Calendar</a>
+ <div class="dropdown-menu">
+ <a t-att-href="iCal_url" class="dropdown-item">iCal/Outlook</a>
+ <a t-att-href="google_url" class="dropdown-item" target="_blank">Google</a>
+ </div>
+ </div>
+ </div>
+ <!-- Location -->
+ <div t-if="event.address_id" class="o_wevent_sidebar_block">
+ <h6 class="o_wevent_sidebar_title">Location</h6>
+ <h4 t-field="event.address_id" class="" t-options='{
+ "widget": "contact",
+ "fields": ["name"]
+ }'/>
+ <div itemprop="location" class="mb-2" t-field="event.address_id" t-options='{
+ "widget": "contact",
+ "fields": ["address"],
+ "no_marker": True
+ }'/>
+ <div class="mb-3" t-field="event.address_id" t-options='{
+ "widget": "contact",
+ "fields": ["phone", "mobile", "email"]
+ }'/>
+ <i class="fa fa-map-marker fa-fw" role="img"/>
+ <a t-att-href="event._google_map_link()" target="_blank">Get the direction</a>
+ </div>
+ <!-- Organizer -->
+ <div t-if="event.organizer_id" class="o_wevent_sidebar_block">
+ <h6 class="o_wevent_sidebar_title">Organizer</h6>
+ <h4 t-field="event.organizer_id"/>
+ <div itemprop="location" t-field="event.organizer_id" t-options="{'widget': 'contact', 'fields': ['phone', 'mobile', 'email']}"/>
+ </div>
+ <!-- Social -->
+ <div class="o_wevent_sidebar_block">
+ <h6 class="o_wevent_sidebar_title">SHARE</h6>
+ <p class="mb-2">Find out what people see and say about this event, and join the conversation.</p>
+ <t t-snippet-call="website.s_share">
+ <t t-set="_no_title" t-value="True"/>
+ <t t-set="_classes" t-valuef="o_wevent_sidebar_social mx-n1"/>
+ <t t-set="_link_classes" t-valuef="o_wevent_social_link"/>
+ </t>
+ </div>
+ </div>
+ </div>
+ </div>
+ </section>
+ </t>
+</template>
+
<!-- Event - Registration -->
<template id="registration_template" name="Registration">
<div t-if="request.env.user.has_group('event.group_event_manager')" class="alert alert-info rounded-0 o_website_event_configuration o_not_editable" role="status">
diff --git a/addons/website_event/views/event_templates_widgets.xml b/addons/website_event/views/event_templates_widgets.xml
new file mode 100644
index 00000000000..0a143d7d72b
--- /dev/null
+++ b/addons/website_event/views/event_templates_widgets.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+
+<!-- Search Box -->
+<template id="events_search_box" inherit_id="website.website_search_box" primary="True">
+ <xpath expr="//div[@role='search']" position="replace">
+ <form t-attf-class="o_wevent_event_searchbar_form o_wait_lazy_js w-100 my-1 my-lg-0 #{_classes}"
+ t-att-action="action if action else '/event'" method="get">
+ <t t-set="search" t-value="search or _searches and _searches['search']"/>
+ <t t-set="placeholder" t-value="placeholder or _placeholder"/>
+ <t>$0</t>
+ <t t-foreach="_searches" t-as="search">
+ <input t-if="search != 'search' and search_value != 'all'" type="hidden"
+ t-att-name="search" t-att-value="search_value"/>
+ </t>
+ <t t-raw="0"/>
+ </form>
+ </xpath>
+</template>
+
+<!-- Snippet - Country Events - List -->
+<template id="country_events_list" name="Country Events List">
+ <div class="country_events_list">
+ <t t-if="events">
+ <h6 class="o_wevent_sidebar_title">
+ <t t-if="country">
+ <i class="fa fa-flag mr-2"/>Events: <span t-esc="country.name"/>
+ <img class="img-fluid" t-att-src="website.image_url(country, 'image')" alt=""/>
+ </t>
+ <t t-else="">
+ <i class="fa fa-globe mr-2"/>Upcoming Events
+ </t>
+ </h6>
+ <ul class="list-group mb-3">
+ <li t-foreach="events[:5]" t-as="event_dict" class="list-group-item d-flex justify-content-between">
+ <a t-att-href="event_dict['url']">
+ <i t-if="not event_dict['event'].website_published" class="fa fa-ban text-danger mr-1" role="img" aria-label="Unpublished" title="Unpublished"/>
+ <span t-esc="event_dict['event'].name" t-attf-class="#{(not event_dict['event'].website_published) and 'text-danger' or ''}"/>
+ </a>
+ <span t-esc="event_dict['date']"/>
+ </li>
+ </ul>
+ <div t-if="len(events) &gt; 5">
+ <t t-if="country">
+ <a t-attf-href="/event?country=#{country.id}" class="small"><b>See all events from <span t-esc="country.name"/></b></a>
+ </t>
+ <t t-else="">
+ <a href="/event" class="small"><b>View all</b></a>
+ </t>
+ </div>
+ </t>
+ </div>
+</template>
+
+</odoo>
diff --git a/addons/website_event/views/event_type_views.xml b/addons/website_event/views/event_type_views.xml
new file mode 100644
index 00000000000..f37e9055966
--- /dev/null
+++ b/addons/website_event/views/event_type_views.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+
+ <record id="event_type_view_form_inherit_website" model="ir.ui.view">
+ <field name="name">event.type.view.form.inherit.website</field>
+ <field name="model">event.type</field>
+ <field name="inherit_id" ref="event.view_event_type_form"/>
+ <field name="arch" type="xml">
+ <div name="event_type_visibility_seats" position="after">
+ <div class="col-12 col-lg-6 o_setting_box" name="event_type_visibility_website">
+ <div class="o_setting_left_pane">
+ <field name="website_menu"/>
+ </div>
+ <div class="o_setting_right_pane">
+ <label for="website_menu"/>
+ <div class="row" name="website_menu">
+ <div class="col-lg-8 mt16 text-muted">
+ Check this option to have menus for your event on the
+ website: registrations, schedule, map, ...
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </field>
+ </record>
+
+</odoo>