[IMP] event{_booth}{_crm},*: improve UI

*: website_event{_meet}{_track}{_track_live}

Purpose
=======
Improve event related module UI

Specifications
==============
- The reporting fields, the chat room and the participant count
of the meeting room form should not be showed while the record
is not created.
- Rewording on event track "Button appears" and "Color" field.
- Remove unnecessary helpers in event track form.
- Remove "Wishlisted By" stat button when the count is equal to 0.
- Add many2one widget avatar on lead rule "Saleperson" field and
event track "Responsible" field.
- Add placeholders in event booth form view, event location
tree view, event tags categories form view and event stages
form view.

Task-3280602

Part-of: odoo/odoo#119321
This commit is contained in:
amdi-odoo
2023-05-05 17:06:23 +02:00
parent ff64df758b
commit cfd16f198b
9 changed files with 25 additions and 36 deletions
+1 -1
View File
@@ -9,7 +9,7 @@
<sheet>
<group>
<group>
<field name="name"/>
<field name="name" placeholder='e.g. "Promoting"'/>
<field name="pipe_end"/>
</group>
<group>
+2 -2
View File
@@ -21,13 +21,13 @@
<form string="Event Category">
<sheet>
<div class="oe_title">
<h1><field nolabel="1" name="name"/></h1>
<h1><field nolabel="1" name="name" placeholder='e.g. "Age Category"'/></h1>
</div>
<group>
<field name="tag_ids" context="{'default_category_id': active_id}">
<tree string="Tags" editable="bottom">
<field name="sequence" widget="handle"/>
<field name="name"/>
<field name="name" placeholder='e.g. "12-16 years old"'/>
<field name="color" widget="color_picker"/>
</tree>
</field>
@@ -21,7 +21,7 @@
<field name="booth_category_id" placeholder="Pick a Booth Category..."/>
</group>
<group name="renter">
<field name="partner_id"/>
<field name="partner_id" placeholder="Pick a Renter..."/>
<field name="contact_name"/>
<field name="contact_email" widget="email"/>
<field name="contact_phone" widget="phone"/>
@@ -67,7 +67,7 @@
<group class="col">
<field name="lead_type" groups="crm.group_use_lead"/>
<field name="lead_sales_team_id"/>
<field name="lead_user_id"/>
<field name="lead_user_id" widget="many2one_avatar_user"/>
</group>
<group class="col">
<field name="lead_tag_ids" widget="many2many_tags" options="{'color_field': 'color'}"/>
@@ -44,13 +44,13 @@
<field name="is_pinned"/>
</group>
<group>
<field name="chat_room_id" required="0"/>
<field name="room_participant_count" readonly="1"/>
<field name="room_max_capacity" widget="radio" options="{'horizontal': true}"/>
<field name="room_lang_id" options="{'no_create': True}"/>
<field name="chat_room_id" required="0" attrs="{'invisible': [('id', '=', False)]}"/>
<field name="room_participant_count" readonly="1" attrs="{'invisible': [('id', '=', False)]}"/>
</group>
</group>
<notebook>
<notebook attrs="{'invisible': [('id', '=', False)]}">
<page name="Reporting" string="Reporting">
<group>
<field name="room_last_activity"/>
@@ -30,7 +30,7 @@ class Track(models.Model):
company_id = fields.Many2one('res.company', related='event_id.company_id')
tag_ids = fields.Many2many('event.track.tag', string='Tags')
description = fields.Html(translate=html_translate, sanitize_attributes=False, sanitize_form=False)
color = fields.Integer('Color')
color = fields.Integer('Agenda Color')
priority = fields.Selection([
('0', 'Low'), ('1', 'Medium'),
('2', 'High'), ('3', 'Highest')],
@@ -59,20 +59,17 @@ class Track(models.Model):
kanban_state_label = fields.Char(
string='Kanban State Label', compute='_compute_kanban_state_label', store=True,
tracking=True)
partner_id = fields.Many2one('res.partner', 'Contact', help="Contact of the track, may be different from speaker.")
partner_id = fields.Many2one('res.partner', 'Contact')
# speaker information
partner_name = fields.Char(
string='Name', compute='_compute_partner_name',
readonly=False, store=True, tracking=10,
help='Speaker name is used for public display and may vary from contact name')
readonly=False, store=True, tracking=10)
partner_email = fields.Char(
string='Email', compute='_compute_partner_email',
readonly=False, store=True, tracking=20,
help='Speaker email is used for public display and may vary from contact email')
readonly=False, store=True, tracking=20)
partner_phone = fields.Char(
string='Phone', compute='_compute_partner_phone',
readonly=False, store=True, tracking=30,
help='Speaker phone is used for public display and may vary from contact phone')
readonly=False, store=True, tracking=30)
partner_biography = fields.Html(
string='Biography', compute='_compute_partner_biography',
readonly=False, store=True)
@@ -92,17 +89,15 @@ class Track(models.Model):
# contact information
contact_email = fields.Char(
string='Contact Email', compute='_compute_contact_email',
readonly=False, store=True, tracking=20,
help="Contact email is private and used internally")
readonly=False, store=True, tracking=20)
contact_phone = fields.Char(
string='Contact Phone', compute='_compute_contact_phone',
readonly=False, store=True, tracking=30,
help="Contact phone is private and used internally")
readonly=False, store=True, tracking=30)
location_id = fields.Many2one('event.track.location', 'Location')
# time information
date = fields.Datetime('Track Date')
date_end = fields.Datetime('Track End Date', compute='_compute_end_date', store=True)
duration = fields.Float('Duration', default=0.5, help="Track duration in hours.")
duration = fields.Float('Duration', default=0.5)
is_track_live = fields.Boolean(
'Is Track Live', compute='_compute_track_time_data')
is_track_soon = fields.Boolean(
@@ -146,7 +141,7 @@ class Track(models.Model):
help="Display a Call to Action button to your Attendees while they watch your Track.")
website_cta_title = fields.Char('Button Title')
website_cta_url = fields.Char('Button Target URL')
website_cta_delay = fields.Integer('Button appears')
website_cta_delay = fields.Integer('Show Button')
# time information for CTA
is_website_cta_live = fields.Boolean(
'Is CTA Live', compute='_compute_cta_time_data',
@@ -23,7 +23,7 @@
<field name="arch" type="xml">
<tree string="Event Location" editable="bottom">
<field name="sequence" widget="handle"/>
<field name="name"/>
<field name="name" placeholder='e.g. "Main Conference Room"'/>
</tree>
</field>
</record>
@@ -145,11 +145,10 @@
<sheet string="Track">
<div class="oe_button_box" name="button_box">
<field name="website_url" invisible="1"/>
<field name="wishlist_visitor_count" invisible="1"/>
<button name="%(website_event_track.website_visitor_action_from_track)d"
type="action"
class="oe_stat_button"
icon="fa-bell"
groups="event.group_event_user">
type="action" class="oe_stat_button" icon="fa-bell"
groups="event.group_event_user" attrs="{'invisible': [('wishlist_visitor_count', '=', 0)]}">
<field name="wishlist_visitor_count" string="Wishlisted By" widget="statinfo"/>
</button>
<field name="is_published" widget="website_redirect_button"/>
@@ -172,17 +171,13 @@
<group>
<field name="date"/>
<field name="location_id"/>
<label for="duration"/>
<div class="o_row">
<field name="duration" widget="float_time"/>
<span>hours</span>
</div>
<field name="duration" widget="float_time"/>
<field name="active" invisible="1"/>
<field name="wishlisted_by_default"/>
</group>
<group>
<field name="company_id" invisible="1"/>
<field name="user_id" domain="[('share', '=', False)]"/>
<field name="user_id" widget="many2one_avatar_user" domain="[('share', '=', False)]"/>
<field name="event_id"/>
<field name="tag_ids" widget="many2many_tags" options="{'color_field': 'color'}"/>
<field name="color" widget="color_picker"/>
@@ -230,7 +225,7 @@
attrs="{'invisible': [('website_cta', '=', False)]}"/>
<div attrs="{'invisible': [('website_cta', '=', False)]}">
<field name="website_cta_delay" class="oe_inline"
attrs="{'required': [('website_cta', '=', True)]}"/> minutes after track starts
attrs="{'required': [('website_cta', '=', True)]}"/> minutes after Track start
</div>
</group>
</group>
@@ -9,8 +9,7 @@ from odoo import api, fields, models
class Track(models.Model):
_inherit = 'event.track'
youtube_video_url = fields.Char('YouTube Video Link',
help="Configure this URL so that event attendees can see your Track in video!")
youtube_video_url = fields.Char('YouTube Video Link')
youtube_video_id = fields.Char('YouTube video ID', compute='_compute_youtube_video_id',
help="Extracted from the video URL and used to infer various links (embed/thumbnail/...)")
is_youtube_replay = fields.Boolean('Is YouTube Replay',