[FIX] web,*: phone number ltr even in rtl language
Currently there is two ways in view to have a phone number displayed in
LTR in a RTL language:
- have `widget="phone"` on a field
- have a class o_force_ltr on the field
But this is currently done very rarely and fail in list view because the
direction of data cells is used, eg.:
```
<div style="direction:rtl">
<table><tr><td style="direction:ltr">
<span>+1 2 3</span>
</td></tr><tr><td>
<span style="direction:ltr">+4 5 6</span>
</td>/tr></table>
</div>
```
will be displayed as:
+1 2 3
6 5 4+
In this commit, we use unicode-bidi* to optionally add an additional
level of embedding so direction is taken into account by the
bidirectional algorithm.
This commit also adds o_force_ltr class or phone widget on phone fields
where it is not already defined.
*: https://drafts.csswg.org/css-writing-modes-3/#propdef-unicode-bidi
opw-2224828
closes #48425
closes odoo/odoo#48588
X-original-commit: ab067218e069f0a92610c3f0d4137e563e47755c
Signed-off-by: Nicolas Lempereur (nle) <nle@odoo.com>
This commit is contained in:
@@ -324,7 +324,7 @@
|
||||
<field name="contact_name" optional="hide"/>
|
||||
<field name="partner_name" optional="hide"/>
|
||||
<field name="email_from" optional="show"/>
|
||||
<field name="phone" optional="show"/>
|
||||
<field name="phone" optional="show" class="o_force_ltr"/>
|
||||
<field name="city" optional="show"/>
|
||||
<field name="state_id" optional="hide"/>
|
||||
<field name="country_id" optional="show"/>
|
||||
@@ -602,7 +602,7 @@
|
||||
<field name="name" string="Opportunity"/>
|
||||
<field name="partner_id" string="Customer" optional="show"/>
|
||||
<field name="email_from" optional="show"/>
|
||||
<field name="phone" optional="show"/>
|
||||
<field name="phone" class="o_force_ltr" optional="show"/>
|
||||
<field name="city" optional="show"/>
|
||||
<field name="state_id" optional="hide"/>
|
||||
<field name="country_id" optional="show"/>
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
<field name="type"/>
|
||||
<field name="contact_name"/>
|
||||
<field name="email_from"/>
|
||||
<field name="phone"/>
|
||||
<field name="phone" class="o_force_ltr"/>
|
||||
<field name="stage_id"/>
|
||||
<field name="user_id"/>
|
||||
<field name="team_id"/>
|
||||
|
||||
@@ -553,8 +553,8 @@
|
||||
<field name="partner_id" attrs="{'readonly':[('state', '!=', 'draft')]}"/>
|
||||
<field name="name"/>
|
||||
<field name="email"/>
|
||||
<field name="phone"/>
|
||||
<field name="mobile"/>
|
||||
<field name="phone" class="o_force_ltr"/>
|
||||
<field name="mobile" class="o_force_ltr"/>
|
||||
</group>
|
||||
<group string="Event Information" name="event">
|
||||
<field name="event_id" attrs="{'readonly': [('state', '!=', 'draft')]}" options="{'no_create': True}"/>
|
||||
|
||||
@@ -15,8 +15,8 @@
|
||||
<field name="event_ticket_id" domain="[('event_id', '=', event_id)]" readonly='1' force_save="1"/>
|
||||
<field name="name"/>
|
||||
<field name="email"/>
|
||||
<field name="mobile"/>
|
||||
<field name="phone"/>
|
||||
<field name="mobile" class="o_force_ltr"/>
|
||||
<field name="phone" class="o_force_ltr"/>
|
||||
</tree>
|
||||
</field>
|
||||
<footer>
|
||||
|
||||
@@ -92,7 +92,7 @@
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Employees">
|
||||
<field name="name"/>
|
||||
<field name="work_phone"/>
|
||||
<field name="work_phone" class="o_force_ltr"/>
|
||||
<field name="work_email"/>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
<field name="department_id"/>
|
||||
@@ -137,7 +137,7 @@
|
||||
<ul>
|
||||
<li id="last_login"/>
|
||||
<li t-if="record.work_email.raw_value"><field name="work_email" /></li>
|
||||
<li t-if="record.work_phone.raw_value"><field name="work_phone" /></li>
|
||||
<li t-if="record.work_phone.raw_value" class="o_force_ltr"><field name="work_phone" /></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -131,7 +131,7 @@
|
||||
'form_view_ref': 'base.res_partner_view_form_private'}"
|
||||
options='{"always_reload": True, "highlight_first_line": True}'/>
|
||||
<field name="private_email" string="Email"/>
|
||||
<field name="phone" groups="hr.group_hr_user" string="Phone"/>
|
||||
<field name="phone" class="o_force_ltr" groups="hr.group_hr_user" string="Phone"/>
|
||||
<field name="bank_account_id" context="{'default_partner_id': address_home_id}"/>
|
||||
<field name="km_home_work" groups="hr.group_hr_user"/>
|
||||
</group>
|
||||
@@ -154,7 +154,7 @@
|
||||
</group>
|
||||
<group string="Emergency">
|
||||
<field name="emergency_contact"/>
|
||||
<field name="emergency_phone"/>
|
||||
<field name="emergency_phone" class="o_force_ltr"/>
|
||||
</group>
|
||||
<group string="Work Permit" name="work_permit">
|
||||
<field name="visa_no"/>
|
||||
@@ -203,7 +203,7 @@
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Employees" multi_edit="1">
|
||||
<field name="name" readonly="1"/>
|
||||
<field name="work_phone" readonly="1"/>
|
||||
<field name="work_phone" class="o_force_ltr" readonly="1"/>
|
||||
<field name="work_email"/>
|
||||
<field name="company_id" groups="base.group_multi_company" readonly="1"/>
|
||||
<field name="department_id"/>
|
||||
@@ -250,7 +250,7 @@
|
||||
<ul>
|
||||
<li id="last_login"/>
|
||||
<li t-if="record.work_email.raw_value" class="o_text_overflow"><field name="work_email" /></li>
|
||||
<li t-if="record.work_phone.raw_value"><field name="work_phone" /></li>
|
||||
<li t-if="record.work_phone.raw_value" class="o_force_ltr"><field name="work_phone" /></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@@ -323,7 +323,7 @@
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Employees">
|
||||
<field name="name"/>
|
||||
<field name="work_phone"/>
|
||||
<field name="work_phone" class="o_force_ltr"/>
|
||||
<field name="work_email"/>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
<field name="department_id"/>
|
||||
|
||||
@@ -133,7 +133,7 @@
|
||||
options='{"always_reload": True, "highlight_first_line": True}'
|
||||
attrs="{'readonly': [('can_edit', '=', False)]}"/>
|
||||
<field name="private_email" string="Email" attrs="{'readonly': [('can_edit', '=', False)]}"/>
|
||||
<field name="employee_phone" string="Phone" attrs="{'readonly': [('can_edit', '=', False)]}" options="{'enable_sms': false}"/>
|
||||
<field name="employee_phone" string="Phone" class="o_force_ltr" attrs="{'readonly': [('can_edit', '=', False)]}" options="{'enable_sms': false}"/>
|
||||
<field name="employee_bank_account_id" attrs="{'readonly': [('can_edit', '=', False)]}"/>
|
||||
<field name="km_home_work" attrs="{'readonly': [('can_edit', '=', False)]}"/>
|
||||
</group>
|
||||
@@ -161,7 +161,7 @@
|
||||
</group>
|
||||
<group string="Emergency">
|
||||
<field name="emergency_contact" attrs="{'readonly': [('can_edit', '=', False)]}"/>
|
||||
<field name="emergency_phone" attrs="{'readonly': [('can_edit', '=', False)]}" options="{'enable_sms': false}"/>
|
||||
<field name="emergency_phone" widget="phone" attrs="{'readonly': [('can_edit', '=', False)]}" options="{'enable_sms': false}"/>
|
||||
</group>
|
||||
<group string="Work Permit" name="work_permit">
|
||||
<field name="visa_no" attrs="{'readonly': [('can_edit', '=', False)]}"/>
|
||||
|
||||
@@ -306,7 +306,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<field name="categ_ids" widget="many2many_tags" options="{'color_field': 'color'}"/>
|
||||
<t t-if="record.partner_mobile.raw_value"><i class="fa fa-mobile mr4" role="img" aria-label="Mobile" title="Mobile"/><field name="partner_mobile" widget ="phone"/><br/></t>
|
||||
<t t-if="record.partner_mobile.raw_value"><i class="fa fa-mobile mr4" role="img" aria-label="Mobile" title="Mobile"/><field name="partner_mobile" widget="phone"/><br/></t>
|
||||
<div class="o_kanban_record_bottom mt4">
|
||||
<div class="oe_kanban_bottom_left">
|
||||
<div class="float-left mr4" groups="base.group_user">
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<field name="arch" type="xml">
|
||||
<tree>
|
||||
<field name="name"/>
|
||||
<field name="phone"/>
|
||||
<field name="phone" class="o_force_ltr"/>
|
||||
<field name="email"/>
|
||||
</tree>
|
||||
</field>
|
||||
@@ -39,7 +39,7 @@
|
||||
<group>
|
||||
<field name="active" invisible="1"/>
|
||||
<field name="email" attrs="{'required': [('send_by', '=', 'mail')]}"/>
|
||||
<field name="phone" attrs="{'required': [('send_by', '=', 'phone')]}"/>
|
||||
<field name="phone" class="o_force_ltr" attrs="{'required': [('send_by', '=', 'phone')]}"/>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
<field name="responsible_id" attrs="{'required': [('send_by', '=', 'mail')]}" groups="base.group_no_one" domain="[('share', '=', False)]"/>
|
||||
</group>
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
<field name="priority">20</field>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='is_blacklisted']" position="after">
|
||||
<field name="mobile"/>
|
||||
<field name="mobile" class="o_force_ltr"/>
|
||||
<field name="phone_sanitized" invisible="1"/>
|
||||
<field name="phone_sanitized_blacklisted"/>
|
||||
</xpath>
|
||||
@@ -63,7 +63,7 @@
|
||||
<field name="inherit_id" ref="mass_mailing.mailing_contact_view_kanban"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='email']" position="after">
|
||||
<field name="mobile"/>
|
||||
<field name="mobile" widget="phone"/>
|
||||
<field name="phone_sanitized" invisible="1"/>
|
||||
</xpath>
|
||||
<xpath expr="//t[@t-esc='record.email.value']" position="after">
|
||||
|
||||
@@ -92,6 +92,7 @@ span.o_force_ltr {
|
||||
display: inline-block;
|
||||
}
|
||||
.o_force_ltr, .o_field_phone {
|
||||
unicode-bidi: embed; // ensure element has level of embedding for direction
|
||||
/*rtl:ignore*/
|
||||
direction: ltr;
|
||||
}
|
||||
|
||||
@@ -206,7 +206,7 @@
|
||||
<field name="is_connected" invisible="1"/>
|
||||
<field name="partner_id"/>
|
||||
<field name="email"/>
|
||||
<field name="mobile"/>
|
||||
<field name="mobile" class="o_force_ltr"/>
|
||||
<field name="country_id" attrs="{'invisible': [('country_id', '=', False)]}"/>
|
||||
<field name="lang_id"/>
|
||||
</group>
|
||||
|
||||
@@ -151,7 +151,7 @@
|
||||
<field name="partner_id" domain="['|', ('company_id', '=', company_id), ('company_id', '=', False)]"/>
|
||||
<field name="partner_name"/>
|
||||
<field name="partner_email"/>
|
||||
<field name="partner_phone"/>
|
||||
<field name="partner_phone" class="o_force_ltr"/>
|
||||
<field name="partner_biography"/>
|
||||
</group>
|
||||
</page>
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
<field name="inherit_id" ref="website.website_visitor_view_kanban"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="page_ids" position="after">
|
||||
<field name="mobile"/>
|
||||
<field name="mobile" widget="phone"/>
|
||||
</field>
|
||||
<xpath expr="//div[hasclass('w_visitor_kanban_actions')]" position="inside">
|
||||
<button name="action_send_sms" type="object" class="btn btn-secondary"
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
</div>
|
||||
</group>
|
||||
<group name="communication_details">
|
||||
<field name="phone"/>
|
||||
<field name="phone" class="o_force_ltr"/>
|
||||
<field name="email" widget="email"/>
|
||||
<field name="active" invisible="1"/>
|
||||
</group>
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
<field name="zip" placeholder="ZIP" class="o_address_zip"/>
|
||||
<field name="country_id" placeholder="Country" class="o_address_country" options='{"no_open": True}'/>
|
||||
</div>
|
||||
<field name="phone"/>
|
||||
<field name="phone" class="o_force_ltr"/>
|
||||
<field name="email"/>
|
||||
<field name="website" string="Website" widget="url" placeholder="e.g. https://www.odoo.com"/>
|
||||
</group>
|
||||
@@ -84,7 +84,7 @@
|
||||
<div t-if="record.email.value" class="col-6 text-center">
|
||||
<field name="email"/>
|
||||
</div>
|
||||
<div t-if="record.phone.value" class="col-6 text-center">
|
||||
<div t-if="record.phone.value" class="col-6 text-center o_force_ltr">
|
||||
<field name="phone"/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -93,7 +93,7 @@
|
||||
<strong>Email:</strong>
|
||||
<field name="email"/>
|
||||
</div>
|
||||
<div t-if="record.phone.value">
|
||||
<div t-if="record.phone.value" class="o_force_ltr">
|
||||
<strong>Phone:</strong>
|
||||
<field name="phone"/>
|
||||
</div>
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
<tree string="Contacts">
|
||||
<field name="display_name" string="Name"/>
|
||||
<field name="function" invisible="1"/>
|
||||
<field name="phone" optional="show"/>
|
||||
<field name="phone" class="o_force_ltr" optional="show"/>
|
||||
<field name="email" optional="show"/>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
<field name="city" optional="hide"/>
|
||||
|
||||
Reference in New Issue
Block a user