summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Lempereur <nle@odoo.com>2020-03-26 10:30:55 +0000
committerNicolas Lempereur <nle@odoo.com>2020-03-30 13:50:04 +0000
commitb53cf339e4e3728672ad2a8d505878274f4294c4 (patch)
treecc7bd4146c4a5f01be2a83ed5ab779c9cab393f3
parent8ccdbea9a7559316d9ea5fa040868d00305d0b79 (diff)
[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>
-rw-r--r--addons/crm/views/crm_lead_views.xml4
-rw-r--r--addons/crm/wizard/crm_merge_opportunities_views.xml2
-rw-r--r--addons/event/views/event_views.xml4
-rw-r--r--addons/event_sale/wizard/event_edit_registration.xml4
-rw-r--r--addons/hr/views/hr_employee_public_views.xml4
-rw-r--r--addons/hr/views/hr_employee_views.xml10
-rw-r--r--addons/hr/views/res_users.xml4
-rw-r--r--addons/hr_recruitment/views/hr_recruitment_views.xml2
-rw-r--r--addons/lunch/views/lunch_supplier_views.xml4
-rw-r--r--addons/mass_mailing_sms/views/mailing_contact_views.xml4
-rw-r--r--addons/web/static/src/scss/ui.scss1
-rw-r--r--addons/website/views/website_visitor_views.xml2
-rw-r--r--addons/website_event_track/views/event_track_views.xml2
-rw-r--r--addons/website_sms/views/website_visitor_views.xml2
-rw-r--r--odoo/addons/base/views/res_bank_views.xml2
-rw-r--r--odoo/addons/base/views/res_company_views.xml6
-rw-r--r--odoo/addons/base/views/res_partner_views.xml2
17 files changed, 30 insertions, 29 deletions
diff --git a/addons/crm/views/crm_lead_views.xml b/addons/crm/views/crm_lead_views.xml
index 7664bbe958f..b7d86291efb 100644
--- a/addons/crm/views/crm_lead_views.xml
+++ b/addons/crm/views/crm_lead_views.xml
@@ -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"/>
diff --git a/addons/crm/wizard/crm_merge_opportunities_views.xml b/addons/crm/wizard/crm_merge_opportunities_views.xml
index 2eabe079cb9..175cf2583cc 100644
--- a/addons/crm/wizard/crm_merge_opportunities_views.xml
+++ b/addons/crm/wizard/crm_merge_opportunities_views.xml
@@ -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"/>
diff --git a/addons/event/views/event_views.xml b/addons/event/views/event_views.xml
index 7637cded0d5..bfb1815c8ff 100644
--- a/addons/event/views/event_views.xml
+++ b/addons/event/views/event_views.xml
@@ -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}"/>
diff --git a/addons/event_sale/wizard/event_edit_registration.xml b/addons/event_sale/wizard/event_edit_registration.xml
index 4630417a1c0..d897db8cca5 100644
--- a/addons/event_sale/wizard/event_edit_registration.xml
+++ b/addons/event_sale/wizard/event_edit_registration.xml
@@ -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>
diff --git a/addons/hr/views/hr_employee_public_views.xml b/addons/hr/views/hr_employee_public_views.xml
index 3a99679579f..b0d2b1b84ca 100644
--- a/addons/hr/views/hr_employee_public_views.xml
+++ b/addons/hr/views/hr_employee_public_views.xml
@@ -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>
diff --git a/addons/hr/views/hr_employee_views.xml b/addons/hr/views/hr_employee_views.xml
index 599f3e98525..e834a8d233d 100644
--- a/addons/hr/views/hr_employee_views.xml
+++ b/addons/hr/views/hr_employee_views.xml
@@ -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"/>
diff --git a/addons/hr/views/res_users.xml b/addons/hr/views/res_users.xml
index 2caff4a2b82..22992df0244 100644
--- a/addons/hr/views/res_users.xml
+++ b/addons/hr/views/res_users.xml
@@ -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)]}"/>
diff --git a/addons/hr_recruitment/views/hr_recruitment_views.xml b/addons/hr_recruitment/views/hr_recruitment_views.xml
index c2c6680f809..e41aa6921b3 100644
--- a/addons/hr_recruitment/views/hr_recruitment_views.xml
+++ b/addons/hr_recruitment/views/hr_recruitment_views.xml
@@ -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">
diff --git a/addons/lunch/views/lunch_supplier_views.xml b/addons/lunch/views/lunch_supplier_views.xml
index b383edd1e65..7868b61a003 100644
--- a/addons/lunch/views/lunch_supplier_views.xml
+++ b/addons/lunch/views/lunch_supplier_views.xml
@@ -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>
diff --git a/addons/mass_mailing_sms/views/mailing_contact_views.xml b/addons/mass_mailing_sms/views/mailing_contact_views.xml
index f861ed15d81..070b73af30f 100644
--- a/addons/mass_mailing_sms/views/mailing_contact_views.xml
+++ b/addons/mass_mailing_sms/views/mailing_contact_views.xml
@@ -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">
diff --git a/addons/web/static/src/scss/ui.scss b/addons/web/static/src/scss/ui.scss
index d94fd07ed73..0a318c57d13 100644
--- a/addons/web/static/src/scss/ui.scss
+++ b/addons/web/static/src/scss/ui.scss
@@ -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;
}
diff --git a/addons/website/views/website_visitor_views.xml b/addons/website/views/website_visitor_views.xml
index 1932520ddd0..d28ca503ddc 100644
--- a/addons/website/views/website_visitor_views.xml
+++ b/addons/website/views/website_visitor_views.xml
@@ -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>
diff --git a/addons/website_event_track/views/event_track_views.xml b/addons/website_event_track/views/event_track_views.xml
index 758f119f02f..ea3ff7b7046 100644
--- a/addons/website_event_track/views/event_track_views.xml
+++ b/addons/website_event_track/views/event_track_views.xml
@@ -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>
diff --git a/addons/website_sms/views/website_visitor_views.xml b/addons/website_sms/views/website_visitor_views.xml
index 8375bf578ad..3a7d43c9b63 100644
--- a/addons/website_sms/views/website_visitor_views.xml
+++ b/addons/website_sms/views/website_visitor_views.xml
@@ -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"
diff --git a/odoo/addons/base/views/res_bank_views.xml b/odoo/addons/base/views/res_bank_views.xml
index 58afa52c206..ed7dd1fe6fa 100644
--- a/odoo/addons/base/views/res_bank_views.xml
+++ b/odoo/addons/base/views/res_bank_views.xml
@@ -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>
diff --git a/odoo/addons/base/views/res_company_views.xml b/odoo/addons/base/views/res_company_views.xml
index 3e144a25eb8..0a9e3aef4de 100644
--- a/odoo/addons/base/views/res_company_views.xml
+++ b/odoo/addons/base/views/res_company_views.xml
@@ -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>
diff --git a/odoo/addons/base/views/res_partner_views.xml b/odoo/addons/base/views/res_partner_views.xml
index 94ffaa2731d..1dffed473ac 100644
--- a/odoo/addons/base/views/res_partner_views.xml
+++ b/odoo/addons/base/views/res_partner_views.xml
@@ -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"/>