[REF] *: Milk, webclient redesign

This pull request introduces an overall redesign that encompasses significant improvements in both usability and aesthetic.
Codenamed "**milk**",  the project's primary goal  is to enhance the overall UX and provide a visually appealing interface that promotes intuitive interaction.

### Key Design Features:

- **Improved use of `primary`color**
Previously, **all** action buttons were indistinctly assigned `primary`, regardless of their importance in the user flow. The only exception were "_hyper-secondary_" actions, which were intentionally de-emphasized to the extent of being represented solely by text.
However, this approach proved to be problematic for users since the UI failed to effectively guide them through the workflow.
Now, each view has a limited number of primary buttons that serve as clear **call-to-action** elements. The design of secondary buttons has been enhanced to give them more prominence and visual weight.

- **Control panel**
The redesign employs a consistent and responsive layout that prioritise clarity and simplicity while maintaining the component original functionalities.  The information hierarchy has been reviewed, ensuring that essential actions are prominently displayed, while less critical elements are appropriately de-emphasized.

- **The new "_Cog Menu_"**
It consolidates actions specific to the current entry only, streamlining the user interface by centralizing functionalities that were previously scattered (e.g., Archive/Import/Export).
![Pasted Graphic 1](https://github.com/odoo/odoo/assets/8558351/4ed3d5ce-7378-4b17-8510-066e1ded1c65)

- **Font-size Enhancement**
The base font-size has been increased from `13px` to `14px` across the entire UI. This enhancement significantly improves readability, ensuring that text content is more legible and accessible to users. Moreover, the rendering of `fa` icons achieves now optimal clarity since were initially designed on a `14px` font-size base.
Furthermore, the `oi` icons have also been updated to the new font-size.
Although this change may seem small, it has significant consequences on the overall visual appearance, as spacing needs to be adjusted accordingly. While we are considering allowing users to customize these options, the current change represents a step forward in readability by reducing the amount of information displayed on the screen.

- **Badges**
Badges have been redesigned to provide a more consolidated design while ensuring comfortable readability. The color palette has been reviewed to strike a balance between aesthetics and readability, allowing the badge content to stand out while ensuring comfortable viewing.

- **AppIcons, Pictograms and users' avatars**
Deviate from the previous "fontAwesome design-line" and introduce a fresh design language that aligns with our branding strategy. All the assets now possess a unique and cohesive visual style, enhancing the overall user experience and strengthening our brand identity.

### SCSS:

- **Separate "Bootstrap Review" for Frontend and Backend Bundles**
Prior to this pull request, both the frontend and backend bundles were using the same `bootstrap_review.scss` file. However, as our backend design started to deviate from Bootstrap default, it became necessary to have a dedicated way to "review" Bootstrap styles specifically for the backend.
This pull request introduces two new stylesheets: `bootstrap_review_frontend.scss` and `bootstrap_review_backend.scss`. The original `bootstrap_review.scss` file remains as a shared asset, containing customizations needed by all bundles.
With this separation, we can now maintain distinct Bootstrap styles for the frontend and backend, enhancing clarity and flexibility of our codebase.

- **[NEW] `bootstrap_review_backend.scss`**
Reduce the need for cumbersome and unsightly overrides.  By adopting a flexible and modular approach, we introduce a more consistent way of defining custom classes and custom legacy classes (e.g., `bg-black-50`).
See `bootstrap_review_backend.scss`.

- **[NEW] `utilities_custom_backend.scss`**
Manage/limit/fine-tune the generation of Bootstrap utility classes for the backend.

- **[NEW] `functions.scss`**
Unlike `utils.scss`, this file is accessible at any stage of the compilation process.

- **[NEW] `o_avatar` class**
Uniform avatars designs defining a common class shared across different modules.

- **[NEW] `o_tag` class**
Define a common class for any type entry generated by the `TagsList` component (either badges or avatars)

- **[IMP] overall spacing system**
Solved a long-standing issue regarding spacing variables in Odoo (e.g., `$o-horizontal-padding`) and Bootstrap default spacing. By harmonizing these two systems, we now enable the seamless utilization of Bootstrap utility classes to manage webclient spacing. This enhancement ensures a consistent and uniform spacing experience throughout the application

closes odoo/odoo#116641

Related: odoo/upgrade#4652
Related: odoo/enterprise#38775
Signed-off-by: Pierre Paridans (app) <app@odoo.com>
Co-authored-by: Aaron Bohy <aab@odoo.com>
Co-authored-by: Antoine (anso) <anso@odoo.com>
Co-authored-by: Brieuc-brd <brd@odoo.com>
Co-authored-by: Damien Bouvy <dbo@odoo.com>
Co-authored-by: Dardenne Florent (dafl) <dafl@odoo.com>
Co-authored-by: Elisabeth Dickinson <edi@odoo.com>
Co-authored-by: Florian Charlier <flch@odoo.com>
Co-authored-by: Julien Carion (juca) <juca@odoo.com>
Co-authored-by: Mathieu (mano) <mano@odoo.com>
Co-authored-by: Pierre Paridans <app@odoo.com>
Co-authored-by: Romain Estievenart <res@odoo.com>
Co-authored-by: Romeo Fragomeli <rfr@odoo.com>
Co-authored-by: chrysanthe(chgo) <chgo@odoo.com>
Co-authored-by: luvi <luvi@odoo.com>
Co-authored-by: stefanorigano (SRI) <sri@odoo.com>
Co-authored-by: xlu-odoo <xlu@odoo.com>
This commit is contained in:
Odoo's Mergebot
2023-05-12 22:59:24 +02:00
committed by GitHub
co-authored by Aaron Bohy Antoine Brieuc-brd Damien Bouvy Dardenne Florent Elisabeth Dickinson Florian Charlier Julien Carion Mathieu Pierre Paridans Romain Estievenart Romeo Fragomeli chrysanthe luvi stefanorigano xlu-odoo
899 changed files with 8115 additions and 10134 deletions
Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

@@ -0,0 +1 @@
<svg width="50" height="50" xmlns="http://www.w3.org/2000/svg"><path d="M38 46H12c-4.418 0-8-3.498-8-7.814V4h30c2.21 0 4 1.75 4 3.907V46Z" fill="var(--o-icons-cyan-pure, #1BB6F9)"/><path d="M38 46H12c-4.418 0-8-3.498-8-7.814V4h30c2.21 0 4 1.75 4 3.907V46Z" fill="url(#o_icon_account__a)" fill-opacity=".2"/><path d="M12 46h26a7.999 7.999 0 0 0 8-8H20a8 8 0 0 1-8 8Z" fill="var(--o-icons-purple-cyan, #102E7A)"/><path d="M12 46h26a7.999 7.999 0 0 0 8-8H20a8 8 0 0 1-8 8Z" fill="url(#o_icon_account__b)" fill-opacity=".3"/><path d="M38 8C23.408 8 10.687 16.014 4 27.88V4h30a4 4 0 0 1 4 4Z" fill="var(--o-icons-cyan-cyan, #0382F3)"/><path d="M38 8C23.408 8 10.687 16.014 4 27.88V4h30a4 4 0 0 1 4 4Z" fill="url(#o_icon_account__c)" fill-opacity=".2"/><path d="M20.425 34h1.181v-1.707c3.23-.198 5.394-1.791 5.394-4.435v-.021c0-2.332-1.495-3.498-4.442-4.143l-.952-.198v-3.02c1.035.167 1.715.74 1.86 1.708l.011.02 3.283-.01.01-.01c-.115-2.53-2.007-4.216-5.164-4.435V16h-1.18v1.739c-3.074.145-5.28 1.728-5.28 4.33v.021c0 2.343 1.547 3.602 4.338 4.216l.941.198v3.082c-1.223-.115-1.934-.625-2.101-1.54l-.01-.022-3.293.01-.021.011c.084 2.665 2.237 4.133 5.425 4.258V34Zm-1.777-12.19v-.022c0-.75.606-1.228 1.777-1.332v2.769c-1.213-.323-1.777-.729-1.777-1.416Zm4.85 6.423v.02c0 .802-.68 1.229-1.892 1.333v-2.821c1.36.343 1.892.697 1.892 1.468Z" fill="var(--o-icons-white, #FFFFFF)"/><defs><linearGradient id="o_icon_account__a" x1="4" y1="4" x2="44.828" y2="12.263" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="o_icon_account__b" x1="12" y1="38" x2="31.963" y2="59.211" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="o_icon_account__c" x1="4" y1="4" x2="41.721" y2="17.426" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient></defs></svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

@@ -51,13 +51,13 @@
</t>
<t t-name="account.ListView.Buttons" t-inherit="web.ListView.Buttons" t-inherit-mode="primary" owl="1">
<xpath expr="//*[@class='btn btn-primary o_list_button_add']" position="after">
<xpath expr="//div[hasclass('o_list_buttons')]" position="inside">
<t t-call="account.AccountViewUploadButton"/>
</xpath>
</t>
<t t-name="account.KanbanView.Buttons" t-inherit="web.KanbanView.Buttons" t-inherit-mode="primary" owl="1">
<xpath expr="//*[@class='btn btn-primary o-kanban-button-new']" position="after">
<xpath expr="//div[hasclass('o_cp_buttons')]" position="inside">
<t t-call="account.AccountViewUploadButton"/>
</xpath>
</t>
@@ -38,16 +38,6 @@
width: 450px;
}
}
.o_kanban_group {
&:not(.o_column_folded) {
width: 450px + 2*$o-kanban-group-padding;
@include media-breakpoint-down(md) {
width: 100%;
}
}
}
}
// Style for the widget "dashboard_graph"
@@ -16,11 +16,12 @@
position: 'bottom',
}, {
trigger: '.o_data_row:first .o_data_cell',
extra_trigger: '.breadcrumb',
extra_trigger: '.o_breadcrumb',
}, {
trigger: '.o_control_panel button:contains("' + _t('Print') + '")',
trigger: '.o_control_panel .o_cp_action_menus .dropdown-toggle',
extra_trigger: '.o_breadcrumb .active:contains("INV/")',
}, {
trigger: '.o_control_panel .o-dropdown--menu span:contains("' + _t('Invoices without Payment') + '")',
trigger: '.o_control_panel .o_cp_action_menus .o_menu_item:contains("' + _t('Invoices without Payment') + '")',
}, {
trigger: 'iframe .o_report_layout_standard h2',
content: 'Primary color is correct',
@@ -8,7 +8,7 @@
<field name="arch" type="xml">
<form string="Tags">
<sheet>
<widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<widget name="web_ribbon" title="Archived" bg_color="text-bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<group>
<field name="active" invisible="1"/>
<field name="name"/>
@@ -20,7 +20,7 @@
<field name="arch" type="xml">
<form string="Incoterms">
<sheet>
<widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<widget name="web_ribbon" title="Archived" bg_color="text-bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<group>
<field name="active" invisible="1"/>
<field name="name"/>
@@ -33,10 +33,14 @@
<sheet>
<div name="button_box" class="oe_button_box">
<button class="oe_stat_button" type="action"
name="%(action_account_moves_all_a)d" icon="fa-book" string="Journal Entries"
context="{'search_default_journal_id':active_id}"/>
name="%(action_account_moves_all_a)d" icon="fa-book"
context="{'search_default_journal_id':active_id}">
<div class="o_stat_info">
<span class="o_stat_text">Journal Entries</span>
</div>
</button>
</div>
<widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<widget name="web_ribbon" title="Archived" bg_color="text-bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<div class="oe_title">
<label for="name"/>
<h1><field name="name" placeholder="e.g. Customer Invoices"/></h1>
@@ -140,7 +144,7 @@
</group>
<group name="group_alias_no_domain" string="Create Invoices upon Emails" attrs="{'invisible': ['|', ('type', 'not in', ('sale' ,'purchase')), ('alias_domain', '!=', False)]}">
<div class="content-group" colspan="2">
<a type='action' name='%(action_open_settings)d' class="btn btn-link" role="button"><i class="fa fa-fw o_button_icon fa-arrow-right"/> Configure Email Servers</a>
<a type='action' name='%(action_open_settings)d' class="btn btn-link" role="button"><i class="oi oi-fw o_button_icon oi-arrow-right"/> Configure Email Servers</a>
</div>
</group>
<group class="oe_edit_only" name="group_alias_edit" string="Create Invoices upon Emails" attrs="{'invisible': ['|', ('type', 'not in', ('sale' ,'purchase')), ('alias_domain', '=', False)]}">
+1 -1
View File
@@ -4,7 +4,7 @@
<menuitem name="Invoicing"
id="menu_finance"
groups="account.group_account_readonly,account.group_account_invoice"
web_icon="account,static/description/icon.png"
web_icon="account,static/description/icon.svg"
sequence="55">
<menuitem id="menu_board_journal_1" name="Dashboard" action="open_account_journal_dashboard_kanban" groups="account.group_account_readonly" sequence="1"/>
<menuitem id="menu_finance_receivables" name="Customers" sequence="2">
+15 -9
View File
@@ -111,7 +111,7 @@
<field name="name"/>
</em>
<div class="col-2 text-end">
<img t-att-src="kanban_image('res.partner', 'avatar_128', record.partner_id.raw_value)" t-att-title="record.partner_id.value" t-att-alt="record.partner_id.value" class="oe_kanban_avatar o_image_24_cover"/>
<img t-att-src="kanban_image('res.partner', 'avatar_128', record.partner_id.raw_value)" t-att-title="record.partner_id.value" t-att-alt="record.partner_id.value" class="oe_kanban_avatar o_avatar rounded"/>
</div>
</div>
<div class="row">
@@ -683,22 +683,28 @@
class="oe_stat_button"
icon="fa-bars"
type="object"
attrs="{'invisible': ['|', '|', ('move_type', '!=', 'entry'), ('id', '=', False), ('payment_id', '=', False)]}"
string="1 Payment">
attrs="{'invisible': ['|', '|', ('move_type', '!=', 'entry'), ('id', '=', False), ('payment_id', '=', False)]}">
<div class="o_stat_info">
<span class="o_stat_text">1 Payment</span>
</div>
</button>
<button name="open_reconcile_view"
class="oe_stat_button"
icon="fa-bars"
type="object"
attrs="{'invisible': ['|', '|', ('move_type', '!=', 'entry'), ('id', '=', False), ('has_reconciled_entries', '=', False)]}"
string="Reconciled Items">
attrs="{'invisible': ['|', '|', ('move_type', '!=', 'entry'), ('id', '=', False), ('has_reconciled_entries', '=', False)]}">
<div class="o_stat_info">
<span class="o_stat_text">Reconciled Items</span>
</div>
</button>
<button name="open_created_caba_entries"
class="oe_stat_button"
icon="fa-usd"
type="object"
attrs="{'invisible': [('tax_cash_basis_created_move_ids', '=', [])]}"
string="Cash Basis Entries">
attrs="{'invisible': [('tax_cash_basis_created_move_ids', '=', [])]}">
<div class="o_stat_info">
<span class="o_stat_text">Cash Basis Entries</span>
</div>
</button>
</div>
@@ -710,10 +716,10 @@
<widget name="web_ribbon" title="Partial"
attrs="{'invisible': ['|', ('payment_state', '!=', 'partial'), ('move_type', 'not in', ('out_invoice', 'out_refund', 'in_invoice', 'in_refund', 'out_receipt', 'in_receipt'))]}"/>
<widget name="web_ribbon" title="Reversed"
bg_color="bg-danger"
bg_color="text-bg-danger"
attrs="{'invisible': [('payment_state', '!=', 'reversed')]}"/>
<widget name="web_ribbon" text="Invoicing App Legacy"
bg_color="bg-info"
bg_color="text-bg-info"
attrs="{'invisible': [('payment_state', '!=', 'invoicing_legacy')]}"
tooltip="This entry has been generated through the Invoicing app, before installing Accounting. It has been disabled by the 'Invoicing Switch Threshold Date' setting so that it does not impact your accounting."/>
@@ -5,6 +5,8 @@
<t t-call="base.onboarding_step">
<t t-set="title">Invoice Layout</t>
<t t-set="description">Customize the look of your invoices.</t>
<t t-set="image" t-value="'/base/static/img/onboarding_quotation-layout.png'"/>
<t t-set="alt" t-value="'Invoice Layout'"/>
<t t-set="done_icon" t-value="'fa-star'" />
<t t-set="btn_text">Customize</t>
<t t-set="done_text">Looks great!</t>
@@ -19,6 +21,8 @@
<t t-set="description">
Create your first invoice.
</t>
<t t-set="image" t-value="'/base/static/img/onboarding_order-confirmation.png'"/>
<t t-set="alt" t-value="'Onboarding Create Invoice'"/>
<t t-set="btn_text">Create</t>
<t t-set="done_text">First invoice sent!</t>
<t t-set="method" t-value="'action_open_account_onboarding_create_invoice'" />
@@ -32,6 +36,8 @@
<t t-set="description">
Connect your financial accounts in seconds.
</t>
<t t-set="image" t-value="'/base/static/img/onboarding_puzzle.png'"/>
<t t-set="alt" t-value="'Onboarding Bank Account'"/>
<t t-set="btn_text">Add a bank account</t>
<t t-set="done_text">Step Completed!</t>
<t t-set="method" t-value="'setting_init_bank_account_action'" />
@@ -43,6 +49,8 @@
<t t-call="base.onboarding_step">
<t t-set="title">Accounting Periods</t>
<t t-set="description">Define your fiscal years &amp; tax returns periodicity.</t>
<t t-set="image" t-value="'/base/static/img/onboarding_accounting-periods.png'"/>
<t t-set="alt" t-value="'Onboarding Accounting Periods'"/>
<t t-set="btn_text">Configure</t>
<t t-set="done_text">Step Completed!</t>
<t t-set="method" t-value="'setting_init_fiscal_year_action'" />
@@ -54,6 +62,8 @@
<t t-call="base.onboarding_step">
<t t-set="title">Chart of Accounts</t>
<t t-set="description">Setup your chart of accounts and record initial balances.</t>
<t t-set="image" t-value="'/base/static/img/onboarding_chart-of-accounts.png'"/>
<t t-set="alt" t-value="'Onboarding Chart of Accounts'"/>
<t t-set="btn_text">Review</t>
<t t-set="done_text">Chart of accounts set.</t>
<t t-set="method" t-value="'setting_chart_of_accounts_action'" />
@@ -65,6 +75,8 @@
<t t-call="base.onboarding_step">
<t t-set="title">Taxes</t>
<t t-set="description">Set default Taxes for sales and purchase transactions.</t>
<t t-set="image" t-value="'/base/static/img/onboarding_taxes.png'"/>
<t t-set="alt" t-value="'Onboarding Taxes'"/>
<t t-set="btn_text">Review</t>
<t t-set="done_text">Taxes set.</t>
<t t-set="method" t-value="'action_open_taxes_onboarding'" />
@@ -75,8 +87,6 @@
<!-- ONBOARDING PANELS -->
<template id="account_invoice_onboarding_panel" name="account.invoice.onboarding.panel">
<t t-call="base.onboarding_container">
<t t-set="classes" t-value="'o_onboarding_blue'"/>
<t t-set="bg_image" t-value="'/account/static/src/img/account_invoice_onboarding_bg.jpg'"/>
<t t-set="close_method" t-value="'action_close_account_invoice_onboarding'"/>
<t t-set="close_model" t-value="'res.company'"/>
<t t-set="text_completed">Congratulations! You are all set.</t>
@@ -89,8 +99,6 @@
</template>
<template id="account_dashboard_onboarding_panel" name="account.dashboard.onboarding.panel">
<t t-call="base.onboarding_container">
<t t-set="classes" t-value="'o_onboarding_orange'"/>
<t t-set="bg_image" t-value="'/account/static/src/img/account_dashboard_onboarding_bg.jpg'"/>
<t t-set="close_method" t-value="'action_close_account_dashboard_onboarding'"/>
<t t-set="close_model" t-value="'res.company'"/>
@@ -114,6 +122,8 @@
<t t-set="title">Taxes</t>
<t t-set="description">Choose a default sales tax for your products.</t>
<t t-set="btn_text">Set taxes</t>
<t t-set="image" t-value="'/base/static/img/onboarding_taxes.png'"/>
<t t-set="alt" t-value="'Onboarding Taxes'"/>
<t t-set="done_text">Step Completed!</t>
<t t-set="method" t-value="'action_open_account_onboarding_sale_tax'" />
<t t-set="model" t-value="'res.company'" />
@@ -35,7 +35,7 @@
<sheet>
<field name="active" invisible="1"/>
<field name="fiscal_country_codes" invisible="1"/>
<widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<widget name="web_ribbon" title="Archived" bg_color="text-bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<div class="oe_title">
<label for="name" string="Payment Terms"/>
<h1><field name="name" nolabel="1" placeholder="e.g. 30 days"/></h1>
@@ -225,7 +225,7 @@
attrs="{'invisible': [('reconciled_statement_lines_count','=', 0)]}">
<div class="o_form_field o_stat_info">
<field name="reconciled_statement_lines_count"/>
<span> Transaction</span>
<span class="o_stat_text">Transaction</span>
</div>
</button>
@@ -242,7 +242,7 @@
</div>
<widget name="web_ribbon" text="Invoicing App Legacy"
bg_color="bg-info"
bg_color="text-bg-info"
attrs="{'invisible': [('state', '!=', 'invoicing_legacy')]}"
tooltip="This payment has been generated through the Invoicing app, before installing Accounting. It has been disabled by the 'Invoicing Switch Threshold Date' setting so that it does not impact your accounting."
/>
+1 -1
View File
@@ -36,7 +36,7 @@
<sheet>
<div class="oe_button_box" name="button_box"/>
<widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<widget name="web_ribbon" title="Archived" bg_color="text-bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<group>
<group>
<field name="active" invisible="1"/>
@@ -87,7 +87,7 @@
<field name="group_multi_currency" invisible="1"/>
</div>
<div class="mt8">
<button type="action" name="%(base.action_currency_form)d" string="Currencies" class="btn-link" icon="fa-arrow-right"/>
<button type="action" name="%(base.action_currency_form)d" string="Currencies" class="btn-link" icon="oi-arrow-right"/>
</div>
</div>
</setting>
@@ -128,7 +128,7 @@
documentation="/applications/finance/accounting/receivables/customer_invoices/cash_rounding.html">
<field name="group_cash_rounding"/>
<div class="mt8">
<button name="%(account.rounding_list_action)d" icon="fa-arrow-right"
<button name="%(account.rounding_list_action)d" icon="oi-arrow-right"
type="action" string="Cash Roundings" class="btn-link"
attrs="{'invisible': [('group_cash_rounding', '=', False)]}"/>
</div>
@@ -155,12 +155,12 @@
placeholder="Insert your terms &amp; conditions here..."/>
</div>
<div class="mt8" attrs="{'invisible': [('terms_type', '!=', 'html')]}">
<button name="action_update_terms" icon="fa-arrow-right" type="object" string="Update Terms" class="btn-link"/>
<button name="action_update_terms" icon="oi-arrow-right" type="object" string="Update Terms" class="btn-link"/>
</div>
<field name="preview_ready" invisible="1"/>
<div class="mt4 ms-1" attrs="{'invisible': [('preview_ready', '=', False)]}">
<a class="btn-link" href="/terms" role="button">
<i class="fa fa-arrow-right"></i>
<i class="oi oi-arrow-right"></i>
Preview
</a>
</div>
+1 -1
View File
@@ -3,7 +3,7 @@
<template id="account.account_terms_conditions_setting_banner" name="Account Terms and Conditions Setting Banner">
<div id="terms_conditions" t-ignore="true" class="text-center">
<span>This is a preview of your Terms &amp; Conditions.</span>
<a t-att-href="backend_url"><i class="fa fa-arrow-right me-1"/>Back to settings</a>
<a t-att-href="backend_url"><i class="oi oi-arrow-right me-1"/>Back to settings</a>
</div>
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</template>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="70" height="70" viewBox="0 0 70 70"><defs><path id="a" d="M4 0h61c4 0 5 1 5 5v60c0 4-1 5-5 5H4c-3 0-4-1-4-5V5c0-4 1-5 4-5z"/><linearGradient id="c" x1="100%" x2="0%" y1="0%" y2="100%"><stop offset="0%" stop-color="#DA956B"/><stop offset="100%" stop-color="#CC7039"/></linearGradient><path id="d" d="M50.25 52.79l-3.61-3.11v-8.95H24.347v14.439H42.08l2.882 3.243h-21.43c-.985 0-1.782-.785-1.782-1.754v-13.59h-3.86a.884.884 0 0 1-.89-.877v-9.648c0-1.938 1.595-3.509 3.563-3.509h1.187v-12.28c0-.969.797-1.754 1.781-1.754h20.637c.473 0 .926.185 1.26.514l4.3 4.235c.334.329.522.775.522 1.24v8.045h1.188c1.967 0 3.562 1.571 3.562 3.509v9.648a.884.884 0 0 1-.89.877h-3.86v9.723zm-21.926-7.05c0 1.41 4.636 1.052 4.636 3.734 0 1.284-1.015 2.381-2.664 2.61v1.063c0 .148-.135.268-.301.268h-1.004c-.166 0-.3-.12-.3-.268v-1.08c-.992-.151-1.875-.56-2.478-1.075a.248.248 0 0 1-.033-.355l.762-.911a.326.326 0 0 1 .431-.048c.625.448 1.433.804 2.204.804.899 0 1.308-.478 1.308-.922 0-1.313-4.636-1.028-4.636-3.796 0-1.18.97-2.136 2.441-2.433v-1.117c0-.148.135-.268.301-.268h1.004c.166 0 .301.12.301.268v1.059c.807.083 1.681.365 2.29.847.105.082.132.219.065.328l-.59.976c-.087.143-.294.185-.442.09-.56-.36-1.248-.635-1.918-.635-.836 0-1.377.338-1.377.86zm-3.977-14.367H46.64v-8.14H43.6c-.676-.022-1.013-.354-1.013-.998v-2.923l-18.24-.07v12.131zm24.715 5.263c.984 0 1.782-.785 1.782-1.754 0-.97-.798-1.755-1.782-1.755-.983 0-1.78.786-1.78 1.755 0 .969.797 1.754 1.78 1.754zm-7.031 12.698c1.61.343 2.64.782 3.089 1.317l5.773 6.88-2.328 1.954-5.774-6.88c-.34-.404-.592-1.495-.76-3.27zm7.072 10.736l2.33-1.954 1.282 1.529c.428.51.383.982-.135 1.416l-.776.651c-.517.434-.99.397-1.418-.113l-1.283-1.529zm.494-5.272l.01-.009a.5.5 0 0 1 .704.062l2.334 2.781a.5.5 0 0 1-.061.705l-.01.008a.5.5 0 0 1-.705-.061l-2.334-2.782a.5.5 0 0 1 .062-.704zM35 44h9v.998h-9V44zm0 3h9v.998h-9V47z"/><path id="e" d="M50.25 50.79l-3.61-3.11v-8.95H24.347v14.439H42.08l2.882 3.243h-21.43c-.985 0-1.782-.785-1.782-1.754v-13.59h-3.86a.884.884 0 0 1-.89-.877v-9.648c0-1.938 1.595-3.509 3.563-3.509h1.187v-12.28c0-.969.797-1.754 1.781-1.754h20.637c.473 0 .926.185 1.26.514l4.3 4.235c.334.329.522.775.522 1.24v8.045h1.188c1.967 0 3.562 1.571 3.562 3.509v9.648a.884.884 0 0 1-.89.877h-3.86v9.723zm-21.926-7.05c0 1.41 4.636 1.052 4.636 3.734 0 1.284-1.015 2.381-2.664 2.61v1.063c0 .148-.135.268-.301.268h-1.004c-.166 0-.3-.12-.3-.268v-1.08c-.992-.151-1.875-.56-2.478-1.075a.248.248 0 0 1-.033-.355l.762-.911a.326.326 0 0 1 .431-.048c.625.448 1.433.804 2.204.804.899 0 1.308-.478 1.308-.922 0-1.313-4.636-1.028-4.636-3.796 0-1.18.97-2.136 2.441-2.433v-1.117c0-.148.135-.268.301-.268h1.004c.166 0 .301.12.301.268v1.059c.807.083 1.681.365 2.29.847.105.082.132.219.065.328l-.59.976c-.087.143-.294.185-.442.09-.56-.36-1.248-.635-1.918-.635-.836 0-1.377.338-1.377.86zm-3.977-14.367H46.64v-8.14H43.6c-.676-.022-1.013-.354-1.013-.998v-2.923l-18.24-.07v12.131zm24.715 5.263c.984 0 1.782-.785 1.782-1.754 0-.97-.798-1.755-1.782-1.755-.983 0-1.78.786-1.78 1.755 0 .969.797 1.754 1.78 1.754zm-7.031 12.698c1.61.343 2.64.782 3.089 1.317l5.773 6.88-2.328 1.954-5.774-6.88c-.34-.404-.592-1.495-.76-3.27zm7.072 10.736l2.33-1.954 1.282 1.529c.428.51.383.982-.135 1.416l-.776.651c-.517.434-.99.397-1.418-.113l-1.283-1.529zm.494-5.272l.01-.009a.5.5 0 0 1 .704.062l2.334 2.781a.5.5 0 0 1-.061.705l-.01.008a.5.5 0 0 1-.705-.061l-2.334-2.782a.5.5 0 0 1 .062-.704zM35 42h9v.998h-9V42zm0 3h9v.998h-9V45z"/></defs><g fill="none" fill-rule="evenodd"><mask id="b" fill="#fff"><use xlink:href="#a"/></mask><g mask="url(#b)"><path fill="url(#c)" d="M0 0H70V70H0z"/><path fill="#FFF" fill-opacity=".383" d="M4 1h61c2.667 0 4.333.667 5 2V0H0v3c.667-1.333 2-2 4-2z"/><path fill="#393939" d="M42.865 69H4c-2 0-4-1-4-4V38.062l22.272-24.547L24.037 13H44.02L49 17v13h5.814v10.707l-4.599 5.878v4.163l-1.966 2.081.555.876.84-.876 2.964 3.459-.858.636L53 58.5 42.865 69z" opacity=".324"/><path fill="#000" fill-opacity=".383" d="M4 69h61c2.667 0 4.333-1 5-3v4H0v-4c.667 2 2 3 4 3z"/><use fill="#000" fill-rule="nonzero" opacity=".3" xlink:href="#d"/><use fill="#FFF" fill-rule="nonzero" xlink:href="#e"/></g></g></svg>
<svg width="50" height="50" xmlns="http://www.w3.org/2000/svg"><path d="M4 17a4 4 0 0 1 4-4h38v20a4 4 0 0 1-4 4H4V17Z" fill="var(--o-icons-red-pure, #FC787D)"/><path d="M4 17a4 4 0 0 1 4-4h38v20a4 4 0 0 1-4 4H4V17Z" fill="url(#o_icon_account_check_printing__a)" fill-opacity=".2"/><path d="M8 8a4 4 0 0 1 4-4h26a4 4 0 0 1 4 4v5H8V8Z" fill="var(--o-icons-purple-pure, #93407D)"/><path d="M8 8a4 4 0 0 1 4-4h26a4 4 0 0 1 4 4v5H8V8Z" fill="url(#o_icon_account_check_printing__b)" fill-opacity=".2"/><path d="M13 37h24v5a4 4 0 0 1-4 4H13v-9Z" fill="var(--o-icons-yellow-pure, #FBB130)"/><path d="M13 37h24v5a4 4 0 0 1-4 4H13v-9Z" fill="url(#o_icon_account_check_printing__c)" fill-opacity=".2"/><path d="M37 37H13v-8h24v8Z" fill="var(--o-icons-purple-yellow, #912C18)"/><path d="M37 37H13v-8h24v8Z" fill="url(#o_icon_account_check_printing__d)" fill-opacity=".2"/><defs><linearGradient id="o_icon_account_check_printing__a" x1="4" y1="13" x2="48.066" y2="32.279" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="o_icon_account_check_printing__b" x1="8" y1="4" x2="30.463" y2="25.215" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="o_icon_account_check_printing__c" x1="13" y1="37" x2="33.769" y2="50.846" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="o_icon_account_check_printing__d" x1="13" y1="29" x2="32.2" y2="43.4" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient></defs></svg>

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

@@ -28,8 +28,11 @@
<field name="transaction_ids" invisible="1" />
<button name="action_view_payment_transactions" type="object"
class="oe_stat_button" icon="fa-money"
string="Payment Transaction"
attrs="{'invisible': [('transaction_ids', '=', [])]}" />
attrs="{'invisible': [('transaction_ids', '=', [])]}">
<div class="o_stat_info">
<span class="o_stat_text">Payment Transaction</span>
</div>
</button>
</xpath>
</field>
</record>
@@ -11,6 +11,8 @@
<t t-call="base.onboarding_step">
<t t-set="title">Online Payments</t>
<t t-set="description">Enable credit &amp; debit card payments supported by Stripe</t>
<t t-set="image" t-value="'/base/static/img/onboarding_bank-account.png'"/>
<t t-set="alt" t-value="'Online Payments'"/>
<t t-set="btn_text">Activate Stripe</t>
<t t-set="done_text">Online payments enabled</t>
<t t-set="model" t-value="'res.company'"/>
@@ -17,7 +17,7 @@
</div>
</button>
</div>
<widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<widget name="web_ribbon" title="Archived" bg_color="text-bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<div class="oe_title">
<label for="name"/>
<h1>
@@ -7,7 +7,7 @@
<field name="arch" type="xml">
<setting id="module_auth_ldap" position="inside">
<div class="mt8" attrs="{'invisible': [('module_auth_ldap','=',False)]}">
<button type="action" name="%(auth_ldap.action_ldap_installer)d" string="LDAP Server" icon="fa-arrow-right" class="btn-link"/>
<button type="action" name="%(auth_ldap.action_ldap_installer)d" string="LDAP Server" icon="oi-arrow-right" class="btn-link"/>
</div>
</setting>
<div id="auth_ldap_warning" position="replace"/>
@@ -8,7 +8,7 @@
<div id="msg_module_auth_oauth" position="replace">
<div class="content-group" attrs="{'invisible': [('module_auth_oauth','=',False)]}">
<div class="mt8">
<button type="action" name="%(auth_oauth.action_oauth_provider)d" string="OAuth Providers" icon="fa-arrow-right" class="btn-link"/>
<button type="action" name="%(auth_oauth.action_oauth_provider)d" string="OAuth Providers" icon="oi-arrow-right" class="btn-link"/>
</div>
</div>
</div>
@@ -20,7 +20,7 @@
<label for="auth_oauth_google_client_id" string="Client ID:" class="col-lg-3 o_light_label"/>
<field name="auth_oauth_google_client_id" placeholder="e.g. 1234-xyz.apps.googleusercontent.com"/>
</div>
<a href="https://www.odoo.com/documentation/master/applications/general/auth/google.html" target="_blank"><i class="fa fa-fw fa-arrow-right"/>Tutorial</a>
<a href="https://www.odoo.com/documentation/master/applications/general/auth/google.html" target="_blank"><i class="oi oi-fw oi-arrow-right"/>Tutorial</a>
</div>
</setting>
</setting>
@@ -11,7 +11,7 @@
<field name="auth_signup_uninvited" class="o_light_label" widget="radio" options="{'horizontal': true}" required="True"/>
<div class="content-group" attrs="{'invisible': [('auth_signup_uninvited','=','b2b')]}">
<div class="mt8">
<button type="object" name="action_open_template_user" string="Default Access Rights" icon="fa-arrow-right" class="btn-link"/>
<button type="object" name="action_open_template_user" string="Default Access Rights" icon="oi-arrow-right" class="btn-link"/>
</div>
</div>
</setting>
+4 -4
View File
@@ -21,7 +21,7 @@ function openRoot() {
function openUserProfileAtSecurityTab() {
return [{
content: 'Open user account menu',
trigger: '.o_user_menu .oe_topbar_name',
trigger: '.o_user_menu .dropdown-toggle',
run: 'click',
}, {
content: "Open preferences / profile screen",
@@ -154,7 +154,7 @@ registry.category("web_tour.tours").add('totp_login_enabled', {
}
}, {
content: "check we're logged in",
trigger: ".o_user_menu .oe_topbar_name",
trigger: ".o_user_menu .dropdown-toggle",
run() {}
}]});
@@ -191,7 +191,7 @@ registry.category("web_tour.tours").add('totp_login_device', {
}
}, {
content: "check we're logged in",
trigger: ".o_user_menu .oe_topbar_name",
trigger: ".o_user_menu .dropdown-toggle",
run: 'click',
}, {
content: "click the Log out button",
@@ -212,7 +212,7 @@ registry.category("web_tour.tours").add('totp_login_device', {
trigger: 'button:contains("Log in")',
}, {
content: "check we're logged in without 2FA",
trigger: ".o_user_menu .oe_topbar_name",
trigger: ".o_user_menu .dropdown-toggle",
run() {}
},
// now go and disable two-factor authentication would be annoying to do in a separate tour
@@ -10,8 +10,10 @@
class="oe_stat_button"
icon="fa-globe"
type="action"
context="{'default_country_id': active_id, 'search_default_country_id': active_id}"
string="Cities">
context="{'default_country_id': active_id, 'search_default_country_id': active_id}">
<div class="o_field_widget o_stat_info">
<span class="o_stat_text">Cities</span>
</div>
</button>
</xpath>
<xpath expr="//field[@name='phone_code']" position="after">
@@ -63,11 +63,7 @@ export class ImportAction extends Component {
get display() {
return {
controlPanel: {
"top-right": false,
"bottom-left": true,
"bottom-right": false,
},
controlPanel: {},
};
}
@@ -3,7 +3,7 @@
<t t-name="ImportAction" owl="1">
<div class="h-100 d-flex flex-column">
<Layout className="'o_import_action d-flex h-100 overflow-auto bg-white'" display="display">
<t t-set-slot="layout-buttons">
<t t-set-slot="control-panel-create-button">
<t t-if="isPreviewing">
<button t-if="!state.isPaused" type="button" class="btn btn-primary m-1" t-on-click="() => this.handleImport(false)">Import</button>
<button t-else="" type="button" class="btn btn-primary m-1" t-on-click="() => this.handleImport(false)">Resume</button>
@@ -30,7 +30,7 @@
<t t-if="typeof moreInfo === 'string'" t-esc="moreInfo"/>
<div t-else="" class="o_import_moreinfo" t-on-click="onMoreInfoClicked">
<a href="#" class="o_import_see_all">
<i class="fa fa-arrow-right"></i> See possible values
<i class="oi oi-arrow-right"></i> See possible values
</a>
</div>
<ul t-if="state.moreInfoContent" class="o_import_report_more">
@@ -5,7 +5,7 @@ import { registry } from "@web/core/registry";
import { useService } from "@web/core/utils/hooks";
import { Component } from "@odoo/owl";
const favoriteMenuRegistry = registry.category("favoriteMenu");
const cogMenuRegistry = registry.category("cogMenu");
/**
* 'Import records' menu
@@ -46,4 +46,4 @@ export const importRecordsItem = {
!!JSON.parse(config.viewArch.getAttribute("create") || "1"),
};
favoriteMenuRegistry.add("import-menu", importRecordsItem, { sequence: 1 });
cogMenuRegistry.add("import-menu", importRecordsItem, { sequence: 1 });
@@ -341,10 +341,11 @@ QUnit.module("Base Import Tests", (hooks) => {
"button has the right download url"
);
assert.verifySteps(["partner/get_import_templates", "base_import.import/create"]);
// Contains invisible mobile buttons
assert.containsN(
target,
".o_control_panel button",
2,
5,
"only two buttons are visible by default"
);
});
@@ -380,7 +381,7 @@ QUnit.module("Base Import Tests", (hooks) => {
// Set and trigger the change of a file for the input
const file = new File(["fake_file"], "fake_file.xlsx", { type: "text/plain" });
await editInput(target, "input[type='file']", file);
await editInput(target, ".o_control_panel_main_buttons .d-none input[type='file']", file);
assert.verifySteps([
"partner/get_import_templates",
"base_import.import/create",
@@ -515,8 +516,10 @@ QUnit.module("Base Import Tests", (hooks) => {
// Set and trigger the change of a file for the input
const file = new File(["fake_file"], "fake_file.xls", { type: "text/plain" });
await editInput(target, "input[type='file']", file);
await click(target.querySelector(".o_control_panel button:first-child"));
await editInput(target, ".o_control_panel_main_buttons .d-none input[type='file']", file);
await click(
target.querySelector(".o_control_panel_main_buttons .d-none button:first-child")
);
assert.verifySteps(["execute_import"]);
});
@@ -533,7 +536,7 @@ QUnit.module("Base Import Tests", (hooks) => {
// Set and trigger the change of a file for the input
const file = new File(["fake_file"], "fake_file.csv", { type: "text/plain" });
await editInput(target, "input[type='file']", file);
await editInput(target, ".o_control_panel_main_buttons .d-none input[type='file']", file);
assert.containsOnce(
target,
".o_import_data_sidepanel .o_import_formatting",
@@ -563,7 +566,7 @@ QUnit.module("Base Import Tests", (hooks) => {
// Set and trigger the change of a file for the input
const file = new File(["fake_file"], "fake_file.csv", { type: "text/plain" });
await editInput(target, "input[type='file']", file);
await editInput(target, ".o_control_panel_main_buttons .d-none input[type='file']", file);
await nextTick();
assert.containsOnce(
@@ -604,7 +607,11 @@ QUnit.module("Base Import Tests", (hooks) => {
// Set and trigger the change of a file for the input
const file = new File(["fake_file"], "fake_file.xls", { type: "text/plain" });
await editInput(target, "input[type='file']", file);
await editInput(
target,
".o_control_panel_main_buttons .d-none input[type='file']",
file
);
assert.strictEqual(
target.querySelector(".o_import_data_sidepanel input[type=checkbox]").checked,
true,
@@ -637,7 +644,9 @@ QUnit.module("Base Import Tests", (hooks) => {
"as the column couldn't match with the database, user must make a choice"
);
await click(target.querySelector(".o_control_panel button:first-child"));
await click(
target.querySelector(".o_control_panel_main_buttons .d-none button:first-child")
);
assert.containsNone(
target,
".o_notification_body",
@@ -660,7 +669,9 @@ QUnit.module("Base Import Tests", (hooks) => {
);
await editSelectMenu(target, ".o_import_data_content .o_select_menu", "Display name");
await click(target.querySelector(".o_control_panel button:first-child"));
await click(
target.querySelector(".o_control_panel_main_buttons .d-none button:first-child")
);
assert.verifySteps([
"base_import.import/execute_import",
"1 records successfully imported",
@@ -700,10 +711,12 @@ QUnit.module("Base Import Tests", (hooks) => {
// Set and trigger the change of a file for the input
const file = new File(["fake_file"], "fake_file.xlsx", { type: "text/plain" });
await editInput(target, "input[type='file']", file);
await editInput(target, ".o_control_panel_main_buttons .d-none input[type='file']", file);
// For this test, we force the display of an error message if this field is set
await editSelectMenu(target, ".o_import_data_content .o_select_menu", "Selection");
await click(target.querySelector(".o_control_panel button:nth-child(2)"));
await click(
target.querySelector(".o_control_panel_main_buttons .d-none button:nth-child(2)")
);
assert.strictEqual(
target.querySelector(".o_import_data_content .alert-danger").textContent,
"The file contains blocking errors (see below)",
@@ -730,7 +743,9 @@ QUnit.module("Base Import Tests", (hooks) => {
"prevent option is selected by default"
);
editSelect(target, ".o_import_field_selection select", "item_2");
await click(target.querySelector(".o_control_panel button:nth-child(2)"));
await click(
target.querySelector(".o_control_panel_main_buttons .d-none button:nth-child(2)")
);
assert.strictEqual(
target.querySelector(".o_import_data_content .alert-info").textContent,
"Everything seems valid.",
@@ -774,10 +789,12 @@ QUnit.module("Base Import Tests", (hooks) => {
// Set and trigger the change of a file for the input
const file = new File(["fake_file"], "fake_file.xlsx", { type: "text/plain" });
await editInput(target, "input[type='file']", file);
await editInput(target, ".o_control_panel_main_buttons .d-none input[type='file']", file);
// For this test, we force the display of an error message if this field is set
await editSelectMenu(target, ".o_import_data_content .o_select_menu", "Bar");
await click(target.querySelector(".o_control_panel button:nth-child(2)"));
await click(
target.querySelector(".o_control_panel_main_buttons .d-none button:nth-child(2)")
);
assert.strictEqual(
target.querySelector(".o_import_data_content .alert-danger").textContent,
"The file contains blocking errors (see below)",
@@ -789,7 +806,9 @@ QUnit.module("Base Import Tests", (hooks) => {
"options are 'prevent', choose a default boolean value or 'skip'"
);
editSelect(target, ".o_import_field_boolean select", "false");
await click(target.querySelector(".o_control_panel button:nth-child(2)"));
await click(
target.querySelector(".o_control_panel_main_buttons .d-none button:nth-child(2)")
);
assert.strictEqual(
target.querySelector(".o_import_data_content .alert-info").textContent,
"Everything seems valid.",
@@ -837,10 +856,12 @@ QUnit.module("Base Import Tests", (hooks) => {
// Set and trigger the change of a file for the input
const file = new File(["fake_file"], "fake_file.xlsx", { type: "text/plain" });
await editInput(target, "input[type='file']", file);
await editInput(target, ".o_control_panel_main_buttons .d-none input[type='file']", file);
// For this test, we force the display of an error message if this field is set
await editSelectMenu(target, ".o_import_data_content .o_select_menu", "Many2Many");
await click(target.querySelector(".o_control_panel button:nth-child(2)"));
await click(
target.querySelector(".o_control_panel_main_buttons .d-none button:nth-child(2)")
);
assert.strictEqual(
target.querySelector(".o_import_data_content .alert-danger").textContent,
"The file contains blocking errors (see below)",
@@ -852,14 +873,18 @@ QUnit.module("Base Import Tests", (hooks) => {
"options are 'prevent', choose a default boolean value or 'skip'"
);
editSelect(target, ".o_import_field_many2many select", "name_create_enabled_fields");
await click(target.querySelector(".o_control_panel button:nth-child(2)"));
await click(
target.querySelector(".o_control_panel_main_buttons .d-none button:nth-child(2)")
);
assert.strictEqual(
target.querySelector(".o_import_data_content .alert-info").textContent,
"Everything seems valid.",
"import is now successful"
);
editSelect(target, ".o_import_field_many2many select", "import_skip_records");
await click(target.querySelector(".o_control_panel button:nth-child(2)"));
await click(
target.querySelector(".o_control_panel_main_buttons .d-none button:nth-child(2)")
);
assert.strictEqual(
target.querySelector(".o_import_data_content .alert-info").textContent,
"Everything seems valid.",
@@ -914,8 +939,10 @@ QUnit.module("Base Import Tests", (hooks) => {
// Set and trigger the change of a file for the input
const file = new File(["fake_file"], "fake_file.xlsx", { type: "text/plain" });
await editInput(target, "input[type='file']", file);
await click(target.querySelector(".o_control_panel button:nth-child(1)"));
await editInput(target, ".o_control_panel_main_buttons .d-none input[type='file']", file);
await click(
target.querySelector(".o_control_panel_main_buttons .d-none button:nth-child(1)")
);
assert.strictEqual(
target.querySelector(".o_import_data_content .alert-danger").textContent,
"The file contains blocking errors (see below)",
@@ -991,7 +1018,7 @@ QUnit.module("Base Import Tests", (hooks) => {
// Set and trigger the change of a file for the input
const file = new File(["fake_file"], "fake_file.xls", { type: "text/plain" });
await editInput(target, "input[type='file']", file);
await editInput(target, ".o_control_panel_main_buttons .d-none input[type='file']", file);
assert.strictEqual(
target.querySelector("input#o_import_batch_limit").value,
"2000",
@@ -1004,7 +1031,9 @@ QUnit.module("Base Import Tests", (hooks) => {
);
await editInput(target, "input#o_import_batch_limit", 1);
await click(target.querySelector(".o_control_panel button:nth-child(2)"));
await click(
target.querySelector(".o_control_panel_main_buttons .d-none button:nth-child(2)")
);
assert.strictEqual(
target.querySelector(".o_import_data_content .alert-info").textContent,
"Everything seems valid.",
@@ -1068,9 +1097,11 @@ QUnit.module("Base Import Tests", (hooks) => {
// Set and trigger the change of a file for the input
const file = new File(["fake_file"], "fake_file.xls", { type: "text/plain" });
await editInput(target, "input[type='file']", file);
await editInput(target, ".o_control_panel_main_buttons .d-none input[type='file']", file);
await editInput(target, "input#o_import_batch_limit", 1);
await click(target.querySelector(".o_control_panel button:first-child"));
await click(
target.querySelector(".o_control_panel_main_buttons .d-none button:first-child")
);
// Since a nextTick is added to each batch, we must wait twice before the end of the second batch
await nextTick();
await nextTick();
@@ -1086,7 +1117,8 @@ QUnit.module("Base Import Tests", (hooks) => {
"a message is shown to indicate the user to resume from the third row"
);
assert.strictEqual(
target.querySelector(".o_control_panel button:first-child").textContent,
target.querySelector(".o_control_panel_main_buttons .d-none button:first-child")
.textContent,
"Resume",
"button contains the right text"
);
@@ -1157,9 +1189,11 @@ QUnit.module("Base Import Tests", (hooks) => {
// Set and trigger the change of a file for the input
const file = new File(["fake_file"], "fake_file.xls", { type: "text/plain" });
await editInput(target, "input[type='file']", file);
await editInput(target, ".o_control_panel_main_buttons .d-none input[type='file']", file);
await editInput(target, "input#o_import_batch_limit", 1);
await click(target.querySelector(".o_control_panel button:nth-child(2)"));
await click(
target.querySelector(".o_control_panel_main_buttons .d-none button:nth-child(2)")
);
// Since a nextTick is added to each batch, we must wait twice before the end of the second batch
await nextTick();
await nextTick();
@@ -1169,7 +1203,8 @@ QUnit.module("Base Import Tests", (hooks) => {
"Everything seems valid."
);
assert.strictEqual(
target.querySelector(".o_control_panel button:first-child").textContent,
target.querySelector(".o_control_panel_main_buttons .d-none button:first-child")
.textContent,
"Import",
"after testing, 'Resume' text is not shown"
);
@@ -1245,7 +1280,11 @@ QUnit.module("Base Import Tests", (hooks) => {
// Set and trigger the change of a file for the input
const file = new File(["fake_file"], "fake_file.xls", { type: "text/plain" });
await editInput(target, "input[type='file']", file);
await editInput(
target,
".o_control_panel_main_buttons .d-none input[type='file']",
file
);
assert.strictEqual(
target.querySelector(
@@ -1261,7 +1300,9 @@ QUnit.module("Base Import Tests", (hooks) => {
"The relational field should be selected by default and the name should be the full path."
);
await click(target.querySelector(".o_control_panel button:first-child"));
await click(
target.querySelector(".o_control_panel_main_buttons .d-none button:first-child")
);
}
);
@@ -1320,10 +1361,12 @@ QUnit.module("Base Import Tests", (hooks) => {
// Set and trigger the change of a file for the input
const file = new File(["fake_file"], "fake_file.xlsx", { type: "text/plain" });
await editInput(target, "input[type='file']", file);
await editInput(target, ".o_control_panel_main_buttons .d-none input[type='file']", file);
// For this test, we force the display of an error message if this field is set
await editSelectMenu(target, ".o_import_data_content .o_select_menu", "Many2Many");
await click(target.querySelector(".o_control_panel button:nth-child(2)"));
await click(
target.querySelector(".o_control_panel_main_buttons .d-none button:nth-child(2)")
);
assert.strictEqual(
target.querySelector(".o_import_data_content .alert-danger").textContent,
@@ -1387,13 +1430,17 @@ QUnit.module("Base Import Tests", (hooks) => {
// Set and trigger the change of a file for the input
const file = new File(["fake_file"], "fake_file.csv", { type: "text/plain" });
await editInput(target, "input[type='file']", file);
await editInput(target, ".o_control_panel_main_buttons .d-none input[type='file']", file);
await editInput(target, ".o_import_date_format#date_format-3", "YYYYMMDD");
// Parse the file again with the updated date format to check that
// the format is correctly formatted in the UI
await click(target.querySelector(".o_import_formatting button"));
await click(target.querySelector(".o_control_panel button:nth-child(2)"));
await click(
$(target).find(
".o_control_panel_main_buttons > div:visible > button:contains(Import)"
)[0]
);
assert.verifySteps(["execute_import"]);
assert.strictEqual(
target.querySelector(".o_import_date_format").value,
@@ -1412,7 +1459,7 @@ QUnit.module("Base Import Tests", (hooks) => {
// Set and trigger the change of a file for the input
const file = new File(["fake_file"], "fake_file.xlsx", { type: "text/plain" });
await editInput(target, "input[type='file']", file);
await editInput(target, ".o_control_panel_main_buttons .d-none input[type='file']", file);
await editSelectMenu(target, ".o_import_data_content .o_select_menu", "Bar");
assert.containsN(
target,
@@ -1444,7 +1491,7 @@ QUnit.module("Base Import Tests", (hooks) => {
// Set and trigger the change of a file for the input
const file = new File(["fake_file"], "fake_file.csv", { type: "text/plain" });
await editInput(target, "input[type='file']", file);
await editInput(target, ".o_control_panel_collapsed_create input[type='file']", file);
assert.strictEqual(
target.querySelector(".o_import_date_format").list.id,
"list-3",
@@ -5,10 +5,9 @@ import { importRecordsItem } from "@base_import/import_records/import_records";
import { registry } from "@web/core/registry";
import { click, getFixture, selectDropdownItem } from "@web/../tests/helpers/utils";
import { toggleFavoriteMenu } from "@web/../tests/search/helpers";
import { toggleActionMenu } from "@web/../tests/search/helpers";
import { makeView, setupViewRegistries } from "@web/../tests/views/helpers";
const favoriteMenuRegistry = registry.category("favoriteMenu");
import { clearRegistryWithCleanup } from "@web/../tests/helpers/mock_env";
let serverData;
let target;
@@ -27,12 +26,14 @@ QUnit.module("Base Import Tests", (hooks) => {
},
};
setupViewRegistries();
favoriteMenuRegistry.add("import-menu", importRecordsItem);
const cogMenuRegistry = registry.category("cogMenu");
clearRegistryWithCleanup(cogMenuRegistry);
cogMenuRegistry.add("import-menu", importRecordsItem);
});
QUnit.module("ImportRecords");
QUnit.test("import in favorite dropdown in list", async function (assert) {
QUnit.test("import in cog menu dropdown in list", async function (assert) {
assert.expect(3);
const actionService = {
@@ -56,14 +57,14 @@ QUnit.module("Base Import Tests", (hooks) => {
},
});
await toggleFavoriteMenu(target);
assert.containsOnce(target, ".o_favorite_menu .o-dropdown--menu");
await toggleActionMenu(target);
assert.containsOnce(target, ".o_cp_action_menus .o-dropdown--menu");
assert.containsOnce(target, ".o_import_menu");
await click(target.querySelector(".o_import_menu"));
});
QUnit.test(
'import favorite dropdown item should not be in list with create="0"',
'import should not be available in cog menu dropdown in list with create="0"',
async function (assert) {
await makeView({
type: "list",
@@ -75,14 +76,14 @@ QUnit.module("Base Import Tests", (hooks) => {
},
});
await toggleFavoriteMenu(target);
assert.containsOnce(target, ".o_favorite_menu .o-dropdown--menu");
await toggleActionMenu(target);
assert.containsOnce(target, ".o_cp_action_menus .o-dropdown--menu");
assert.containsNone(target, ".o_import_menu");
}
);
QUnit.test(
'import favorite dropdown item should not be in list with import="0"',
'import should not be available in cog menu dropdown in list with import="0"',
async function (assert) {
await makeView({
type: "list",
@@ -94,13 +95,13 @@ QUnit.module("Base Import Tests", (hooks) => {
},
});
await toggleFavoriteMenu(target);
assert.containsOnce(target, ".o_favorite_menu .o-dropdown--menu");
await toggleActionMenu(target);
assert.containsOnce(target, ".o_cp_action_menus .o-dropdown--menu");
assert.containsNone(target, ".o_import_menu");
}
);
QUnit.test("import in favorite dropdown in kanban", async function (assert) {
QUnit.test("import in cog menu dropdown in kanban", async function (assert) {
assert.expect(3);
const actionService = {
@@ -131,14 +132,14 @@ QUnit.module("Base Import Tests", (hooks) => {
},
});
await toggleFavoriteMenu(target);
assert.containsOnce(target, ".o_favorite_menu .o-dropdown--menu");
await toggleActionMenu(target);
assert.containsOnce(target, ".o_cp_action_menus .o-dropdown--menu");
assert.containsOnce(target, ".o_import_menu");
await click(target.querySelector(".o_import_menu"));
});
QUnit.test(
'import favorite dropdown item should not be in list with create="0"',
'import should not be available in cog menu dropdown in kanban with create="0"',
async function (assert) {
await makeView({
type: "kanban",
@@ -156,15 +157,13 @@ QUnit.module("Base Import Tests", (hooks) => {
actionType: "ir.actions.act_window",
},
});
await toggleFavoriteMenu(target);
assert.containsOnce(target, ".o_favorite_menu .o-dropdown--menu");
assert.containsNone(target, ".o_import_menu");
// Cog menu will not show when empty
assert.containsNone(target, ".o_cp_action_menus");
}
);
QUnit.test(
'import dropdown favorite should not be in kanban with import="0"',
'import should not be available in cog menu dropdown in kanban with import="0"',
async function (assert) {
await makeView({
type: "kanban",
@@ -182,15 +181,13 @@ QUnit.module("Base Import Tests", (hooks) => {
actionType: "ir.actions.act_window",
},
});
await toggleFavoriteMenu(target);
assert.containsOnce(target, ".o_favorite_menu .o-dropdown--menu");
assert.containsNone(target, ".o_import_menu");
// Cog menu will not show when empty
assert.containsNone(target, ".o_cp_action_menus");
}
);
QUnit.test(
"import should not be available in favorite dropdown in pivot (other than kanban or list)",
"import should not be available in cog menu dropdown in pivot (other than kanban or list)",
async function (assert) {
serverData.models.foo.fields.foobar = {
string: "Fubar",
@@ -207,15 +204,13 @@ QUnit.module("Base Import Tests", (hooks) => {
actionType: "ir.actions.act_window",
},
});
await toggleFavoriteMenu(target);
assert.containsOnce(target, ".o_favorite_menu .o-dropdown--menu");
assert.containsNone(target, ".o_import_menu");
// Cog menu will not show when empty
assert.containsNone(target, ".o_cp_action_menus");
}
);
QUnit.test(
"import should not be available in favorite dropdown in dialog view",
"import should not be available in cog menu dropdown in dialog view",
async function (assert) {
serverData.models.bar = {
fields: {
@@ -244,8 +239,8 @@ QUnit.module("Base Import Tests", (hooks) => {
await selectDropdownItem(target, "m2o", "Search More...");
const dialog = target.querySelector(".modal");
await toggleFavoriteMenu(dialog);
assert.containsOnce(dialog, ".o_favorite_menu .o-dropdown--menu");
await toggleActionMenu(dialog);
assert.containsOnce(dialog, ".o_cp_action_menus .o-dropdown--menu");
assert.containsNone(dialog, ".o_import_menu");
}
);
@@ -25,7 +25,7 @@
</span>
<a href="https://www.odoo.com/documentation/master/applications/general/users.html" title="Documentation" class="o_doc_link" target="_blank"></a>
<br/>
<button name="%(base.action_res_users)d" icon="fa-arrow-right" type="action" string="Manage Users" class="btn-link o_web_settings_access_rights"/>
<button name="%(base.action_res_users)d" icon="oi-arrow-right" type="action" string="Manage Users" class="btn-link o_web_settings_access_rights"/>
</setting>
</block>
</div>
@@ -44,10 +44,10 @@
</span>
</div>
<div class="mt8">
<button name="%(base.action_view_base_language_install)d" icon="fa-arrow-right" type="action" string="Add Languages" class="btn-link"/>
<button name="%(base.action_view_base_language_install)d" icon="oi-arrow-right" type="action" string="Add Languages" class="btn-link"/>
</div>
<div class="mt8" groups="base.group_no_one">
<button name="%(base.res_lang_act_window)d" icon="fa-arrow-right" type="action" string="Manage Languages" class="btn-link"/>
<button name="%(base.res_lang_act_window)d" icon="oi-arrow-right" type="action" string="Manage Languages" class="btn-link"/>
</div>
</setting>
</block>
@@ -61,7 +61,7 @@
<br/>
<field name="company_informations" class="text-muted" style="width: 90%;"/>
<br/>
<button name="open_company" icon="fa-arrow-right" type="object" string="Update Info" class="btn-link"/>
<button name="open_company" icon="oi-arrow-right" type="object" string="Update Info" class="btn-link"/>
</setting>
<setting id="companies_setting">
<field name='company_count' nolabel="1" class="w-auto ps-1 fw-bold"/>
@@ -73,7 +73,7 @@
</span>
<br/>
<div class="mt8">
<button name="%(base.action_res_company_form)d" icon="fa-arrow-right" type="action" string="Manage Companies" class="btn-link"/>
<button name="%(base.action_res_company_form)d" icon="oi-arrow-right" type="action" string="Manage Companies" class="btn-link"/>
</div>
</setting>
<setting id="document_layout_setting" string="Document Layout" help="Choose the layout of your documents" company_dependent="1">
@@ -82,11 +82,11 @@
<label for="external_report_layout_id" string="Layout" class="col-3 col-lg-3 o_light_label"/>
<field name="external_report_layout_id" domain="[('type','=', 'qweb')]" class="oe_inline"/>
</div>
<button name="%(web.action_base_document_layout_configurator)d" string="Configure Document Layout" type="action" class="oe_link" icon="fa-arrow-right"/>
<button name="%(web.action_base_document_layout_configurator)d" string="Configure Document Layout" type="action" class="oe_link" icon="oi-arrow-right"/>
<br groups="base.group_no_one"/>
<button name="edit_external_header" string="Edit Layout" type="object" class="oe_link" groups="base.group_no_one" icon="fa-arrow-right"/>
<button name="edit_external_header" string="Edit Layout" type="object" class="oe_link" groups="base.group_no_one" icon="oi-arrow-right"/>
<br groups="base.group_no_one"/>
<button name="%(web.action_report_externalpreview)d" string="Preview Document" type="action" class="oe_link" groups="base.group_no_one" icon="fa-arrow-right"/>
<button name="%(web.action_report_externalpreview)d" string="Preview Document" type="action" class="oe_link" groups="base.group_no_one" icon="oi-arrow-right"/>
</div>
</setting>
<field name="company_id" invisible="1"/>
@@ -114,12 +114,12 @@
<field name="user_default_rights"/>
<div class="content-group" attrs="{'invisible': [('user_default_rights','=',False)]}">
<div class="mt8">
<button type="object" name="open_default_user" string="Default Access Rights" icon="fa-arrow-right" class="btn-link"/>
<button type="object" name="open_default_user" string="Default Access Rights" icon="oi-arrow-right" class="btn-link"/>
</div>
</div>
</setting>
<setting string="API Keys" help="API Keys allow your users to access Odoo with external tools when multi-factor authentication is enabled." groups="base.group_system">
<button type="action" name="%(base.action_apikeys_admin)d" string="Manage API Keys" icon="fa-arrow-right" class="btn-link"/>
<button type="action" name="%(base.action_apikeys_admin)d" string="Manage API Keys" icon="oi-arrow-right" class="btn-link"/>
</setting>
<setting string="Import &amp; Export" help="Allow users to import data from CSV/XLS/XLSX/ODS files" documentation="/applications/general/export_import_data.html" groups="base.group_no_one" id="allow_import">
<field name="module_base_import" />
Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

+39 -22
View File
@@ -1,23 +1,40 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="70" height="70" viewBox="0 0 70 70">
<defs>
<path id="icon-a" d="M4,5.35309892e-14 C36.4160122,9.87060235e-15 58.0836068,-3.97961823e-14 65,5.07020818e-14 C69,6.733808e-14 70,1 70,5 C70,43.0488877 70,62.4235458 70,65 C70,69 69,70 65,70 C61,70 9,70 4,70 C1,70 7.10542736e-15,69 7.10542736e-15,65 C7.25721566e-15,62.4676575 3.83358709e-14,41.8005206 3.60818146e-14,5 C-1.13686838e-13,1 1,5.75716207e-14 4,5.35309892e-14 Z"/>
<linearGradient id="icon-c" x1="100%" x2="0%" y1="0%" y2="100%">
<stop offset="0%" stop-color="#CD7690"/>
<stop offset="100%" stop-color="#CA5377"/>
</linearGradient>
<path id="icon-d" d="M18.0450069,57.225 C16.6239398,57.2249541 15.319401,56.4292666 14.6550625,55.1573449 C12.9601701,51.9125391 12,48.2137078 12,44.2875 C12,31.4261695 22.2974514,21 35,21 C47.7025486,21 58,31.4261695 58,44.2875 C58,48.2137078 57.0398299,51.9125391 55.3449375,55.1573449 C54.6806259,56.4292924 53.3760701,57.2249902 51.9549931,57.225 L18.0450069,57.225 Z M52.8888889,41.7 C51.4775035,41.7 50.3333333,42.8584723 50.3333333,44.2875 C50.3333333,45.7165277 51.4775035,46.875 52.8888889,46.875 C54.3002743,46.875 55.4444444,45.7165277 55.4444444,44.2875 C55.4444444,42.8584723 54.3002743,41.7 52.8888889,41.7 Z M35,28.7625 C36.4113854,28.7625 37.5555556,27.6040277 37.5555556,26.175 C37.5555556,24.7459723 36.4113854,23.5875 35,23.5875 C33.5886146,23.5875 32.4444444,24.7459723 32.4444444,26.175 C32.4444444,27.6040277 33.5886146,28.7625 35,28.7625 Z M17.1111111,41.7 C15.6997257,41.7 14.5555556,42.8584723 14.5555556,44.2875 C14.5555556,45.7165277 15.6997257,46.875 17.1111111,46.875 C18.5224965,46.875 19.6666667,45.7165277 19.6666667,44.2875 C19.6666667,42.8584723 18.5224965,41.7 17.1111111,41.7 Z M22.3506389,28.8925219 C20.9392535,28.8925219 19.7950833,30.0509941 19.7950833,31.4800219 C19.7950833,32.9090496 20.9392535,34.0675219 22.3506389,34.0675219 C23.7620243,34.0675219 24.9061944,32.9090496 24.9061944,31.4800219 C24.9061944,30.0509941 23.7620243,28.8925219 22.3506389,28.8925219 Z M47.6493611,28.8925219 C46.2379757,28.8925219 45.0938056,30.0509941 45.0938056,31.4800219 C45.0938056,32.9090496 46.2379757,34.0675219 47.6493611,34.0675219 C49.0607465,34.0675219 50.2049167,32.9090496 50.2049167,31.4800219 C50.2049167,30.0509941 49.0607465,28.8925219 47.6493611,28.8925219 Z M40.6952153,31.4423414 C39.686809,31.1156695 38.6082049,31.6784508 38.285566,32.6992195 L34.6181042,44.3034293 C31.9739028,44.501373 29.8888889,46.7346281 29.8888889,49.4625 C29.8888889,52.3205555 32.1772292,54.6375 35,54.6375 C37.8227708,54.6375 40.1111111,52.3205555 40.1111111,49.4625 C40.1111111,47.8636676 39.3946771,46.434559 38.269434,45.4852699 L41.9365764,33.8821113 C42.2591354,32.8612617 41.7033819,31.7690133 40.6952153,31.4423414 Z"/>
</defs>
<g fill="none" fill-rule="evenodd">
<mask id="icon-b" fill="#fff">
<use xlink:href="#icon-a"/>
</mask>
<g mask="url(#icon-b)">
<rect width="70" height="70" fill="url(#icon-c)"/>
<path fill="#FFF" fill-opacity=".383" d="M4,1.8 L65,1.8 C67.6666667,1.8 69.3333333,1.13333333 70,-0.2 C70,2.46666667 70,3.46666667 70,2.8 L1.10547097e-14,2.8 C-1.65952376e-14,3.46666667 -2.9161925e-14,2.46666667 -2.66453526e-14,-0.2 C0.666666667,1.13333333 2,1.8 4,1.8 Z" transform="matrix(1 0 0 -1 0 2.8)"/>
<path fill="#393939" d="M4,50 C2,50 -7.10542736e-15,49.851312 0,45.8367347 L0,26.3942795 L16.3536575,8.86200565 C29.4512192,-0.488174988 39.6666667,-2.3877551 47,3.16326531 C54.3333333,8.71428571 58,14.9591837 58,21.8979592 C55.8677728,29.7827578 54.7719047,33.7755585 54.7123959,33.8763613 C54.6528871,33.9771642 49.9857922,39.3517104 40.7111111,50 L4,50 Z" opacity=".324" transform="translate(0 20)"/>
<path fill="#000" fill-opacity=".383" d="M4,4 L65,4 C67.6666667,4 69.3333333,3 70,1 C70,3.66666667 70,5 70,5 L1.77635684e-15,5 C1.77635684e-15,5 1.77635684e-15,3.66666667 1.77635684e-15,1 C0.666666667,3 2,4 4,4 Z" transform="translate(0 65)"/>
<use fill="#000" fill-rule="nonzero" opacity=".3" xlink:href="#icon-d"/>
<path fill="#FFF" fill-rule="nonzero" d="M18.0450069,55.225 C16.6239398,55.2249541 15.319401,54.4292666 14.6550625,53.1573449 C12.9601701,49.9125391 12,46.2137078 12,42.2875 C12,29.4261695 22.2974514,19 35,19 C47.7025486,19 58,29.4261695 58,42.2875 C58,46.2137078 57.0398299,49.9125391 55.3449375,53.1573449 C54.6806259,54.4292924 53.3760701,55.2249902 51.9549931,55.225 L18.0450069,55.225 Z M52.8888889,39.7 C51.4775035,39.7 50.3333333,40.8584723 50.3333333,42.2875 C50.3333333,43.7165277 51.4775035,44.875 52.8888889,44.875 C54.3002743,44.875 55.4444444,43.7165277 55.4444444,42.2875 C55.4444444,40.8584723 54.3002743,39.7 52.8888889,39.7 Z M35,26.7625 C36.4113854,26.7625 37.5555556,25.6040277 37.5555556,24.175 C37.5555556,22.7459723 36.4113854,21.5875 35,21.5875 C33.5886146,21.5875 32.4444444,22.7459723 32.4444444,24.175 C32.4444444,25.6040277 33.5886146,26.7625 35,26.7625 Z M17.1111111,39.7 C15.6997257,39.7 14.5555556,40.8584723 14.5555556,42.2875 C14.5555556,43.7165277 15.6997257,44.875 17.1111111,44.875 C18.5224965,44.875 19.6666667,43.7165277 19.6666667,42.2875 C19.6666667,40.8584723 18.5224965,39.7 17.1111111,39.7 Z M22.3506389,26.8925219 C20.9392535,26.8925219 19.7950833,28.0509941 19.7950833,29.4800219 C19.7950833,30.9090496 20.9392535,32.0675219 22.3506389,32.0675219 C23.7620243,32.0675219 24.9061944,30.9090496 24.9061944,29.4800219 C24.9061944,28.0509941 23.7620243,26.8925219 22.3506389,26.8925219 Z M47.6493611,26.8925219 C46.2379757,26.8925219 45.0938056,28.0509941 45.0938056,29.4800219 C45.0938056,30.9090496 46.2379757,32.0675219 47.6493611,32.0675219 C49.0607465,32.0675219 50.2049167,30.9090496 50.2049167,29.4800219 C50.2049167,28.0509941 49.0607465,26.8925219 47.6493611,26.8925219 Z M40.6952153,29.4423414 C39.686809,29.1156695 38.6082049,29.6784508 38.285566,30.6992195 L34.6181042,42.3034293 C31.9739028,42.501373 29.8888889,44.7346281 29.8888889,47.4625 C29.8888889,50.3205555 32.1772292,52.6375 35,52.6375 C37.8227708,52.6375 40.1111111,50.3205555 40.1111111,47.4625 C40.1111111,45.8636676 39.3946771,44.434559 38.269434,43.4852699 L41.9365764,31.8821113 C42.2591354,30.8612617 41.7033819,29.7690133 40.6952153,29.4423414 Z"/>
</g>
</g>
<svg width="50" height="50" viewBox="0 0 50 50" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4 8C4 5.79086 5.79086 4 8 4H25V21C25 23.2091 23.2091 25 21 25H4V8Z" fill="var(--o-icons-magenta-pure, #FF689E)"/>
<path d="M4 8C4 5.79086 5.79086 4 8 4H25V21C25 23.2091 23.2091 25 21 25H4V8Z" fill="url(#white_gradient_1)" fill-opacity="0.4"/>
<path d="M4 35C4 32.7909 5.79086 31 8 31H19V42C19 44.2091 17.2091 46 15 46H4V35Z" fill="var(--o-icons-magenta-magenta, #FF2A62)"/>
<path d="M4 35C4 32.7909 5.79086 31 8 31H19V42C19 44.2091 17.2091 46 15 46H4V35Z" fill="url(#white_gradient_2)" fill-opacity="0.3"/>
<path d="M25 46H29C31.2091 46 33 44.2091 33 42V31H29C26.7909 31 25 32.7909 25 35V46Z" fill="var(--o-icons-yellow-pure, #FBB130)"/>
<path d="M25 46H29C31.2091 46 33 44.2091 33 42V31H29C26.7909 31 25 32.7909 25 35V46Z" fill="url(#white_gradient_3)" fill-opacity="0.2"/>
<path d="M31 17L31 21C31 23.2091 32.7909 25 35 25L46 25V21C46 18.7909 44.2091 17 42 17L31 17Z" fill="var(--o-icons-cyan-cyan, #03AAE9)"/>
<path d="M31 17L31 21C31 23.2091 32.7909 25 35 25L46 25V21C46 18.7909 44.2091 17 42 17L31 17Z" fill="url(#white_gradient_4)" fill-opacity="0.3"/>
<path d="M31 4L31 8C31 10.2091 32.7909 12 35 12L46 12V8C46 5.79086 44.2091 4 42 4L31 4Z" fill="var(--o-icons-cyan-pure, #1BD4F9)"/>
<path d="M31 4L31 8C31 10.2091 32.7909 12 35 12L46 12V8C46 5.79086 44.2091 4 42 4L31 4Z" fill="url(#white_gradient_5)" fill-opacity="0.3"/>
<path d="M38 46H42C44.2091 46 46 44.2091 46 42V31H42C39.7909 31 38 32.7909 38 35V46Z" fill="var(--o-icons-yellow-yellow, #ED7609)"/>
<path d="M38 46H42C44.2091 46 46 44.2091 46 42V31H42C39.7909 31 38 32.7909 38 35V46Z" fill="url(#white_gradient_6)" fill-opacity="0.3"/>
<defs>
<linearGradient id="white_gradient_1" x1="4" y1="4" x2="28.7059" y2="10.1765" gradientUnits="userSpaceOnUse">
<stop stop-color="white"/>
<stop offset="1" stop-color="white" stop-opacity="0"/>
</linearGradient>
<linearGradient id="white_gradient_2" x1="4" y1="31" x2="21.6471" y2="35.4118" gradientUnits="userSpaceOnUse">
<stop stop-color="white"/>
<stop offset="1" stop-color="white" stop-opacity="0"/>
</linearGradient>
<linearGradient id="white_gradient_3" x1="25" y1="31" x2="34.8253" y2="32.31" gradientUnits="userSpaceOnUse">
<stop stop-color="white"/>
<stop offset="1" stop-color="white" stop-opacity="0"/>
</linearGradient>
<linearGradient id="white_gradient_4" x1="31" y1="17" x2="46.3723" y2="24.2058" gradientUnits="userSpaceOnUse">
<stop stop-color="white"/>
<stop offset="1" stop-color="white" stop-opacity="0"/>
</linearGradient>
<linearGradient id="white_gradient_5" x1="31" y1="4" x2="46.3723" y2="11.2058" gradientUnits="userSpaceOnUse">
<stop stop-color="white"/>
<stop offset="1" stop-color="white" stop-opacity="0"/>
</linearGradient>
<linearGradient id="white_gradient_6" x1="38" y1="31" x2="47.8253" y2="32.31" gradientUnits="userSpaceOnUse">
<stop stop-color="white"/>
<stop offset="1" stop-color="white" stop-opacity="0"/>
</linearGradient>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 6.3 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

@@ -6,7 +6,7 @@ import { useAutofocus, useService } from "@web/core/utils/hooks";
import { sprintf } from "@web/core/utils/strings";
const { Component, useState } = owl;
const favoriteMenuRegistry = registry.category("favoriteMenu");
const cogMenuRegistry = registry.category("cogMenu");
/**
* 'Add to board' menu
@@ -99,4 +99,4 @@ export const addToBoardItem = {
isDisplayed: ({ config }) => config.actionType === "ir.actions.act_window" && config.actionId,
};
favoriteMenuRegistry.add("add-to-board", addToBoardItem, { sequence: 10 });
cogMenuRegistry.add("add-to-board", addToBoardItem, { sequence: 10 });
@@ -12,10 +12,7 @@ import {
applyGroup,
removeFacet,
toggleAddCustomGroup,
toggleComparisonMenu,
toggleFavoriteMenu,
toggleFilterMenu,
toggleGroupByMenu,
toggleSearchBarMenu,
toggleMenuItem,
toggleMenuItemOption,
} from "@web/../tests/search/helpers";
@@ -142,13 +139,11 @@ QUnit.module("Board", (hooks) => {
await click(document.querySelector(".o_column_sortable"));
// Group It
await toggleGroupByMenu(target);
await toggleSearchBarMenu(target);
await toggleAddCustomGroup(target);
await applyGroup(target);
// add this action to dashboard
await toggleFavoriteMenu(target);
await testUtils.dom.triggerEvent($(".o_add_to_board button.dropdown-toggle"), "mouseenter");
await testUtils.fields.editInput($(".o_add_to_board input"), "a name");
await testUtils.dom.click($(".o_add_to_board .dropdown-menu button"));
@@ -202,11 +197,10 @@ QUnit.module("Board", (hooks) => {
var filter_count = 0;
// Add a first filter
await toggleFilterMenu(target);
await toggleSearchBarMenu(target);
await toggleMenuItem(target, "Filter on a");
// Add it to dashboard
await toggleFavoriteMenu(target);
await testUtils.dom.triggerEvent($(".o_add_to_board button.dropdown-toggle"), "mouseenter");
await testUtils.dom.click($(".o_add_to_board .dropdown-menu button"));
@@ -214,11 +208,10 @@ QUnit.module("Board", (hooks) => {
await removeFacet(target);
// Add the second filter
await toggleFilterMenu(target);
await toggleSearchBarMenu(target);
await toggleMenuItem(target, "Filter on b");
// Add it to dashboard
await toggleFavoriteMenu(target);
await testUtils.dom.triggerEvent(
target.querySelector(".o_add_to_board button.dropdown-toggle"),
"mouseenter"
@@ -263,11 +256,10 @@ QUnit.module("Board", (hooks) => {
});
// Add a filter
await toggleFilterMenu(target);
await toggleSearchBarMenu(target);
await toggleMenuItem(target, "Filter");
// Add it to dashboard
await toggleFavoriteMenu(target);
await testUtils.dom.triggerEvent(
target.querySelector(".o_add_to_board button.dropdown-toggle"),
"mouseenter"
@@ -292,7 +284,7 @@ QUnit.module("Board", (hooks) => {
type: "ir.actions.act_window",
views: [[false, "pivot"]],
});
await toggleFavoriteMenu(target);
await toggleSearchBarMenu(target);
assert.containsNone(target, ".o_add_to_board");
// Sanity check
@@ -302,7 +294,7 @@ QUnit.module("Board", (hooks) => {
type: "ir.actions.act_window",
views: [[false, "pivot"]],
});
await toggleFavoriteMenu(target);
await toggleSearchBarMenu(target);
assert.containsOnce(target, ".o_add_to_board");
});
@@ -357,16 +349,14 @@ QUnit.module("Board", (hooks) => {
});
// filter on July 2020
await toggleFilterMenu(target);
await toggleSearchBarMenu(target);
await toggleMenuItem(target, "Date");
await toggleMenuItemOption(target, "Date", "July");
// compare July 2020 to June 2020
await toggleComparisonMenu(target);
await toggleMenuItem(target, 0);
await toggleMenuItem(target.querySelector(".o_comparison_menu"), 0);
// add the view to the dashboard
await toggleFavoriteMenu(target);
await mouseEnter(target.querySelector(".o_add_to_board .dropdown-toggle"));
const input = target.querySelector(".o_add_to_board .dropdown-menu input");
@@ -403,7 +393,7 @@ QUnit.module("Board", (hooks) => {
views: [[false, "pivot"]],
});
await toggleFavoriteMenu(target);
await toggleSearchBarMenu(target);
await mouseEnter(target.querySelector(".o_add_to_board .dropdown-toggle"));
const input = target.querySelector(".o_add_to_board .dropdown-menu input");
await testUtils.fields.editInput(input, "Pipeline");
@@ -445,7 +435,7 @@ QUnit.module("Board", (hooks) => {
context: { search_default_filter: 1 },
});
await toggleFavoriteMenu(target);
await toggleSearchBarMenu(target);
await mouseEnter(target.querySelector(".o_add_to_board .dropdown-toggle"));
const input = target.querySelector(".o_add_to_board .dropdown-menu input");
await testUtils.fields.editInput(input, "Pipeline");
+4 -1
View File
@@ -131,7 +131,10 @@ QUnit.module("Board", (hooks) => {
return Promise.resolve(true);
}
if (args.method === "get_views" && args.model == "partner") {
assert.deepEqual(args.kwargs.views.find((v) => v[1] === 'list'), [4, "list"]);
assert.deepEqual(
args.kwargs.views.find((v) => v[1] === "list"),
[4, "list"]
);
}
},
});
Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

+1 -23
View File
@@ -1,23 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="70" height="70" viewBox="0 0 70 70">
<defs>
<path id="icon-a" d="M4,5.35309892e-14 C36.4160122,9.87060235e-15 58.0836068,-3.97961823e-14 65,5.07020818e-14 C69,6.733808e-14 70,1 70,5 C70,43.0488877 70,62.4235458 70,65 C70,69 69,70 65,70 C61,70 9,70 4,70 C1,70 7.10542736e-15,69 7.10542736e-15,65 C7.25721566e-15,62.4676575 3.83358709e-14,41.8005206 3.60818146e-14,5 C-1.13686838e-13,1 1,5.75716207e-14 4,5.35309892e-14 Z"/>
<linearGradient id="icon-c" x1="100%" x2="0%" y1="0%" y2="100%">
<stop offset="0%" stop-color="#CDC484"/>
<stop offset="100%" stop-color="#B5AA59"/>
</linearGradient>
<path id="icon-d" d="M28.3839286,37.7083333 L24.9017857,37.7083333 C24.3272321,37.7083333 23.8571429,37.2513021 23.8571429,36.6927083 L23.8571429,33.3072917 C23.8571429,32.7486979 24.3272321,32.2916667 24.9017857,32.2916667 L28.3839286,32.2916667 C28.9584821,32.2916667 29.4285714,32.7486979 29.4285714,33.3072917 L29.4285714,36.6927083 C29.4285714,37.2513021 28.9584821,37.7083333 28.3839286,37.7083333 Z M37.7857143,36.6927083 L37.7857143,33.3072917 C37.7857143,32.7486979 37.315625,32.2916667 36.7410714,32.2916667 L33.2589286,32.2916667 C32.684375,32.2916667 32.2142857,32.7486979 32.2142857,33.3072917 L32.2142857,36.6927083 C32.2142857,37.2513021 32.684375,37.7083333 33.2589286,37.7083333 L36.7410714,37.7083333 C37.315625,37.7083333 37.7857143,37.2513021 37.7857143,36.6927083 Z M46.1428571,36.6927083 L46.1428571,33.3072917 C46.1428571,32.7486979 45.6727679,32.2916667 45.0982143,32.2916667 L41.6160714,32.2916667 C41.0415179,32.2916667 40.5714286,32.7486979 40.5714286,33.3072917 L40.5714286,36.6927083 C40.5714286,37.2513021 41.0415179,37.7083333 41.6160714,37.7083333 L45.0982143,37.7083333 C45.6727679,37.7083333 46.1428571,37.2513021 46.1428571,36.6927083 Z M37.7857143,44.8177083 L37.7857143,41.4322917 C37.7857143,40.8736979 37.315625,40.4166667 36.7410714,40.4166667 L33.2589286,40.4166667 C32.684375,40.4166667 32.2142857,40.8736979 32.2142857,41.4322917 L32.2142857,44.8177083 C32.2142857,45.3763021 32.684375,45.8333333 33.2589286,45.8333333 L36.7410714,45.8333333 C37.315625,45.8333333 37.7857143,45.3763021 37.7857143,44.8177083 Z M29.4285714,44.8177083 L29.4285714,41.4322917 C29.4285714,40.8736979 28.9584821,40.4166667 28.3839286,40.4166667 L24.9017857,40.4166667 C24.3272321,40.4166667 23.8571429,40.8736979 23.8571429,41.4322917 L23.8571429,44.8177083 C23.8571429,45.3763021 24.3272321,45.8333333 24.9017857,45.8333333 L28.3839286,45.8333333 C28.9584821,45.8333333 29.4285714,45.3763021 29.4285714,44.8177083 Z M46.1428571,44.8177083 L46.1428571,41.4322917 C46.1428571,40.8736979 45.6727679,40.4166667 45.0982143,40.4166667 L41.6160714,40.4166667 C41.0415179,40.4166667 40.5714286,40.8736979 40.5714286,41.4322917 L40.5714286,44.8177083 C40.5714286,45.3763021 41.0415179,45.8333333 41.6160714,45.8333333 L45.0982143,45.8333333 C45.6727679,45.8333333 46.1428571,45.3763021 46.1428571,44.8177083 Z M54.5,22.8125 L54.5,52.6041667 C54.5,54.8470052 52.6283482,56.6666667 50.3214286,56.6666667 L19.6785714,56.6666667 C17.3716518,56.6666667 15.5,54.8470052 15.5,52.6041667 L15.5,22.8125 C15.5,20.5696615 17.3716518,18.75 19.6785714,18.75 L23.8571429,18.75 L23.8571429,14.3489583 C23.8571429,13.7903646 24.3272321,13.3333333 24.9017857,13.3333333 L28.3839286,13.3333333 C28.9584821,13.3333333 29.4285714,13.7903646 29.4285714,14.3489583 L29.4285714,18.75 L40.5714286,18.75 L40.5714286,14.3489583 C40.5714286,13.7903646 41.0415179,13.3333333 41.6160714,13.3333333 L45.0982143,13.3333333 C45.6727679,13.3333333 46.1428571,13.7903646 46.1428571,14.3489583 L46.1428571,18.75 L50.3214286,18.75 C52.6283482,18.75 54.5,20.5696615 54.5,22.8125 Z M50.3214286,52.0963542 L50.3214286,26.875 L19.6785714,26.875 L19.6785714,52.0963542 C19.6785714,52.375651 19.9136161,52.6041667 20.2008929,52.6041667 L49.7991071,52.6041667 C50.0863839,52.6041667 50.3214286,52.375651 50.3214286,52.0963542 Z"/>
</defs>
<g fill="none" fill-rule="evenodd">
<mask id="icon-b" fill="#fff">
<use xlink:href="#icon-a"/>
</mask>
<g mask="url(#icon-b)">
<rect width="70" height="70" fill="url(#icon-c)"/>
<path fill="#FFF" fill-opacity=".383" d="M4,1.8 L65,1.8 C67.6666667,1.8 69.3333333,1.13333333 70,-0.2 C70,2.46666667 70,3.46666667 70,2.8 L1.10547097e-14,2.8 C-1.65952376e-14,3.46666667 -2.9161925e-14,2.46666667 -2.66453526e-14,-0.2 C0.666666667,1.13333333 2,1.8 4,1.8 Z" transform="matrix(1 0 0 -1 0 2.8)"/>
<path fill="#393939" d="M43.4796282,58 L3.97692274,58 C1.98846137,58 -7.06443391e-15,57.8520408 0,53.8571429 L2.26109583e-16,28.7421381 L18.1939643,6.70980496 L20,6 L24,0 L29.235775,0.958543565 L30.1559259,9.58543565 L42.1178875,8.51357709e-15 L45.7984911,0 L45.7984911,8 L54,8 L53.7495748,40.7451155 L43.4796282,58 Z" opacity=".324" transform="translate(0 12)"/>
<path fill="#000" fill-opacity=".383" d="M4,4 L65,4 C67.6666667,4 69.3333333,3 70,1 C70,3.66666667 70,5 70,5 L1.77635684e-15,5 C1.77635684e-15,5 1.77635684e-15,3.66666667 1.77635684e-15,1 C0.666666667,3 2,4 4,4 Z" transform="translate(0 65)"/>
<use fill="#000" fill-rule="nonzero" opacity=".35" xlink:href="#icon-d"/>
<path fill="#FFF" fill-rule="nonzero" d="M28.3839286,35.7083333 L24.9017857,35.7083333 C24.3272321,35.7083333 23.8571429,35.2513021 23.8571429,34.6927083 L23.8571429,31.3072917 C23.8571429,30.7486979 24.3272321,30.2916667 24.9017857,30.2916667 L28.3839286,30.2916667 C28.9584821,30.2916667 29.4285714,30.7486979 29.4285714,31.3072917 L29.4285714,34.6927083 C29.4285714,35.2513021 28.9584821,35.7083333 28.3839286,35.7083333 Z M37.7857143,34.6927083 L37.7857143,31.3072917 C37.7857143,30.7486979 37.315625,30.2916667 36.7410714,30.2916667 L33.2589286,30.2916667 C32.684375,30.2916667 32.2142857,30.7486979 32.2142857,31.3072917 L32.2142857,34.6927083 C32.2142857,35.2513021 32.684375,35.7083333 33.2589286,35.7083333 L36.7410714,35.7083333 C37.315625,35.7083333 37.7857143,35.2513021 37.7857143,34.6927083 Z M46.1428571,34.6927083 L46.1428571,31.3072917 C46.1428571,30.7486979 45.6727679,30.2916667 45.0982143,30.2916667 L41.6160714,30.2916667 C41.0415179,30.2916667 40.5714286,30.7486979 40.5714286,31.3072917 L40.5714286,34.6927083 C40.5714286,35.2513021 41.0415179,35.7083333 41.6160714,35.7083333 L45.0982143,35.7083333 C45.6727679,35.7083333 46.1428571,35.2513021 46.1428571,34.6927083 Z M37.7857143,42.8177083 L37.7857143,39.4322917 C37.7857143,38.8736979 37.315625,38.4166667 36.7410714,38.4166667 L33.2589286,38.4166667 C32.684375,38.4166667 32.2142857,38.8736979 32.2142857,39.4322917 L32.2142857,42.8177083 C32.2142857,43.3763021 32.684375,43.8333333 33.2589286,43.8333333 L36.7410714,43.8333333 C37.315625,43.8333333 37.7857143,43.3763021 37.7857143,42.8177083 Z M29.4285714,42.8177083 L29.4285714,39.4322917 C29.4285714,38.8736979 28.9584821,38.4166667 28.3839286,38.4166667 L24.9017857,38.4166667 C24.3272321,38.4166667 23.8571429,38.8736979 23.8571429,39.4322917 L23.8571429,42.8177083 C23.8571429,43.3763021 24.3272321,43.8333333 24.9017857,43.8333333 L28.3839286,43.8333333 C28.9584821,43.8333333 29.4285714,43.3763021 29.4285714,42.8177083 Z M46.1428571,42.8177083 L46.1428571,39.4322917 C46.1428571,38.8736979 45.6727679,38.4166667 45.0982143,38.4166667 L41.6160714,38.4166667 C41.0415179,38.4166667 40.5714286,38.8736979 40.5714286,39.4322917 L40.5714286,42.8177083 C40.5714286,43.3763021 41.0415179,43.8333333 41.6160714,43.8333333 L45.0982143,43.8333333 C45.6727679,43.8333333 46.1428571,43.3763021 46.1428571,42.8177083 Z M54.5,20.8125 L54.5,50.6041667 C54.5,52.8470052 52.6283482,54.6666667 50.3214286,54.6666667 L19.6785714,54.6666667 C17.3716518,54.6666667 15.5,52.8470052 15.5,50.6041667 L15.5,20.8125 C15.5,18.5696615 17.3716518,16.75 19.6785714,16.75 L23.8571429,16.75 L23.8571429,12.3489583 C23.8571429,11.7903646 24.3272321,11.3333333 24.9017857,11.3333333 L28.3839286,11.3333333 C28.9584821,11.3333333 29.4285714,11.7903646 29.4285714,12.3489583 L29.4285714,16.75 L40.5714286,16.75 L40.5714286,12.3489583 C40.5714286,11.7903646 41.0415179,11.3333333 41.6160714,11.3333333 L45.0982143,11.3333333 C45.6727679,11.3333333 46.1428571,11.7903646 46.1428571,12.3489583 L46.1428571,16.75 L50.3214286,16.75 C52.6283482,16.75 54.5,18.5696615 54.5,20.8125 Z M50.3214286,50.0963542 L50.3214286,24.875 L19.6785714,24.875 L19.6785714,50.0963542 C19.6785714,50.375651 19.9136161,50.6041667 20.2008929,50.6041667 L49.7991071,50.6041667 C50.0863839,50.6041667 50.3214286,50.375651 50.3214286,50.0963542 Z"/>
</g>
</g>
</svg>
<svg width="50" height="50" xmlns="http://www.w3.org/2000/svg"><path d="M16 38c3 0 6-1 6-5s-2.306-6-6-6a3 3 0 0 1 3-3h4c3.593 1.3 6 4 6 9 0 8-6 11-13 11S4 41 4 33h7c0 3 2 5 5 5Z" fill="var(--o-icons-purple-pure, #93407D)"/><path d="M16 38c3 0 6-1 6-5s-2.306-6-6-6a3 3 0 0 1 3-3h4c3.593 1.3 6 4 6 9 0 8-6 11-13 11S4 41 4 33h7c0 3 2 5 5 5Z" fill="url(#o_icon_calendar__a)" fill-opacity=".2"/><path d="M23 24h-5a2 2 0 0 1-2-2c4 0 5-3 5-5 0-3-1.964-5-5-5-3 0-5 2-5 4H4C4 9.616 10 6 16 6s12 4 12 10-5 8-5 8Z" fill="var(--o-icons-yellow-pure, #FBB130)"/><path d="M23 24h-5a2 2 0 0 1-2-2c4 0 5-3 5-5 0-3-1.964-5-5-5-3 0-5 2-5 4H4C4 9.616 10 6 16 6s12 4 12 10-5 8-5 8Z" fill="url(#o_icon_calendar__b)" fill-opacity=".2"/><path d="m23 24-7 3h-4v-2c0-2 1-3 4-3l7 2Z" fill="var(--o-icons-red-yellow, #F85318)"/><path d="m23 24-7 3h-4v-2c0-2 1-3 4-3l7 2Z" fill="url(#o_icon_calendar__c)" fill-opacity=".2"/><path d="M46 11v33h-3c-2 0-4-2-4-4V14l7-3Z" fill="var(--o-icons-yellow-pure, #FBB130)"/><path d="M46 11v33h-3c-2 0-4-2-4-4V14l7-3Z" fill="url(#o_icon_calendar__d)" fill-opacity=".2"/><path d="M39 7.333 32 12l-1 6 8-4V7.333Z" fill="var(--o-icons-purple-pure, #93407D)"/><path d="M39 7.333 32 12l-1 6 8-4V7.333Z" fill="url(#o_icon_calendar__e)" fill-opacity=".2"/><path d="M39 7.333 41 6h1c2 0 4 2 4 4v1l-7 3V7.333Z" fill="var(--o-icons-red-yellow, #F85318)"/><path d="M39 7.333 41 6h1c2 0 4 2 4 4v1l-7 3V7.333Z" fill="url(#o_icon_calendar__f)" fill-opacity=".2"/><defs><linearGradient id="o_icon_calendar__a" x1="4" y1="24" x2="32.47" y2="32.897" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="o_icon_calendar__b" x1="4" y1="6" x2="31" y2="15" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="o_icon_calendar__c" x1="12" y1="22" x2="22.557" y2="27.806" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="o_icon_calendar__d" x1="39" y1="11" x2="47.725" y2="11.463" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="o_icon_calendar__e" x1="31" y1="7.333" x2="40.66" y2="9.145" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="o_icon_calendar__f" x1="39" y1="6" x2="47.35" y2="7.827" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient></defs></svg>

Before

Width:  |  Height:  |  Size: 8.5 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

@@ -20,13 +20,10 @@
</div>
</div>
</DatePicker>
</t>
<t t-name="calendar.AttendeeCalendarController.controlButtons" t-inherit="web.CalendarController.controlButtons" owl="1">
<xpath expr="//span[hasclass('o_calendar_navigation_buttons')]" position="before">
<span class="o_calendar_create_buttons">
<xpath expr="//Layout" position="inside">
<t t-set-slot="control-panel-create-button">
<button class="btn btn-primary o-calendar-button-new me-1" t-on-click="onClickAddButton">New</button>
</span>
</t>
</xpath>
</t>
</templates>
@@ -11,7 +11,6 @@ export const attendeeCalendarView = {
Controller: AttendeeCalendarController,
Model: AttendeeCalendarModel,
Renderer: AttendeeCalendarRenderer,
buttonTemplate: "calendar.AttendeeCalendarController.controlButtons",
};
registry.category("views").add("attendee_calendar", attendeeCalendarView);
@@ -17,7 +17,7 @@
<br/><t t-out="declinedCount"/> declined
<br/><t t-out="uncertainCount"/> uncertain
</div>
<i role="button" t-on-click="onExpanderClick" t-att-class="state.expanded ? 'fa fa-chevron-up' : 'fa fa-chevron-down'"></i>
<i role="button" t-on-click="onExpanderClick" t-att-class="state.expanded ? 'oi oi-chevron-up' : 'oi oi-chevron-down'"></i>
</div>
</t>
</xpath>
@@ -91,11 +91,11 @@ QUnit.module(
);
assert.containsN(
target,
'.o_field_widget[name="partner_ids"] .badge',
'.o_field_widget[name="partner_ids"] .o_tag',
2,
"there should be 2 tags"
);
const badges = target.querySelectorAll('.o_field_widget[name="partner_ids"] .badge');
const badges = target.querySelectorAll('.o_field_widget[name="partner_ids"] .o_tag');
assert.strictEqual(
badges[0].textContent.trim(),
"Jesus",
+3 -3
View File
@@ -109,7 +109,7 @@
<div class="oe_button_box" name="button_box">
<button string="Document" icon="fa-bars" type="object" name="action_open_calendar_event" attrs="{'invisible': ['|', ('res_model', '=', False), ('res_id', '=', False)]}"/>
</div>
<widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<widget name="web_ribbon" title="Archived" bg_color="text-bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<field name="res_model" invisible="1" />
<field name="res_id" invisible="1" />
<field name="attendee_status" invisible="1"/>
@@ -160,7 +160,7 @@
<span class="fa fa-plus"></span><span> Add Odoo meeting</span>
</button>
<button name="action_join_video_call" class="btn btn-link" help="Join Video Call" type="object" attrs="{'invisible': [('videocall_location', '=', False)]}">
<span class="fa fa-arrow-right"></span><span> Join video call</span>
<span class="oi oi-arrow-right"></span><span> Join video call</span>
</button>
</div>
<field name="videocall_source" invisible="1"/>
@@ -336,7 +336,7 @@
<span class="fa fa-plus"></span><span> Add Odoo meeting</span>
</button>
<button name="action_join_video_call" class="btn btn-link" help="Join Video Call" type="object" attrs="{'invisible': [('videocall_location', '=', False)]}">
<span class="fa fa-arrow-right"></span><span> Join video call</span>
<span class="oi oi-arrow-right"></span><span> Join video call</span>
</button>
</div>
<field name="description"/>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

+1 -24
View File
@@ -1,24 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="70" height="70" viewBox="0 0 70 70">
<defs>
<path id="icon-a" d="M4,5.35309892e-14 C36.4160122,9.87060235e-15 58.0836068,-3.97961823e-14 65,5.07020818e-14 C69,6.733808e-14 70,1 70,5 C70,43.0488877 70,62.4235458 70,65 C70,69 69,70 65,70 C61,70 9,70 4,70 C1,70 7.10542736e-15,69 7.10542736e-15,65 C7.25721566e-15,62.4676575 3.83358709e-14,41.8005206 3.60818146e-14,5 C-1.13686838e-13,1 1,5.75716207e-14 4,5.35309892e-14 Z"/>
<linearGradient id="icon-c" x1="100%" x2="0%" y1="0%" y2="100%">
<stop offset="0%" stop-color="#269396"/>
<stop offset="100%" stop-color="#218689"/>
</linearGradient>
<path id="icon-d" d="M51.4709821,28.8125 C51.970226,28.8125 52.375,28.4102246 52.375,27.9140625 L52.375,24.9192708 C52.375,24.4231087 51.970226,24.0208333 51.4709821,24.0208333 L49.9642857,24.0208333 L49.9642857,20.4270833 C49.9642857,18.4422852 48.3453404,16.8333333 46.3482143,16.8333333 L22.2410714,16.8333333 C20.2439453,16.8333333 18.625,18.4422852 18.625,20.4270833 L18.625,51.5729167 C18.625,53.5577148 20.2439453,55.1666667 22.2410714,55.1666667 L46.3482143,55.1666667 C48.3453404,55.1666667 49.9642857,53.5577148 49.9642857,51.5729167 L49.9642857,47.9791667 L51.4709821,47.9791667 C51.970226,47.9791667 52.375,47.5768913 52.375,47.0807292 L52.375,44.0859375 C52.375,43.5897754 51.970226,43.1875 51.4709821,43.1875 L49.9642857,43.1875 L49.9642857,38.3958333 L51.4709821,38.3958333 C51.970226,38.3958333 52.375,37.9935579 52.375,37.4973958 L52.375,34.5026042 C52.375,34.0064421 51.970226,33.6041667 51.4709821,33.6041667 L49.9642857,33.6041667 L49.9642857,28.8125 L51.4709821,28.8125 Z M45.8962054,51.5729167 L22.6930804,51.5729167 C22.4434427,51.5729167 22.2410714,51.3717946 22.2410714,51.1236979 L22.2410714,20.8763021 C22.2410714,20.6282054 22.4434427,20.4270833 22.6930804,20.4270833 L45.8962054,20.4270833 C46.145843,20.4270833 46.3482143,20.6282054 46.3482143,20.8763021 L46.3482143,51.1236979 C46.3482143,51.3717946 46.145843,51.5729167 45.8962054,51.5729167 Z M28.2678571,32.40625 C28.2678571,29.098278 30.9661244,26.4166667 34.2946429,26.4166667 C37.6231613,26.4166667 40.3214286,29.098278 40.3214286,32.40625 C40.3214286,35.714222 37.6231613,38.3958333 34.2946429,38.3958333 C30.9661244,38.3958333 28.2678571,35.714222 28.2678571,32.40625 Z M43.9375,42.3996452 L43.9375,43.7864583 C43.9375,44.7788574 43.1280273,45.5833333 42.1294643,45.5833333 L26.4598214,45.5833333 C25.4612584,45.5833333 24.6517857,44.7788574 24.6517857,43.7864583 L24.6517857,42.3996452 C24.6517857,40.7505632 25.7810547,39.313138 27.3908092,38.9131836 L30.0770229,38.2457943 C32.2693415,39.8129688 35.6901451,40.2631608 38.5122628,38.2457943 L41.1984766,38.9131836 C42.808231,39.313138 43.9375,40.750638 43.9375,42.3996452 Z"/>
<path id="icon-e" d="M51.4709821,26.8125 C51.970226,26.8125 52.375,26.4102246 52.375,25.9140625 L52.375,22.9192708 C52.375,22.4231087 51.970226,22.0208333 51.4709821,22.0208333 L49.9642857,22.0208333 L49.9642857,18.4270833 C49.9642857,16.4422852 48.3453404,14.8333333 46.3482143,14.8333333 L22.2410714,14.8333333 C20.2439453,14.8333333 18.625,16.4422852 18.625,18.4270833 L18.625,49.5729167 C18.625,51.5577148 20.2439453,53.1666667 22.2410714,53.1666667 L46.3482143,53.1666667 C48.3453404,53.1666667 49.9642857,51.5577148 49.9642857,49.5729167 L49.9642857,45.9791667 L51.4709821,45.9791667 C51.970226,45.9791667 52.375,45.5768913 52.375,45.0807292 L52.375,42.0859375 C52.375,41.5897754 51.970226,41.1875 51.4709821,41.1875 L49.9642857,41.1875 L49.9642857,36.3958333 L51.4709821,36.3958333 C51.970226,36.3958333 52.375,35.9935579 52.375,35.4973958 L52.375,32.5026042 C52.375,32.0064421 51.970226,31.6041667 51.4709821,31.6041667 L49.9642857,31.6041667 L49.9642857,26.8125 L51.4709821,26.8125 Z M45.8962054,49.5729167 L22.6930804,49.5729167 C22.4434427,49.5729167 22.2410714,49.3717946 22.2410714,49.1236979 L22.2410714,18.8763021 C22.2410714,18.6282054 22.4434427,18.4270833 22.6930804,18.4270833 L45.8962054,18.4270833 C46.145843,18.4270833 46.3482143,18.6282054 46.3482143,18.8763021 L46.3482143,49.1236979 C46.3482143,49.3717946 46.145843,49.5729167 45.8962054,49.5729167 Z M28.2678571,30.40625 C28.2678571,27.098278 30.9661244,24.4166667 34.2946429,24.4166667 C37.6231613,24.4166667 40.3214286,27.098278 40.3214286,30.40625 C40.3214286,33.714222 37.6231613,36.3958333 34.2946429,36.3958333 C30.9661244,36.3958333 28.2678571,33.714222 28.2678571,30.40625 Z M43.9375,40.3996452 L43.9375,41.7864583 C43.9375,42.7788574 43.1280273,43.5833333 42.1294643,43.5833333 L26.4598214,43.5833333 C25.4612584,43.5833333 24.6517857,42.7788574 24.6517857,41.7864583 L24.6517857,40.3996452 C24.6517857,38.7505632 25.7810547,37.313138 27.3908092,36.9131836 L30.0770229,36.2457943 C32.2693415,37.8129688 35.6901451,38.2631608 38.5122628,36.2457943 L41.1984766,36.9131836 C42.808231,37.313138 43.9375,38.750638 43.9375,40.3996452 Z"/>
</defs>
<g fill="none" fill-rule="evenodd">
<mask id="icon-b" fill="#fff">
<use xlink:href="#icon-a"/>
</mask>
<g mask="url(#icon-b)">
<rect width="70" height="70" fill="url(#icon-c)"/>
<path fill="#FFF" fill-opacity=".383" d="M4,1.8 L65,1.8 C67.6666667,1.8 69.3333333,1.13333333 70,-0.2 C70,2.46666667 70,3.46666667 70,2.8 L1.10547097e-14,2.8 C-1.65952376e-14,3.46666667 -2.9161925e-14,2.46666667 -2.66453526e-14,-0.2 C0.666666667,1.13333333 2,1.8 4,1.8 Z" transform="matrix(1 0 0 -1 0 2.8)"/>
<path fill="#393939" d="M39.8461538,54 L4,54 C2,54 -7.10542736e-15,53.8544474 0,49.9245283 L2.20625402e-16,25.9563572 L19.6596494,1.0710105 L47,0 L49.9211999,35.2849068 L39.8461538,54 Z" opacity=".324" transform="translate(0 15)"/>
<path fill="#000" fill-opacity=".383" d="M4,4 L65,4 C67.6666667,4 69.3333333,3 70,1 C70,3.66666667 70,5 70,5 L1.77635684e-15,5 C1.77635684e-15,5 1.77635684e-15,3.66666667 1.77635684e-15,1 C0.666666667,3 2,4 4,4 Z" transform="translate(0 65)"/>
<use fill="#000" fill-rule="nonzero" opacity=".3" xlink:href="#icon-d"/>
<use fill="#FFF" fill-rule="nonzero" xlink:href="#icon-e"/>
</g>
</g>
</svg>
<svg width="50" height="50" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M38 46a8 8 0 0 0 8-8V8H12a4 4 0 0 0-4 4v34h30Zm-8-27a6 6 0 1 1-12 0 6 6 0 0 1 12 0Zm4 9H24a9 9 0 0 0-9 9h10a9 9 0 0 0 9-9Z" fill="var(--o-icons-red-pure, #FC787D)"/><path fill-rule="evenodd" clip-rule="evenodd" d="M38 46a8 8 0 0 0 8-8V8H12a4 4 0 0 0-4 4v34h30Zm-8-27a6 6 0 1 1-12 0 6 6 0 0 1 12 0Zm4 9H24a9 9 0 0 0-9 9h10a9 9 0 0 0 9-9Z" fill="url(#o_icon_contacts__a)" fill-opacity=".2"/><path fill-rule="evenodd" clip-rule="evenodd" d="M38 42a4 4 0 0 0 4-4V4H12a8 8 0 0 0-8 8v30h34Zm-8-23a6 6 0 1 1-12 0 6 6 0 0 1 12 0Zm4 9H24a9 9 0 0 0-9 9h10a9 9 0 0 0 9-9Z" fill="var(--o-icons-teal-pure, #00CEB3)"/><path fill-rule="evenodd" clip-rule="evenodd" d="M38 42a4 4 0 0 0 4-4V4H12a8 8 0 0 0-8 8v30h34Zm-8-23a6 6 0 1 1-12 0 6 6 0 0 1 12 0Zm4 9H24a9 9 0 0 0-9 9h10a9 9 0 0 0 9-9Z" fill="url(#o_icon_contacts__b)" fill-opacity=".2"/><path fill-rule="evenodd" clip-rule="evenodd" d="M42 38a4 4 0 0 1-4 4H8V12a4 4 0 0 1 4-4h30v30ZM30 19a6 6 0 1 1-12 0 6 6 0 0 1 12 0Zm4 9H24a9 9 0 0 0-9 9h10a9 9 0 0 0 9-9Z" fill="var(--o-icons-red-teal, #006158)"/><path fill-rule="evenodd" clip-rule="evenodd" d="M42 38a4 4 0 0 1-4 4H8V12a4 4 0 0 1 4-4h30v30ZM30 19a6 6 0 1 1-12 0 6 6 0 0 1 12 0Zm4 9H24a9 9 0 0 0-9 9h10a9 9 0 0 0 9-9Z" fill="url(#o_icon_contacts__c)" fill-opacity=".2"/><defs><linearGradient id="o_icon_contacts__a" x1="8" y1="8" x2="52.706" y2="19.177" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="o_icon_contacts__b" x1="4" y1="4" x2="48.706" y2="15.177" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="o_icon_contacts__c" x1="8" y1="8" x2="48" y2="18" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient></defs></svg>

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

+1 -24
View File
@@ -1,24 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="70" height="70" viewBox="0 0 70 70">
<defs>
<path id="icon-a" d="M4 0h61c4 0 5 1 5 5v60c0 4-1 5-5 5H4c-3 0-4-1-4-5V5c0-4 1-5 4-5z"/>
<linearGradient id="icon-c" x1="98.162%" x2="0%" y1="1.838%" y2="100%">
<stop offset="0%" stop-color="#797DA5"/>
<stop offset="50.799%" stop-color="#6D7194"/>
<stop offset="100%" stop-color="#626584"/>
</linearGradient>
<path id="icon-d" d="M56.583 23.333h-3.5c-.518 0-.983.226-1.304.584h-1.715l-2.27-2.647-.012-.013a7.581 7.581 0 0 0-5.707-2.59h-3.394c-1.294 0-2.545.36-3.623 1.021a8.19 8.19 0 0 0-3.95-1.021h-2.342c-2.107 0-4.2.818-5.775 2.391l-2.857 2.859H18.22a1.745 1.745 0 0 0-1.304-.584h-3.5a1.75 1.75 0 0 0-1.75 1.75v17.5c0 .967.783 1.75 1.75 1.75h3.5a1.75 1.75 0 0 0 1.65-1.166h1.37l5.495 4.927c1.862 1.928 4.37 3.24 7.042 3.24 1.195 0 2.354-.281 3.362-.798 1.818.037 3.726-.756 5.036-2.29a7.109 7.109 0 0 0 3.698-2.523c1.53-.32 2.97-1.202 3.896-2.556h2.967a1.75 1.75 0 0 0 1.65 1.166h3.5a1.75 1.75 0 0 0 1.75-1.75v-17.5a1.75 1.75 0 0 0-1.75-1.75zM15.167 42a1.167 1.167 0 1 1 0-2.333 1.167 1.167 0 0 1 0 2.333zm30.08-.42c-1.12 1.042-2.69.826-2.914.583.103.976-1.331 2.993-3.579 2.835-.404 1.351-2.057 2.467-3.754 1.878-.648.648-1.638.957-2.526.957-1.82 0-3.483-1.06-4.604-2.254l-5.928-5.316a2.332 2.332 0 0 0-1.557-.596h-1.718v-12.25h1.95c.619 0 1.212-.246 1.65-.684l3.2-3.2a4.667 4.667 0 0 1 3.3-1.366h2.34c.424 0 .84.057 1.24.167l-3.155 3.682a5.376 5.376 0 0 0-.048 6.96c2.362 2.833 6.663 2.86 9.077.143l1.894-2.193 5.282 6.99c.98 1.065.799 2.781-.15 3.664zm6.086-1.913H49.55a5.985 5.985 0 0 0-1.441-3.967l-5.693-7.534a1.752 1.752 0 0 0-2.907-1.894l-3.911 4.53a2.49 2.49 0 0 1-3.765-.068 1.885 1.885 0 0 1 .016-2.44l4.224-4.928a3.434 3.434 0 0 1 2.608-1.2h3.394c1.175 0 2.293.507 3.068 1.389l3.312 3.862h2.878v12.25zm3.5 2.333a1.167 1.167 0 1 1 0-2.333 1.167 1.167 0 0 1 0 2.333z"/>
</defs>
<g fill="none" fill-rule="evenodd">
<mask id="icon-b" fill="#fff">
<use xlink:href="#icon-a"/>
</mask>
<g mask="url(#icon-b)">
<path fill="url(#icon-c)" d="M0 0H70V70H0z"/>
<path fill="#FFF" fill-opacity=".383" d="M4 1h61c2.667 0 4.333.667 5 2V0H0v3c.667-1.333 2-2 4-2z"/>
<path fill="#000" d="M33.423 69H4.006C2.003 69 0 68.854 0 64.911V38.065l12.348-13.998 8.686.293L29.375 21h14.023l6.01 4.089L58 24.36v19.558L33.423 69z" opacity=".165"/>
<path fill="#000" fill-opacity=".383" d="M4 69h61c2.667 0 4.333-1 5-3v4H0v-4c.667 2 2 3 4 3z"/>
<path fill="#000" fill-rule="nonzero" d="M56.583 25.333h-3.5c-.518 0-.983.226-1.304.584h-1.715l-2.27-2.647-.012-.013a7.581 7.581 0 0 0-5.707-2.59h-3.394c-1.294 0-2.545.36-3.623 1.021a8.19 8.19 0 0 0-3.95-1.021h-2.342c-2.107 0-4.2.818-5.775 2.391l-2.857 2.859H18.22a1.745 1.745 0 0 0-1.304-.584h-3.5a1.75 1.75 0 0 0-1.75 1.75v17.5c0 .967.783 1.75 1.75 1.75h3.5a1.75 1.75 0 0 0 1.65-1.166h1.37l5.495 4.927c1.862 1.928 4.37 3.24 7.042 3.24 1.195 0 2.354-.281 3.362-.798 1.818.037 3.726-.756 5.036-2.29a7.109 7.109 0 0 0 3.698-2.523c1.53-.32 2.97-1.202 3.896-2.556h2.967a1.75 1.75 0 0 0 1.65 1.166h3.5a1.75 1.75 0 0 0 1.75-1.75v-17.5a1.75 1.75 0 0 0-1.75-1.75zM15.167 44a1.167 1.167 0 1 1 0-2.333 1.167 1.167 0 0 1 0 2.333zm30.08-.42c-1.12 1.042-2.69.826-2.914.583.103.976-1.331 2.993-3.579 2.835-.404 1.351-2.057 2.467-3.754 1.878-.648.648-1.638.957-2.526.957-1.82 0-3.483-1.06-4.604-2.254l-5.928-5.316a2.332 2.332 0 0 0-1.557-.596h-1.718v-12.25h1.95c.619 0 1.212-.246 1.65-.684l3.2-3.2a4.667 4.667 0 0 1 3.3-1.366h2.34c.424 0 .84.057 1.24.167l-3.155 3.682a5.376 5.376 0 0 0-.048 6.96c2.362 2.833 6.663 2.86 9.077.143l1.894-2.193 5.282 6.99c.98 1.065.799 2.781-.15 3.664zm6.086-1.913H49.55a5.985 5.985 0 0 0-1.441-3.967l-5.693-7.534a1.752 1.752 0 0 0-2.907-1.894l-3.911 4.53a2.49 2.49 0 0 1-3.765-.068 1.885 1.885 0 0 1 .016-2.44l4.224-4.928a3.434 3.434 0 0 1 2.608-1.2h3.394c1.175 0 2.293.507 3.068 1.389l3.312 3.862h2.878v12.25zm3.5 2.333a1.167 1.167 0 1 1 0-2.333 1.167 1.167 0 0 1 0 2.333z" opacity=".372"/>
<use fill="#FFF" fill-rule="nonzero" xlink:href="#icon-d"/>
</g>
</g>
</svg>
<svg width="50" height="50" xmlns="http://www.w3.org/2000/svg"><path d="M45.873 9c3.52.042 5.504 4.474 3.013 6.964l-8.424 8.42L36.5 27 25 9.001h20.873Z" fill="var(--o-icons-purple-pure, #93407D)"/><path d="M45.873 9c3.52.042 5.504 4.474 3.013 6.964l-8.424 8.42L36.5 27 25 9.001h20.873Z" fill="url(#o_icon_crm__a)" fill-opacity=".2"/><path d="M10.945 25.788a3.972 3.972 0 0 0 0 5.62l8.434 8.428a3.977 3.977 0 0 0 5.622 0L23.5 36 15 27l-4.055-1.212Z" fill="var(--o-icons-purple-pure, #93407D)"/><path d="M10.945 25.788a3.972 3.972 0 0 0 0 5.62l8.434 8.428a3.977 3.977 0 0 0 5.622 0L23.5 36 15 27l-4.055-1.212Z" fill="url(#o_icon_crm__b)" fill-opacity=".2"/><path d="M1.115 15.964C-1.377 13.474.608 9.041 4.129 9H25l15.46 15.383a3.972 3.972 0 0 1 0 5.62l-9.839 9.833a3.977 3.977 0 0 1-5.622 0L1.115 15.964Z" fill="var(--o-icons-teal-pure, #00CEB3)"/><path d="M1.115 15.964C-1.377 13.474.608 9.041 4.129 9H25l15.46 15.383a3.972 3.972 0 0 1 0 5.62l-9.839 9.833a3.977 3.977 0 0 1-5.622 0L1.115 15.964Z" fill="url(#o_icon_crm__c)" fill-opacity=".2"/><path d="M25 39.836a3.972 3.972 0 0 0 0-5.62l-8.434-8.428a3.977 3.977 0 0 0-5.622 0L25 39.836Z" fill="var(--o-icons-purple-teal, #003458)"/><path d="M25 39.836a3.972 3.972 0 0 0 0-5.62l-8.434-8.428a3.977 3.977 0 0 0-5.622 0L25 39.836Z" fill="url(#o_icon_crm__d)" fill-opacity=".3"/><path d="M17.62 16.306 25 9l9.137 9.062a5.966 5.966 0 0 0-8.434 0l-3.162 3.16a3.48 3.48 0 0 1-4.92 0 3.475 3.475 0 0 1 0-4.916Z" fill="var(--o-icons-purple-teal, #003458)"/><path d="M17.62 16.306 25 9l9.137 9.062a5.966 5.966 0 0 0-8.434 0l-3.162 3.16a3.48 3.48 0 0 1-4.92 0 3.475 3.475 0 0 1 0-4.916Z" fill="url(#o_icon_crm__e)" fill-opacity=".3"/><defs><linearGradient id="o_icon_crm__a" x1="25" y1="9" x2="52.888" y2="18.684" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="o_icon_crm__b" x1="9.781" y1="25.788" x2="27.686" y2="30.267" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="o_icon_crm__c" x1="0" y1="9" x2="47.056" y2="24.303" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="o_icon_crm__d" x1="10.944" y1="24.624" x2="28.849" y2="29.103" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="o_icon_crm__e" x1="16.602" y1="9" x2="36.355" y2="15.54" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient></defs></svg>

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

-21
View File
@@ -7,27 +7,6 @@
}
.o_opportunity_kanban .o_kanban_renderer {
.ribbon {
&::before, &::after {
display: none;
}
span {
padding: 5px;
font-size: small;
z-index: 0;
}
}
.ribbon-top-right {
margin-top: -9px;
span {
left: 12px;
right: 30px;
height: 25px;
top: 18px;
}
}
.oe_kanban_card_ribbon {
min-height: 105px;
.o_kanban_record_title {
@@ -3,8 +3,7 @@
import { getFixture, patchWithCleanup } from "@web/../tests/helpers/utils";
import { menuService } from "@web/webclient/menus/menu_service";
import {
toggleFilterMenu,
toggleGroupByMenu,
toggleSearchBarMenu,
toggleMenuItem,
toggleMenuItemOption,
} from "@web/../tests/search/helpers";
@@ -115,7 +114,7 @@ QUnit.module("Views", (hooks) => {
},
});
await toggleGroupByMenu(target);
await toggleSearchBarMenu(target);
await toggleMenuItem(target, "Bar");
await toggleMenuItem(target, "Date Field");
@@ -123,7 +122,6 @@ QUnit.module("Views", (hooks) => {
await toggleMenuItemOption(target, "Date Field", "Year");
await toggleFilterMenu(target);
await toggleMenuItem(target, "Forecast Filter");
unpatchDate();
+4 -4
View File
@@ -46,7 +46,7 @@
</div>
</button>
</div>
<widget name="web_ribbon" title="Lost" bg_color="bg-danger" attrs="{'invisible': ['|', ('probability', '&gt;', 0), ('active', '=', True)]}"/>
<widget name="web_ribbon" title="Lost" bg_color="text-bg-danger" attrs="{'invisible': ['|', ('probability', '&gt;', 0), ('active', '=', True)]}"/>
<widget name="web_ribbon" title="Won" attrs="{'invisible': [('probability', '&lt;', 100)]}" />
<div class="oe_title">
<h1><field class="text-break" options="{'line_breaks': False}" widget="text" name="name" placeholder="e.g. Product Pricing"/></h1>
@@ -561,7 +561,7 @@
<div t-attf-class="#{!selection_mode ? kanban_color(record.color.raw_value) : ''} #{lost_ribbon ? 'oe_kanban_card_ribbon' : ''} oe_kanban_global_click oe_kanban_card d-flex flex-column">
<div class="ribbon ribbon-top-right"
attrs="{'invisible': ['|', ('probability', '&gt;', 0), ('active', '=', True)]}">
<span class="bg-danger">Lost</span>
<span class="text-bg-danger">Lost</span>
</div>
<div class="oe_kanban_content flex-grow-1">
@@ -643,8 +643,8 @@
<div class="ribbon ribbon-top-right"
attrs="{'invisible': ['&amp;', '|', ('probability', '&gt;', 0), ('active', '=', True),
'|', ('probability', '&lt;', 100), ('active', '=', False)]}">
<span t-if="won_ribbon" class="bg-success">Won</span>
<span t-elif="lost_ribbon" class="bg-danger">Lost</span>
<span t-if="won_ribbon" class="text-bg-success">Won</span>
<span t-elif="lost_ribbon" class="text-bg-danger">Lost</span>
</div>
</xpath>
<xpath expr="//div[hasclass('o_kanban_record_subtitle')]" position="replace">
+1 -1
View File
@@ -28,7 +28,7 @@
</div>
</button>
</div>
<widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<widget name="web_ribbon" title="Archived" bg_color="text-bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<div class="oe_title">
<div>
<label for="name"/>
+1 -1
View File
@@ -169,7 +169,7 @@
<div class="oe_edit_only" attrs="{'invisible': [('alias_domain', '=', False)]}">
<field name="alias_name" class="oe_inline"/>@<field name="alias_domain" class="oe_inline" readonly="1"/>
</div>
<button icon="fa-arrow-right" type="action" name="%(base_setup.action_general_configuration)d" string="Configure a custom domain" class="p-0 btn-link" attrs="{'invisible': [('alias_domain', '!=', False)]}"/>
<button icon="oi-arrow-right" type="action" name="%(base_setup.action_general_configuration)d" string="Configure a custom domain" class="p-0 btn-link" attrs="{'invisible': [('alias_domain', '!=', False)]}"/>
</div>
</div>
<field name="alias_contact"
@@ -14,7 +14,7 @@
<field name="group_use_recurring_revenues"/>
<div attrs="{'invisible': [('group_use_recurring_revenues', '=', False)]}">
<button type="action" name="crm.crm_recurring_plan_action"
string="Manage Recurring Plans" icon="fa-arrow-right" class="oe_link"/>
string="Manage Recurring Plans" icon="oi-arrow-right" class="oe_link"/>
</div>
</setting>
<setting id="crm_lead" title="Use leads if you need a qualification step before creating an opportunity or a customer. It can be a business card you received, a contact form filled in your website, or a file of unqualified prospects you import, etc. Once qualified, the lead can be converted into a business opportunity and/or a new customer in your address book." help="Add a qualification step before the creation of an opportunity">
Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<templates>
<t t-name="DataRecycle.buttons" t-inherit="web.ListView.Buttons" t-inherit-mode="primary" owl="1">
<xpath expr="//t[@t-if='props.showButtons']">
<xpath expr="//div[hasclass('o_list_buttons')]" position="inside">
<t t-if="nbSelected">
<button type="button" class="btn btn-primary o_data_recycle_validate_button" t-on-click="onValidateClick">
Validate
@@ -53,7 +53,7 @@
class="oe_stat_button"
type="object" icon="fa-stop">
<div class="o_stat_info o_field_widget">
<span class="o_warning_text">Test</span>
<span class="o_stat_text o_warning_text fw-bold">Test</span>
<span class="o_stat_text">Environment</span>
</div>
</button>
@@ -62,7 +62,7 @@
class="oe_stat_button"
type="object" icon="fa-code">
<div class="o_stat_info o_field_widget">
<span class="text-danger">No debug</span>
<span class="o_stat_text text-danger">No debug</span>
</div>
</button>
<button name="toggle_debug"
@@ -74,7 +74,7 @@
</div>
</button>
</div>
<widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<widget name="web_ribbon" title="Archived" bg_color="text-bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<div class="oe_title" name="title">
<label for="name" string="Shipping Method"/>
<h1>
+1 -1
View File
@@ -12,7 +12,7 @@
<field name="recompute_delivery_price" invisible="1"/>
</field>
<group name="note_group" position="before">
<div class="oe_right">
<div class="oe_right mb-2 ms-1">
<button
string="Add shipping"
name="action_open_delivery_wizard"
@@ -22,7 +22,7 @@
<div class="o_row">
<field name='display_price' widget="monetary" options="{'currency_field': 'currency_id'}" attrs="{'invisible': [('carrier_id','=', False)]}"/>
<button name="update_price" type="object" attrs="{'invisible': [('delivery_type','in', ('fixed', 'base_on_rule'))]}">
<i class="fa fa-arrow-right me-1"/>Get rate
<i class="oi oi-arrow-right me-1"/>Get rate
</button>
</div>
</group>
@@ -12,7 +12,7 @@
<button name="%(delivery.action_delivery_carrier_form)d"
type="action"
class="btn-link"
icon="fa-arrow-right"
icon="oi-arrow-right"
string="Shipping Methods"/>
</div>
</div>
+1 -1
View File
@@ -57,7 +57,7 @@
<group name="custom" string="Custom" groups="base.group_system">
<div colspan="2">
<p>Want to add your own KPIs?<br />
<a href="https://www.odoo.com/documentation/master/applications/general/digest_emails.html#custom-digest-emails" target="_blank"><i class="fa fa-arrow-right"></i> Check our Documentation</a></p>
<a href="https://www.odoo.com/documentation/master/applications/general/digest_emails.html#custom-digest-emails" target="_blank"><i class="oi oi-arrow-right"></i> Check our Documentation</a></p>
</div>
</group>
</group>
@@ -16,7 +16,7 @@
<field name="digest_id" class="oe_inline"/>
</div>
<div class="mt8">
<button type="action" name="%(digest.digest_digest_action)d" string="Configure Digest Emails" icon="fa-arrow-right" class="btn-link"/>
<button type="action" name="%(digest.digest_digest_action)d" string="Configure Digest Emails" icon="oi-arrow-right" class="btn-link"/>
</div>
</div>
</setting>
@@ -22,7 +22,7 @@
<span itemprop="startDateTime" t-out="event.date_begin"
class="fw-bold"
t-options='{"widget": "datetime", "time_only": True, "tz_name": event.date_tz, "hide_seconds": True}'/>
<span class="fa fa-arrow-right o_event_foldable_badge_font_faded"/>
<span class="oi oi-arrow-right o_event_foldable_badge_font_faded"/>
<span t-if="not event.is_one_day"
itemprop="endDate" t-out="event.date_end.date()"
class="fw-bold"/>
@@ -123,7 +123,7 @@
<span itemprop="startDateTime" t-out="event.date_begin"
class="fw-bold"
t-options='{"widget": "datetime", "time_only": True, "hide_seconds": True, "tz_name": event.date_tz}'/>
<span class="fa fa-arrow-right o_event_full_page_ticket_font_faded"/>
<span class="oi oi-arrow-right o_event_full_page_ticket_font_faded"/>
<span t-if="not event.is_one_day"
itemprop="endDate" t-out="event.date_end.date()"
class="fw-bold"/>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

+1 -24
View File
@@ -1,24 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="70" height="70" viewBox="0 0 70 70">
<defs>
<path id="icon-a" d="M4,5.35309892e-14 C36.4160122,9.87060235e-15 58.0836068,-3.97961823e-14 65,5.07020818e-14 C69,6.733808e-14 70,1 70,5 C70,43.0488877 70,62.4235458 70,65 C70,69 69,70 65,70 C61,70 9,70 4,70 C1,70 7.10542736e-15,69 7.10542736e-15,65 C7.25721566e-15,62.4676575 3.83358709e-14,41.8005206 3.60818146e-14,5 C-1.13686838e-13,1 1,5.75716207e-14 4,5.35309892e-14 Z"/>
<linearGradient id="icon-c" x1="100%" x2="0%" y1="0%" y2="100%">
<stop offset="0%" stop-color="#269396"/>
<stop offset="100%" stop-color="#218689"/>
</linearGradient>
<path id="icon-d" d="M24.4715571,29.3561696 L47.6197052,29.3561696 L47.6197052,43.4186696 L24.4715571,43.4186696 L24.4715571,29.3561696 Z M53.4067423,36.3874196 C53.4067423,38.32907 54.9612851,39.9030446 56.8789645,39.9030446 L56.8789645,46.9342946 C56.8789645,48.875945 55.3244217,50.4499196 53.4067423,50.4499196 L18.6845201,50.4499196 C16.7668407,50.4499196 15.2122978,48.875945 15.2122978,46.9342946 L15.2122978,39.9030446 C17.1299772,39.9030446 18.6845201,38.32907 18.6845201,36.3874196 C18.6845201,34.4457692 17.1299772,32.8717946 15.2122978,32.8717946 L15.2122978,25.8405446 C15.2122978,23.8988942 16.7668407,22.3249196 18.6845201,22.3249196 L53.4067423,22.3249196 C55.3244217,22.3249196 56.8789645,23.8988942 56.8789645,25.8405446 L56.8789645,32.8717946 C54.9612851,32.8717946 53.4067423,34.4457692 53.4067423,36.3874196 Z M49.9345201,28.7702321 C49.9345201,27.7994069 49.1572486,27.0124196 48.1984089,27.0124196 L23.8928534,27.0124196 C22.9340137,27.0124196 22.1567423,27.7994069 22.1567423,28.7702321 L22.1567423,44.0046071 C22.1567423,44.9754323 22.9340137,45.7624196 23.8928534,45.7624196 L48.1984089,45.7624196 C49.1572486,45.7624196 49.9345201,44.9754323 49.9345201,44.0046071 L49.9345201,28.7702321 Z"/>
<path id="icon-e" d="M24.4715571,27.3561696 L47.6197052,27.3561696 L47.6197052,41.4186696 L24.4715571,41.4186696 L24.4715571,27.3561696 Z M53.4067423,34.3874196 C53.4067423,36.32907 54.9612851,37.9030446 56.8789645,37.9030446 L56.8789645,44.9342946 C56.8789645,46.875945 55.3244217,48.4499196 53.4067423,48.4499196 L18.6845201,48.4499196 C16.7668407,48.4499196 15.2122978,46.875945 15.2122978,44.9342946 L15.2122978,37.9030446 C17.1299772,37.9030446 18.6845201,36.32907 18.6845201,34.3874196 C18.6845201,32.4457692 17.1299772,30.8717946 15.2122978,30.8717946 L15.2122978,23.8405446 C15.2122978,21.8988942 16.7668407,20.3249196 18.6845201,20.3249196 L53.4067423,20.3249196 C55.3244217,20.3249196 56.8789645,21.8988942 56.8789645,23.8405446 L56.8789645,30.8717946 C54.9612851,30.8717946 53.4067423,32.4457692 53.4067423,34.3874196 Z M49.9345201,26.7702321 C49.9345201,25.7994069 49.1572486,25.0124196 48.1984089,25.0124196 L23.8928534,25.0124196 C22.9340137,25.0124196 22.1567423,25.7994069 22.1567423,26.7702321 L22.1567423,42.0046071 C22.1567423,42.9754323 22.9340137,43.7624196 23.8928534,43.7624196 L48.1984089,43.7624196 C49.1572486,43.7624196 49.9345201,42.9754323 49.9345201,42.0046071 L49.9345201,26.7702321 Z"/>
</defs>
<g fill="none" fill-rule="evenodd">
<mask id="icon-b" fill="#fff">
<use xlink:href="#icon-a"/>
</mask>
<g mask="url(#icon-b)">
<rect width="70" height="70" fill="url(#icon-c)"/>
<path fill="#FFF" fill-opacity=".383" d="M4,1.8 L65,1.8 C67.6666667,1.8 69.3333333,1.13333333 70,-0.2 C70,2.46666667 70,3.46666667 70,2.8 L1.10547097e-14,2.8 C-1.65952376e-14,3.46666667 -2.9161925e-14,2.46666667 -2.66453526e-14,-0.2 C0.666666667,1.13333333 2,1.8 4,1.8 Z" transform="matrix(1 0 0 -1 0 2.8)"/>
<path fill="#393939" d="M35,58 L4,58 C2,58 -7.10542736e-15,57.8520408 0,53.8571429 L2.0734159e-16,30.9596526 L29,0 L37,8.28571429 L58,29 L35,58 Z" opacity=".324" transform="translate(0 12)"/>
<path fill="#000" fill-opacity=".383" d="M4,4 L65,4 C67.6666667,4 69.3333333,3 70,1 C70,3.66666667 70,5 70,5 L1.77635684e-15,5 C1.77635684e-15,5 1.77635684e-15,3.66666667 1.77635684e-15,1 C0.666666667,3 2,4 4,4 Z" transform="translate(0 65)"/>
<use fill="#000" fill-rule="nonzero" opacity=".3" transform="rotate(45 36.046 36.387)" xlink:href="#icon-d"/>
<use fill="#FFF" fill-rule="nonzero" transform="rotate(45 36.046 34.387)" xlink:href="#icon-e"/>
</g>
</g>
</svg>
<svg width="50" height="50" xmlns="http://www.w3.org/2000/svg"><path d="M13.238 11.483a1.927 1.927 0 0 1 .654-2.55c1.403-.912 2.927-1.233 4.181-.613.2.1.376.24.54.39L49.26 37.346c.472.426.741 1.025.741 1.653H28L13.238 11.483Z" fill="var(--o-icons-red-pure, #FC787D)"/><path d="M13.238 11.483a1.927 1.927 0 0 1 .654-2.55c1.403-.912 2.927-1.233 4.181-.613.2.1.376.24.54.39L49.26 37.346c.472.426.741 1.025.741 1.653H28L13.238 11.483Z" fill="url(#o_icon_event__a)" fill-opacity=".2"/><path d="M50 39c0 1.657-4.925 3-11 3s-11-1.343-11-3 4.925-3 11-3 11 1.343 11 3Z" fill="var(--o-icons-red-red, #F9383D)"/><path d="M50 39c0 1.657-4.925 3-11 3s-11-1.343-11-3 4.925-3 11-3 11 1.343 11 3Z" fill="url(#o_icon_event__b)" fill-opacity=".2"/><path d="M36.762 11.483a1.927 1.927 0 0 0-.654-2.55c-1.403-.912-2.927-1.233-4.181-.613-.2.1-.376.24-.54.39L.74 37.346A2.226 2.226 0 0 0 0 39h22l14.762-27.517Z" fill="var(--o-icons-yellow-pure, #FBB130)"/><path d="M36.762 11.483a1.927 1.927 0 0 0-.654-2.55c-1.403-.912-2.927-1.233-4.181-.613-.2.1-.376.24-.54.39L.74 37.346A2.226 2.226 0 0 0 0 39h22l14.762-27.517Z" fill="url(#o_icon_event__c)" fill-opacity=".2"/><path d="M31.693 20.932 25 14.677l-6.693 6.255L25 33.408l6.693-12.476Z" fill="var(--o-icons-red-yellow, #F85318)"/><path d="M31.693 20.932 25 14.677l-6.693 6.255L25 33.408l6.693-12.476Z" fill="url(#o_icon_event__d)" fill-opacity=".2"/><path d="M0 39c0 1.657 4.925 3 11 3s11-1.343 11-3-4.925-3-11-3-11 1.343-11 3Z" fill="var(--o-icons-yellow-yellow, #F77B09)"/><path d="M0 39c0 1.657 4.925 3 11 3s11-1.343 11-3-4.925-3-11-3-11 1.343-11 3Z" fill="url(#o_icon_event__e)" fill-opacity=".2"/><defs><linearGradient id="o_icon_event__a" x1="13" y1="8" x2="55.469" y2="20.672" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="o_icon_event__b" x1="28" y1="36" x2="42.943" y2="49.698" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="o_icon_event__c" x1="0" y1="8" x2="42.469" y2="20.672" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="o_icon_event__d" x1="18.307" y1="14.677" x2="34.522" y2="17.574" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="o_icon_event__e" x1="0" y1="36" x2="14.943" y2="49.698" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient></defs></svg>

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

-20
View File
@@ -24,26 +24,6 @@
}
}
.oe_kanban_card_ribbon {
min-height: 95px;
.ribbon {
&::before, &::after {
display: none;
}
span {
padding: 5px;
font-size: small;
z-index: 0;
}
}
.ribbon-top-right {
margin-top: -1px;
span {
left: 7px;
right: 30px;
height: 25px;
top: 18px;
}
}
// Used for "Group By"
div.row {
min-height: 95px;
+7 -5
View File
@@ -13,9 +13,11 @@
<div class="oe_button_box" name="button_box" groups="base.group_user">
<button name="%(event.event_registration_action_stats_from_event)d"
type="action" class="oe_stat_button" icon="fa-line-chart">
<span class="o_stat_text">
Registration statistics
</span>
<div class="o_stat_info">
<span class="o_stat_text">
Registration statistics
</span>
</div>
</button>
<button name="%(event.act_event_registration_from_event)d"
type="action"
@@ -31,7 +33,7 @@
<field name="legend_blocked" invisible="1"/>
<field name="legend_normal" invisible="1"/>
<field name="legend_done" invisible="1"/>
<widget name="web_ribbon" text="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<widget name="web_ribbon" text="Archived" bg_color="text-bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<field name="kanban_state" widget="state_selection" class="ms-auto float-end"/>
<div class="oe_title">
<label for="name" string="Event Name"/>
@@ -184,7 +186,7 @@
</div>
<div><t t-esc="luxon.DateTime.fromISO(record.date_begin.raw_value).toFormat('t')"/></div>
<div t-if="record.date_begin.raw_value !== record.date_end.raw_value">
<i class="fa fa-arrow-right me-2 o_event_fontsize_09" title="End date"/>
<i class="oi oi-arrow-right me-2 o_event_fontsize_09" title="End date"/>
<t t-esc="luxon.DateTime.fromISO(record.date_end.raw_value).toFormat('d MMM')"/>
</div>
</div>
@@ -58,7 +58,7 @@
</header>
<sheet string="Registration">
<div class="oe_button_box" name="button_box"/>
<widget name="web_ribbon" text="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<widget name="web_ribbon" text="Archived" bg_color="text-bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<group>
<group string="Attendee" name="attendee">
<field class="o_text_overflow" name="name"/>
@@ -141,14 +141,14 @@
</div>
</t>
<t t-name="kanban-box">
<div t-attf-class="#{!record.active.raw_value ? 'oe_kanban_card_ribbon' : ''} oe_kanban_global_click o_event_registration_kanban container-fluid p-0">
<div t-attf-class="#{!record.active.raw_value ? 'oe_kanban_card_ribbon' : ''} oe_kanban_global_click o_event_registration_kanban container-fluid">
<div t-if="!record.active.raw_value" class="ribbon ribbon-top-right">
<span class="bg-danger">Archived</span>
<span class="text-bg-danger">Archived</span>
</div>
<div class="row h-100">
<div class="col-9 pe-0">
<div class="row g-0 h-100">
<div class="col-9">
<div class="oe_kanban_content h-100">
<div class="o_kanban_record_body pt-1 ps-2 h-100 d-flex flex-column">
<div class="o_kanban_record_body h-100 d-flex flex-column">
<b class="o_kanban_record_title"><field name="name"/></b>
<field class="o_text_overflow" name="event_id" invisible="context.get('default_event_id')" />
<span class="o_text_overflow" attrs="{'invisible': [('partner_id', '=', False)]}">Booked by <field name="partner_id" /></span>
@@ -162,7 +162,7 @@
</div>
</div>
</div>
<div id="event_attendees_kanban_icons" class="col-3 ps-0">
<div id="event_attendees_kanban_icons" class="col-3">
<t t-call="event_attendees_kanban_icons_desktop"/>
<t t-call="event_attendees_kanban_icons_mobile"/>
</div>
@@ -7,7 +7,7 @@
<field name="arch" type="xml">
<form string="Booth Type">
<sheet>
<widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<widget name="web_ribbon" title="Archived" bg_color="text-bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<field name="image_1920" widget='image' class="oe_avatar" options='{"preview_image": "image_128"}'/>
<div class="oe_title">
<label for="name" string="Booth Category"/>
@@ -10,7 +10,10 @@
<div name="button_box" position="inside">
<button name="action_view_sale_order" type="object" class="oe_stat_button"
icon="fa-usd" groups="sales_team.group_sale_salesman"
string="Sale Order" attrs="{'invisible': [('sale_order_id', '=', False)]}">
attrs="{'invisible': [('sale_order_id', '=', False)]}">
<div class="o_stat_info">
<span class="o_stat_text">Sale Order</span>
</div>
</button>
</div>
<div name="button_box" position="after">
@@ -36,7 +36,7 @@
<field name="arch" type="xml">
<form string="Lead Generation Rule">
<sheet>
<widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<widget name="web_ribbon" title="Archived" bg_color="text-bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<div class="oe_title">
<label for="name"/>
<h1><field name="name" placeholder="e.g. B2B Fairs"/></h1>
@@ -37,14 +37,17 @@
<field name="arch" type="xml">
<xpath expr="//div[@name='button_box']" position="inside">
<button name="action_view_sale_order" type="object"
class="oe_stat_button" icon="fa-usd" string="Sale Order"
class="oe_stat_button" icon="fa-usd"
groups="sales_team.group_sale_salesman"
attrs="{'invisible': [('sale_order_id', '=', False)]}">
<div class="o_stat_info">
<span class="o_stat_text">Sale Order</span>
</div>
</button>
</xpath>
<xpath expr="//group" position="before">
<field name="is_paid" invisible="1"/>
<widget name="web_ribbon" title="Paid" bg_color="bg-success" attrs="{'invisible': [('is_paid', '=', False)]}"/>
<widget name="web_ribbon" title="Paid" bg_color="text-bg-success" attrs="{'invisible': [('is_paid', '=', False)]}"/>
</xpath>
<group name="utm_link" position="before">
<group string="Transaction" groups="base.group_no_one">
Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

+1 -25
View File
@@ -1,25 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="70" height="70" viewBox="0 0 70 70">
<defs>
<path id="icon-a" d="M4,5.35309892e-14 C36.4160122,9.87060235e-15 58.0836068,-3.97961823e-14 65,5.07020818e-14 C69,6.733808e-14 70,1 70,5 C70,43.0488877 70,62.4235458 70,65 C70,69 69,70 65,70 C61,70 9,70 4,70 C1,70 7.10542736e-15,69 7.10542736e-15,65 C7.25721566e-15,62.4676575 3.83358709e-14,41.8005206 3.60818146e-14,5 C-1.13686838e-13,1 1,5.75716207e-14 4,5.35309892e-14 Z"/>
<linearGradient id="icon-c" x1="98.162%" x2="0%" y1="1.838%" y2="100%">
<stop offset="0%" stop-color="#797DA5"/>
<stop offset="50.799%" stop-color="#6D7194"/>
<stop offset="100%" stop-color="#626584"/>
</linearGradient>
<path id="icon-d" d="M54.8560384,29.8385417 L50.3951823,29.8385417 L49.7560221,28.1341146 C49.0079753,26.1392415 47.6869303,24.4434408 45.9358724,23.2298991 C44.1848145,22.0163574 42.1330566,21.375 40.0026042,21.375 L29.9973958,21.375 C27.866862,21.375 25.8151855,22.0164388 24.0641276,23.2298991 C22.3129883,24.4434408 20.9920247,26.1392415 20.2439779,28.1341146 L19.6048177,29.8385417 L15.1439616,29.8385417 C14.4773763,29.8385417 14.0067546,30.4915365 14.2175293,31.1239421 L14.868571,33.0770671 C15.0015005,33.4758244 15.3746728,33.7447878 15.7950033,33.7447917 L18.139974,33.7447917 L18.1357422,33.7561849 C16.5447591,34.6475423 15.46875,36.3487142 15.46875,38.3020833 L15.46875,42.2083333 C15.46875,43.5287272 15.9610189,44.7334798 16.7708333,45.6514486 L16.7708333,50.671875 C16.7708333,51.7505697 17.6452637,52.625 18.7239583,52.625 L22.6302083,52.625 C23.708903,52.625 24.5833333,51.7505697 24.5833333,50.671875 L24.5833333,47.4166667 L45.4166667,47.4166667 L45.4166667,50.671875 C45.4166667,51.7505697 46.291097,52.625 47.3697917,52.625 L51.2760417,52.625 C52.3547363,52.625 53.2291667,51.7505697 53.2291667,50.671875 L53.2291667,45.6514486 C54.0389811,44.7333984 54.53125,43.5286458 54.53125,42.2083333 L54.53125,38.3020833 C54.53125,36.3487142 53.4552409,34.6475423 51.8642578,33.7561849 L51.860026,33.7447917 L54.2049967,33.7447917 C54.6253272,33.7447878 54.9984995,33.4758244 55.131429,33.0770671 L55.7824707,31.1239421 C55.9932454,30.4915365 55.5226237,29.8385417 54.8560384,29.8385417 Z M25.1206868,29.9628906 C25.8787435,27.9414876 27.8385417,26.5833333 29.9973958,26.5833333 L40.0026042,26.5833333 C42.1614583,26.5833333 44.1212565,27.9414876 44.8793132,29.9628906 L46.0533854,33.09375 L23.9466146,33.09375 L25.1206868,29.9628906 Z M21.328125,42.859375 C19.8898926,42.859375 18.7239583,41.6934408 18.7239583,40.2552083 C18.7239583,38.8169759 19.8898926,37.6510417 21.328125,37.6510417 C22.7663574,37.6510417 25.234375,40.1190592 25.234375,41.5572917 C25.234375,42.9955241 22.7663574,42.859375 21.328125,42.859375 Z M48.671875,42.859375 C47.2336426,42.859375 44.765625,42.9955241 44.765625,41.5572917 C44.765625,40.1190592 47.2336426,37.6510417 48.671875,37.6510417 C50.1101074,37.6510417 51.2760417,38.8169759 51.2760417,40.2552083 C51.2760417,41.6934408 50.1101074,42.859375 48.671875,42.859375 Z"/>
<path id="icon-e" d="M54.8560384,27.8385417 L50.3951823,27.8385417 L49.7560221,26.1341146 C49.0079753,24.1392415 47.6869303,22.4434408 45.9358724,21.2298991 C44.1848145,20.0163574 42.1330566,19.375 40.0026042,19.375 L29.9973958,19.375 C27.866862,19.375 25.8151855,20.0164388 24.0641276,21.2298991 C22.3129883,22.4434408 20.9920247,24.1392415 20.2439779,26.1341146 L19.6048177,27.8385417 L15.1439616,27.8385417 C14.4773763,27.8385417 14.0067546,28.4915365 14.2175293,29.1239421 L14.868571,31.0770671 C15.0015005,31.4758244 15.3746728,31.7447878 15.7950033,31.7447917 L18.139974,31.7447917 L18.1357422,31.7561849 C16.5447591,32.6475423 15.46875,34.3487142 15.46875,36.3020833 L15.46875,40.2083333 C15.46875,41.5287272 15.9610189,42.7334798 16.7708333,43.6514486 L16.7708333,48.671875 C16.7708333,49.7505697 17.6452637,50.625 18.7239583,50.625 L22.6302083,50.625 C23.708903,50.625 24.5833333,49.7505697 24.5833333,48.671875 L24.5833333,45.4166667 L45.4166667,45.4166667 L45.4166667,48.671875 C45.4166667,49.7505697 46.291097,50.625 47.3697917,50.625 L51.2760417,50.625 C52.3547363,50.625 53.2291667,49.7505697 53.2291667,48.671875 L53.2291667,43.6514486 C54.0389811,42.7333984 54.53125,41.5286458 54.53125,40.2083333 L54.53125,36.3020833 C54.53125,34.3487142 53.4552409,32.6475423 51.8642578,31.7561849 L51.860026,31.7447917 L54.2049967,31.7447917 C54.6253272,31.7447878 54.9984995,31.4758244 55.131429,31.0770671 L55.7824707,29.1239421 C55.9932454,28.4915365 55.5226237,27.8385417 54.8560384,27.8385417 Z M25.1206868,27.9628906 C25.8787435,25.9414876 27.8385417,24.5833333 29.9973958,24.5833333 L40.0026042,24.5833333 C42.1614583,24.5833333 44.1212565,25.9414876 44.8793132,27.9628906 L46.0533854,31.09375 L23.9466146,31.09375 L25.1206868,27.9628906 Z M21.328125,40.859375 C19.8898926,40.859375 18.7239583,39.6934408 18.7239583,38.2552083 C18.7239583,36.8169759 19.8898926,35.6510417 21.328125,35.6510417 C22.7663574,35.6510417 25.234375,38.1190592 25.234375,39.5572917 C25.234375,40.9955241 22.7663574,40.859375 21.328125,40.859375 Z M48.671875,40.859375 C47.2336426,40.859375 44.765625,40.9955241 44.765625,39.5572917 C44.765625,38.1190592 47.2336426,35.6510417 48.671875,35.6510417 C50.1101074,35.6510417 51.2760417,36.8169759 51.2760417,38.2552083 C51.2760417,39.6934408 50.1101074,40.859375 48.671875,40.859375 Z"/>
</defs>
<g fill="none" fill-rule="evenodd">
<mask id="icon-b" fill="#fff">
<use xlink:href="#icon-a"/>
</mask>
<g mask="url(#icon-b)">
<rect width="70" height="70" fill="url(#icon-c)"/>
<path fill="#FFF" fill-opacity=".383" d="M4,1.8 L65,1.8 C67.6666667,1.8 69.3333333,1.13333333 70,-0.2 C70,2.46666667 70,3.46666667 70,2.8 L1.10547097e-14,2.8 C-1.65952376e-14,3.46666667 -2.9161925e-14,2.46666667 -2.66453526e-14,-0.2 C0.666666667,1.13333333 2,1.8 4,1.8 Z" transform="matrix(1 0 0 -1 0 2.8)"/>
<path fill="#393939" d="M4,48 C2,48 -7.05642142e-15,47.8509317 4.59701721e-17,43.826087 L0,18.0539143 L14.3290638,6.33400231 L16.5273341,6.02061955 L23.2330679,0 L44,0 L53,13.5652174 L53,27.5773673 L37.5658729,48 L4,48 Z" opacity=".324" transform="translate(0 22)"/>
<path fill="#000" fill-opacity=".383" d="M4,4 L65,4 C67.6666667,4 69.3333333,3 70,1 C70,3.66666667 70,5 70,5 L1.77635684e-15,5 C1.77635684e-15,5 1.77635684e-15,3.66666667 1.77635684e-15,1 C0.666666667,3 2,4 4,4 Z" transform="translate(0 65)"/>
<use fill="#000" fill-rule="nonzero" opacity=".3" xlink:href="#icon-d"/>
<use fill="#FFF" fill-rule="nonzero" xlink:href="#icon-e"/>
</g>
</g>
</svg>
<svg width="50" height="50" xmlns="http://www.w3.org/2000/svg"><path d="M30 25a5 5 0 1 1-10 0 5 5 0 0 1 10 0Z" fill="var(--o-icons-teal-pure, #00CEB3)"/><path d="M30 25a5 5 0 1 1-10 0 5 5 0 0 1 10 0Z" fill="url(#o_icon_fleet__a)" fill-opacity=".2"/><path fill-rule="evenodd" clip-rule="evenodd" d="M50 25c0 13.807-11.193 25-25 25S0 38.807 0 25 11.193 0 25 0s25 11.193 25 25ZM19.577 43.215C20.696 40.136 22 35.568 22 31h6c0 4.568 1.304 9.136 2.423 12.215a19.042 19.042 0 0 0 12.792-12.792C40.136 29.304 35.568 28 31 28v-6c4.568 0 9.136-1.304 12.215-2.423C40.88 11.726 33.609 6 25 6S9.12 11.726 6.785 19.577C9.864 20.696 14.432 22 19 22v6c-4.568 0-9.136 1.304-12.215 2.423a19.042 19.042 0 0 0 12.792 12.792Z" fill="var(--o-icons-purple-pure, #93407D)"/><path fill-rule="evenodd" clip-rule="evenodd" d="M50 25c0 13.807-11.193 25-25 25S0 38.807 0 25 11.193 0 25 0s25 11.193 25 25ZM19.577 43.215C20.696 40.136 22 35.568 22 31h6c0 4.568 1.304 9.136 2.423 12.215a19.042 19.042 0 0 0 12.792-12.792C40.136 29.304 35.568 28 31 28v-6c4.568 0 9.136-1.304 12.215-2.423C40.88 11.726 33.609 6 25 6S9.12 11.726 6.785 19.577C9.864 20.696 14.432 22 19 22v6c-4.568 0-9.136 1.304-12.215 2.423a19.042 19.042 0 0 0 12.792 12.792Z" fill="url(#o_icon_fleet__b)" fill-opacity=".2"/><path fill-rule="evenodd" clip-rule="evenodd" d="M25 34a9 9 0 1 0 0-18 9 9 0 0 0 0 18Zm0-4a5 5 0 1 0 0-10 5 5 0 0 0 0 10Z" fill="var(--o-icons-purple-purple, #55103D)"/><path fill-rule="evenodd" clip-rule="evenodd" d="M25 34a9 9 0 1 0 0-18 9 9 0 0 0 0 18Zm0-4a5 5 0 1 0 0-10 5 5 0 0 0 0 10Z" fill="url(#o_icon_fleet__c)" fill-opacity=".3"/><defs><linearGradient id="o_icon_fleet__a" x1="20" y1="20" x2="31.765" y2="22.941" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="o_icon_fleet__b" x1="0" y1="0" x2="58.824" y2="14.706" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="o_icon_fleet__c" x1="16" y1="16" x2="37.176" y2="21.294" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient></defs></svg>

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

@@ -15,7 +15,7 @@
</header>
<sheet>
<field name="active" invisible="1"/>
<widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<widget name="web_ribbon" title="Archived" bg_color="text-bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<field name="currency_id" invisible="1"/>
<div class="oe_title">
<h1><field name="name"/></h1>
@@ -230,7 +230,7 @@
<field name="state" widget="statusbar" options="{'clickable': '1'}"/>
</header>
<sheet>
<widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<widget name="web_ribbon" title="Archived" bg_color="text-bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<group col="2">
<group>
<field name="description" />
@@ -6,7 +6,7 @@
<field name="arch" type="xml">
<form string="Model">
<sheet>
<widget name="web_ribbon" text="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<widget name="web_ribbon" text="Archived" bg_color="text-bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<div class="oe_button_box" name="button_box">
<button name="action_model_vehicle" type="object" icon="fa-car" class="oe_stat_button"
attrs="{'invisible': [('vehicle_count', '=', 0)]}">
+1 -1
View File
@@ -71,7 +71,7 @@
<field name="odometer_count" widget="statinfo" string="Odometer"/>
</button>
</div>
<widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<widget name="web_ribbon" title="Archived" bg_color="text-bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<field name="image_128" widget='image' class="oe_avatar"/>
<div class="oe_title">
<label for="model_id"/>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

@@ -1,22 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="70" height="70" viewBox="0 0 70 70">
<defs>
<path id="icon-a" d="M4,5.35309892e-14 C36.4160122,9.87060235e-15 58.0836068,-3.97961823e-14 65,5.07020818e-14 C69,6.733808e-14 70,1 70,5 C70,43.0488877 70,62.4235458 70,65 C70,69 69,70 65,70 C61,70 9,70 4,70 C1,70 7.10542736e-15,69 7.10542736e-15,65 C7.25721566e-15,62.4676575 3.83358709e-14,41.8005206 3.60818146e-14,5 C-1.13686838e-13,1 1,5.75716207e-14 4,5.35309892e-14 Z"/>
<linearGradient id="icon-c" x1="100%" x2="0%" y1="0%" y2="100%">
<stop offset="0%" stop-color="#7CC098"/>
<stop offset="100%" stop-color="#5F8A71"/>
</linearGradient>
</defs>
<g fill="none" fill-rule="evenodd">
<mask id="icon-b" fill="#fff">
<use xlink:href="#icon-a"/>
</mask>
<g mask="url(#icon-b)">
<rect width="70" height="70" fill="url(#icon-c)"/>
<path fill="#FFF" fill-opacity=".383" d="M4,1.8 L65,1.8 C67.6666667,1.8 69.3333333,1.13333333 70,-0.2 C70,2.46666667 70,3.46666667 70,2.8 L1.10547097e-14,2.8 C-1.65952376e-14,3.46666667 -2.9161925e-14,2.46666667 -2.66453526e-14,-0.2 C0.666666667,1.13333333 2,1.8 4,1.8 Z" transform="matrix(1 0 0 -1 0 2.8)"/>
<path fill="#393939" d="M4,50 C2,50 -7.10542736e-15,49.8542274 0,45.9183673 L2.12440903e-16,22.80445 L20,0 L50,0 L52.6478104,5.68199944 L41.6482009,31.5743024 L43.0774821,32.5463035 L33.6110344,50 L4,50 Z" opacity=".324" transform="translate(0 19)"/>
<path fill="#000" fill-opacity=".383" d="M4,4 L65,4 C67.6666667,4 69.3333333,3 70,1 C70,3.66666667 70,5 70,5 L1.77635684e-15,5 C1.77635684e-15,5 1.77635684e-15,3.66666667 1.77635684e-15,1 C0.666666667,3 2,4 4,4 Z" transform="translate(0 65)"/>
<path fill="#000" fill-rule="nonzero" d="M51.4715595,21.2569497 C50.3159332,20.3969451 48.6924841,20.2231449 46.6336479,20.7285969 C46.6324003,20.2243717 46.6249152,19.7692195 46.6132716,19.3884947 C46.6066181,19.1717555 46.4265583,19 46.2065776,19 L24.7936,19 C24.5736193,19 24.3935595,19.1717555 24.3869061,19.3880858 C24.3752625,19.7688106 24.3677773,20.2239628 24.3669456,20.727779 C22.3076936,20.2227359 20.6846603,20.3961272 19.5282023,21.2561318 C18.3235066,22.1525322 17.8041194,23.7052842 18.066516,25.6281284 C18.6299826,29.7592583 22.681536,35.3842525 28.5931529,38.1008528 C29.5911749,39.4793955 30.8245637,40.6395634 32.3357354,41.4615364 L32.3357354,41.7150803 C31.7706054,41.9665795 31.3734758,42.5243761 31.3734758,43.1717309 L31.3734758,43.2175324 C31.3734758,43.9070082 31.8246649,44.491795 32.4488445,44.716304 L32.4488445,45.4106872 C32.4488445,45.4106872 32.4488445,45.4106872 32.4488445,45.4110961 C31.7668628,46.7278887 30.6727812,48.4053678 29.1046392,49.5827112 C28.9661636,49.6869914 28.9104407,49.8661079 28.9661636,50.0288667 C29.0218865,50.1916256 29.1769958,50.300813 29.3516496,50.300813 L41.6489439,50.300813 C41.8231819,50.300813 41.9778753,50.1912166 42.034014,50.0288667 C42.0901528,49.8665168 42.034014,49.6869914 41.8955385,49.5827112 C40.3290598,48.4070036 39.2349782,46.7270708 38.551749,45.4086425 L38.551749,44.716304 C39.1759286,44.491795 39.6271177,43.9070082 39.6271177,43.2175324 L39.6271177,43.1717309 C39.6271177,42.524785 39.2299881,41.9673974 38.665274,41.7154892 L38.665274,41.4615364 C40.1768614,40.6395634 41.411082,39.4789866 42.409104,38.1000349 C48.3198892,35.3826168 52.3701951,29.7584404 52.9336617,25.6281284 C53.1956424,23.7052842 52.6762552,22.1529411 51.4715595,21.2569497 Z M20.5665611,25.2989303 C20.4879668,24.7206866 20.4459667,23.6844281 21.0501859,23.2345922 C21.644009,22.792935 22.8632592,22.8362829 24.4301537,23.3257862 C24.5848471,26.3998016 25.0688877,30.337502 26.3846134,33.8666696 C23.1048636,31.3455435 20.920443,27.8940748 20.5665611,25.2989303 Z M50.4336166,25.2985213 C50.0793188,27.893257 47.8965615,31.3439077 44.6176434,33.8646249 C45.9325374,30.3358662 46.4165781,26.3989837 46.5704398,23.3253772 C48.1373343,22.8362829 49.3557528,22.792935 49.9495759,23.2350011 C50.5542109,23.6844281 50.5126267,24.7206866 50.4336166,25.2985213 Z M42.9997627,51.2357724 C43.2067373,51.2357724 43.3746167,51.3477838 43.375,51.4861358 L43.375,53.7496365 C43.375,53.8879886 43.2071206,54 43.000146,54 L28.0002373,54 C27.7928794,54 27.625,53.8879886 27.625,53.7496365 L27.625,51.4861358 C27.625,51.3477838 27.7928794,51.2357724 28.0002373,51.2357724 L42.9997627,51.2357724 Z" opacity=".3"/>
<path fill="#FFF" fill-rule="nonzero" d="M51.4715595,19.2569497 C50.3159332,18.3969451 48.6924841,18.2231449 46.6336479,18.7285969 C46.6324003,18.2243717 46.6249152,17.7692195 46.6132716,17.3884947 C46.6066181,17.1717555 46.4265583,17 46.2065776,17 L24.7936,17 C24.5736193,17 24.3935595,17.1717555 24.3869061,17.3880858 C24.3752625,17.7688106 24.3677773,18.2239628 24.3669456,18.727779 C22.3076936,18.2227359 20.6846603,18.3961272 19.5282023,19.2561318 C18.3235066,20.1525322 17.8041194,21.7052842 18.066516,23.6281284 C18.6299826,27.7592583 22.681536,33.3842525 28.5931529,36.1008528 C29.5911749,37.4793955 30.8245637,38.6395634 32.3357354,39.4615364 L32.3357354,39.7150803 C31.7706054,39.9665795 31.3734758,40.5243761 31.3734758,41.1717309 C31.3734758,41.9070082 31.8246649,42.491795 32.4488445,42.716304 L32.4488445,43.4106872 C31.7668628,44.7278887 30.6727812,46.4053678 29.1046392,47.5827112 C28.9661636,47.6869914 28.9104407,47.8661079 28.9661636,48.0288667 C29.0218865,48.1916256 29.1769958,48.300813 29.3516496,48.300813 L41.6489439,48.300813 C41.8231819,48.300813 41.9778753,48.1912166 42.034014,48.0288667 C42.0901528,47.8665168 42.034014,47.6869914 41.8955385,47.5827112 C40.3290598,46.4070036 39.2349782,44.7270708 38.551749,43.4086425 L38.551749,42.716304 C39.1759286,42.491795 39.6271177,41.9070082 39.6271177,41.2175324 C39.6271177,40.524785 39.2299881,39.9673974 38.665274,39.7154892 L38.665274,39.4615364 C40.1768614,38.6395634 41.411082,37.4789866 42.409104,36.1000349 C48.3198892,33.3826168 52.3701951,27.7584404 52.9336617,23.6281284 C53.1956424,21.7052842 52.6762552,20.1529411 51.4715595,19.2569497 Z M20.5665611,23.2989303 C20.4879668,22.7206866 20.4459667,21.6844281 21.0501859,21.2345922 C21.644009,20.792935 22.8632592,20.8362829 24.4301537,21.3257862 C24.5848471,24.3998016 25.0688877,28.337502 26.3846134,31.8666696 C23.1048636,29.3455435 20.920443,25.8940748 20.5665611,23.2989303 Z M50.4336166,23.2985213 C50.0793188,25.893257 47.8965615,29.3439077 44.6176434,31.8646249 C45.9325374,28.3358662 46.4165781,24.3989837 46.5704398,21.3253772 C48.1373343,20.8362829 49.3557528,20.792935 49.9495759,21.2350011 C50.5542109,21.6844281 50.5126267,22.7206866 50.4336166,23.2985213 Z M42.9997627,49.2357724 C43.2067373,49.2357724 43.3746167,49.3477838 43.375,49.4861358 L43.375,51.7496365 C43.375,51.8879886 43.2071206,52 43.000146,52 L28.0002373,52 C27.7928794,52 27.625,51.8879886 27.625,51.7496365 L27.625,49.4861358 C27.625,49.3477838 27.7928794,49.2357724 28.0002373,49.2357724 L42.9997627,49.2357724 Z"/>
</g>
</g>
</svg>
<svg width="50" height="50" xmlns="http://www.w3.org/2000/svg"><path d="M42 33c0 9.389-7.611 17-17 17S8 42.39 8 33s7.611-17 17-17 17 7.611 17 17Z" fill="var(--o-icons-yellow-pure, #FBB130)"/><path d="M42 33c0 9.389-7.611 17-17 17S8 42.39 8 33s7.611-17 17-17 17 7.611 17 17Z" fill="url(#o_icon_gamification__a)" fill-opacity=".2"/><path d="M33.496 18.272 25 33l-8.497-14.728A16.922 16.922 0 0 1 25 16c3.095 0 5.997.827 8.496 2.272Z" fill="var(--o-icons-yellow-yellow, #F77B09)"/><path d="M33.496 18.272 25 33l-8.497-14.728A16.922 16.922 0 0 1 25 16c3.095 0 5.997.827 8.496 2.272Z" fill="url(#o_icon_gamification__b)" fill-opacity=".2"/><path d="M8 33c0 9.389 7.611 17 17 17V16c-9.389 0-17 7.611-17 17Z" fill="var(--o-icons-yellow-yellow, #F77B09)"/><path d="M8 33c0 9.389 7.611 17 17 17V16c-9.389 0-17 7.611-17 17Z" fill="url(#o_icon_gamification__c)" fill-opacity=".2"/><path d="M16.62 0H25v16c-3.095 0-5.997.827-8.497 2.272L11.206 9.09a4 4 0 0 1 .08-4.131l1.95-3.092A4 4 0 0 1 16.618 0Z" fill="var(--o-icons-purple-red, #911E3D)"/><path d="M16.62 0H25v16c-3.095 0-5.997.827-8.497 2.272L11.206 9.09a4 4 0 0 1 .08-4.131l1.95-3.092A4 4 0 0 1 16.618 0Z" fill="url(#o_icon_gamification__d)" fill-opacity=".2"/><path d="M25 16c-3.096 0-5.997.827-8.497 2.272L25 33V16Z" fill="var(--o-icons-yellow-pure, #FBB130)"/><path d="M25 16c-3.096 0-5.997.827-8.497 2.272L25 33V16Z" fill="url(#o_icon_gamification__e)" fill-opacity=".2"/><path d="M25 16c3.095 0 5.997.827 8.496 2.272l5.298-9.182a4 4 0 0 0-.08-4.131l-1.949-3.092A4 4 0 0 0 33.381 0H25v16Z" fill="var(--o-icons-purple-pure, #93407D)"/><path d="M25 16c3.095 0 5.997.827 8.496 2.272l5.298-9.182a4 4 0 0 0-.08-4.131l-1.949-3.092A4 4 0 0 0 33.381 0H25v16Z" fill="url(#o_icon_gamification__f)" fill-opacity=".2"/><defs><linearGradient id="o_icon_gamification__a" x1="8" y1="16" x2="48" y2="26" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="o_icon_gamification__b" x1="16.503" y1="16" x2="36.496" y2="20.996" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="o_icon_gamification__c" x1="8" y1="16" x2="28.923" y2="18.615" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="o_icon_gamification__d" x1="10.671" y1="0" x2="27.92" y2="3.382" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="o_icon_gamification__e" x1="16.503" y1="16" x2="26.96" y2="17.307" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="o_icon_gamification__f" x1="25" y1="0" x2="42.249" y2="3.382" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient></defs></svg>

Before

Width:  |  Height:  |  Size: 6.9 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

@@ -149,7 +149,7 @@
<em t-out="record.description.value"/>
<div>
<t t-foreach="record.unique_owner_ids.raw_value.slice(0,11)" t-as="owner" t-key="owner">
<img class="oe_kanban_avatar o_image_24_cover rounded-circle" t-att-src="kanban_image('res.users', 'avatar_128', owner)" t-att-data-member_id="owner" alt="Owner"/>
<img class="oe_kanban_avatar o_avatar rounded" t-att-src="kanban_image('res.users', 'avatar_128', owner)" t-att-data-member_id="owner" alt="Owner"/>
</t>
</div>
</div>
@@ -39,8 +39,7 @@
icon="fa-gift"
attrs="{'invisible': [('state','=','draft')]}">
<div class="o_field_widget o_stat_info">
<span class="o_stat_text">Related</span>
<span class="o_stat_text">Goals</span>
<span class="o_stat_text">Related Goals</span>
</div>
</button>
</div>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

After

Width:  |  Height:  |  Size: 763 B

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

@@ -1,7 +1,4 @@
.o_calendar_sidebar {
.bg-primary {
background-color: $o-enterprise-primary-color;
}
.o_google_sync_button_configured {
color: white;
height: 2em;
@@ -98,7 +98,7 @@ QUnit.module('Google Calendar', {
}, function () {
QUnit.test('sync google calendar', async function (assert) {
assert.expect(11);
assert.expect(13);
let id = 7;
await makeView({
@@ -136,8 +136,11 @@ QUnit.module('Google Calendar', {
// sync_data was called a first time without filter, event from google calendar was created twice
assert.containsN(target, '.fc-event-container', 4, "should display 4 events on the month");
await click(target.querySelector('.o_calendar_button_next'));
await click(target.querySelector('.o_calendar_button_prev'));
await click(target.querySelector('.ui-datepicker-next'));
await click(target.querySelector('.ui-datepicker-calendar > tbody > tr:nth-child(2) > td:nth-child(4) > a'));
await click(target.querySelector('.o_view_scale_selector .dropdown-toggle'));
await click(target.querySelector('.o_scale_button_month'));
await click(target.querySelector('.o_calendar_button_today'));
assert.verifySteps([
'/google_calendar/sync_data',
@@ -148,8 +151,10 @@ QUnit.module('Google Calendar', {
'/web/dataset/call_kw/calendar.event/search_read',
'/google_calendar/sync_data',
'/web/dataset/call_kw/calendar.event/search_read',
"/google_calendar/sync_data",
"/web/dataset/call_kw/calendar.event/search_read",
], 'should do a search_read before and after the call to sync_data');
assert.containsN(target, '.fc-event-container', 6, "should now display 6 events on the month");
assert.containsN(target, '.fc-event-container', 7, "should now display 7 events on the month");
});
});
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

@@ -1 +1 @@
<?xml version="1.0" ?><svg height="48px" viewBox="0 0 48 48" width="48px" xmlns="http://www.w3.org/2000/svg"><path d="M45,16.2l-5,2.75l-5,4.75L35,40h7c1.657,0,3-1.343,3-3V16.2z" fill="#4caf50"/><path d="M3,16.2l3.614,1.71L13,23.7V40H6c-1.657,0-3-1.343-3-3V16.2z" fill="#1e88e5"/><polygon fill="#e53935" points="35,11.2 24,19.45 13,11.2 12,17 13,23.7 24,31.95 35,23.7 36,17"/><path d="M3,12.298V16.2l10,7.5V11.2L9.876,8.859C9.132,8.301,8.228,8,7.298,8h0C4.924,8,3,9.924,3,12.298z" fill="#c62828"/><path d="M45,12.298V16.2l-10,7.5V11.2l3.124-2.341C38.868,8.301,39.772,8,40.702,8h0 C43.076,8,45,9.924,45,12.298z" fill="#fbc02d"/></svg>
<svg width="50" height="50" xmlns="http://www.w3.org/2000/svg"><path d="M6 42.009h7V24.494L3 16.767v22.151c0 1.71 1.345 3.091 3 3.091Z" fill="#4285F4"/><path d="M37 42.009h7c1.66 0 3-1.386 3-3.09V16.766l-10 7.727" fill="#34A853"/><path d="M37 11.1v13.394l10-7.728v-4.12c0-3.823-4.235-6.002-7.2-3.71" fill="#FBBC04"/><path d="M13 24.494V11.1l12 9.272L37 11.1v13.394l-12 9.272" fill="#EA4335"/><path d="M3 12.645v4.121l10 7.728V11.1l-2.8-2.164C7.23 6.644 3 8.823 3 12.646Z" fill="#C5221F"/></svg>

Before

Width:  |  Height:  |  Size: 632 B

After

Width:  |  Height:  |  Size: 495 B

@@ -18,7 +18,7 @@
<button type="object"
name="open_google_gmail_uri" class="btn-link px-0"
attrs="{'invisible': ['|', '|', ('google_gmail_uri', '=', False), ('server_type', '!=', 'gmail'), ('google_gmail_refresh_token', '!=', False)]}">
<i class="fa fa-arrow-right"/>
<i class="oi oi-arrow-right"/>
Connect your Gmail account
</button>
<button type="object"
@@ -27,7 +27,7 @@
<i class="fa fa-cog" title="Edit Settings"/>
</button>
<button class="alert alert-warning d-block mt-2 text-start"
icon="fa-arrow-right" type="action" role="alert"
icon="oi-arrow-right" type="action" role="alert"
name="%(base.res_config_setting_act_window)d"
attrs="{'invisible': ['|', ('server_type', '!=', 'gmail'), ('google_gmail_uri', '!=', False)]}">
Setup your Gmail API credentials in the general settings to link a Gmail account.
@@ -17,7 +17,7 @@
<button type="object"
name="open_google_gmail_uri" class="btn-link px-0"
attrs="{'invisible': ['|', '|', ('google_gmail_uri', '=', False), ('smtp_authentication', '!=', 'gmail'), ('google_gmail_refresh_token', '!=', False)]}">
<i class="fa fa-arrow-right"/>
<i class="oi oi-arrow-right"/>
Connect your Gmail account
</button>
<button type="object"
@@ -26,7 +26,7 @@
<i class="fa fa-cog" title="Edit Settings"/>
</button>
<button class="alert alert-warning d-block mt-2 text-start"
icon="fa-arrow-right" type="action" role="alert"
icon="oi-arrow-right" type="action" role="alert"
name="%(base.res_config_setting_act_window)d"
attrs="{'invisible': ['|', ('smtp_authentication', '!=', 'gmail'), ('google_gmail_uri', '!=', False)]}">
Setup your Gmail API credentials in the general settings to link a Gmail account.
@@ -24,7 +24,7 @@
</div>
<div>
<a href="https://www.google.com/recaptcha/admin/create" class="oe_link" target="_blank">
<i class="fa fa-arrow-right"/> Generate reCAPTCHA v3 keys
<i class="oi oi-arrow-right"/> Generate reCAPTCHA v3 keys
</a>
</div>
</div>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

+1 -24
View File
@@ -1,24 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="70" height="70" viewBox="0 0 70 70">
<defs>
<path id="icon-a" d="M4,5.35309892e-14 C36.4160122,9.87060235e-15 58.0836068,-3.97961823e-14 65,5.07020818e-14 C69,6.733808e-14 70,1 70,5 C70,43.0488877 70,62.4235458 70,65 C70,69 69,70 65,70 C61,70 9,70 4,70 C1,70 7.10542736e-15,69 7.10542736e-15,65 C7.25721566e-15,62.4676575 3.83358709e-14,41.8005206 3.60818146e-14,5 C-1.13686838e-13,1 1,5.75716207e-14 4,5.35309892e-14 Z"/>
<linearGradient id="icon-c" x1="100%" x2="0%" y1="0%" y2="100%">
<stop offset="0%" stop-color="#269396"/>
<stop offset="100%" stop-color="#218689"/>
</linearGradient>
<path id="icon-d" d="M35.5,22.75 C39.6529297,22.75 43.0195312,26.1166016 43.0195312,30.2695312 C43.0195312,34.4224609 39.6529297,37.7890625 35.5,37.7890625 C31.3470703,37.7890625 27.9804687,34.4224609 27.9804687,30.2695312 C27.9804687,26.1166016 31.3470703,22.75 35.5,22.75 Z M43.6256055,38.3165755 L40.7623112,37.6007161 C37.2411654,40.1333659 32.9730794,39.5681836 30.2377604,37.6007161 L27.3744661,38.3165755 C25.0790039,38.8904232 23.46875,40.9527799 23.46875,43.3188542 L23.46875,47.671875 C23.46875,49.0957161 24.6230339,50.25 26.046875,50.25 L44.953125,50.25 C46.3769661,50.25 47.53125,49.0957161 47.53125,47.671875 L47.53125,43.3188542 C47.53125,40.9527799 45.9209961,38.8904232 43.6256055,38.3165755 Z M50.3958333,39.6510417 C53.1644531,39.6510417 55.4088542,37.4066406 55.4088542,34.6380208 C55.4088542,31.869401 53.1644531,29.625 50.3958333,29.625 C47.6272135,29.625 45.3828125,31.869401 45.3828125,34.6380208 C45.3828125,37.4066406 47.6272135,39.6510417 50.3958333,39.6510417 Z M20.6041667,39.6510417 C23.3727865,39.6510417 25.6171875,37.4066406 25.6171875,34.6380208 C25.6171875,31.869401 23.3727865,29.625 20.6041667,29.625 C17.8355469,29.625 15.5911458,31.869401 15.5911458,34.6380208 C15.5911458,37.4066406 17.8355469,39.6510417 20.6041667,39.6510417 Z M22.3229167,47.671875 L22.3229167,43.3188542 C22.3229167,42.1335612 22.6518424,41.0125781 23.2326367,40.0533008 C21.0850586,41.1074674 18.6968555,40.6769206 17.0959831,39.5255013 L15.1870964,40.0027409 C13.6568359,40.3852344 12.5833333,41.7602344 12.5833333,43.3375456 L12.5833333,46.2395833 C12.5833333,47.1888346 13.352832,47.9583333 14.3020833,47.9583333 L22.3350195,47.9583333 C22.3273388,47.8630362 22.3233016,47.7674804 22.3229167,47.671875 Z M55.8129036,40.0026693 L53.9040169,39.5254297 C51.9041797,40.9638802 49.5434049,40.902793 47.7604883,40.0423437 C48.3454362,41.004056 48.6770833,42.1289779 48.6770833,43.3188542 L48.6770833,47.671875 C48.6770833,47.7683398 48.6722135,47.8636589 48.6649805,47.9583333 L56.6979167,47.9583333 C57.647168,47.9583333 58.4166667,47.1888346 58.4166667,46.2395833 L58.4166667,43.3375456 C58.4166667,41.7602344 57.3431641,40.3852344 55.8129036,40.0026693 Z"/>
<path id="icon-e" d="M35.5,20.75 C39.6529297,20.75 43.0195312,24.1166016 43.0195312,28.2695312 C43.0195312,32.4224609 39.6529297,35.7890625 35.5,35.7890625 C31.3470703,35.7890625 27.9804687,32.4224609 27.9804687,28.2695312 C27.9804687,24.1166016 31.3470703,20.75 35.5,20.75 Z M43.6256055,36.3165755 L40.7623112,35.6007161 C37.2411654,38.1333659 32.9730794,37.5681836 30.2377604,35.6007161 L27.3744661,36.3165755 C25.0790039,36.8904232 23.46875,38.9527799 23.46875,41.3188542 L23.46875,45.671875 C23.46875,47.0957161 24.6230339,48.25 26.046875,48.25 L44.953125,48.25 C46.3769661,48.25 47.53125,47.0957161 47.53125,45.671875 L47.53125,41.3188542 C47.53125,38.9527799 45.9209961,36.8904232 43.6256055,36.3165755 Z M50.3958333,37.6510417 C53.1644531,37.6510417 55.4088542,35.4066406 55.4088542,32.6380208 C55.4088542,29.869401 53.1644531,27.625 50.3958333,27.625 C47.6272135,27.625 45.3828125,29.869401 45.3828125,32.6380208 C45.3828125,35.4066406 47.6272135,37.6510417 50.3958333,37.6510417 Z M20.6041667,37.6510417 C23.3727865,37.6510417 25.6171875,35.4066406 25.6171875,32.6380208 C25.6171875,29.869401 23.3727865,27.625 20.6041667,27.625 C17.8355469,27.625 15.5911458,29.869401 15.5911458,32.6380208 C15.5911458,35.4066406 17.8355469,37.6510417 20.6041667,37.6510417 Z M22.3229167,45.671875 L22.3229167,41.3188542 C22.3229167,40.1335612 22.6518424,39.0125781 23.2326367,38.0533008 C21.0850586,39.1074674 18.6968555,38.6769206 17.0959831,37.5255013 L15.1870964,38.0027409 C13.6568359,38.3852344 12.5833333,39.7602344 12.5833333,41.3375456 L12.5833333,44.2395833 C12.5833333,45.1888346 13.352832,45.9583333 14.3020833,45.9583333 L22.3350195,45.9583333 C22.3273388,45.8630362 22.3233016,45.7674804 22.3229167,45.671875 Z M55.8129036,38.0026693 L53.9040169,37.5254297 C51.9041797,38.9638802 49.5434049,38.902793 47.7604883,38.0423437 C48.3454362,39.004056 48.6770833,40.1289779 48.6770833,41.3188542 L48.6770833,45.671875 C48.6770833,45.7683398 48.6722135,45.8636589 48.6649805,45.9583333 L56.6979167,45.9583333 C57.647168,45.9583333 58.4166667,45.1888346 58.4166667,44.2395833 L58.4166667,41.3375456 C58.4166667,39.7602344 57.3431641,38.3852344 55.8129036,38.0026693 Z"/>
</defs>
<g fill="none" fill-rule="evenodd">
<mask id="icon-b" fill="#fff">
<use xlink:href="#icon-a"/>
</mask>
<g mask="url(#icon-b)">
<rect width="70" height="70" fill="url(#icon-c)"/>
<path fill="#FFF" fill-opacity=".383" d="M4,1.8 L65,1.8 C67.6666667,1.8 69.3333333,1.13333333 70,-0.2 C70,2.46666667 70,3.46666667 70,2.8 L1.10547097e-14,2.8 C-1.65952376e-14,3.46666667 -2.9161925e-14,2.46666667 -2.66453526e-14,-0.2 C0.666666667,1.13333333 2,1.8 4,1.8 Z" transform="matrix(1 0 0 -1 0 2.8)"/>
<path fill="#393939" d="M44,47 L4,47 C2,47 -7.10542736e-15,46.8509317 0,42.826087 L1.81527147e-16,22.6291049 L17.2090667,6.04664397 L19.583071,9.5209307 L30.2767729,0.11143939 L40.9146315,10.270152 L46.6446282,6.41116033 L55.3045682,10.7749724 L52.3812234,16.1277957 L58.2417324,21.9036543 L44,47 Z" opacity=".324" transform="translate(0 23)"/>
<path fill="#000" fill-opacity=".383" d="M4,4 L65,4 C67.6666667,4 69.3333333,3 70,1 C70,3.66666667 70,5 70,5 L1.77635684e-15,5 C1.77635684e-15,5 1.77635684e-15,3.66666667 1.77635684e-15,1 C0.666666667,3 2,4 4,4 Z" transform="translate(0 65)"/>
<use fill="#000" fill-rule="nonzero" opacity=".3" xlink:href="#icon-d"/>
<use fill="#FFF" fill-rule="nonzero" xlink:href="#icon-e"/>
</g>
</g>
</svg>
<svg width="50" height="50" xmlns="http://www.w3.org/2000/svg"><path d="M34 17a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z" fill="var(--o-icons-purple-pure, #93407D)"/><path d="M34 17a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z" fill="url(#o_icon_hr__a)" fill-opacity=".2"/><path d="M12 24a4 4 0 1 1-8 0 4 4 0 0 1 8 0Z" fill="var(--o-icons-yellow-pure, #FBB130)"/><path d="M12 24a4 4 0 1 1-8 0 4 4 0 0 1 8 0Z" fill="url(#o_icon_hr__b)" fill-opacity=".2"/><path d="M46 24a4 4 0 1 1-8 0 4 4 0 0 1 8 0Z" fill="var(--o-icons-teal-pure, #00CEB3)"/><path d="M46 24a4 4 0 1 1-8 0 4 4 0 0 1 8 0Z" fill="url(#o_icon_hr__c)" fill-opacity=".2"/><path d="M25 30H4a4 4 0 0 0-4 4v4a4 4 0 0 0 4 4h21V30Z" fill="var(--o-icons-yellow-pure, #FBB130)"/><path d="M25 30H4a4 4 0 0 0-4 4v4a4 4 0 0 0 4 4h21V30Z" fill="url(#o_icon_hr__d)" fill-opacity=".2"/><path d="M46 30H25v12h21a4 4 0 0 0 4-4v-4a4 4 0 0 0-4-4Z" fill="var(--o-icons-teal-pure, #00CEB3)"/><path d="M46 30H25v12h21a4 4 0 0 0 4-4v-4a4 4 0 0 0-4-4Z" fill="url(#o_icon_hr__e)" fill-opacity=".2"/><path d="M12 30h14c6.627 0 12 5.373 12 12H24c-6.627 0-12-5.373-12-12Z" fill="var(--o-icons-purple-pure, #93407D)"/><path d="M12 30h14c6.627 0 12 5.373 12 12H24c-6.627 0-12-5.373-12-12Z" fill="url(#o_icon_hr__f)" fill-opacity=".2"/><defs><linearGradient id="o_icon_hr__a" x1="16" y1="8" x2="37.176" y2="13.294" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="o_icon_hr__b" x1="4" y1="20" x2="13.412" y2="22.353" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="o_icon_hr__c" x1="38" y1="20" x2="47.412" y2="22.353" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="o_icon_hr__d" x1="0" y1="30" x2="24.582" y2="42.803" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="o_icon_hr__e" x1="25" y1="30" x2="49.582" y2="42.803" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="o_icon_hr__f" x1="12" y1="30" x2="37.127" y2="43.611" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient></defs></svg>

Before

Width:  |  Height:  |  Size: 6.3 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

@@ -214,22 +214,22 @@ QUnit.test("many2many_avatar_employee widget in form view", async function (asse
});
assert.containsN(
document.body,
".o_field_many2many_avatar_employee .badge",
".o_field_many2many_avatar_employee .o_tag",
2,
"should have 2 records"
);
assert.strictEqual(
document
.querySelector(".o_field_many2many_avatar_employee .badge img")
.querySelector(".o_field_many2many_avatar_employee .o_tag img")
.getAttribute("data-src"),
`/web/image/hr.employee.public/${employeeId_1}/avatar_128`
);
await dom.click(
document.querySelector(".o_field_many2many_avatar_employee .badge .o_m2m_avatar")
document.querySelector(".o_field_many2many_avatar_employee .o_tag .o_m2m_avatar")
);
await dom.click(
document.querySelectorAll(".o_field_many2many_avatar_employee .badge .o_m2m_avatar")[1]
document.querySelectorAll(".o_field_many2many_avatar_employee .o_tag .o_m2m_avatar")[1]
);
assert.verifySteps([
`read m2x.avatar.employee ${avatarId_1}`,
@@ -413,19 +413,19 @@ QUnit.test(
res_id: avatarId,
views: [[false, "form"]],
});
assert.containsN(document.body, ".o_field_many2many_avatar_employee .badge", 2);
assert.containsN(document.body, ".o_field_many2many_avatar_employee .o_tag", 2);
assert.strictEqual(
document
.querySelector(".o_field_many2many_avatar_employee .badge img")
.querySelector(".o_field_many2many_avatar_employee .o_tag img")
.getAttribute("data-src"),
`/web/image/hr.employee.public/${employeeId_1}/avatar_128`
);
await dom.click(
document.querySelector(".o_field_many2many_avatar_employee .badge .o_m2m_avatar")
document.querySelector(".o_field_many2many_avatar_employee .o_tag .o_m2m_avatar")
);
await dom.click(
document.querySelectorAll(".o_field_many2many_avatar_employee .badge .o_m2m_avatar")[1]
document.querySelectorAll(".o_field_many2many_avatar_employee .o_tag .o_m2m_avatar")[1]
);
assert.verifySteps([
`read m2x.avatar.employee ${employeeId_1}`,
@@ -20,7 +20,7 @@ registry.category("web_tour.tours").add('hr_employee_tour', {
},
{
content: "Open user account menu",
trigger: ".o_user_menu .oe_topbar_name",
trigger: ".o_user_menu .dropdown-toggle",
run: 'click',
}, {
content: "Open My Profile",
+1 -1
View File
@@ -16,7 +16,7 @@
<field string="Plans" name="plans_count" widget="statinfo"/>
</button>
</div>
<widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<widget name="web_ribbon" title="Archived" bg_color="text-bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<field name="active" invisible="1"/>
<group>
<group>
+1 -1
View File
@@ -42,7 +42,7 @@
<div class="oe_button_box" name="button_box">
<!-- Used by other modules-->
</div>
<widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<widget name="web_ribbon" title="Archived" bg_color="text-bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<div class="row justify-content-between position-relative w-100 m-0 mb-2">
<div class="oe_title ps-0 pe-2">
<label for="name" string="Employee Name"/>
+1 -1
View File
@@ -60,7 +60,7 @@
<sheet>
<div name="button_box" class="oe_button_box">
</div>
<widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<widget name="web_ribbon" title="Archived" bg_color="text-bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<field name="avatar_128" invisible="1"/>
<div class="row justify-content-between position-relative w-100 m-0 mb-2">
<div class="oe_title mw-75 ps-0 pe-2">
+1 -1
View File
@@ -11,7 +11,7 @@
<field name="company_id" invisible="1"/>
<sheet>
<div class="oe_button_box" name="button_box"/>
<widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<widget name="web_ribbon" title="Archived" bg_color="text-bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<div class="oe_title">
<label for="name"/>
<h1><field name="name" options="{'line_breaks': False}" widget="text" placeholder="e.g. Sales Manager"/></h1>

Some files were not shown because too many files have changed in this diff Show More