summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandre Kühn <aku@odoo.com>2017-11-24 08:33:01 +0100
committerAlexandre Kühn <alex.e.kuhn@gmail.com>2018-01-18 21:43:29 +0100
commita87d761fdbf345ada5dc93e0a686b08a0f5a0417 (patch)
treed23be6ea90567a7ede9b4dc8c1ab33144835ca80
parent1f1c5f62c7322980ef60650d719d6efe2eeb4e1d (diff)
[IMP] core: menu tip ux/ui improvement
We would like to make the "no item found" screens more appealing. Before this commit, it shows a small help tip in the top-left corner of the screen, just below the "Create" button. With this commit, these help tips have been replaced by onboarding screens, which consist of a picture and some text below, both of which are horizontally centered. The texts have been slightly changed, so that they are shorter and clearer. Considered modules: (A) account, account_asset, account_budget, account_test, account_voucher, analytic (B) barcodes, base, base_automation, board (C) calendar, contacts, crm (D) delivery (E) event (F) fleet (G) gamification, google_drive (H) hr, hr_attendance, hr_contract, hr_expense, hr_gamification, hr_holidays, hr_payroll, hr_recruitment, hr_timesheet (I) im_livechat (L) l10n_fr_sale_closing, link_tracker, lunch (M) mail, maintenance, mass_mailing, membership, mrp (N) note (P) payment, point_of_sale, post_mercury, pos_restaurant, product, project, purchase, purchase_requisition (R) rating, repair, resource (S) sale, sale_timesheet, sales_team, stock, stock_account, stock_landed_costs, stock_picking_batch, survey (U) utm (W) web, website, website_blog, website_customer, website_event_track, website_forum, website_quote, website_sale, website_sale_digital, website_slides
-rw-r--r--addons/account/static/src/less/account_dashboard.less6
-rw-r--r--addons/account/views/account_cash_rounding_view.xml2
-rw-r--r--addons/account/views/account_invoice_view.xml32
-rw-r--r--addons/account/views/account_journal_dashboard_view.xml7
-rw-r--r--addons/account/views/account_payment_view.xml12
-rw-r--r--addons/account/views/account_view.xml74
-rw-r--r--addons/account/views/partner_view.xml5
-rw-r--r--addons/account_asset/report/account_asset_report_views.xml4
-rw-r--r--addons/account_budget/views/account_budget_views.xml4
-rw-r--r--addons/account_test/views/accounting_assert_test_views.xml4
-rw-r--r--addons/account_voucher/views/account_voucher_views.xml8
-rw-r--r--addons/analytic/views/analytic_account_views.xml20
-rw-r--r--addons/barcodes/views/barcodes_view.xml4
-rw-r--r--addons/base_automation/views/base_automation_view.xml4
-rw-r--r--addons/board/static/src/js/dashboard.js7
-rw-r--r--addons/board/static/src/less/dashboard.less8
-rw-r--r--addons/board/static/tests/dashboard_tests.js4
-rw-r--r--addons/board/views/board_views.xml12
-rw-r--r--addons/calendar/views/calendar_views.xml4
-rw-r--r--addons/contacts/views/contact_views.xml8
-rw-r--r--addons/crm/models/crm_lead.py4
-rw-r--r--addons/crm/models/crm_team.py4
-rw-r--r--addons/crm/static/src/js/tour.js2
-rw-r--r--addons/crm/static/tests/sales_team_dashboard_tests.js2
-rw-r--r--addons/crm/views/crm_lead_views.xml48
-rw-r--r--addons/crm/views/crm_stage_views.xml4
-rw-r--r--addons/crm/views/crm_team_views.xml19
-rw-r--r--addons/crm/views/res_partner_views.xml4
-rw-r--r--addons/delivery/models/delivery_carrier.py2
-rw-r--r--addons/delivery/views/delivery_view.xml4
-rw-r--r--addons/event/views/event_views.xml22
-rw-r--r--addons/fleet/views/fleet_board_view.xml14
-rw-r--r--addons/fleet/views/fleet_vehicle_cost_views.xml30
-rw-r--r--addons/fleet/views/fleet_vehicle_model_views.xml8
-rw-r--r--addons/fleet/views/fleet_vehicle_views.xml40
-rw-r--r--addons/gamification/views/badge.xml7
-rw-r--r--addons/gamification/views/challenge.xml13
-rw-r--r--addons/gamification/views/goal.xml14
-rw-r--r--addons/google_drive/views/google_drive_views.xml4
-rw-r--r--addons/hr/views/hr_views.xml25
-rw-r--r--addons/hr_attendance/views/hr_attendance_view.xml13
-rw-r--r--addons/hr_attendance/views/hr_employee_view.xml8
-rw-r--r--addons/hr_contract/views/hr_contract_views.xml4
-rw-r--r--addons/hr_expense/views/hr_expense_views.xml74
-rw-r--r--addons/hr_gamification/views/gamification_views.xml14
-rw-r--r--addons/hr_gamification/views/hr_employee_views.xml6
-rw-r--r--addons/hr_holidays/report/hr_leave_reports.xml2
-rw-r--r--addons/hr_holidays/views/hr_leave_allocation_views.xml4
-rw-r--r--addons/hr_holidays/views/hr_leave_views.xml29
-rw-r--r--addons/hr_payroll/views/hr_salary_rule_views.xml4
-rw-r--r--addons/hr_recruitment/models/hr_recruitment.py2
-rw-r--r--addons/hr_recruitment/views/hr_job_views.xml7
-rw-r--r--addons/hr_recruitment/views/hr_recruitment_views.xml47
-rw-r--r--addons/hr_timesheet/report/hr_timesheet_report_view.xml12
-rw-r--r--addons/hr_timesheet/views/hr_timesheet_views.xml4
-rw-r--r--addons/hr_timesheet/views/project_views.xml4
-rw-r--r--addons/im_livechat/models/mail_channel.py2
-rw-r--r--addons/im_livechat/views/im_livechat_channel_views.xml8
-rw-r--r--addons/im_livechat/views/mail_channel_views.xml6
-rw-r--r--addons/im_livechat/views/rating_views.xml8
-rw-r--r--addons/l10n_fr_sale_closing/views/account_sale_closure.xml2
-rw-r--r--addons/link_tracker/views/link_tracker.xml5
-rw-r--r--addons/lunch/views/lunch_views.xml82
-rw-r--r--addons/mail/models/mail_thread.py20
-rw-r--r--addons/mail/static/src/xml/thread.xml26
-rw-r--r--addons/mail/views/mail_message_views.xml4
-rw-r--r--addons/mail/views/mail_shortcode_views.xml4
-rw-r--r--addons/maintenance/views/maintenance_views.xml70
-rw-r--r--addons/mass_mailing/views/mass_mailing_views.xml93
-rw-r--r--addons/membership/views/partner_views.xml8
-rw-r--r--addons/mrp/models/mrp_bom.py4
-rw-r--r--addons/mrp/models/mrp_production.py7
-rw-r--r--addons/mrp/views/mrp_bom_views.xml9
-rw-r--r--addons/mrp/views/mrp_message_views.xml4
-rw-r--r--addons/mrp/views/mrp_production_views.xml18
-rw-r--r--addons/mrp/views/mrp_routing_views.xml4
-rw-r--r--addons/mrp/views/mrp_unbuild_views.xml12
-rw-r--r--addons/mrp/views/mrp_workcenter_views.xml39
-rw-r--r--addons/mrp/views/mrp_workorder_views.xml40
-rw-r--r--addons/note/views/note_views.xml8
-rw-r--r--addons/payment/views/payment_views.xml18
-rw-r--r--addons/point_of_sale/views/account_journal_view.xml4
-rw-r--r--addons/point_of_sale/views/pos_category_view.xml8
-rw-r--r--addons/point_of_sale/views/pos_config_view.xml4
-rw-r--r--addons/point_of_sale/views/pos_order_view.xml8
-rw-r--r--addons/point_of_sale/views/pos_session_view.xml16
-rw-r--r--addons/point_of_sale/views/product_view.xml9
-rw-r--r--addons/pos_mercury/views/pos_mercury_views.xml4
-rw-r--r--addons/pos_restaurant/views/pos_restaurant_views.xml8
-rw-r--r--addons/product/models/product.py8
-rw-r--r--addons/product/models/product_template.py7
-rw-r--r--addons/product/views/product_pricelist_views.xml12
-rw-r--r--addons/product/views/product_template_views.xml9
-rw-r--r--addons/product/views/product_uom_views.xml8
-rw-r--r--addons/product/views/product_views.xml47
-rw-r--r--addons/project/models/project.py7
-rw-r--r--addons/project/static/src/js/tour.js2
-rw-r--r--addons/project/views/project_views.xml38
-rw-r--r--addons/project/views/rating_views.xml12
-rw-r--r--addons/purchase/views/account_invoice_views.xml13
-rw-r--r--addons/purchase/views/purchase_views.xml47
-rw-r--r--addons/purchase/views/res_partner_views.xml8
-rw-r--r--addons/purchase_requisition/views/purchase_requisition_views.xml4
-rw-r--r--addons/rating/views/rating_view.xml4
-rw-r--r--addons/repair/views/repair_views.xml4
-rw-r--r--addons/resource/views/resource_views.xml2
-rw-r--r--addons/sale/models/sale.py5
-rw-r--r--addons/sale/views/res_partner_views.xml8
-rw-r--r--addons/sale/views/sale_views.xml56
-rw-r--r--addons/sale_timesheet/models/account_invoice.py4
-rw-r--r--addons/sale_timesheet/models/project.py4
-rw-r--r--addons/sales_team/views/crm_team_views.xml8
-rw-r--r--addons/stock/views/product_views.xml4
-rw-r--r--addons/stock/views/stock_incoterms_views.xml4
-rw-r--r--addons/stock/views/stock_inventory_views.xml9
-rw-r--r--addons/stock/views/stock_location_views.xml17
-rw-r--r--addons/stock/views/stock_move_line_views.xml5
-rw-r--r--addons/stock/views/stock_move_views.xml17
-rw-r--r--addons/stock/views/stock_picking_views.xml68
-rw-r--r--addons/stock/views/stock_production_lot_views.xml4
-rw-r--r--addons/stock/views/stock_quant_views.xml13
-rw-r--r--addons/stock/views/stock_scrap_views.xml4
-rw-r--r--addons/stock/views/stock_warehouse_views.xml12
-rw-r--r--addons/stock_account/views/product_views.xml8
-rw-r--r--addons/stock_landed_costs/views/stock_landed_cost_views.xml8
-rw-r--r--addons/stock_picking_batch/views/stock_picking_batch_views.xml4
-rw-r--r--addons/survey/views/survey_views.xml38
-rw-r--r--addons/utm/views/utm.xml8
-rw-r--r--addons/web/static/src/img/empty_folder.svg (renamed from addons/web/static/src/img/empty_state_folder_neutral.svg)0
-rw-r--r--addons/web/static/src/img/neutral_face.svg (renamed from addons/web/static/src/img/empty_state_file_neutral.svg)0
-rw-r--r--addons/web/static/src/img/smiling_face.pngbin0 -> 22680 bytes
-rw-r--r--addons/web/static/src/img/smiling_face.svg (renamed from addons/web/static/src/img/empty_state_file_happy.svg)0
-rw-r--r--addons/web/static/src/js/views/basic/basic_renderer.js2
-rw-r--r--addons/web/static/src/js/views/graph/graph_renderer.js6
-rw-r--r--addons/web/static/src/js/views/kanban/kanban_renderer.js2
-rw-r--r--addons/web/static/src/js/views/list/list_renderer.js4
-rw-r--r--addons/web/static/src/less/kanban_view.less6
-rw-r--r--addons/web/static/src/less/variables.less2
-rw-r--r--addons/web/static/src/less/views.less72
-rw-r--r--addons/web/static/src/less/views_extra.less33
-rw-r--r--addons/web/static/src/xml/base.xml19
-rw-r--r--addons/web/static/tests/views/graph_tests.js6
-rw-r--r--addons/web/static/tests/views/kanban_tests.js14
-rw-r--r--addons/web/static/tests/views/list_tests.js12
-rw-r--r--addons/web/static/tests/views/pivot_tests.js16
-rw-r--r--addons/web/views/webclient_templates.xml1
-rw-r--r--addons/website/data/website_data.xml14
-rw-r--r--addons/website_blog/views/website_blog_views.xml4
-rw-r--r--addons/website_customer/views/res_partner_views.xml12
-rw-r--r--addons/website_event_track/views/event_track_views.xml31
-rw-r--r--addons/website_forum/views/forum.xml10
-rw-r--r--addons/website_quote/views/sale_order_views.xml10
-rw-r--r--addons/website_quote/views/sale_quote_views.xml4
-rw-r--r--addons/website_sale/models/crm_team.py2
-rw-r--r--addons/website_sale/views/product_views.xml11
-rw-r--r--addons/website_sale/views/sale_order_views.xml48
-rw-r--r--addons/website_sale/views/sale_report_views.xml12
-rw-r--r--addons/website_sale_digital/models/product.py4
-rw-r--r--addons/website_slides/views/website_slides_backend.xml15
-rw-r--r--doc/howtos/backend/exercise-basic-action2
-rw-r--r--doc/howtos/backend/exercise-searchview2
-rw-r--r--odoo/addons/base/views/ir_attachment_views.xml4
-rw-r--r--odoo/addons/base/views/ir_module_views.xml7
-rw-r--r--odoo/addons/base/views/ir_ui_view_views.xml2
-rw-r--r--odoo/addons/base/views/res_bank_views.xml8
-rw-r--r--odoo/addons/base/views/res_company_views.xml8
-rw-r--r--odoo/addons/base/views/res_partner_views.xml47
-rw-r--r--odoo/addons/test_main_flows/static/src/js/tour.js8
168 files changed, 1248 insertions, 1047 deletions
diff --git a/addons/account/static/src/less/account_dashboard.less b/addons/account/static/src/less/account_dashboard.less
index 6a2561862d2..3465a1f3f81 100644
--- a/addons/account/static/src/less/account_dashboard.less
+++ b/addons/account/static/src/less/account_dashboard.less
@@ -1,12 +1,16 @@
.o_kanban_view.o_kanban_dashboard.o_account_kanban {
- &:not(.o_kanban_nocontent) .o_account_dashboard_header{
+ &.o_kanban_ungrouped .o_account_dashboard_header {
margin: (0 - @o-kanban-record-margin) (@o-kanban-record-margin - @odoo-horizontal-padding) @o-kanban-record-margin;
}
.o_account_dashboard_header {
.o-flex(1, 0, 100%);
.o-flex-flow(column, nowrap);
+ .o-align-self(flex-start);
+ width: 100%;
+ height: auto; // cancel o_form_view height 100%, which hides the help tip message at the bottom of the screen
+ min-height: 0%; // cancel o_form_view min-height 100%, which hides the help tip message at the bottom of the screen
background-color: @odoo-view-background-color;
.o_form_statusbar {
diff --git a/addons/account/views/account_cash_rounding_view.xml b/addons/account/views/account_cash_rounding_view.xml
index 67fa2e5fc60..44bd5b8d56e 100644
--- a/addons/account/views/account_cash_rounding_view.xml
+++ b/addons/account/views/account_cash_rounding_view.xml
@@ -8,7 +8,7 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">Create the first cash rounding</p>
+ <p class="o_view_nocontent_smiling_face">Create the first cash rounding</p>
</field>
</record>
diff --git a/addons/account/views/account_invoice_view.xml b/addons/account/views/account_invoice_view.xml
index dbb06926d61..7c8e8aafb92 100644
--- a/addons/account/views/account_invoice_view.xml
+++ b/addons/account/views/account_invoice_view.xml
@@ -663,16 +663,10 @@
<field name="context">{'type':'out_invoice', 'journal_type': 'sale'}</field>
<field name="search_view_id" ref="view_account_invoice_filter_inherit_invoices"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a customer invoice.
+ <p class="o_view_nocontent_smiling_face">
+ Create a customer invoice
</p><p>
- Odoo's electronic invoicing allows to ease and fasten the
- collection of customer payments. Your customer receives the
- invoice by email and he can pay online and/or import it
- in his own system.
- </p><p>
- The discussions with your customer are automatically displayed at
- the bottom of each invoice.
+ Create invoices, register payments and keep track of the discussions with your customers.
</p>
</field>
</record>
@@ -704,11 +698,11 @@
<field name="context">{'default_type': 'out_refund', 'type': 'out_refund', 'journal_type': 'sale'}</field>
<field name="search_view_id" ref="view_account_invoice_filter_inherit_credit_notes"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a credit note.
+ <p class="o_view_nocontent_smiling_face">
+ Create a credit note
</p><p>
- Note that the easiest way to create a credit note is to do it directly form
- the customer invoice, to refund it totally or partially.
+ Note that the easiest way to create a credit note is to do it directly
+ from the customer invoice.
</p>
</field>
</record>
@@ -742,10 +736,10 @@
<field name="context">{'default_type': 'in_invoice', 'type': 'in_invoice', 'journal_type': 'purchase'}</field>
<field name="search_view_id" ref="view_account_invoice_filter_inherit_invoices"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to record a new vendor bill.
+ <p class="o_view_nocontent_smiling_face">
+ Record a new vendor bill
</p><p>
- You can control the invoice from your vendor according to
+ You can control the invoice from your vendor based on
what you purchased or received.
</p>
</field>
@@ -778,8 +772,10 @@
<field name="context">{'default_type': 'in_refund', 'type': 'in_refund', 'journal_type': 'purchase'}</field>
<field name="search_view_id" ref="view_account_invoice_filter_inherit_credit_notes"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to record a new vendor credit note.
+ <p class="o_view_nocontent_smiling_face">
+ Create a vendor credit note
+ </p><p>
+ Note that the easiest way to create a vendor credit note it to do it directly from the vendor bill.
</p>
</field>
</record>
diff --git a/addons/account/views/account_journal_dashboard_view.xml b/addons/account/views/account_journal_dashboard_view.xml
index d7e4518ce6f..dfa08fbadce 100644
--- a/addons/account/views/account_journal_dashboard_view.xml
+++ b/addons/account/views/account_journal_dashboard_view.xml
@@ -323,9 +323,10 @@
<field name="context">{'search_default_dashboard':1}</field>
<field name="domain">[('belongs_to_company', '=', True)]</field>
<field name="help" type="html">
- <p>
- This is the accounting dashboard. If you have not yet
- installed a chart of account, please install one first.
+ <p class="o_view_nocontent_neutral_face">
+ This is the accounting dashboard
+ </p><p>
+ If you have not installed a chart of account, please install one first.<br/>
<a type="action" name="%(open_account_charts_modules)d">Browse available countries.</a>
</p>
</field>
diff --git a/addons/account/views/account_payment_view.xml b/addons/account/views/account_payment_view.xml
index 057439e2dc4..b9928cbfeba 100644
--- a/addons/account/views/account_payment_view.xml
+++ b/addons/account/views/account_payment_view.xml
@@ -192,10 +192,10 @@
<field name="domain">[('partner_type', '=', 'customer')]</field>
<field name="view_id" ref="view_account_payment_tree"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to register a payment
+ <p class="o_view_nocontent_smiling_face">
+ Register a payment
</p><p>
- Payments are used to register operations made on bank/cash accounts (send, collect or transfer money) and will create a journal entry upon validation.
+ Payments are used to register liquidity movements. You can process those payments by your own means or by using installed facilities.
</p>
</field>
</record>
@@ -209,10 +209,10 @@
<field name="domain">[('partner_type', '=', 'supplier')]</field>
<field name="view_id" ref="view_account_supplier_payment_tree"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to register a payment
+ <p class="o_view_nocontent_smiling_face">
+ Register a payment
</p><p>
- Payments are used to register operations made on bank/cash accounts (send, collect or transfer money) and will create a journal entry upon validation.
+ Payments are used to register liquidity movements. You can process those payments by your own means or by using installed facilities.
</p>
</field>
</record>
diff --git a/addons/account/views/account_view.xml b/addons/account/views/account_view.xml
index f07d89f6013..0fbf7970d78 100644
--- a/addons/account/views/account_view.xml
+++ b/addons/account/views/account_view.xml
@@ -153,8 +153,8 @@
<field name="search_view_id" ref="view_account_search"/>
<field name="view_id" ref="view_account_list"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add an account.
+ <p class="o_view_nocontent_smiling_face">
+ Add a new account
</p><p>
An account is part of a ledger allowing your company
to register all kinds of debit and credit transactions.
@@ -438,8 +438,8 @@
<field name="domain">[('type', '=', 'bank')]</field>
<field name="context">{'default_type': 'bank'}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a bank account.
+ <p class="o_view_nocontent_smiling_face">
+ Create a bank account
</p>
</field>
</record>
@@ -455,15 +455,11 @@
(0, 0, {'view_mode': 'kanban', 'view_id': ref('account_journal_view_kanban')}),
(0, 0, {'view_mode': 'form', 'view_id': ref('view_account_journal_form')})]"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a journal.
+ <p class="o_view_nocontent_smiling_face">
+ Add a journal
</p><p>
A journal is used to record transactions of all accounting data
related to the day-to-day business.
- </p><p>
- A typical company may use one journal per payment method (cash,
- bank accounts, checks), one purchase journal, one sales journal
- and one for miscellaneous information.
</p>
</field>
</record>
@@ -508,8 +504,8 @@
<field name="res_model">account.account.tag</field>
<field name="view_type">form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a new tag.
+ <p class="o_view_nocontent_smiling_face">
+ Add a new tag
</p>
</field>
</record>
@@ -712,8 +708,8 @@
<field name="context">{'journal_type':'bank'}</field>
<field name="search_view_id" ref="view_bank_statement_search"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to register a bank statement.
+ <p class="o_view_nocontent_smiling_face">
+ Register a bank statement
</p><p>
A bank statement is a summary of all financial transactions
occurring over a given period of time on a bank account. You
@@ -799,8 +795,8 @@
<field name="context">{}</field>
<field name="search_view_id" ref="view_bank_statement_line_search"/>
<field name="help" type="html">
- <p>
- A bank statement line is a financial transaction on a bank account.
+ <p class="o_view_nocontent_empty_folder">
+ A bank statement line is a financial transaction on a bank account
</p><p>
Odoo allows you to reconcile a statement line directly with
the related sale or puchase invoice(s).
@@ -913,8 +909,8 @@
<field name="view_mode">tree,form</field>
<field name="search_view_id" ref="view_account_reconcile_model_search"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a reconciliation model.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new reconciliation model
</p><p>
Those can be used to quickly create a journal items when reconciling
a bank statement or an account.
@@ -975,8 +971,8 @@
<field name="view_mode">tree,form</field>
<field name="search_view_id" ref="view_account_type_search"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to define a new account type.
+ <p class="o_view_nocontent_smiling_face">
+ Define a new account type
</p><p>
An account type is used to determine how an account is used in
each journal. The deferral method of an account type determines
@@ -1123,6 +1119,11 @@
<field name="domain" eval="False"/> <!-- Force empty -->
<field name="context">{'search_default_sale': True, 'search_default_purchase': True, 'active_test': False}</field>
<field name="view_id" ref="view_tax_tree"/>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_smiling_face">
+ Create a new tax
+ </p>
+ </field>
</record>
<menuitem action="action_tax_form" id="menu_action_tax_form" parent="account_account_menu" sequence="1"/>
@@ -1533,16 +1534,11 @@
<field name="search_view_id" ref="view_account_move_filter"/>
<field name="context">{'search_default_misc_filter':1, 'view_no_maturity': True}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a journal entry.
+ <p class="o_view_nocontent_smiling_face">
+ Create a journal entry
</p><p>
A journal entry consists of several journal items, each of
which is either a debit or a credit transaction.
- </p><p>
- Odoo automatically creates one journal entry per accounting
- document: invoice, refund, vendor payment, bank statements,
- etc. So, you should record journal entries manually only/mainly
- for miscellaneous operations.
</p>
</field>
</record>
@@ -2049,6 +2045,11 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="search_view_id" ref="view_account_position_template_search"/>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_smiling_face">
+ Create a new fiscal position
+ </p>
+ </field>
</record>
<record id="account_bank_statement_pivot" model="ir.ui.view">
@@ -2085,8 +2086,8 @@
<field name="domain">[('journal_id.type', '=', 'cash')]</field>
<field name="context">{'journal_type':'cash'}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a new cash log.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new cash log
</p><p>
A Cash Register allows you to manage cash entries in your cash
journals. This feature provides an easy way to follow up cash
@@ -2133,6 +2134,11 @@
<field name="view_type">form</field>
<field name="context">{'search_default_filter_to_sell': 1}</field>
<field name="view_id" ref="product_product_view_tree"/>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_smiling_face">
+ Create a new sellable product
+ </p>
+ </field>
</record>
<record id="product_product_action_purchasable" model="ir.actions.act_window">
@@ -2143,6 +2149,11 @@
<field name="view_type">form</field>
<field name="context">{'search_default_filter_to_purchase': 1}</field>
<field name="view_id" ref="product_product_view_tree"/>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_smiling_face">
+ Create a new purchasable product
+ </p>
+ </field>
</record>
<menuitem id="product_product_menu_sellable" name="Sellable Products" action="product_product_action_sellable" parent="account.menu_finance_receivables_master_data" sequence="100"/>
@@ -2275,6 +2286,11 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="search_view_id" ref="view_account_group_search"/>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_smiling_face">
+ Create a new account group
+ </p>
+ </field>
</record>
</data>
diff --git a/addons/account/views/partner_view.xml b/addons/account/views/partner_view.xml
index f46c1e206bd..b4157614966 100644
--- a/addons/account/views/partner_view.xml
+++ b/addons/account/views/partner_view.xml
@@ -179,6 +179,11 @@
<field name="view_type">form</field>
<field name="view_mode">tree,kanban,form</field>
<field name="search_view_id" ref="view_account_position_filter"/>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_smiling_face">
+ Create a new fiscal position
+ </p>
+ </field>
</record>
<menuitem
diff --git a/addons/account_asset/report/account_asset_report_views.xml b/addons/account_asset/report/account_asset_report_views.xml
index ff097ad9359..fce17a56065 100644
--- a/addons/account_asset/report/account_asset_report_views.xml
+++ b/addons/account_asset/report/account_asset_report_views.xml
@@ -64,7 +64,9 @@
<field name="domain">[('asset_category_id.type', '=', 'purchase')]</field>
<field name="context">{}</field> <!-- force empty -->
<field name="help" type="html">
- <p>
+ <p class="o_view_nocontent_empty_folder">
+ No content
+ </p><p>
From this report, you can have an overview on all depreciations. The
search bar can also be used to personalize your assets depreciation reporting.
</p>
diff --git a/addons/account_budget/views/account_budget_views.xml b/addons/account_budget/views/account_budget_views.xml
index cbfd2f3e062..6188e5e9e7b 100644
--- a/addons/account_budget/views/account_budget_views.xml
+++ b/addons/account_budget/views/account_budget_views.xml
@@ -214,8 +214,8 @@
<field name="view_id" ref="crossovered_budget_view_tree"/>
<field name="search_view_id" ref="view_crossovered_budget_search"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a new budget.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new budget
</p><p>
A budget is a forecast of your company's income and/or expenses
expected for a period in the future. A budget is defined on some
diff --git a/addons/account_test/views/accounting_assert_test_views.xml b/addons/account_test/views/accounting_assert_test_views.xml
index 4e96168f2ab..8ce32df33b6 100644
--- a/addons/account_test/views/accounting_assert_test_views.xml
+++ b/addons/account_test/views/accounting_assert_test_views.xml
@@ -72,8 +72,8 @@ Example:
<field name="res_model">accounting.assert.test</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create Accounting Test.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new accounting test
</p>
</field>
</record>
diff --git a/addons/account_voucher/views/account_voucher_views.xml b/addons/account_voucher/views/account_voucher_views.xml
index 9e24f876dd6..86f2248aab1 100644
--- a/addons/account_voucher/views/account_voucher_views.xml
+++ b/addons/account_voucher/views/account_voucher_views.xml
@@ -295,8 +295,8 @@
<field name="search_view_id" ref="view_voucher_filter_sale"/>
<field name="target">current</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a sale receipt.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new sale receipt
</p><p>
When the sale receipt is confirmed, you can record the customer
payment related to this sales receipt.
@@ -410,8 +410,8 @@
<field name="search_view_id" eval="view_voucher_filter_vendor"/>
<field name="target">current</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to register a purchase receipt.
+ <p class="o_view_nocontent_smiling_face">
+ Register a new purchase receipt
</p><p>
When the purchase receipt is confirmed, you can record the
vendor payment related to this purchase receipt.
diff --git a/addons/analytic/views/analytic_account_views.xml b/addons/analytic/views/analytic_account_views.xml
index acf1a718366..4a8df66015d 100644
--- a/addons/analytic/views/analytic_account_views.xml
+++ b/addons/analytic/views/analytic_account_views.xml
@@ -35,8 +35,8 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a new tag.
+ <p class="o_view_nocontent_smiling_face">
+ Add a new tag
</p>
</field>
</record>
@@ -66,8 +66,8 @@
<field name="view_id" ref="view_account_analytic_line_tree"/>
<field name="view_type">form</field>
<field name="help" type="html">
- <p>
- No activity yet on this account.
+ <p class="o_view_nocontent_empty_folder">
+ No activity yet on this account
</p><p>
In Odoo, sales orders and projects are implemented using
analytic accounts. You can track costs and revenues to analyse
@@ -198,8 +198,8 @@
<field name="context">{'search_default_active':1}</field>
<field name="view_id" ref="view_account_analytic_account_list"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add an analytic account.
+ <p class="o_view_nocontent_smiling_face">
+ Add a new analytic account
</p>
</field>
</record>
@@ -213,8 +213,8 @@
<field name="view_type">form</field>
<field name="view_mode">tree,kanban,form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add an analytic account.
+ <p class="o_view_nocontent_smiling_face">
+ Add a new analytic account
</p>
</field>
</record>
@@ -330,8 +330,8 @@
<field name="view_type">form</field>
<field name="search_view_id" ref="analytic.view_account_analytic_line_filter"/>
<field name="help" type="html">
- <p>
- No activity yet.
+ <p class="o_view_nocontent_empty_folder">
+ No activity yet
</p><p>
In Odoo, sales orders and projects are implemented using
analytic accounts. You can track costs and revenues to analyse
diff --git a/addons/barcodes/views/barcodes_view.xml b/addons/barcodes/views/barcodes_view.xml
index b954b09ffbf..3cfca9d5e60 100644
--- a/addons/barcodes/views/barcodes_view.xml
+++ b/addons/barcodes/views/barcodes_view.xml
@@ -57,8 +57,8 @@
<field name="view_type">form</field>
<field name="view_mode">tree,kanban,form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a Barcode Nomenclature .
+ <p class="o_view_nocontent_smiling_face">
+ Add a new barcode nomenclature
</p><p>
A barcode nomenclature defines how the point of sale identify and interprets barcodes
</p>
diff --git a/addons/base_automation/views/base_automation_view.xml b/addons/base_automation/views/base_automation_view.xml
index 174ac11a135..7f1dfb861cd 100644
--- a/addons/base_automation/views/base_automation_view.xml
+++ b/addons/base_automation/views/base_automation_view.xml
@@ -79,8 +79,8 @@
<field name="view_mode">tree,form</field>
<field name="view_id" ref="view_base_automation_tree"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to setup a new automated automation.
+ <p class="o_view_nocontent_smiling_face">
+ Setup a new automated automation
</p><p>
Use automated actions to automatically trigger actions for
various screens. Example: a lead created by a specific user may
diff --git a/addons/board/static/src/js/dashboard.js b/addons/board/static/src/js/dashboard.js
index e84529be83b..7b16594de28 100644
--- a/addons/board/static/src/js/dashboard.js
+++ b/addons/board/static/src/js/dashboard.js
@@ -266,9 +266,12 @@ FormRenderer.include({
return element.tag === "action"? element: false;
});
});
+ this.$el.toggleClass('o_dashboard_nocontent', !hasAction);
if (!hasAction) {
- return $('<div class="oe_view_nocontent">')
- .append($('<div>').html(this.noContentHelp || " "));
+ var innerDiv = $('<div class="o_view_nocontent">')
+ .append(this.noContentHelp || "<div/>");
+ return $('<div class="o_view_nocontent_container">')
+ .append(innerDiv);
}
// We should start with three columns available
node = $.extend(true, {}, node);
diff --git a/addons/board/static/src/less/dashboard.less b/addons/board/static/src/less/dashboard.less
index 6d3aaef7716..88e30c8df7e 100644
--- a/addons/board/static/src/less/dashboard.less
+++ b/addons/board/static/src/less/dashboard.less
@@ -1,4 +1,12 @@
.o_dashboard {
+
+ // no content help
+ &.o_dashboard_nocontent {
+ .o-flex-display();
+ .o-align-content(center);
+ .o-justify-content(center);
+ }
+
// Dashboard layout
.oe_dashboard_layout_1 .oe_dashboard_column {
&.index_0 {
diff --git a/addons/board/static/tests/dashboard_tests.js b/addons/board/static/tests/dashboard_tests.js
index 21067b32c44..f9d13143b45 100644
--- a/addons/board/static/tests/dashboard_tests.js
+++ b/addons/board/static/tests/dashboard_tests.js
@@ -67,7 +67,7 @@ QUnit.test('dashboard basic rendering', function (assert) {
assert.ok(form.renderer.$el.hasClass('o_dashboard'),
"with a dashboard, the renderer should have the proper css class");
- assert.strictEqual(form.$('.o_dashboard .oe_view_nocontent').length, 1,
+ assert.strictEqual(form.$('.o_dashboard .o_view_nocontent').length, 1,
"should have a no content helper");
assert.strictEqual(form.get('title'), "My Dashboard",
"should have the correct title");
@@ -93,7 +93,7 @@ QUnit.test('display the no content helper', function (assert) {
},
});
- assert.strictEqual(form.$('.o_dashboard .oe_view_nocontent p:contains(click to add a partner)').length, 1,
+ assert.strictEqual(form.$('.o_dashboard .o_view_nocontent p:contains(click to add a partner)').length, 1,
"should have a no content helper with action help");
form.destroy();
});
diff --git a/addons/board/views/board_views.xml b/addons/board/views/board_views.xml
index f739bc47b59..aad2eb56383 100644
--- a/addons/board/views/board_views.xml
+++ b/addons/board/views/board_views.xml
@@ -24,18 +24,16 @@
<field name="usage">menu</field>
<field name="view_id" ref="board_my_dash_view"/>
<field name="help" type="html">
- <div class="oe_empty_custom_dashboard">
- <p>
- <b>Your personal dashboard is empty.</b>
- </p><p>
+ <p class="o_view_nocontent_neutral_face">
+ Your personal dashboard is empty
+ </p><p>
To add your first report into this dashboard, go to any
menu, switch to list or graph view, and click <i>'Add to
Dashboard'</i> in the extended search options.
- </p><p>
+ </p><p>
You can filter and group data before inserting into the
dashboard using the search options.
- </p>
- </div>
+ </p>
</field>
</record>
diff --git a/addons/calendar/views/calendar_views.xml b/addons/calendar/views/calendar_views.xml
index fd5971a353d..c37de77d2e3 100644
--- a/addons/calendar/views/calendar_views.xml
+++ b/addons/calendar/views/calendar_views.xml
@@ -312,8 +312,8 @@
<field name="view_id" ref="view_calendar_event_calendar"/>
<field name="search_view_id" ref="view_calendar_event_search"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to schedule a new meeting.
+ <p class="o_view_nocontent_smiling_face">
+ Schedule a new meeting
</p><p>
The calendar is shared between employees and fully integrated with
other applications such as the employee leaves or the business
diff --git a/addons/contacts/views/contact_views.xml b/addons/contacts/views/contact_views.xml
index b4f49e11148..ba0fa9b74e0 100644
--- a/addons/contacts/views/contact_views.xml
+++ b/addons/contacts/views/contact_views.xml
@@ -8,12 +8,10 @@
<field name="view_mode">kanban,tree,form</field>
<field name="search_view_id" ref="base.view_res_partner_filter"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a contact in your contacts directory.
+ <p class="o_view_nocontent_smiling_face">
+ Create a contact in your address book
</p><p>
- Odoo helps you easily track all activities related to
- a customer: discussions, history of business opportunities,
- documents, etc.
+ Odoo helps you to easily track all activities related to a customer.
</p>
</field>
</record>
diff --git a/addons/crm/models/crm_lead.py b/addons/crm/models/crm_lead.py
index e82a7f54364..3d50eb10d75 100644
--- a/addons/crm/models/crm_lead.py
+++ b/addons/crm/models/crm_lead.py
@@ -925,11 +925,11 @@ class Lead(models.Model):
email = '%s@%s' % (alias_record.alias_name, alias_record.alias_domain)
email_link = "<a href='mailto:%s'>%s</a>" % (email, email)
help_title = _('%s or send an email to %s') % (help_title, email_link)
- return '<p class="oe_view_nocontent_create">%s</p><p>%s</p>' % (help_title, help)
+ return '<p class="o_view_nocontent_smiling_face">%s</p><p>%s</p>' % (help_title, help)
return super(Lead, self.with_context(
empty_list_help_model='crm.team',
empty_list_help_id=self._context.get('default_team_id', False),
- empty_list_help_document_name= _('leads') if self._context.get('default_type') == 'lead' else _('opportunities'),
+ empty_list_help_document_name= _('leads') if self._context.get('default_type') == 'lead' else _('opportunity'),
)).get_empty_list_help(help)
@api.multi
diff --git a/addons/crm/models/crm_team.py b/addons/crm/models/crm_team.py
index d3efe7fc25b..e7ed3a61e08 100644
--- a/addons/crm/models/crm_team.py
+++ b/addons/crm/models/crm_team.py
@@ -135,10 +135,10 @@ class Team(models.Model):
user_team_id = self.env.user.sale_team_id.id
if not user_team_id:
user_team_id = self.search([], limit=1).id
- action['help'] = """<p class='oe_view_nocontent_create'>Click here to add new opportunities</p><p>
+ action['help'] = _("""<p class='o_view_nocontent_smiling_face'>Add new opportunities</p><p>
Looks like you are not a member of a sales channel. You should add yourself
as a member of one of the sales channel.
-</p>"""
+</p>""")
if user_team_id:
action['help'] += "<p>As you don't belong to any sales channel, Odoo opens the first one by default.</p>"
diff --git a/addons/crm/static/src/js/tour.js b/addons/crm/static/src/js/tour.js
index b662d6dcdf1..9586af5efe1 100644
--- a/addons/crm/static/src/js/tour.js
+++ b/addons/crm/static/src/js/tour.js
@@ -16,7 +16,7 @@ tour.register('crm_tour', {
trigger: ".o-kanban-button-new",
extra_trigger: '.o_opportunity_kanban',
content: _t("Click here to <b>create your first opportunity</b> and add it to your pipeline."),
- position: "right",
+ position: "bottom",
}, {
trigger: ".modal-body input:first",
auto: true
diff --git a/addons/crm/static/tests/sales_team_dashboard_tests.js b/addons/crm/static/tests/sales_team_dashboard_tests.js
index a4430d29a52..ece5566f8f7 100644
--- a/addons/crm/static/tests/sales_team_dashboard_tests.js
+++ b/addons/crm/static/tests/sales_team_dashboard_tests.js
@@ -162,7 +162,7 @@ QUnit.test('dashboard should be displayed even if there is no content', function
assert.strictEqual(kanban.$('div.o_sales_dashboard').length, 1,
"should render the dashboard");
- assert.strictEqual(kanban.$('.oe_view_nocontent:contains(A help message)').length, 1,
+ assert.strictEqual(kanban.$('.o_view_nocontent:contains(A help message)').length, 1,
"should correctly render the nocontent helper");
kanban.destroy();
diff --git a/addons/crm/views/crm_lead_views.xml b/addons/crm/views/crm_lead_views.xml
index 237e49274a1..e2971d27ea7 100644
--- a/addons/crm/views/crm_lead_views.xml
+++ b/addons/crm/views/crm_lead_views.xml
@@ -805,14 +805,13 @@ for rec in records:
}
</field>
<field name="help" type="html">
- <p>
+ <p class="o_view_nocontent_smiling_face">
+ Create a new lead
+ </p><p>
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.
- </p><p>
- Once qualified, the lead can be converted into a business
- opportunity and/or a new customer in your address book.
</p>
</field>
</record>
@@ -838,9 +837,15 @@ for rec in records:
</field>
<field name="search_view_id" ref="crm.view_crm_case_opportunities_filter"/>
<field name="help" type="html">
- <p>
- You will be able to schedule activities, attach related documents,
- track all discussions, convert into a quotation and much more.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new opportunity
+ </p><p>
+ Odoo helps you keep track of your sales pipeline to follow
+ up potential sales and better forecast your future revenues.
+ </p><p>
+ You will be able to plan meetings and phone calls from
+ opportunities, convert them into quotations, attach related
+ documents, track all discussions, and much more.
</p>
</field>
</record>
@@ -893,9 +898,15 @@ for rec in records:
(0, 0, {'view_mode': 'graph'})]"/>
<field name="search_view_id" ref="crm.view_crm_case_opportunities_filter"/>
<field name="help" type="html">
- <p>
- You will be able to schedule activities, attach related documents,
- track all discussions, convert into a quotation and much more.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new opportunity
+ </p><p>
+ Odoo helps you keep track of your sales pipeline to follow
+ up potential sales and better forecast your future revenues.
+ </p><p>
+ You will be able to plan meetings and phone calls from
+ opportunities, convert them into quotations, attach related
+ documents, track all discussions, and much more.
</p>
</field>
</record>
@@ -931,7 +942,9 @@ for rec in records:
}
</field>
<field name="help" type="html">
- <p>
+ <p class="o_view_nocontent_empty_folder">
+ No next activity
+ </p><p>
Here is the list of your next activities. Those are linked to your opportunities.
To set a next activity, go on an opportunity and add one. It will then appear in this list.
</p>
@@ -945,13 +958,10 @@ for rec in records:
<field name="view_type">form</field>
<field name="view_id" ref="crm_lead_tag_tree"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to define a new sales tag.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new tag for your opportunities
</p><p>
- Create specific tags that fit your company's activities
- to better classify and analyse your leads and opportunities.
- Such categories could for instance reflect your product
- structure or the different types of sales you do.
+ Create tags that fit your business (product structure, sales type, etc.) to better manage and tack your opportunities.
</p>
</field>
</record>
@@ -970,8 +980,8 @@ for rec in records:
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to define a new lost reason.
+ <p class="o_view_nocontent_smiling_face">
+ Define a new lost reason
</p><p>
Use lost reasons to explain why an opportunity is lost.
</p><p>
diff --git a/addons/crm/views/crm_stage_views.xml b/addons/crm/views/crm_stage_views.xml
index 221ae51e952..0eb49e3756a 100644
--- a/addons/crm/views/crm_stage_views.xml
+++ b/addons/crm/views/crm_stage_views.xml
@@ -57,8 +57,8 @@
<field name="view_type">form</field>
<field name="view_id" ref="crm.crm_stage_tree"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to set a new stage in your opportunity pipeline.
+ <p class="o_view_nocontent_smiling_face">
+ Set a new stage in your opportunity pipeline
</p><p>
Stages allow salespersons to easily track how a specific opportunity
is positioned in the sales cycle.
diff --git a/addons/crm/views/crm_team_views.xml b/addons/crm/views/crm_team_views.xml
index 58e9318bea0..1d9607eef47 100644
--- a/addons/crm/views/crm_team_views.xml
+++ b/addons/crm/views/crm_team_views.xml
@@ -19,14 +19,13 @@
}
</field>
<field name="help" type="html">
- <p>
+ <p class="o_view_nocontent_smiling_face">
+ Create a new lead
+ </p><p>
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.
- </p><p>
- Once qualified, the lead can be converted into a business
- opportunity and/or a new customer in your address book.
</p>
</field>
</record>
@@ -47,9 +46,15 @@
}
</field>
<field name="help" type="html">
- <p>
- You will be able to schedule activities, attach related documents,
- track all discussions, convert into a quotation and much more.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new lead
+ </p><p>
+ Odoo helps you keep track of your sales pipeline to follow
+ up potential sales and better forecast your future revenues.
+ </p><p>
+ You will be able to plan meetings and phone calls from
+ opportunities, convert them into quotations, attach related
+ documents, track all discussions, and much more.
</p>
</field>
</record>
diff --git a/addons/crm/views/res_partner_views.xml b/addons/crm/views/res_partner_views.xml
index e01b6b3c424..611e1c2ab44 100644
--- a/addons/crm/views/res_partner_views.xml
+++ b/addons/crm/views/res_partner_views.xml
@@ -23,8 +23,8 @@
<field name="view_id" eval="False"/>
<field name="search_view_id" ref="crm.view_crm_case_opportunities_filter"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create an opportunity related to this customer.
+ <p class="o_view_nocontent_smiling_face">
+ Create an new opportunity related to this customer
</p><p>
Use opportunities to keep track of your sales pipeline, follow
up potential sales and better forecast your future revenues.
diff --git a/addons/delivery/models/delivery_carrier.py b/addons/delivery/models/delivery_carrier.py
index 4a20f26e197..fdc568725d6 100644
--- a/addons/delivery/models/delivery_carrier.py
+++ b/addons/delivery/models/delivery_carrier.py
@@ -74,7 +74,7 @@ class DeliveryCarrier(models.Model):
'res_model': 'ir.module.module',
'domain': [['name', 'ilike', 'delivery_']],
'type': 'ir.actions.act_window',
- 'help': _('''<p class="oe_view_nocontent">
+ 'help': _('''<p class="o_view_nocontent">
Buy Odoo Enterprise now to get more providers.
</p>'''),
}
diff --git a/addons/delivery/views/delivery_view.xml b/addons/delivery/views/delivery_view.xml
index 5c373c720c9..f0c867bce0f 100644
--- a/addons/delivery/views/delivery_view.xml
+++ b/addons/delivery/views/delivery_view.xml
@@ -142,8 +142,8 @@
<field name="view_mode">tree,form</field>
<field name="context">{'search_default_group_by_provider': True}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to define a new delivery method.
+ <p class="o_view_nocontent_smiling_face">
+ Define a new delivery method
</p><p>
Each carrier (e.g. UPS) can have several delivery methods (e.g.
UPS Express, UPS Standard) with a set of pricing rules attached
diff --git a/addons/event/views/event_views.xml b/addons/event/views/event_views.xml
index 652852a732d..5a09604128a 100644
--- a/addons/event/views/event_views.xml
+++ b/addons/event/views/event_views.xml
@@ -158,9 +158,10 @@
<field name="view_mode">tree,form,calendar,graph</field>
<field name="context">{'search_default_event_id': active_id, 'default_event_id': active_id, 'search_default_expected': True}</field>
<field name="help" type="html">
-<p class="oe_view_nocontent_create">
- Click to add a new attendee.
-</p></field>
+ <p class="o_view_nocontent_smiling_face">
+ Add a new attendee
+ </p>
+ </field>
</record>
<!-- EVENT.EVENT VIEWS -->
@@ -407,13 +408,14 @@
<field name="view_mode">kanban,calendar,tree,form,pivot</field>
<field name="context">{"search_default_upcoming":1}</field>
<field name="search_view_id" ref="view_event_search"/>
- <field name="help" type="html"><p class="oe_view_nocontent_create">
- Click to add a new event.
-</p><p>
- Odoo helps you schedule and efficiently organize your events:
- track registrations and participations, automate the confirmation emails,
- sell tickets, etc.
-</p></field>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_smiling_face">
+ Add a new event
+ </p><p>
+ Schedule and organize your events efficiently:
+ track registrations and participations, automate the confirmation emails, sell tickets, etc.
+ </p>
+ </field>
</record>
<act_window
diff --git a/addons/fleet/views/fleet_board_view.xml b/addons/fleet/views/fleet_board_view.xml
index 6cbf52aef4e..f36292d0d4b 100644
--- a/addons/fleet/views/fleet_board_view.xml
+++ b/addons/fleet/views/fleet_board_view.xml
@@ -8,11 +8,12 @@
<field name="view_id"></field> <!-- force empty -->
<field name="context">{"search_default_parent_false" : True,}</field>
<field name="help" type="html">
- <p>
+ <p class="o_view_nocontent_empty_folder">
+ No data for analysis
+ </p><p>
Odoo helps you managing the costs for your different vehicles
Costs are generally created from services and contract and appears here.
- </p>
- <p>
+ </p><p>
Thanks to the different filters, Odoo can only print the effective
costs, sort them by type and by vehicle.
</p>
@@ -39,11 +40,12 @@
<field name="view_id"></field> <!-- force empty -->
<field name="context">{"search_default_parent_true" : True,}</field>
<field name="help" type="html">
- <p>
+ <p class="o_view_nocontent_empty_folder">
+ No data for analysis
+ </p><p>
Odoo helps you managing the costs for your different vehicles
Costs are generally created from services and contract and appears here.
- </p>
- <p>
+ </p><p>
Thanks to the different filters, Odoo can only print the effective
costs, sort them by type and by vehicle.
</p>
diff --git a/addons/fleet/views/fleet_vehicle_cost_views.xml b/addons/fleet/views/fleet_vehicle_cost_views.xml
index 26429043e84..8eeb0341e25 100644
--- a/addons/fleet/views/fleet_vehicle_cost_views.xml
+++ b/addons/fleet/views/fleet_vehicle_cost_views.xml
@@ -154,12 +154,11 @@
<field name="view_mode">tree,kanban,form,graph</field>
<field name="context">{"search_default_parent_false" : True, "search_default_groupby_vehicle_id" : True,}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a new cost.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new cost
</p><p>
- Odoo helps you managing the costs for your different
- vehicles. Costs are created automatically from services,
- contracts (fixed or recurring) and fuel logs.
+ Manage the costs for your different vehicles.
+ Costs are created automatically from services, contracts and fuel logs.
</p>
</field>
</record>
@@ -351,8 +350,8 @@
<field name="view_mode">tree,kanban,form,graph</field>
<field name="context">{'search_default_open': 1}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a new contract.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new contract
</p><p>
Manage all your contracts (leasing, insurances, etc.) with
their related services, costs. Odoo will automatically warn
@@ -485,12 +484,10 @@
<field name="view_mode">tree,kanban,form,graph</field>
<field name="context">{"search_default_groupby_vehicle" : True}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a new fuel log.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new fuel log
</p><p>
- Here you can add refuelling entries for all vehicles. You can
- also filter logs of a particular vehicle using the search
- field.
+ Here you can add refuelling entries for all vehicles.
</p>
</field>
</record>
@@ -618,12 +615,11 @@
<field name="view_type">form</field>
<field name="view_mode">tree,kanban,form,graph</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a new service entry.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new service entry
</p><p>
- Odoo helps you keeping track of all the services done
- on your vehicle. Services can be of many type: occasional
- repair, fixed maintenance, etc.
+ Track all the services done on your vehicle.
+ Services can be of many types: occasional repair, fixed maintenance, etc.
</p>
</field>
</record>
diff --git a/addons/fleet/views/fleet_vehicle_model_views.xml b/addons/fleet/views/fleet_vehicle_model_views.xml
index 0e3a35c40b6..0605724d789 100644
--- a/addons/fleet/views/fleet_vehicle_model_views.xml
+++ b/addons/fleet/views/fleet_vehicle_model_views.xml
@@ -74,8 +74,8 @@
<field name="view_mode">tree,form</field>
<field name="context">{"search_default_groupby_brand" : True,}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a new model.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new model
</p><p>
You can define several models (e.g. A3, A4) for each make (Audi).
</p>
@@ -148,8 +148,8 @@
<field name="view_type">form</field>
<field name="view_mode">kanban,tree,form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a new make.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new make
</p>
</field>
</record>
diff --git a/addons/fleet/views/fleet_vehicle_views.xml b/addons/fleet/views/fleet_vehicle_views.xml
index 28138f6825c..4e10561a222 100644
--- a/addons/fleet/views/fleet_vehicle_views.xml
+++ b/addons/fleet/views/fleet_vehicle_views.xml
@@ -228,15 +228,10 @@
<field name="view_type">form</field>
<field name="view_mode">kanban,tree,form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a new vehicle.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new vehicle
</p><p>
- You will be able to manage your fleet by keeping track of the
- contracts, services, fixed and recurring costs, odometers and
- fuel logs associated to each vehicle.
- </p><p>
- Odoo will warn you when services or contract have to be
- renewed.
+ Manage your fleet by keeping track of the contracts, services, odometers and fuel logs associated to each vehicle.
</p>
</field>
</record>
@@ -334,13 +329,10 @@
<field name="view_mode">tree,kanban,form,graph</field>
<field name="context">{"search_default_groupby_vehicle" : True}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a new odometer log.
- </p>
- <p>
- Here you can add various odometer entries for all vehicles.
- You can also show odometer value for a particular vehicle using
- the search field.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new odometer log
+ </p><p>
+ You can add various odometer entries for all vehicles.
</p>
</field>
</record>
@@ -366,8 +358,8 @@
<field name="domain">[('category','=','service')]</field>
<field name="context">{'default_category':'service'}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a new type of service.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new type of service
</p><p>
Each service can used in contracts, as a standalone service or both.
</p>
@@ -383,8 +375,8 @@
<field name="domain">[('category','=','contract')]</field>
<field name="context">{'default_category':'contract'}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a new type of contract.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new type of contract
</p>
</field>
</record>
@@ -408,11 +400,11 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a vehicle status.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new vehicle status
</p><p>
You can customize available status to track the evolution of
- each vehicle. Example: Active, Being Repaired, Sold.
+ each vehicle. Example: active, being repaired, sold.
</p>
</field>
</record>
@@ -436,8 +428,8 @@
<field name="res_model">fleet.vehicle.tag</field>
<field name="view_type">form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a new tag.
+ <p class="o_view_nocontent_smiling_face">
+ Add a new tag
</p>
</field>
</record>
diff --git a/addons/gamification/views/badge.xml b/addons/gamification/views/badge.xml
index 1269fdf99fd..1f384a16e5d 100644
--- a/addons/gamification/views/badge.xml
+++ b/addons/gamification/views/badge.xml
@@ -5,10 +5,9 @@
<field name="res_model">gamification.badge</field>
<field name="view_mode">kanban,tree,form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a badge.
- </p>
- <p>
+ <p class="o_view_nocontent_smiling_face">
+ Create a new badge
+ </p><p>
A badge is a symbolic token granted to a user as a sign of reward.
It can be deserved automatically when some conditions are met or manually by users.
Some badges are harder than others to get with specific conditions.
diff --git a/addons/gamification/views/challenge.xml b/addons/gamification/views/challenge.xml
index 396b8730849..25df7dbaeb7 100644
--- a/addons/gamification/views/challenge.xml
+++ b/addons/gamification/views/challenge.xml
@@ -18,8 +18,10 @@
<field name="view_mode">kanban,tree</field>
<field name="context">{'search_default_group_by_definition': True, 'search_default_inprogress': True, 'search_default_challenge_id': active_id, 'default_challenge_id': active_id}</field>
<field name="help" type="html">
- <p>
- There is no goals associated to this challenge matching your search.
+ <p class="o_view_nocontent_empty_folder">
+ No goal found
+ </p><p>
+ There is no goal associated to this challenge matching your search.
Make sure that your challenge is active and assigned to at least one user.
</p>
</field>
@@ -172,10 +174,9 @@
<field name="view_mode">kanban,tree,form</field>
<field name="context">{'search_default_inprogress':True, 'default_inprogress':True}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a challenge.
- </p>
- <p>
+ <p class="o_view_nocontent_smiling_face">
+ Create a new challenge
+ </p><p>
Assign a list of goals to chosen users to evaluate them.
The challenge can use a period (weekly, monthly...) for automatic creation of goals.
The goals are created for the specified users or member of the group.
diff --git a/addons/gamification/views/goal.xml b/addons/gamification/views/goal.xml
index d0d6bbc7019..31852c1a049 100644
--- a/addons/gamification/views/goal.xml
+++ b/addons/gamification/views/goal.xml
@@ -6,10 +6,9 @@
<field name="view_mode">tree,form,kanban</field>
<field name="context">{'search_default_group_by_user': True, 'search_default_group_by_definition': True}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a goal.
- </p>
- <p>
+ <p class="o_view_nocontent_smiling_face">
+ Create a new goal
+ </p><p>
A goal is defined by a user and a goal definition.
Goals can be created automatically by using challenges.
</p>
@@ -199,10 +198,9 @@
<field name="res_model">gamification.goal.definition</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a goal definition.
- </p>
- <p>
+ <p class="o_view_nocontent_smiling_face">
+ Create a new goal definition
+ </p><p>
A goal definition is a technical model of goal defining a condition to reach.
The dates, values to reach or users are defined in goal instance.
</p>
diff --git a/addons/google_drive/views/google_drive_views.xml b/addons/google_drive/views/google_drive_views.xml
index e71aaf2fe12..6451e1f5465 100644
--- a/addons/google_drive/views/google_drive_views.xml
+++ b/addons/google_drive/views/google_drive_views.xml
@@ -91,8 +91,8 @@
<field name="view_mode">tree,kanban,form</field>
<field name='view_id' ref='view_google_drive_config_tree' />
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a new template.
+ <p class="o_view_nocontent_smiling_face">
+ Add a new template
</p>
<p>
Link your own google drive templates to any record of Odoo. If you have really specific documents you want your collaborator fill in, e.g. Use a spreadsheet to control the quality of your product or review the delivery checklist for each order in a foreign country, ... Its very easy to manage them, link them to Odoo and use them to collaborate with your employees.
diff --git a/addons/hr/views/hr_views.xml b/addons/hr/views/hr_views.xml
index 3a4d15d28bd..db2e6f6edac 100644
--- a/addons/hr/views/hr_views.xml
+++ b/addons/hr/views/hr_views.xml
@@ -254,8 +254,8 @@
<field name="view_id" eval="False"/>
<field name="search_view_id" ref="view_employee_filter"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a new employee.
+ <p class="o_view_nocontent_smiling_face">
+ Add a new employee
</p><p>
With just a quick glance on the Odoo employee screen, you
can easily find all the information you need for each person;
@@ -446,17 +446,10 @@
<field name="search_view_id" ref="view_job_filter"/>
<field name="context">{"search_default_Current":1}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to define a new job position.
+ <p class="o_view_nocontent_smiling_face">
+ Ready to recruit more efficiently?
</p><p>
- Job Positions are used to define jobs and their requirements.
- You can keep track of the number of employees you have per job
- position and follow the evolution according to what you planned
- for the future.
- </p><p>
- You can attach a survey to a job position. It will be used in
- the recruitment process to evaluate the applicants for this job
- position.
+ Let's create a job position.
</p>
</field>
</record>
@@ -472,8 +465,8 @@
"default_department_id": active_id}
</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a new employee.
+ <p class="o_view_nocontent_smiling_face">
+ Add a new employee
</p><p>
With just a quick glance on the Odoo employee screen, you
can easily find all the information you need for each person;
@@ -609,8 +602,8 @@
<field name="view_mode">kanban,tree,form</field>
<field name="search_view_id" ref="view_department_filter"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a department.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new department
</p><p>
Odoo's department structure is used to manage all documents
related to employees by departments: expenses, timesheets,
diff --git a/addons/hr_attendance/views/hr_attendance_view.xml b/addons/hr_attendance/views/hr_attendance_view.xml
index 9d57d7db384..7687cbddb3f 100644
--- a/addons/hr_attendance/views/hr_attendance_view.xml
+++ b/addons/hr_attendance/views/hr_attendance_view.xml
@@ -117,8 +117,11 @@
<field name="context">{"search_default_today":1}</field>
<field name="search_view_id" ref="hr_attendance_view_filter" />
<field name="help" type="html">
- <p>The attendance records of your employees will be displayed here.</p>
- <p>Please make sure you're using the correct filter if you expected to see any.</p>
+ <p class="o_view_nocontent_empty_folder">
+ No attendance records found
+ </p><p>
+ The attendance records of your employees will be displayed here.
+ </p>
</field>
</record>
@@ -129,7 +132,11 @@
<field name="view_mode">tree,form</field>
<field name="context">{'search_default_employee_id': active_id, 'default_employee_id': active_id}</field>
<field name="help" type="html">
- <p>No attendance records to display.</p>
+ <p class="o_view_nocontent_empty_folder" type="html">
+ No attendance records to display
+ </p><p>
+ The attendance records of your employees will be displayed here.
+ </p>
</field>
</record>
diff --git a/addons/hr_attendance/views/hr_employee_view.xml b/addons/hr_attendance/views/hr_employee_view.xml
index 4c96bfe13d5..e412a850bbf 100644
--- a/addons/hr_attendance/views/hr_employee_view.xml
+++ b/addons/hr_attendance/views/hr_employee_view.xml
@@ -112,10 +112,10 @@
<field name="view_mode">kanban</field>
<field name="view_id" ref="hr_employees_view_kanban"/>
<field name="help" type="html">
- <p>
- Create a few employees to be able to select an employee here and perform his check in / check out.
- </p>
- <p>
+ <p class="o_view_nocontent_smiling_face">
+ Create a new employee
+ </p><p>
+ Add a few employees to be able to select an employee here and perform his check in / check out.
To create employees go to the Employees menu.
</p>
</field>
diff --git a/addons/hr_contract/views/hr_contract_views.xml b/addons/hr_contract/views/hr_contract_views.xml
index a62de98844a..988a47d318d 100644
--- a/addons/hr_contract/views/hr_contract_views.xml
+++ b/addons/hr_contract/views/hr_contract_views.xml
@@ -207,8 +207,8 @@
<field name="context">{'search_default_current':1, 'search_default_group_by_state': 1}</field>
<field name="search_view_id" ref="hr_contract_view_search"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click here to create new contracts.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new contract
</p>
</field>
</record>
diff --git a/addons/hr_expense/views/hr_expense_views.xml b/addons/hr_expense/views/hr_expense_views.xml
index 63847cd7a6b..a7cd51b5992 100644
--- a/addons/hr_expense/views/hr_expense_views.xml
+++ b/addons/hr_expense/views/hr_expense_views.xml
@@ -189,17 +189,9 @@
<field name="view_mode">graph,pivot,tree,kanban,form</field>
<field name="search_view_id" ref="view_hr_expense_filter"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Create a new expense.<br/>
- <!-- Or send receipts to .... -->
- </p><p>
- Expenses will go through these steps:
- </p><ol>
- <li>You record expenses</li>
- <li>Periodically, you submit expenses report to your manager,</li>
- <li>Once approved, your expenses report goes to the accounting,</li>
- <li>The accountant validates journal entries and reimburse you.</li>
- </ol>
+ <p class="o_view_nocontent_smiling_face">
+ Create a new expense
+ </p>
</field>
</record>
@@ -211,14 +203,8 @@
<field name="domain">[('employee_id.user_id', '=', uid)]</field>
<field name="context">{'search_default_to_report': 1}</field>
<field name="help" type="html">
- <p>
- The steps to process expenses are:
- <ol>
- <li>You record expenses,</li>
- <li>Periodically, you submit expenses report to your manager,</li>
- <li>Once approved, your expense report, goes to the accounting,</li>
- <li>The accountant validates entries and reimburse you.</li>
- </ol>
+ <p class="o_view_nocontent_smiling_face">
+ Create a new expense
</p>
</field>
</record>
@@ -294,8 +280,8 @@
<field name="context">{"default_can_be_expensed": 1, 'default_type': 'service'}</field>
<field name="domain">[('can_be_expensed', '=', True)]</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a new expense category.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new expense category
</p>
</field>
</record>
@@ -330,7 +316,9 @@
<field name="domain">[]</field>
<field name="context">{"search_default_approved": 1}</field>
<field name="help" type="html">
- <p>
+ <p class="o_view_nocontent_empty_folder">
+ No approved employee expenses
+ </p><p>
From here the accountant will be able to approve as well as refuse the expenses which are verified by the HR Manager.
</p>
</field>
@@ -345,7 +333,9 @@
<field name="domain">[]</field>
<field name="context">{"search_default_unsubmitted": 1}</field>
<field name="help" type="html">
- <p>
+ <p class="o_view_nocontent_empty_folder">
+ No unreported employee expenses
+ </p><p>
From here the accountant will be able to approve as well as refuse the expenses which are verified by the HR Manager.
</p>
</field>
@@ -571,8 +561,8 @@
<field name="domain">[('employee_id.user_id', '=', uid), ('state', '!=', 'cancel')]</field>
<field name="context">{}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click here to create a new expense report.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new expense report
</p><p>
Once you have created your expense, submit it to your manager who will validate it.
</p>
@@ -587,7 +577,9 @@
<field name="domain">[('employee_id.user_id', '=', uid), ('state', '=', 'cancel')]</field>
<field name="context">{'create': False}</field>
<field name="help" type="html">
- <p>No refused reports to display.</p>
+ <p class="o_view_nocontent_empty_folder">
+ No refused reports to display
+ </p>
</field>
</record>
@@ -599,10 +591,8 @@
<field name="domain">[]</field>
<field name="context">{'search_default_submitted': 1}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click here to create a new expense report.
- </p><p>
- Once you have created your expense, submit it to your manager who will validate it.
+ <p class="o_view_nocontent_empty_folder">
+ No expense reports to approve
</p>
</field>
</record>
@@ -615,8 +605,8 @@
<field name="domain">[]</field>
<field name="context">{'search_default_to_post': 1}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click here to create a new expense report.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new expense report
</p><p>
Once you have created your expense, submit it to your manager who will validate it.
</p>
@@ -631,8 +621,8 @@
<field name="domain">[]</field>
<field name="context">{'search_default_approved': 1}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click here to create a new expense report.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new expense report
</p><p>
Once you have created your expense, submit it to your manager who will validate it.
</p>
@@ -647,8 +637,8 @@
<field name="domain">[]</field>
<field name="context">{}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click here to create a new expense report.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new expense report
</p><p>
Once you have created your expense, submit it to your manager who will validate it.
</p>
@@ -664,8 +654,8 @@
<field name="search_view_id" ref="view_hr_expense_sheet_filter"/>
<field name="view_id" ref="view_hr_expense_sheet_tree"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click here to create new expenses.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new expense
</p><p>
Once you have created your expense, submit it to your manager who will validate it.
</p>
@@ -681,8 +671,8 @@
<field name="search_view_id" ref="view_hr_expense_sheet_filter"/>
<field name="view_id" ref="view_hr_expense_sheet_tree"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click here to create new expenses.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new expense
</p><p>
Once you have created your expense, submit it to your manager who will validate it.
</p>
@@ -698,8 +688,8 @@
<field name="search_view_id" ref="view_hr_expense_sheet_filter"/>
<field name="view_id" ref="view_hr_expense_sheet_tree"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click here to create new expenses.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new expense
</p><p>
Once you have created your expense, submit it to your manager who will validate it.
</p>
diff --git a/addons/hr_gamification/views/gamification_views.xml b/addons/hr_gamification/views/gamification_views.xml
index e819b83e124..6cccbc2a923 100644
--- a/addons/hr_gamification/views/gamification_views.xml
+++ b/addons/hr_gamification/views/gamification_views.xml
@@ -22,10 +22,9 @@
<field name="context">{'search_default_group_by_user': True, 'search_default_group_by_definition': True}</field>
<field name="domain">[('challenge_id.category', '=', 'hr')]</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a goal.
- </p>
- <p>
+ <p class="o_view_nocontent_smiling_face">
+ Create a new goal
+ </p><p>
A goal is defined by a user and a goal type.
Goals can be created automatically by using challenges.
</p>
@@ -40,10 +39,9 @@
<field name="domain">[('category', '=', 'hr')]</field>
<field name="context">{'search_default_inprogress':True, 'default_inprogress':True}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a challenge.
- </p>
- <p>
+ <p class="o_view_nocontent_smiling_face">
+ Create a new challenge
+ </p><p>
Assign a list of goals to chosen users to evaluate them.
The challenge can use a period (weekly, monthly...) for automatic creation of goals.
The goals are created for the specified users or member of the group.
diff --git a/addons/hr_gamification/views/hr_employee_views.xml b/addons/hr_gamification/views/hr_employee_views.xml
index 4ac7b7aac83..c464f4a48a0 100644
--- a/addons/hr_gamification/views/hr_employee_views.xml
+++ b/addons/hr_gamification/views/hr_employee_views.xml
@@ -11,9 +11,9 @@
<page string="Received Badges" attrs="{'invisible': [('user_id', '=', False)]}">
<field name="has_badges" invisible="1"/>
<button string="Grant a Badge" type="action" name="%(action_reward_wizard)d"/> to reward this employee for a good action
- <div class="oe_view_nocontent" attrs="{'invisible': [('has_badges', '=', True)]}">
- <p class="oe_view_nocontent_create">
- Click to grant this employee his first badge
+ <div class="o_view_nocontent" attrs="{'invisible': [('has_badges', '=', True)]}">
+ <p class="o_view_nocontent_smiling_face">
+ Grant this employee his first badge
</p><p class="oe_grey">
Badges are rewards of good work. Give them to people you believe deserve it.
</p>
diff --git a/addons/hr_holidays/report/hr_leave_reports.xml b/addons/hr_holidays/report/hr_leave_reports.xml
index 8439ad12e7a..60c83a5d2cd 100644
--- a/addons/hr_holidays/report/hr_leave_reports.xml
+++ b/addons/hr_holidays/report/hr_leave_reports.xml
@@ -133,7 +133,7 @@
]
}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
+ <p class="o_view_nocontent_create">
Click here to create a new leave request.
</p>
</field>
diff --git a/addons/hr_holidays/views/hr_leave_allocation_views.xml b/addons/hr_holidays/views/hr_leave_allocation_views.xml
index 606c0328136..53391b5e61e 100644
--- a/addons/hr_holidays/views/hr_leave_allocation_views.xml
+++ b/addons/hr_holidays/views/hr_leave_allocation_views.xml
@@ -137,7 +137,7 @@
<field name="view_type">form</field>
<field name="view_mode">tree,kanban,form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
+ <p class="o_view_nocontent_create">
Click here to create a new leave allocation request.
</p>
</field>
@@ -164,7 +164,7 @@
<field name="view_mode">tree,form</field>
<field name="context">{'search_default_department':1, 'search_default_approve':1}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
+ <p class="o_view_nocontent_create">
Click here to create a new leave allocation.
</p>
</field>
diff --git a/addons/hr_holidays/views/hr_leave_views.xml b/addons/hr_holidays/views/hr_leave_views.xml
index e11c257b9d7..8cbe6a5633f 100644
--- a/addons/hr_holidays/views/hr_leave_views.xml
+++ b/addons/hr_holidays/views/hr_leave_views.xml
@@ -202,14 +202,14 @@
<field name="domain">[('user_id', '=', uid)]</field>
<field name="search_view_id" ref="view_hr_holidays_filter"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a new leave request.
- </p><p>
- Once you have recorded your leave request, it will be sent
- to a manager for validation. Be sure to set the right leave
- type (recuperation, legal leaves, sickness) and the exact
- number of open days related to your leave.
- </p>
+ <p class="o_view_nocontent_smiling_face">
+ Create a new leave request
+ </p><p>
+ Once you have recorded your leave request, it will be sent
+ to a manager for validation. Be sure to set the right leave
+ type (recuperation, legal leaves, sickness) and the exact
+ number of open days related to your leave.
+ </p>
</field>
</record>
@@ -272,8 +272,8 @@
<field name="view_mode">tree,kanban,form,calendar</field>
<field name="view_id" eval="view_holiday"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click here to create a new leave request.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new leave request
</p>
</field>
<field name="search_view_id" ref="view_hr_holidays_filter"/>
@@ -286,8 +286,13 @@
<field name="view_mode">tree,form,calendar</field>
<field name="context">{'search_default_department':1, 'search_default_approve':1}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click here to create a new leave request.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new leave request
+ </p><p>
+ Once you have recorded your leave request, it will be sent
+ to a manager for validation. Be sure to set the right leave
+ type (recuperation, legal leaves, sickness) and the exact
+ number of open days related to your leave.
</p>
</field>
<field name="search_view_id" ref="view_hr_holidays_filter"/>
diff --git a/addons/hr_payroll/views/hr_salary_rule_views.xml b/addons/hr_payroll/views/hr_salary_rule_views.xml
index 25b53cdd394..4de4538f76d 100644
--- a/addons/hr_payroll/views/hr_salary_rule_views.xml
+++ b/addons/hr_payroll/views/hr_salary_rule_views.xml
@@ -249,8 +249,8 @@
<field name="view_type">form</field>
<field name="view_mode">tree,kanban,form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a new contribution register.
+ <p class="o_view_nocontent_smiling_face">
+ Add a new contribution register
</p><p>
A contribution register is a third party involved in the salary
payment of the employees. It can be the social security, the
diff --git a/addons/hr_recruitment/models/hr_recruitment.py b/addons/hr_recruitment/models/hr_recruitment.py
index 783b91ebd45..765d13a2d52 100644
--- a/addons/hr_recruitment/models/hr_recruitment.py
+++ b/addons/hr_recruitment/models/hr_recruitment.py
@@ -278,7 +278,7 @@ class Applicant(models.Model):
def get_empty_list_help(self, help):
return super(Applicant, self.with_context(empty_list_help_model='hr.job',
empty_list_help_id=self.env.context.get('default_job_id'),
- empty_list_help_document_name=_("job applicants"))).get_empty_list_help(help)
+ empty_list_help_document_name=_("job applicant"))).get_empty_list_help(help)
@api.multi
def action_get_created_employee(self):
diff --git a/addons/hr_recruitment/views/hr_job_views.xml b/addons/hr_recruitment/views/hr_job_views.xml
index 2e0636849c5..60971806e89 100644
--- a/addons/hr_recruitment/views/hr_job_views.xml
+++ b/addons/hr_recruitment/views/hr_job_views.xml
@@ -97,11 +97,10 @@
<field name="view_id" ref="hr_recruitment.view_hr_job_kanban"/>
<field name="context">{}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click here to create a new job position.
+ <p class="o_view_nocontent_smiling_face">
+ Ready to recruit more efficiently?
</p><p>
- Once a job position is created, you can track related applications
- and manage the recruitment process.
+ Let's create a job position.
</p>
</field>
</record>
diff --git a/addons/hr_recruitment/views/hr_recruitment_views.xml b/addons/hr_recruitment/views/hr_recruitment_views.xml
index 3a60c1236bd..e6847ac59b0 100644
--- a/addons/hr_recruitment/views/hr_recruitment_views.xml
+++ b/addons/hr_recruitment/views/hr_recruitment_views.xml
@@ -10,8 +10,8 @@
<field name="domain">[]</field>
<field name="context">{}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a new stage in the recruitment process.
+ <p class="o_view_nocontent_smiling_face">
+ Add a new stage in the recruitment process
</p><p>
Define here your stages of the recruitment process, for example:
qualification call, first interview, second interview, refused,
@@ -328,7 +328,9 @@
<field name="search_view_id" ref="view_crm_case_jobs_filter"/>
<field name="context">{'search_default_job_id': [active_id], 'default_job_id': active_id}</field>
<field name="help" type="html">
- <p>
+ <p class="o_view_nocontent_empty_folder">
+ No applications yet
+ </p><p>
Odoo helps you track applicants in the recruitment
process and follow up all operations: meetings, interviews, etc.
</p><p>
@@ -348,8 +350,8 @@
<field name="context">{'search_default_activities_my': 1}</field>
<field name="domain">[('activity_date_deadline', '!=', False)]</field>
<field name="help" type="html">
- <p>
- Currently there are not any activity scheduled.
+ <p class="o_view_nocontent_smiling_face">
+ No scheduled activities for the moment
</p>
</field>
</record>
@@ -361,10 +363,9 @@
<field name="domain">[('job_id', '=', active_id)]</field>
<field name="context">{'default_job_id': active_id}</field>
<field name="help" type="html">
- <p>
- Create some aliases that will allow you to track where applicants come from.
- </p>
- <p>
+ <p class="o_view_nocontent_smiling_face">
+ Create some aliases to track where applicants come from
+ </p><p>
These aliases can be emails or urls for every source. When the applicant arrives here through one of these you'll know where he came from.
</p>
</field>
@@ -390,8 +391,8 @@
<field name="view_mode">kanban,tree,form</field>
<field name="context">{'search_default_job_id': active_id}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a new employee.
+ <p class="o_view_nocontent_smiling_face">
+ Add a new employee
</p><p>
With just a quick glance on the Odoo employee screen, you
can easily find all the information you need for each person;
@@ -500,12 +501,10 @@
(0, 0, {'view_mode': 'form', 'view_id': ref('hr.view_hr_job_form')})]"/>
<field name="context">{'search_default_in_recruitment': 1}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click here to create a new job position.
+ <p class="o_view_nocontent_smiling_face">
+ Ready to recruit more efficiently?
</p><p>
- Once a job position is created, you can track the applicants
- and manage the recruitment process related to the job
- position.
+ Let's create a job position.
</p>
</field>
</record>
@@ -519,7 +518,9 @@
<field name="search_view_id" ref="view_crm_case_jobs_filter"/>
<field name="context">{}</field>
<field name="help" type="html">
- <p>
+ <p class="o_view_nocontent_empty_folder">
+ No applications yet
+ </p><p>
Odoo helps you track applicants in the recruitment
process and follow up all operations: meetings, interviews, etc.
</p><p>
@@ -624,8 +625,8 @@
<field name="domain">[('res_model','=','hr.applicant')]</field>
<field name="context">{'create': False}</field>
<field name="help" type="html">
- <p>
- No document yet.
+ <p class="o_view_nocontent_empty_folder">
+ No document yet
</p><p>
This menu helps you search through resumes and motivation
letters. Odoo automatically indexes .PDF, .DOC, DOCX, .TXT
@@ -705,8 +706,8 @@
<field name="view_mode">tree,kanban,form</field>
<field name="view_id" ref="hr_recruitment_stage_tree"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a new stage in the recruitment process.
+ <p class="o_view_nocontent_smiling_face">
+ Add a new stage in the recruitment process
</p><p>
Don't forget to specify the department if your recruitment process
is different according to the job position.
@@ -742,8 +743,8 @@
<field name="res_model">hr.applicant.category</field>
<field name="view_type">form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a new tag.
+ <p class="o_view_nocontent_smiling_face">
+ Add a new tag
</p>
</field>
</record>
diff --git a/addons/hr_timesheet/report/hr_timesheet_report_view.xml b/addons/hr_timesheet/report/hr_timesheet_report_view.xml
index 6ddd5333cbe..49c25a8e63f 100644
--- a/addons/hr_timesheet/report/hr_timesheet_report_view.xml
+++ b/addons/hr_timesheet/report/hr_timesheet_report_view.xml
@@ -8,8 +8,8 @@
<field name="context">{'search_default_groupby_employee':1,}</field>
<field name="search_view_id" ref="hr_timesheet_line_search"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to record activities.
+ <p class="o_view_nocontent_smiling_face">
+ Record a new activity
</p><p>
You can register and track your workings hours by project every
day. Every time spent on a project will become a cost and can be re-invoiced to
@@ -46,8 +46,8 @@
<field name="context">{'search_default_groupby_project':1,}</field>
<field name="search_view_id" ref="hr_timesheet_line_search"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to record activities.
+ <p class="o_view_nocontent_smiling_face">
+ Record a new activity
</p><p>
You can register and track your workings hours by project every
day. Every time spent on a project will become a cost and can be re-invoiced to
@@ -84,8 +84,8 @@
<field name="context">{'search_default_groupby_task':1,}</field>
<field name="search_view_id" ref="hr_timesheet_line_search"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to record activities.
+ <p class="o_view_nocontent_smiling_face">
+ Record a new activity
</p><p>
You can register and track your workings hours by project every
day. Every time spent on a project will become a cost and can be re-invoiced to
diff --git a/addons/hr_timesheet/views/hr_timesheet_views.xml b/addons/hr_timesheet/views/hr_timesheet_views.xml
index f407a379c30..9cda6102048 100644
--- a/addons/hr_timesheet/views/hr_timesheet_views.xml
+++ b/addons/hr_timesheet/views/hr_timesheet_views.xml
@@ -195,8 +195,8 @@
<field name="context">{"search_default_week":1}</field>
<field name="search_view_id" ref="hr_timesheet_line_search"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to record activities.
+ <p class="o_view_nocontent_smiling_face">
+ Record a new activity
</p><p>
You can register and track your workings hours by project every
day. Every time spent on a project will become a cost and can be re-invoiced to
diff --git a/addons/hr_timesheet/views/project_views.xml b/addons/hr_timesheet/views/project_views.xml
index 6e91ebf90e7..47224328b99 100644
--- a/addons/hr_timesheet/views/project_views.xml
+++ b/addons/hr_timesheet/views/project_views.xml
@@ -11,8 +11,8 @@
<field name="context">{"default_project_id": active_id, "search_default_project_id": [active_id]}</field>
<field name="search_view_id" ref="hr_timesheet_line_search"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to record activities.
+ <p class="o_view_nocontent_smiling_face">
+ Record a new activity
</p><p>
You can register and track your workings hours by project every
day. Every time spent on a project will become a cost and can be re-invoiced to
diff --git a/addons/im_livechat/models/mail_channel.py b/addons/im_livechat/models/mail_channel.py
index c64bcd7108c..efd2346c2a0 100644
--- a/addons/im_livechat/models/mail_channel.py
+++ b/addons/im_livechat/models/mail_channel.py
@@ -104,7 +104,7 @@ class MailChannel(models.Model):
@api.model
def get_empty_list_help(self, help):
if help:
- return '<p">%s</p>' % (help)
+ help
return super(MailChannel, self).get_empty_list_help(help)
def _define_command_history(self):
diff --git a/addons/im_livechat/views/im_livechat_channel_views.xml b/addons/im_livechat/views/im_livechat_channel_views.xml
index 2974fd70d2a..0c8d8ec72bb 100644
--- a/addons/im_livechat/views/im_livechat_channel_views.xml
+++ b/addons/im_livechat/views/im_livechat_channel_views.xml
@@ -7,8 +7,8 @@
<field name="res_model">im_livechat.channel</field>
<field name="view_mode">kanban,form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to define a new website live chat channel.
+ <p class="o_view_nocontent_smiling_face">
+ Define a new website live chat channel
</p><p>
You can create channels for each website on which you want
to integrate the website live chat widget, allowing your website
@@ -206,8 +206,8 @@
<field name="view_id" ref="im_livechat_canned_response_view_tree"/>
<field name="domain">[('shortcode_type','=','text')]</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a new canned response.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new canned response
</p><p>
Canned responses allow you to insert prewritten responses in
your messages by typing <i>:shortcut</i>. The shortcut is
diff --git a/addons/im_livechat/views/mail_channel_views.xml b/addons/im_livechat/views/mail_channel_views.xml
index 95fa097d9c1..adde76225e3 100644
--- a/addons/im_livechat/views/mail_channel_views.xml
+++ b/addons/im_livechat/views/mail_channel_views.xml
@@ -75,8 +75,10 @@
<field name="domain">[('livechat_channel_id', '!=', None)]</field>
<field name="context">{}</field>
<field name="help" type="html">
- <p>
- Your chatter history is empty. Create a channel and start chatting to fill up your history.
+ <p class="o_view_nocontent_empty_folder">
+ Your chatter history is empty
+ </p><p>
+ Create a channel and start chatting to fill up your history.
</p>
</field>
</record>
diff --git a/addons/im_livechat/views/rating_views.xml b/addons/im_livechat/views/rating_views.xml
index adf392661bc..7c9bdc2edd5 100644
--- a/addons/im_livechat/views/rating_views.xml
+++ b/addons/im_livechat/views/rating_views.xml
@@ -24,8 +24,8 @@
<field name="domain">[('parent_res_model','=','im_livechat.channel'), ('consumed','=',True)]</field>
<field name="search_view_id" ref="rating_rating_view_search_livechat"/>
<field name="help" type="html">
- <p>
- There is no rating for this channel at the moment.
+ <p class="o_view_nocontent_empty_folder">
+ There is no rating for this channel at the moment
</p>
</field>
<field name="context">{'search_default_rating_last_7_days': 1}</field>
@@ -38,8 +38,8 @@
<field name="domain">[('parent_res_model','=','im_livechat.channel'), ('consumed', '=', True)]</field>
<field name="search_view_id" ref="rating_rating_view_search_livechat"/>
<field name="help" type="html">
- <p>
- Customer ratings on livechat session.
+ <p class="o_view_nocontent_empty_folder">
+ No customer ratings on live chat session yet
</p>
</field>
</record>
diff --git a/addons/l10n_fr_sale_closing/views/account_sale_closure.xml b/addons/l10n_fr_sale_closing/views/account_sale_closure.xml
index 97ddeb05056..502c3d632c1 100644
--- a/addons/l10n_fr_sale_closing/views/account_sale_closure.xml
+++ b/addons/l10n_fr_sale_closing/views/account_sale_closure.xml
@@ -56,7 +56,7 @@
<field name="view_type">tree</field>
<field name="view_mode">list,form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_nocreate">
+ <p class="o_view_nocontent_nocreate">
The closings are created by Odoo
</p><p>
Sales closings run automatically on a daily, monthly and annual basis. It computes both period and cumulative totals from all the sales entries posted in the system after the previous closing.
diff --git a/addons/link_tracker/views/link_tracker.xml b/addons/link_tracker/views/link_tracker.xml
index ad255ac4425..951bc2d8154 100644
--- a/addons/link_tracker/views/link_tracker.xml
+++ b/addons/link_tracker/views/link_tracker.xml
@@ -111,6 +111,11 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form,graph</field>
<field name="view_id" ref="view_link_tracker_tree"/>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_smiling_face">
+ Create a new link tracker
+ </p>
+ </field>
</record>
<!-- Website links click views -->
diff --git a/addons/lunch/views/lunch_views.xml b/addons/lunch/views/lunch_views.xml
index a8c3f3dba77..aef9f006d4b 100644
--- a/addons/lunch/views/lunch_views.xml
+++ b/addons/lunch/views/lunch_views.xml
@@ -159,7 +159,9 @@
<field name="search_view_id" ref="lunch_order_line_view_search"/>
<field name="context">{"search_default_is_mine":1}</field>
<field name="help" type="html">
- <p>
+ <p class="o_view_nocontent_empty_folder">
+ No previous order found
+ </p><p>
There is no previous order recorded. Click on "My Lunch" and then create a new lunch order.
</p>
</field>
@@ -187,7 +189,9 @@
<field name="context">{"search_default_is_mine_group":1}</field>
<field name="view_id" ref="lunch_cashmove_view_tree_2"/>
<field name="help" type="html">
- <p>
+ <p class="o_view_nocontent_empty_folder">
+ No cash move yet
+ </p><p>
Here you can see your cash moves.<br/>A cash moves can be either an expense or a payment.
An expense is automatically created when an order is received while a payment is a reimbursement to the company encoded by the manager.
</p>
@@ -204,13 +208,14 @@
<field name="search_view_id" ref="lunch_order_line_view_search"/>
<field name="context">{"search_default_group_by_supplier":1, "search_default_today":1}</field>
<field name="help" type="html">
- <p>
+ <p class="o_view_nocontent_empty_folder">
+ Nothing to order today
+ </p><p>
Here you can see today's orders grouped by vendors.
- </p>
- <p>
- - Click on the <span class="fa fa-phone text-success"/> to announce that the order is ordered <br/>
- - Click on the <span class="fa fa-check text-success"/> to announce that the order is received <br/>
- - Click on the <span class="fa fa-times-circle text-danger"/> to announce that the order isn't available
+ </p><p>
+ Click on the <span class="fa fa-phone text-success"/> to announce that the order is ordered.<br/>
+ Click on the <span class="fa fa-check text-success"/> to announce that the order is received.<br/>
+ Click on the <span class="fa fa-times-circle text-danger"/> to announce that the order isn't available.
</p>
</field>
</record>
@@ -224,13 +229,14 @@
<field name="search_view_id" ref="lunch_order_line_view_search"/>
<field name="context">{"search_default_group_by_date":1, "search_default_group_by_supplier":1}</field>
<field name="help" type="html">
- <p>
+ <p class="o_view_nocontent_empty_folder">
+ No lunch order yet
+ </p><p>
Summary of all lunch orders, grouped by vendor and by date.
- </p>
- <p>
- - Click on the <span class="fa fa-phone text-success"/> to announce that the order is ordered <br/>
- - Click on the <span class="fa fa-check text-success"/> to announce that the order is received <br/>
- - Click on the <span class="fa fa-times-circle text-danger"/> red X to announce that the order isn't available
+ </p><p>
+ Click on the <span class="fa fa-phone text-success"/> to announce that the order is ordered.<br/>
+ Click on the <span class="fa fa-check text-success"/> to announce that the order is received.<br/>
+ Click on the <span class="fa fa-times-circle text-danger"/> red X to announce that the order isn't available.
</p>
</field>
</record>
@@ -245,10 +251,9 @@
<field name="context">{"search_default_group_by_user":1}</field>
<field name="view_id" ref="lunch_cashmove_view_tree"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a new payment.
- </p>
- <p>
+ <p class="o_view_nocontent_smiling_face">
+ Create a new payment
+ </p><p>
A cashmove can either be an expense or a payment.<br/>
An expense is automatically created at the order receipt.<br/>
A payment represents the employee reimbursement to the company.
@@ -266,11 +271,10 @@
<field name="context">{"search_default_is_payment":1}</field>
<field name="view_id" ref="lunch_cashmove_view_tree"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a payment.
- </p>
- <p>
- Here you can see the employees' payment. A payment is a cash move from the employee to the company.
+ <p class="o_view_nocontent_smiling_face">
+ Register a payment
+ </p><p>
+ Payments are used to register liquidity movements. You can process those payments by your own means or by using installed facilities.
</p>
</field>
</record>
@@ -282,10 +286,9 @@
<field name="res_model">lunch.product</field>
<field name="view_mode">tree,kanban,form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a product for lunch.
- </p>
- <p>
+ <p class="o_view_nocontent_smiling_face">
+ Create a new product for lunch
+ </p><p>
A product is defined by its name, category, price and vendor.
</p>
</field>
@@ -298,10 +301,9 @@
<field name="res_model">lunch.product.category</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a lunch category.
- </p>
- <p>
+ <p class="o_view_nocontent_smiling_face">
+ Create a new lunch category
+ </p><p>
Here you can access all categories for the lunch products.
</p>
</field>
@@ -328,18 +330,16 @@
<field name="view_mode">tree,kanban,form</field>
<field name="search_view_id" ref="lunch_alert_view_search"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a lunch alert.
- </p>
- <p>
+ <p class="o_view_nocontent_smiling_face">
+ Create a new lunch alert
+ </p><p>
Alerts are used to warn employee from possible issues concerning the lunch orders.
To create a lunch alert you have to define its recurrence, the time interval during which the alert should be executed and the message to display.
- </p>
- <p>
- Example: <br/>
- - Recurency: Everyday<br/>
- - Time interval: from 00h00 am to 11h59 pm<br/>
- - Message: "You must order before 10h30 am"
+ </p><p>
+ Example:<br/>
+ Recurency: Everyday,<br/>
+ Time interval: from 00h00 am to 11h59 pm,<br/>
+ Message: "You must order before 10h30 am".
</p>
</field>
</record>
diff --git a/addons/mail/models/mail_thread.py b/addons/mail/models/mail_thread.py
index 1306e8b8eeb..bf43e1c8a4d 100644
--- a/addons/mail/models/mail_thread.py
+++ b/addons/mail/models/mail_thread.py
@@ -306,7 +306,7 @@ class MailThread(models.AbstractModel):
res_id = self._context.get('empty_list_help_id')
catchall_domain = self.env['ir.config_parameter'].sudo().get_param("mail.catchall.domain")
document_name = self._context.get('empty_list_help_document_name', _('document'))
- add_arrow = not help or help.find("oe_view_nocontent_create") == -1
+ nothing_here = not help
alias = None
if catchall_domain and model and res_id: # specific res_id -> find its alias (i.e. section_id specified)
@@ -329,27 +329,29 @@ class MailThread(models.AbstractModel):
if alias:
email_link = "<a href='mailto:%(email)s'>%(email)s</a>" % {'email': alias.name_get()[0][1]}
- if add_arrow:
- return "<p class='oe_view_nocontent_create'>%(dyn_help)s</p>%(static_help)s" % {
+ if nothing_here:
+ return "<p class='o_view_nocontent_smiling_face'>%(dyn_help)s</p>%(static_help)s" % {
'static_help': help or '',
- 'dyn_help': _("Click here to add new %(document)s or send an email to: %(email_link)s") % {
+ 'dyn_help': _("Add new %(document)s or send an email to: %(email_link)s") % {
'document': document_name,
'email_link': email_link
}
}
- return "%(static_help)s<p>%(dyn_help)s" % {
+ return "%(static_help)s<p>%(dyn_help)s</p>" % {
'static_help': help or '',
- 'dyn_help': _("You could also add a new %(document)s by sending an email to: %(email_link)s.") % {
+ 'dyn_help': _("You could also add a new %(document)s by sending an email to: %(email_link)s") % {
'document': document_name,
'email_link': email_link,
}
}
- if add_arrow:
- return "<p class='oe_view_nocontent_create'>%(dyn_help)s</p>%(static_help)s" % {
+ if nothing_here:
+ return "<p class='o_view_nocontent_smiling_face'>%(dyn_help)s</p>%(static_help)s" % {
'static_help': help or '',
- 'dyn_help': _("Click here to add new %s") % document_name,
+ 'dyn_help': _("Create a new %(document)s") % {
+ 'document': document_name,
}
+ }
return help
diff --git a/addons/mail/static/src/xml/thread.xml b/addons/mail/static/src/xml/thread.xml
index 6f5f5e71cfe..7806029557b 100644
--- a/addons/mail/static/src/xml/thread.xml
+++ b/addons/mail/static/src/xml/thread.xml
@@ -104,15 +104,23 @@
</t>
<!-- When a channel is empty-->
- <div t-name="mail.EmptyChannel" class="o_mail_no_content">
- <t t-if="options.channel_id==='channel_inbox'">
- <div class="o_thread_title">Congratulations, your inbox is empty</div>
- <div>New messages appear here.</div>
- </t>
- <t t-if="options.channel_id==='channel_starred'">
- <div class="o_thread_title">No starred message</div>
- <div> You can mark any message as 'starred', and it shows up in this channel.</div>
- </t>
+ <div t-name="mail.EmptyChannel" class="o_mail_no_content o_view_nocontent_container">
+ <div class="o_view_nocontent">
+ <t t-if="options.channel_id==='channel_inbox'">
+ <p class="o_view_nocontent_smiling_face">
+ Congratulations, your inbox is empty
+ </p><p>
+ New messages appear here.
+ </p>
+ </t>
+ <t t-if="options.channel_id==='channel_starred'">
+ <p class="o_view_nocontent_neutral_face">
+ No starred message
+ </p><p>
+ You can mark any message as 'starred', and it shows up in this channel.
+ </p>
+ </t>
+ </div>
</div>
<t t-name="mail.ChatThread.Content">
diff --git a/addons/mail/views/mail_message_views.xml b/addons/mail/views/mail_message_views.xml
index 19ad37d44a5..5e2fb5514a2 100644
--- a/addons/mail/views/mail_message_views.xml
+++ b/addons/mail/views/mail_message_views.xml
@@ -167,8 +167,8 @@
<record id="base.action_attachment" model="ir.actions.act_window">
<field name="view_mode">kanban,tree,form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click here to attach a new document.
+ <p class="o_view_nocontent_smiling_face">
+ Attach a new document
</p>
</field>
</record>
diff --git a/addons/mail/views/mail_shortcode_views.xml b/addons/mail/views/mail_shortcode_views.xml
index 0b4b1085f44..8400267814e 100644
--- a/addons/mail/views/mail_shortcode_views.xml
+++ b/addons/mail/views/mail_shortcode_views.xml
@@ -8,8 +8,8 @@
<field name="res_model">mail.shortcode</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to define a new chat shortcode.
+ <p class="o_view_nocontent_smiling_face">
+ Define a new chat shortcode
</p><p>
A shortcode is a keyboard shortcut. For instance, you type #gm and it will be transformed into "Good Morning".
</p>
diff --git a/addons/maintenance/views/maintenance_views.xml b/addons/maintenance/views/maintenance_views.xml
index 2dfa8d89cb4..c35bb46cdd3 100644
--- a/addons/maintenance/views/maintenance_views.xml
+++ b/addons/maintenance/views/maintenance_views.xml
@@ -234,8 +234,8 @@
<field name="view_id" ref="hr_equipment_request_view_kanban"/>
<field name="context">{'default_technician_user_id': uid}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a new maintenance request.
+ <p class="o_view_nocontent_smiling_face">
+ Add a new maintenance request
</p><p>
Follow the process of the request and communicate with the collaborator.
</p>
@@ -253,8 +253,8 @@
'default_category_id': active_id,
}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a new maintenance request.
+ <p class="o_view_nocontent_smiling_face">
+ Add a new maintenance request
</p><p>
Follow the process of the request and communicate with the collaborator.
</p>
@@ -270,6 +270,13 @@
'default_equipment_id': active_id,
}</field>
<field name="domain">[('equipment_id', '=', active_id)]</field>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_smiling_face">
+ Add a new maintenance request
+ </p><p>
+ Follow the process of the request and communicate with the collaborator.
+ </p>
+ </field>
</record>
<record id="hr_equipment_todo_request_action_from_dashboard" model="ir.actions.act_window">
@@ -280,6 +287,13 @@
'default_maintenance_team_id': active_id,
}</field>
<field name="domain">[('maintenance_team_id', '=', active_id), ('maintenance_type', 'in', context.get('maintenance_type', ['preventive', 'corrective']))]</field>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_smiling_face">
+ Add a new maintenance request
+ </p><p>
+ Follow the process of the request and communicate with the collaborator.
+ </p>
+ </field>
</record>
<record id="hr_equipment_request_action_cal" model="ir.actions.act_window">
@@ -287,6 +301,13 @@
<field name="res_model">maintenance.request</field>
<field name="view_mode">calendar,kanban,tree,form,pivot,graph</field>
<field name="view_id" ref="hr_equipment_view_calendar"/>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_smiling_face">
+ Add a new maintenance request
+ </p><p>
+ Follow the process of the request and communicate with the collaborator.
+ </p>
+ </field>
</record>
<record id="maintenance_request_action_reports" model="ir.actions.act_window">
@@ -294,8 +315,10 @@
<field name="res_model">maintenance.request</field>
<field name="view_mode">graph,pivot,kanban,tree,form,calendar</field>
<field name="help" type="html">
- <p>
- No maintenance request.
+ <p class="o_view_nocontent_smiling_face">
+ Add a new maintenance request
+ </p><p>
+ Follow the process of the request and communicate with the collaborator.
</p>
</field>
</record>
@@ -518,13 +541,11 @@
<field name="view_mode">kanban,tree,form</field>
<field name="view_id" ref="hr_equipment_view_kanban"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a new equipment.
+ <p class="o_view_nocontent_smiling_face">
+ Add a new equipment
</p><p>
- This application helps you to track equipments used by employees.
- Create some laptop, printer or phone and link each equipment to
- an employee or department. You will manage allocations, issues
- and maintenance of equipment.
+ Track equipments and link it to an employee or department.
+ You will be able to manage allocations, issues and maintenance of your equipment.
</p>
</field>
</record>
@@ -541,12 +562,11 @@
'default_category_id': active_id,
}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a new Engine.
+ <p class="o_view_nocontent_smiling_face">
+ Add a new equipment
</p><p>
- This application helps you to track equipments used by employees.
- Create some laptop, printer or phone and link each equipment to an employee or department.
- You will manage allocations, issues and maintenance of equipment.
+ Track equipments and link it to an employee or department.
+ You will be able to manage allocations, issues and maintenance of your equipment.
</p>
</field>
</record>
@@ -665,8 +685,8 @@
<field name="view_mode">tree,kanban,form</field>
<field name="view_id" ref="hr_equipment_category_view_tree"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a new equipment category.
+ <p class="o_view_nocontent_smiling_face">
+ Add a new equipment category
</p>
</field>
</record>
@@ -719,8 +739,8 @@
<field name="view_mode">tree,kanban,form</field>
<field name="view_type">form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a stage in the maintenance request.
+ <p class="o_view_nocontent_smiling_face">
+ Add a new stage in the maintenance request
</p>
</field>
</record>
@@ -930,8 +950,8 @@
(0, 0, {'view_mode': 'tree', 'view_id': ref('maintenance_team_view_tree')}),
(0, 0, {'view_mode': 'kanban', 'view_id': ref('maintenance_team_view_kanban')})]"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a team in the maintenance request.
+ <p class="o_view_nocontent_smiling_face">
+ Add a team in the maintenance request
</p>
</field>
</record>
@@ -943,8 +963,8 @@
<field name="view_type">form</field>
<field name="view_id" ref="maintenance_team_kanban"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a stage in the maintenance request.
+ <p class="o_view_nocontent_smiling_face">
+ Add a new stage in the maintenance request
</p>
</field>
</record>
diff --git a/addons/mass_mailing/views/mass_mailing_views.xml b/addons/mass_mailing/views/mass_mailing_views.xml
index 4875421e812..cc1a71600d7 100644
--- a/addons/mass_mailing/views/mass_mailing_views.xml
+++ b/addons/mass_mailing/views/mass_mailing_views.xml
@@ -176,6 +176,13 @@
<field name="view_type">form</field>
<field name="view_mode">tree,kanban,form,graph,pivot</field>
<field name="context">{'search_default_not_opt_out': 1}</field>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_smiling_face">
+ Create a contact in your address book
+ </p><p>
+ Odoo helps you to easily track all activities related to a customer.
+ </p>
+ </field>
</record>
<record model="ir.actions.act_window" id="action_view_mass_mailing_contacts_from_list">
@@ -186,8 +193,8 @@
<field name="domain">[('list_ids', 'in', [active_id])]</field>
<field name="context">{'search_default_not_opt_out': 1, 'default_list_ids': [(4,active_id)]}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a recipient.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new recipient
</p>
</field>
</record>
@@ -286,12 +293,13 @@
<field name="view_type">form</field>
<field name="view_mode">tree,kanban,form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click here to create a new mailing list.
- </p><p>
- Mailing lists allows you to to manage customers and
- contacts easily and to send to mailings in a single click.
- </p></field>
+ <p class="o_view_nocontent_smiling_face">
+ Create a new mailing list
+ </p><p>
+ Mailing lists allow you to manage customers and
+ contacts easily and to send to mailings in a single click.
+ </p>
+ </field>
</record>
<menuitem name="Mailing Lists" id="menu_email_mass_mailing_lists"
@@ -561,11 +569,13 @@
<field name="view_type">form</field>
<field name="view_mode">kanban,tree,form,graph</field>
<field name="help" type="html">
-<p class="oe_view_nocontent_create">
- Click here to create a new mailing.
-</p><p>
- Mass mailing allows you to to easily design and send mass mailings to your contacts, customers or leads using mailing lists.
-</p></field>
+ <p class="o_view_nocontent_smiling_face">
+ Create a new mailing list
+ </p><p>
+ Mailing lists allow you to manage customers and
+ contacts easily and to send to mailings in a single click.
+ </p>
+ </field>
</record>
<record id="action_view_mass_mailings_from_campaign" model="ir.actions.act_window">
@@ -579,11 +589,13 @@
}
</field>
<field name="help" type="html">
-<p class="oe_view_nocontent_create">
- Click here to create a new mailing.
-</p><p>
- Mass mailing allows you to to easily design and send mass mailings to your contacts, customers or leads using mailing lists.
-</p></field>
+ <p class="o_view_nocontent_smiling_face">
+ Create a new mailing list
+ </p><p>
+ Mailing lists allow you to manage customers and
+ contacts easily and to send to mailings in a single click.
+ </p>
+ </field>
</record>
<record id="action_create_mass_mailings_from_campaign" model="ir.actions.act_window">
@@ -597,11 +609,13 @@
}
</field>
<field name="help" type="html">
-<p class="oe_view_nocontent_create">
- Click here to create a new mailing.
-</p><p>
- Mass mailing allows you to to easily design and send mass mailings to your contacts, customers or leads using mailing lists.
-</p></field>
+ <p class="o_view_nocontent_smiling_face">
+ Create a new mailing list
+ </p><p>
+ Mailing lists allow you to manage customers and
+ contacts easily and to send to mailings in a single click.
+ </p>
+ </field>
</record>
<record id="action_create_ab_mass_mailings_from_campaign" model="ir.actions.act_window">
@@ -616,11 +630,13 @@
}
</field>
<field name="help" type="html">
-<p class="oe_view_nocontent_create">
- Click here to create a new mailing.
-</p><p>
- Mass mailing allows you to to easily design and send mass mailings to your contacts, customers or leads using mailing lists.
-</p></field>
+ <p class="o_view_nocontent_smiling_face">
+ Create a new mailing list
+ </p><p>
+ Mailing lists allow you to manage customers and
+ contacts easily and to send to mailings in a single click.
+ </p>
+ </field>
</record>
<menuitem name="Mass Mailings" id="menu_email_mass_mailings"
@@ -654,6 +670,11 @@
<field name="res_model">mail.mass_mailing.stage</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_smiling_face">
+ Create a new mass mailing stage
+ </p>
+ </field>
</record>
<menuitem id="menu_mass_mailing_configuration" name="Configuration" parent="mass_mailing_menu_root"
@@ -681,8 +702,8 @@
<field name="res_model">mail.mass_mailing.tag</field>
<field name="view_type">form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a new tag.
+ <p class="o_view_nocontent_smiling_face">
+ Add a new tag
</p>
</field>
</record>
@@ -867,12 +888,12 @@
<field name="view_type">form</field>
<field name="view_mode">kanban,tree,form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to define a new mass mailing campaign.
- </p><p>
- Create a campaign to structure mass mailing and get analysis from email status.
- </p>
-</field>
+ <p class="o_view_nocontent_smiling_face">
+ Create a campaign
+ </p><p>
+ Create a campaign to structure mass mailing and get analysis from email status.
+ </p>
+ </field>
</record>
<menuitem name="Campaigns" id="menu_email_campaigns"
diff --git a/addons/membership/views/partner_views.xml b/addons/membership/views/partner_views.xml
index 1fc392b98b8..e609eac8734 100644
--- a/addons/membership/views/partner_views.xml
+++ b/addons/membership/views/partner_views.xml
@@ -51,11 +51,11 @@
<field name="search_view_id" ref="view_res_partner_member_filter"/>
<field name="context">{"search_default_all_members": 1, "default_free_member": True}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a new Member
+ <p class="o_view_nocontent_smiling_face">
+ Add a new member
</p><p>
- Odoo helps you easily track all activities related to a member:
- Current Membership Status, Discussions and History of Membership, etc.
+ Odoo helps you easily track all activities related to a member:
+ Current Membership Status, Discussions and History of Membership, etc.
</p>
</field>
</record>
diff --git a/addons/mrp/models/mrp_bom.py b/addons/mrp/models/mrp_bom.py
index 4d9a0e5bcbe..f17939525f8 100644
--- a/addons/mrp/models/mrp_bom.py
+++ b/addons/mrp/models/mrp_bom.py
@@ -290,8 +290,8 @@ class MrpBomLine(models.Model):
'views': [(attachment_view.id, 'kanban'), (False, 'form')],
'view_mode': 'kanban,tree,form',
'view_type': 'form',
- 'help': _('''<p class="oe_view_nocontent_create">
- Click to upload files to your product.
+ 'help': _('''<p class="o_view_nocontent_smiling_face">
+ Upload files to your product
</p><p>
Use this feature to store any files, like drawings or specifications.
</p>'''),
diff --git a/addons/mrp/models/mrp_production.py b/addons/mrp/models/mrp_production.py
index 14a288f5f94..ae6e40ddbcd 100644
--- a/addons/mrp/models/mrp_production.py
+++ b/addons/mrp/models/mrp_production.py
@@ -607,3 +607,10 @@ class MrpProduction(models.Model):
action = self.env.ref('stock.action_stock_scrap').read()[0]
action['domain'] = [('production_id', '=', self.id)]
return action
+
+ @api.model
+ def get_empty_list_help(self, help):
+ self = self.with_context(
+ empty_list_help_document_name=_("manufacturing order"),
+ )
+ return super(MrpProduction, self).get_empty_list_help(help)
diff --git a/addons/mrp/views/mrp_bom_views.xml b/addons/mrp/views/mrp_bom_views.xml
index 299f96c1b61..de547036a6e 100644
--- a/addons/mrp/views/mrp_bom_views.xml
+++ b/addons/mrp/views/mrp_bom_views.xml
@@ -154,15 +154,12 @@
<field name="view_mode">tree,kanban,form</field>
<field name="search_view_id" ref="view_mrp_bom_filter"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a bill of material.
+ <p class="o_view_nocontent_smiling_face">
+ Create a bill of materials
</p><p>
- Bills of Materials allow you to define the list of required raw
+ Bills of materials allow you to define the list of required raw
materials used to make a finished product; through a manufacturing
order or a pack of products.
- </p><p>
- Odoo uses these BoMs to automatically propose manufacturing
- orders according to procurement needs.
</p>
</field>
</record>
diff --git a/addons/mrp/views/mrp_message_views.xml b/addons/mrp/views/mrp_message_views.xml
index 18fc7c1040f..591efc64cb7 100644
--- a/addons/mrp/views/mrp_message_views.xml
+++ b/addons/mrp/views/mrp_message_views.xml
@@ -136,8 +136,8 @@
<field name="view_mode">tree,kanban,form</field>
<field name="context">{'search_default_active_message': True}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click here to create a new Work Order Message.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new work order message
</p><p>
Work Order Messages are used to warn users about any change in the product,
process, etc. These messages will appear on the involved Work Orders.
diff --git a/addons/mrp/views/mrp_production_views.xml b/addons/mrp/views/mrp_production_views.xml
index 1d6136d7e95..03acdd8a549 100644
--- a/addons/mrp/views/mrp_production_views.xml
+++ b/addons/mrp/views/mrp_production_views.xml
@@ -297,14 +297,8 @@
<field name="search_view_id" ref="view_mrp_production_filter"/>
<field name="context">{'search_default_todo': True}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click here to create a Manufacturing Order.
- </p><p>
- Based on a Bill of Material, a Manufacturing Order will consume raw materials
- and produce finished products.
- </p><p>
- Manufacturing Orders can be generated automatically based on customer
- requirements or reordering rules.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new manufacturing order
</p>
</field>
</record>
@@ -335,8 +329,8 @@
<field name="view_mode">tree,kanban,form,calendar,pivot,graph</field>
<field name="domain">[('state', '=', 'confirmed'), ('routing_id', '!=', False)]</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to start a new manufacturing order.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new manufacturing order
</p><p>
A manufacturing order, based on a bill of materials, will
consume raw materials and produce finished products.
@@ -356,8 +350,8 @@
<field name="view_mode">tree,form,kanban,calendar,pivot,graph</field>
<field name="domain">[('availability', 'in', ('waiting', 'partially_available'))]</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to start a new manufacturing order.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new manufacturing order
</p><p>
A manufacturing order, based on a bill of materials, will
consume raw materials and produce finished products.
diff --git a/addons/mrp/views/mrp_routing_views.xml b/addons/mrp/views/mrp_routing_views.xml
index e3425b66201..6829e36c4b0 100644
--- a/addons/mrp/views/mrp_routing_views.xml
+++ b/addons/mrp/views/mrp_routing_views.xml
@@ -162,8 +162,8 @@
<field name="view_id" ref="mrp_routing_tree_view"/>
<field name="search_view_id" ref="mrp_routing_search_view"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click here to create a new Routing.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new routing
</p><p>
Routings define the successive operations that need to be
done to realize a Manufacturing Order. Each operation from
diff --git a/addons/mrp/views/mrp_unbuild_views.xml b/addons/mrp/views/mrp_unbuild_views.xml
index a0f14e9d6d2..4e639f69419 100644
--- a/addons/mrp/views/mrp_unbuild_views.xml
+++ b/addons/mrp/views/mrp_unbuild_views.xml
@@ -50,6 +50,11 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="domain">['|', ('move_id.unbuild_id', '=', active_id), ('move_id.consume_unbuild_id', '=', active_id)]</field>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_empty_folder">
+ There's no product move yet
+ </p>
+ </field>
</record>
<record id="mrp_unbuild_kanban_view" model="ir.ui.view">
@@ -163,10 +168,11 @@
<field name="view_type">form</field>
<field name="view_mode">tree,kanban,form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click here to create a Unbuild Order.
+ <p class="o_view_nocontent_smiling_face">
+ Create an unbuild order
</p><p>
- Unbuild Orders are used to break down a product you manufactured or purchased into its components, based on its Bill of Material.</p>
+ An unbuild order is used to break down a finished product into its components.
+ </p>
</field>
</record>
diff --git a/addons/mrp/views/mrp_workcenter_views.xml b/addons/mrp/views/mrp_workcenter_views.xml
index baadfaf9fb8..d0b49b8d9be 100644
--- a/addons/mrp/views/mrp_workcenter_views.xml
+++ b/addons/mrp/views/mrp_workcenter_views.xml
@@ -19,8 +19,8 @@
<field name="search_view_id" ref="view_mrp_production_work_order_search"/>
<field name="domain">[('workcenter_id', '=', active_id), ('state', '!=', 'done')]</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a work center.
+ <p class="o_view_nocontent_smiling_face">
+ Add a work center
</p><p>
Work Centers allow you to create and manage manufacturing
units. They consist of workers and/or machines, which are
@@ -89,8 +89,8 @@
<field name="domain">[('workcenter_id','=',active_id')]</field>
<field name="context">{'search_default_thismonth':True}</field>
<field name="help" type="html">
- <p>
- Overall Equipment Effectiveness: no working or blocked time.
+ <p class="o_view_nocontent_empty_folder">
+ Overall Equipment Effectiveness: no working or blocked time
</p>
</field>
</record>
@@ -106,8 +106,8 @@
'default_workcenter_id': active_id,
'search_default_workcenter_id': [active_id]}</field>
<field name="help" type="html">
- <p>
- No productivity loss for this equipment.
+ <p class="o_view_nocontent_empty_folder">
+ No productivity loss for this equipment
</p>
</field>
</record>
@@ -119,6 +119,11 @@
<field name="domain">[('workcenter_id','=', active_id),('state','=','done')]</field>
<field name="view_type">form</field>
<field name="view_mode">graph,pivot,tree,form,gantt</field>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_smiling_face">
+ Create a new work orders performance
+ </p>
+ </field>
</record>
<record model="ir.actions.act_window" id="mrp_workorder_report">
@@ -130,6 +135,11 @@
<field name="view_type">form</field>
<field name="view_mode">graph,pivot,tree,form,gantt</field>
<field name="search_view_id" ref="view_mrp_production_work_order_search"/>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_smiling_face">
+ Create a new work orders performance
+ </p>
+ </field>
</record>
<!-- Workcenter Kanban view-->
@@ -384,8 +394,8 @@
(0, 0, {'view_mode': 'form', 'view_id': ref('mrp_workcenter_view')})]"/>
<field name="search_view_id" ref="view_mrp_workcenter_search"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click here to create a new Work Center
+ <p class="o_view_nocontent_smiling_face">
+ Create a new work center
</p><p>
Manufacturing operations are processed at Work Centers. A Work Center can be composed
of workers and/or machines, they are used for costing, scheduling, capacity planning, etc.
@@ -403,9 +413,8 @@
<field name="view_id" ref="mrp_workcenter_kanban"/>
<field name="search_view_id" ref="view_mrp_workcenter_search"/>
<field name="help" type="html">
- <p>
- <a type="action" name="%(mrp_workcenter_action)d">Click here
- </a> to create a new Work Center.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new work center
</p><p>
Manufacturing operations are processed at Work Centers. A Work Center can be composed of
workers and/or machines, they are used for costing, scheduling, capacity planning, etc.
@@ -506,8 +515,8 @@
<field name="view_mode">tree,kanban,form</field>
<field name="domain">[]</field>
<field name="help" type="html">
- <p>
- No productivity loss defined.
+ <p class="o_view_nocontent_empty_folder">
+ No productivity loss defined
</p>
</field>
</record>
@@ -619,8 +628,8 @@
<field name="domain">[]</field>
<field name="context">{'search_default_workcenter_group': 1, 'search_default_thismonth':True, 'create':False,'edit':False}</field>
<field name="help" type="html">
- <p>
- Overall Equipment Effectiveness: no working or blocked time.
+ <p class="o_view_nocontent_empty_folder">
+ Overall Equipment Effectiveness: no working or blocked time
</p>
</field>
</record>
diff --git a/addons/mrp/views/mrp_workorder_views.xml b/addons/mrp/views/mrp_workorder_views.xml
index 07d82b3626e..8add57293ae 100644
--- a/addons/mrp/views/mrp_workorder_views.xml
+++ b/addons/mrp/views/mrp_workorder_views.xml
@@ -29,8 +29,10 @@
<field name="context">{'search_default_workcenter_id': active_id}</field>
<field name="domain">[]</field>
<field name="help" type="html">
- <p>
- No data to display. You will get here statistics about the
+ <p class="o_view_nocontent_empty_folder">
+ No data to display
+ </p><p>
+ You will get here statistics about the
work orders duration related to this routing.
</p>
</field>
@@ -46,8 +48,10 @@
<field name="search_view_id" ref="view_mrp_production_work_order_search"/>
<field name="domain">[('production_id.routing_id', '=', active_id), ('state', '=', 'done')]</field>
<field name="help" type="html">
- <p>
- No data to display. You will get here statistics about the
+ <p class="o_view_nocontent_empty_folder">
+ No data to display
+ </p><p>
+ You will get here statistics about the
work orders duration related to this routing.
</p>
</field>
@@ -61,7 +65,9 @@
<field name="view_mode">tree,form,gantt,calendar,pivot,graph</field>
<field name="domain">[('production_id', '=', active_id)]</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
+ <p class="o_view_nocontent_smiling_face">
+ Start a new work order
+ </p><p>
Work Orders are operations to be processed at a Work Center to realize a
Manufacturing Order. Work Orders are trigerred by Manufacturing Orders,
they are based on the Routing defined on these ones
@@ -376,11 +382,13 @@
<field name="view_id" ref="mrp_workorder_view_gantt"/>
<field name="context">{'search_default_work_center': True}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Work Orders are operations to be processed at a Work Center to realize a
- Manufacturing Order. Work Orders are trigerred by Manufacturing Orders,
- they are based on the Routing defined on these ones.
- </p>
+ <p class="o_view_nocontent_smiling_face">
+ Start a new work order
+ </p><p>
+ Work Orders are operations to be processed at a Work Center to realize a
+ Manufacturing Order. Work Orders are trigerred by Manufacturing Orders,
+ they are based on the Routing defined on these ones
+ </p>
</field>
</record>
@@ -395,8 +403,8 @@
<field name="view_id" ref="workcenter_line_gantt_production"/>
<field name="context">{'search_default_production': True}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to start a new work order.
+ <p class="o_view_nocontent_smiling_face">
+ Start a new work order
</p><p>
To manufacture or assemble products, and use raw materials and
finished products you must also handle manufacturing operations.
@@ -416,11 +424,13 @@
<field name="search_view_id" ref="view_mrp_production_workcenter_form_view_filter"/>
<field name="context">{'search_default_ready': True, 'search_default_progress': True}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
+ <p class="o_view_nocontent_smiling_face">
+ Start a new work order
+ </p><p>
Work Orders are operations to be processed at a Work Center to realize a
Manufacturing Order. Work Orders are trigerred by Manufacturing Orders,
- they are based on the Routing defined on these ones.
- </p>
+ they are based on the Routing defined on these ones
+ </p>
</field>
</record>
diff --git a/addons/note/views/note_views.xml b/addons/note/views/note_views.xml
index a5693760b47..29adc15b64e 100644
--- a/addons/note/views/note_views.xml
+++ b/addons/note/views/note_views.xml
@@ -67,8 +67,8 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a new tag.
+ <p class="o_view_nocontent_smiling_face">
+ Add a new tag
</p>
</field>
</record>
@@ -207,8 +207,8 @@
<field name="search_view_id" ref="view_note_note_filter"/>
<field name="context">{}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a personal note.
+ <p class="o_view_nocontent_smiling_face">
+ Add a new personal note
</p><p>
Use notes to organize personal tasks or notes. All
notes are private; no one else will be able to see them. However
diff --git a/addons/payment/views/payment_views.xml b/addons/payment/views/payment_views.xml
index 21f63f8cf14..f52846211e9 100644
--- a/addons/payment/views/payment_views.xml
+++ b/addons/payment/views/payment_views.xml
@@ -198,8 +198,8 @@
<field name='view_type'>form</field>
<field name='view_mode'>kanban,tree,form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a payment acquirer.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new payment acquirer
</p>
</field>
</record>
@@ -328,6 +328,11 @@
<field name="res_model">payment.transaction</field>
<field name='view_type'>form</field>
<field name='view_mode'>tree,kanban,form</field>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_smiling_face">
+ Create a new payment transaction
+ </p>
+ </field>
</record>
<menuitem
@@ -401,6 +406,11 @@
<field name='res_model'>payment.token</field>
<field name='view_type'>form</field>
<field name='view_mode'>tree,form</field>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_smiling_face">
+ Create a saved payment data
+ </p>
+ </field>
</record>
<menuitem
@@ -438,8 +448,8 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a payment icon.
+ <p class="o_view_nocontent_smiling_face">
+ Create a payment icon
</p>
</field>
</record>
diff --git a/addons/point_of_sale/views/account_journal_view.xml b/addons/point_of_sale/views/account_journal_view.xml
index 7255a81cf0a..11cff71da4d 100644
--- a/addons/point_of_sale/views/account_journal_view.xml
+++ b/addons/point_of_sale/views/account_journal_view.xml
@@ -8,8 +8,8 @@
<field name="context" eval="{'default_journal_user': 1, 'default_type': 'cash'}"/>
<field name="domain">[('journal_user','=', 1)]</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a payment method.
+ <p class="o_view_nocontent_smiling_face">
+ Add a new payment method
</p><p>
Payment methods are defined by accounting journals having the
field <i>PoS Payment Method</i> checked. In order to be useable
diff --git a/addons/point_of_sale/views/pos_category_view.xml b/addons/point_of_sale/views/pos_category_view.xml
index d08417a0027..87307940351 100644
--- a/addons/point_of_sale/views/pos_category_view.xml
+++ b/addons/point_of_sale/views/pos_category_view.xml
@@ -64,15 +64,11 @@
<field name="view_mode">tree,kanban,form</field>
<field name="view_id" eval="False"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to define a new category.
+ <p class="o_view_nocontent_smiling_face">
+ Define a new category
</p><p>
Categories are used to browse your products through the
touchscreen interface.
- </p><p>
- If you put a photo on the category, the layout of the
- touchscreen interface will automatically. We suggest not to put
- a photo on categories for small (1024x768) screens.
</p>
</field>
</record>
diff --git a/addons/point_of_sale/views/pos_config_view.xml b/addons/point_of_sale/views/pos_config_view.xml
index 5a6c06c4ceb..45524fcc3ff 100644
--- a/addons/point_of_sale/views/pos_config_view.xml
+++ b/addons/point_of_sale/views/pos_config_view.xml
@@ -549,8 +549,8 @@
<field name="domain"></field>
<field name="search_view_id" ref="view_pos_config_search" />
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a new PoS config.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new PoS config
</p><p>
Configure at least one Point of Sale to be able to sell through the PoS interface.
</p>
diff --git a/addons/point_of_sale/views/pos_order_view.xml b/addons/point_of_sale/views/pos_order_view.xml
index c5c0fc1ddc6..9d2e02948cb 100644
--- a/addons/point_of_sale/views/pos_order_view.xml
+++ b/addons/point_of_sale/views/pos_order_view.xml
@@ -155,12 +155,10 @@
<field name="view_id" eval="False"/>
<field name="domain">[]</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a new order.
+ <p class="o_view_nocontent_empty_folder">
+ No orders found
</p><p>
- Use this menu to browse previous orders. To record new
- orders, you may use the menu <i>Your Session</i> for
- the touchscreen interface.
+ To record new orders, start a new session.
</p>
</field>
</record>
diff --git a/addons/point_of_sale/views/pos_session_view.xml b/addons/point_of_sale/views/pos_session_view.xml
index f21bf22c0ee..bd18d81d329 100644
--- a/addons/point_of_sale/views/pos_session_view.xml
+++ b/addons/point_of_sale/views/pos_session_view.xml
@@ -92,8 +92,8 @@
<field name="cash_register_balance_end" nolabel="1" attrs="{'invisible' : [('state', '=', 'opening_control')]}" class="oe_bold oe_pos_total" widget="monetary" options="{'currency_field': 'currency_id'}"/>
</group>
<div class="oe_clear"/>
- <div attrs="{'invisible' : ['|', ('cash_journal_id', '=', False), ('state', '!=', 'opening_control')]}" class="oe_view_nocontent" groups="point_of_sale.group_pos_manager">
- <p class="oe_view_nocontent_create">
+ <div attrs="{'invisible' : ['|', ('cash_journal_id', '=', False), ('state', '!=', 'opening_control')]}" class="o_view_nocontent" groups="point_of_sale.group_pos_manager">
+ <p class="o_view_nocontent_smiling_face">
You can define another list of available currencies on the
<i>Cash Registers</i> tab of the <b><field name="cash_journal_id" class="oe_inline"/></b>
payment method.
@@ -209,16 +209,10 @@
<field name="view_mode">tree,kanban,form</field>
<field name="search_view_id" ref="view_pos_session_search" />
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to start a new session.
+ <p class="o_view_nocontent_empty_folder">
+ No sessions found
</p><p>
- A session is a period of time, usually one day, during which
- you sell through the point of sale. The user has to check the
- currencies in your cash registers at the beginning and the end
- of each session.
- </p><p>
- Note that you may use the menu <i>Your Session</i>
- to quickly open a new session.
+ A session is a period of time, usually one day, during which you sell through the Point of Sale.
</p>
</field>
</record>
diff --git a/addons/point_of_sale/views/product_view.xml b/addons/point_of_sale/views/product_view.xml
index 3f6c00319a1..5fa7ef1a0b1 100644
--- a/addons/point_of_sale/views/product_view.xml
+++ b/addons/point_of_sale/views/product_view.xml
@@ -30,16 +30,11 @@
<field name="search_view_id" eval="False"/> <!-- Force empty -->
<field name="view_id" ref="product.product_product_tree_view"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a new product.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new product variant
</p><p>
You must define a product for everything you sell through
the point of sale interface.
- </p><p>
- Do not forget to set the price and the point of sale category
- in which it should appear. If a product has no point of sale
- category, you can not sell it through the point of sale
- interface.
</p>
</field>
</record>
diff --git a/addons/pos_mercury/views/pos_mercury_views.xml b/addons/pos_mercury/views/pos_mercury_views.xml
index 726973d16b6..6e96e550871 100644
--- a/addons/pos_mercury/views/pos_mercury_views.xml
+++ b/addons/pos_mercury/views/pos_mercury_views.xml
@@ -62,8 +62,8 @@
<field name="view_type">form</field>
<field name="view_mode">tree,kanban,form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to configure your card reader.
+ <p class="o_view_nocontent_smiling_face">
+ Configure your card reader
</p>
</field>
</record>
diff --git a/addons/pos_restaurant/views/pos_restaurant_views.xml b/addons/pos_restaurant/views/pos_restaurant_views.xml
index 61f13b90081..f1809771a1b 100644
--- a/addons/pos_restaurant/views/pos_restaurant_views.xml
+++ b/addons/pos_restaurant/views/pos_restaurant_views.xml
@@ -63,8 +63,8 @@
<field name="view_type">form</field>
<field name="view_mode">tree,kanban,form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a Restaurant Floor.
+ <p class="o_view_nocontent_smiling_face">
+ Add a new restaurant floor
</p><p>
A restaurant floor represents the place where customers are served, this is where you can
define and position the tables.
@@ -124,8 +124,8 @@
<field name="view_type">form</field>
<field name="view_mode">tree,kanban,form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a Restaurant Order Printer.
+ <p class="o_view_nocontent_smiling_face">
+ Add a new restaurant order printer
</p><p>
Order Printers are used by restaurants and bars to print the
order updates in the kitchen/bar when the waiter updates the order.
diff --git a/addons/product/models/product.py b/addons/product/models/product.py
index 13893ed29d3..797bbb7fe79 100644
--- a/addons/product/models/product.py
+++ b/addons/product/models/product.py
@@ -550,6 +550,14 @@ class ProductProduct(models.Model):
('datetime', '<=', date or fields.Datetime.now())], order='datetime desc,id desc', limit=1)
return history.cost or 0.0
+ @api.model
+ def get_empty_list_help(self, help):
+ self = self.with_context(
+ empty_list_help_document_name=_("product"),
+ )
+ return super(ProductProduct, self).get_empty_list_help(help)
+
+
class ProductPackaging(models.Model):
_name = "product.packaging"
_description = "Packaging"
diff --git a/addons/product/models/product_template.py b/addons/product/models/product_template.py
index 11afb5add1d..a0265d630b2 100644
--- a/addons/product/models/product_template.py
+++ b/addons/product/models/product_template.py
@@ -443,3 +443,10 @@ class ProductTemplate(models.Model):
variant.write({'active': False})
pass
return True
+
+ @api.model
+ def get_empty_list_help(self, help):
+ self = self.with_context(
+ empty_list_help_document_name=_("product"),
+ )
+ return super(ProductTemplate, self).get_empty_list_help(help)
diff --git a/addons/product/views/product_pricelist_views.xml b/addons/product/views/product_pricelist_views.xml
index b2496285d71..a1495867c2c 100644
--- a/addons/product/views/product_pricelist_views.xml
+++ b/addons/product/views/product_pricelist_views.xml
@@ -188,15 +188,13 @@
<field name="search_view_id" ref="product_pricelist_view_search" />
<field name="context">{"default_base":'list_price'}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a pricelist.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new pricelist
</p><p>
- A price list contains rules to be evaluated in order to compute
- the sale price of the products.
+ A price is a set of sales prices or rules to compute the price of sales order lines based on products, product categories, dates and ordered quantities.
+ This is the perfect tool to handle several pricings, seasonal discounts, etc.
</p><p>
- Each rule include a set of applicability criteria (date range,
- product category...) and a computation that easily helps to achieve
- any kind of pricing.
+ You can assign pricelists to your customers or select one when creating a new sales quotation.
</p>
</field>
</record>
diff --git a/addons/product/views/product_template_views.xml b/addons/product/views/product_template_views.xml
index f7cc918e3c9..858577951a4 100644
--- a/addons/product/views/product_template_views.xml
+++ b/addons/product/views/product_template_views.xml
@@ -109,12 +109,11 @@
<field name="view_id" ref="product_template_kanban_view"/>
<field name="context">{"search_default_filter_to_sell":1}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to define a new product.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new product
</p><p>
- You must define a product for everything you sell, whether it's a physical product, a consumable or a service you offer to customers.
- </p><p>
- The product form contains information to simplify the sale process: price, notes in the quotation, accounting data, procurement methods, etc.
+ You must define a product for everything you purchase,
+ whether it's a physical product, a consumable or services.
</p>
</field>
</record>
diff --git a/addons/product/views/product_uom_views.xml b/addons/product/views/product_uom_views.xml
index edb4f88424a..149f48d4ce8 100644
--- a/addons/product/views/product_uom_views.xml
+++ b/addons/product/views/product_uom_views.xml
@@ -52,8 +52,8 @@
<field name="view_type">form</field>
<field name="view_id" ref="product_uom_tree_view"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a new unit of measure.
+ <p class="o_view_nocontent_smiling_face">
+ Add a new unit of measure
</p><p>
You must define a conversion rate between several Units of
Measure within the same category.
@@ -79,8 +79,8 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a new unit of measure category.
+ <p class="o_view_nocontent_smiling_face">
+ Add a new unit of measure category
</p><p>
Units of measure belonging to the same category can be
converted between each others. For example, in the category
diff --git a/addons/product/views/product_views.xml b/addons/product/views/product_views.xml
index a4bd7dda110..48e3dabb21a 100644
--- a/addons/product/views/product_views.xml
+++ b/addons/product/views/product_views.xml
@@ -140,8 +140,8 @@
<field name="view_type">form</field>
<field name="context">{}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to define a new product.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new product
</p>
</field>
</record>
@@ -168,16 +168,11 @@
<field name="search_view_id" ref="product_search_form_view"/>
<field name="view_id" eval="False"/> <!-- Force empty -->
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to define a new product.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new product variant
</p><p>
- You must define a product for everything you sell, whether it's
- a physical product, a consumable or a service you offer to
- customers.
- </p><p>
- The product form contains information to simplify the sale
- process: price, notes in the quotation, accounting data,
- procurement methods, etc.
+ You must define a product for everything you purchase,
+ whether it's a physical product, a consumable or services.
</p>
</field>
</record>
@@ -255,16 +250,13 @@
(0, 0, {'view_mode': 'form', 'view_id': ref('product_variant_easy_edit_view')}),
(0, 0, {'view_mode': 'kanban'})]"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to define a new product.
- </p><p>
- You must define a product for everything you sell, whether it's
- a physical product, a consumable or a service you offer to
- customers.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new product variant
</p><p>
- The product form contains information to simplify the sale
- process: price, notes in the quotation, accounting data,
- procurement methods, etc.
+ You must define a product for everything you sell, whether it's a physical product,
+ a consumable or a service you offer to customers.
+ The product form contains information to simplify the sale process:
+ price, notes in the quotation, accounting data, procurement methods, etc.
</p>
</field>
</record>
@@ -377,16 +369,13 @@
<field name="view_id" ref="product_product_tree_view"/>
<field name="search_view_id" ref="product_search_form_view"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to define a new product.
- </p><p>
- You must define a product for everything you sell, whether it's
- a physical product, a consumable or a service you offer to
- customers.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new product variant
</p><p>
- The product form contains information to simplify the sale
- process: price, notes in the quotation, accounting data,
- procurement methods, etc.
+ You must define a product for everything you sell, whether it's a physical product,
+ a consumable or a service you offer to customers.
+ The product form contains information to simplify the sale process:
+ price, notes in the quotation, accounting data, procurement methods, etc.
</p>
</field>
</record>
diff --git a/addons/project/models/project.py b/addons/project/models/project.py
index 2e9576ff590..264103079bb 100644
--- a/addons/project/models/project.py
+++ b/addons/project/models/project.py
@@ -123,7 +123,7 @@ class Project(models.Model):
'view_id': False,
'view_mode': 'kanban,tree,form',
'view_type': 'form',
- 'help': _('''<p class="oe_view_nocontent_create">
+ 'help': _('''<p class="o_view_nocontent_smiling_face">
Documents are attached to the tasks and issues of your project.</p><p>
Send messages or log internal notes with attachments to link
documents to your project.
@@ -151,7 +151,8 @@ class Project(models.Model):
action_data = None
if action:
action.sudo().write({
- "help": _('''<p class="oe_view_nocontent_create">Click to create a new project.</p>''')
+ "help": _('''<p class="o_view_nocontent_smiling_face">
+ Create a new project</p>''')
})
action_data = action.read()[0]
# Reload the dashboard
@@ -693,7 +694,7 @@ class Task(models.Model):
self = self.with_context(
empty_list_help_id=self.env.context.get('default_project_id'),
empty_list_help_model='project.project',
- empty_list_help_document_name=_("tasks")
+ empty_list_help_document_name=_("task"),
)
return super(Task, self).get_empty_list_help(help)
diff --git a/addons/project/static/src/js/tour.js b/addons/project/static/src/js/tour.js
index 5458f6983fb..fee2309b853 100644
--- a/addons/project/static/src/js/tour.js
+++ b/addons/project/static/src/js/tour.js
@@ -16,7 +16,7 @@ tour.register('project_tour', {
trigger: '.o-kanban-button-new',
extra_trigger: '.o_project_kanban',
content: _t('Let\'s create your first project.'),
- position: 'right',
+ position: 'bottom',
width: 200,
}, {
trigger: 'input.o_project_name',
diff --git a/addons/project/views/project_views.xml b/addons/project/views/project_views.xml
index a529ce3cbcf..a59104bc91e 100644
--- a/addons/project/views/project_views.xml
+++ b/addons/project/views/project_views.xml
@@ -71,11 +71,11 @@
}</field>
<field name="search_view_id" ref="view_task_search_form"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
+ <p class="o_view_nocontent_smiling_face">
Here, you can create new tasks
- </p>
- <p>
- You can now manage your tasks in order to get things done efficiently. Track progress, discuss, attach documents, etc.
+ </p><p>
+ You can now manage your tasks in order to get things done efficiently.<br />
+ Track progress, discuss, attach documents, etc.
</p>
</field>
</record>
@@ -379,9 +379,10 @@
<field name="search_view_id" ref="view_project_project_filter"/>
<field name="target">main</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a new project.<br/>
- <i>Or <a type="action" name="%(project.ir_actions_server_project_sample)d">activate a sample project</a> to play with.</i>
+ <p class="o_view_nocontent_smiling_face">
+ Create a new project
+ </p><p>
+ Or <a type="action" name="%(project.ir_actions_server_project_sample)d">activate a sample project</a> to play with.
</p>
</field>
</record>
@@ -398,8 +399,8 @@
<field name="search_view_id" ref="view_project_project_filter"/>
<field name="context">{}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Create a new project.
+ <p class="o_view_nocontent_empty_folder">
+ Create a new project
</p><p>
Organize your activities (plan tasks, track issues, invoice timesheets) for internal, personal or customer projects.
</p>
@@ -678,8 +679,11 @@
<field name="context">{'search_default_my_tasks': 1}</field>
<field name="search_view_id" ref="view_task_search_form"/>
<field name="help" type="html">
- <p>
- Odoo's project management allows you to manage the pipeline of your tasks efficiently. You can track progress, discuss on tasks, attach documents, etc.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new task
+ </p><p>
+ Odoo's project management allows you to manage the pipeline of your tasks efficiently.<br/>
+ You can track progress, discuss on tasks, attach documents, etc.
</p>
</field>
</record>
@@ -703,8 +707,8 @@
<field name="context">{'search_default_activities_my':1}</field>
<field name="domain">[('activity_date_deadline', '!=', False)]</field>
<field name="help" type="html">
- <p>
- Currently there are not any activity scheduled.
+ <p class="o_view_nocontent_empty_folder">
+ No scheduled activity at the moment
</p>
</field>
</record>
@@ -862,8 +866,8 @@
<field name="view_mode">tree,kanban,form</field>
<field name="view_id" ref="task_type_tree"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a stage in the task pipeline.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new stage in the task pipeline
</p><p>
Define the steps that will be used in the project from the
creation of the task, up to the closing of the task or issue.
@@ -911,8 +915,8 @@
<field name="res_model">project.tags</field>
<field name="view_type">form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a new tag.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new tag
</p>
</field>
</record>
diff --git a/addons/project/views/rating_views.xml b/addons/project/views/rating_views.xml
index 7c731ac5963..724517b9471 100644
--- a/addons/project/views/rating_views.xml
+++ b/addons/project/views/rating_views.xml
@@ -25,8 +25,8 @@
<field name="domain">[('consumed','=',True), ('parent_res_model','=','project.project')]</field>
<field name="search_view_id" ref="rating_rating_view_search_project"/>
<field name="help" type="html">
- <p>
- There is no rating for this object at the moment.
+ <p class="o_view_nocontent_empty_folder">
+ There is no rating for this object at the moment
</p>
</field>
</record>
@@ -38,7 +38,9 @@
<field name="domain">[('res_model', '=', 'project.task'), ('res_id', '=', active_id), ('consumed', '=', True)]</field>
<field name="search_view_id" ref="rating_rating_view_search_project"/>
<field name="help" type="html">
- <p>
+ <p class="o_view_nocontent_empty_folder">
+ No customer ratings yet
+ </p><p>
Customer ratings on tasks. If you have no rating, change your project Settings to activate it.
</p>
</field>
@@ -51,7 +53,9 @@
<field name="domain">[('parent_res_model','=','project.project'), ('consumed', '=', True)]</field>
<field name="search_view_id" ref="rating_rating_view_search_project"/>
<field name="help" type="html">
- <p>
+ <p class="o_view_nocontent_empty_folder">
+ No customer ratings yet
+ </p><p>
Customer ratings on tasks. If you have no rating, change your project Settings to activate it.
</p>
</field>
diff --git a/addons/purchase/views/account_invoice_views.xml b/addons/purchase/views/account_invoice_views.xml
index 25d7ad51592..ff14c42659f 100644
--- a/addons/purchase/views/account_invoice_views.xml
+++ b/addons/purchase/views/account_invoice_views.xml
@@ -10,8 +10,8 @@
<field name="context">{'default_type':'in_invoice', 'type':'in_invoice', 'journal_type': 'purchase'}</field>
<field name="search_view_id" ref="account.view_account_invoice_filter"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a vendor bill.
+ <p class="o_view_nocontent_smiling_face">
+ Create a vendor bill
</p><p>
Use this menu to control the invoices to be received from your
vendors. When registering a new bill, set the purchase order
@@ -31,13 +31,12 @@
<field name="context">{'default_type': 'in_invoice', 'type': 'in_invoice', 'journal_type': 'purchase', 'default_purchase_id': active_id}</field>
<field name="search_view_id" ref="account.view_account_invoice_filter"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to record a vendor bill related to this purchase.
- </p>
- <p>
+ <p class="o_view_nocontent_smiling_face">
+ Record a vendor bill related to this purchase
+ </p><p>
You can control the invoice from your vendor according to
what you purchased (services) or received (products).
- </p>
+ </p>
</field>
</record>
<record id="action_invoice_supplier_tree1_view1" model="ir.actions.act_window.view">
diff --git a/addons/purchase/views/purchase_views.xml b/addons/purchase/views/purchase_views.xml
index 3b31c1284e3..7ee54ddc2f9 100644
--- a/addons/purchase/views/purchase_views.xml
+++ b/addons/purchase/views/purchase_views.xml
@@ -63,16 +63,11 @@
<field name="search_view_id" eval="False"/> <!-- Force empty -->
<field name="view_id" eval="False"/> <!-- Force empty -->
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to define a new product.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new product
</p><p>
- You must define a product for everything you purchase, whether
- it's a physical product, a consumable or services you buy to
- subcontractors.
- </p><p>
- The product form contains detailed information to improve the
- purchase process: prices, procurement logistics, accounting data,
- available vendors, etc.
+ You must define a product for everything you purchase,
+ whether it's a physical product, a consumable or services.
</p>
</field>
</record>
@@ -88,16 +83,11 @@
<field name="view_type">form</field>
<field name="context">{"search_default_filter_to_purchase": 1}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to define a new product.
- </p><p>
- You must define a product for everything you purchase, whether
- it's a physical product, a consumable or services you buy to
- subcontractors.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new product variant
</p><p>
- The product form contains detailed information to improve the
- purchase process: prices, procurement logistics, accounting data,
- available vendors, etc.
+ You must define a product for everything you purchase,
+ whether it's a physical product, a consumable or services.
</p>
</field>
</record>
@@ -420,15 +410,11 @@
<field name="view_mode">tree,kanban,form,pivot,graph,calendar</field>
<field name="search_view_id" ref="view_purchase_order_filter"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a request for quotation.
- </p><p>
- The quotation contains the history of the discussion/negotiation
- you had with your vendor. Once confirmed, a request for
- quotation is converted into a purchase order.
+ <p class="o_view_nocontent_smiling_face">
+ Create a request for quotation
</p><p>
- Most propositions of purchase orders are created automatically
- by Odoo based on inventory needs.
+ The quotation contains the history of the discussion
+ you had with your vendor.
</p>
</field>
</record>
@@ -444,13 +430,10 @@
<field name="domain">[('state','in',('purchase', 'done'))]</field>
<field name="search_view_id" ref="view_purchase_order_filter"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a quotation that will be converted into a purchase order.
+ <p class="o_view_nocontent_smiling_face">
+ Create a quotation
</p><p>
- Use this menu to search within your purchase orders by
- references, vendor, products, etc. For each purchase order,
- you can track the related discussion with the vendor, control
- the products received and control the vendor bills.
+ It will be converted into a purchase order.
</p>
</field>
</record>
diff --git a/addons/purchase/views/res_partner_views.xml b/addons/purchase/views/res_partner_views.xml
index e0372333336..886f43f387f 100644
--- a/addons/purchase/views/res_partner_views.xml
+++ b/addons/purchase/views/res_partner_views.xml
@@ -21,8 +21,8 @@
<field name="context">{'search_default_partner_id': active_id}</field>
<field name="groups_id" eval="[(4, ref('purchase.group_purchase_user'))]"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- This vendor has no purchase order. Click to create a new RfQ.
+ <p class="o_view_nocontent_smiling_face">
+ This vendor has no purchase order. Create a new RfQ
</p><p>
The request for quotation is the first step of the purchases flow. Once
converted into a purchase order, you will be able to control the receipt
@@ -55,8 +55,8 @@
<field name="domain">[('type','=','in_invoice')]</field>
<field name="context">{'search_default_partner_id': active_id, 'default_type': 'in_invoice', 'type': 'in_invoice', 'journal_type': 'purchase'}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click here to record a vendor bill.
+ <p class="o_view_nocontent_smiling_face">
+ Record a new vendor bill
</p><p>
Vendors bills can be pre-generated based on purchase
orders or receipts. This allows you to control bills
diff --git a/addons/purchase_requisition/views/purchase_requisition_views.xml b/addons/purchase_requisition/views/purchase_requisition_views.xml
index 395752af59f..be4fe0d2420 100644
--- a/addons/purchase_requisition/views/purchase_requisition_views.xml
+++ b/addons/purchase_requisition/views/purchase_requisition_views.xml
@@ -287,8 +287,8 @@
<field name="context">{}</field>
<field name="search_view_id" ref="view_purchase_requisition_filter"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to start a new purchase agreement.
+ <p class="o_view_nocontent_smiling_face">
+ Start a new purchase agreement
</p><p>
Example of purchase agreements include call for tenders and blanket orders.
</p><p>
diff --git a/addons/rating/views/rating_view.xml b/addons/rating/views/rating_view.xml
index 5c6100cadb1..efc150ae9df 100644
--- a/addons/rating/views/rating_view.xml
+++ b/addons/rating/views/rating_view.xml
@@ -161,7 +161,9 @@
<field name="view_mode">kanban,tree,graph,pivot,form</field>
<field name="domain">[('consumed','=',True)]</field>
<field name="help" type="html">
- <p>
+ <p class="o_view_nocontent_empty_folder">
+ No rating yet
+ </p><p>
There is no rating for this object at the moment.
</p>
</field>
diff --git a/addons/repair/views/repair_views.xml b/addons/repair/views/repair_views.xml
index d70414b42e6..8d1cde5b3a1 100644
--- a/addons/repair/views/repair_views.xml
+++ b/addons/repair/views/repair_views.xml
@@ -273,8 +273,8 @@
<field name="view_mode">tree,kanban,form</field>
<field name="search_view_id" ref="view_repair_order_form_filter"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a reparation order.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new reparation order
</p><p>
In a repair order, you can detail the components you remove,
add or replace and record the time you spent on the different
diff --git a/addons/resource/views/resource_views.xml b/addons/resource/views/resource_views.xml
index dcd33b54f90..b97129d6576 100644
--- a/addons/resource/views/resource_views.xml
+++ b/addons/resource/views/resource_views.xml
@@ -288,7 +288,7 @@
<field name="view_id" eval="False"/>
<field name="search_view_id" ref="view_resource_calendar_search"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
+ <p class="o_view_nocontent_smiling_face">
Define working hours and time table that could be scheduled to your project members
</p>
</field>
diff --git a/addons/sale/models/sale.py b/addons/sale/models/sale.py
index 24231933aa4..a08fa0f2cf6 100644
--- a/addons/sale/models/sale.py
+++ b/addons/sale/models/sale.py
@@ -89,8 +89,9 @@ class SaleOrder(models.Model):
@api.model
def get_empty_list_help(self, help):
- if help:
- return '<p class=''oe_view_nocontent_create''">%s</p>' % (help)
+ self = self.with_context(
+ empty_list_help_document_name=_("sale order"),
+ )
return super(SaleOrder, self).get_empty_list_help(help)
def _get_default_access_token(self):
diff --git a/addons/sale/views/res_partner_views.xml b/addons/sale/views/res_partner_views.xml
index 754a41718d7..c5b01919c3f 100644
--- a/addons/sale/views/res_partner_views.xml
+++ b/addons/sale/views/res_partner_views.xml
@@ -8,12 +8,10 @@
<field name="context">{'search_default_partner_id': active_id}</field>
<field name="groups_id" eval="[(4, ref('sales_team.group_sale_salesman'))]"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Create a Quotation, the first step of a new sale.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new quotation, the first step of a new sale!
</p><p>
- Your next actions should flow efficiently: confirm the Quotation to a Sales Order, then create the Invoice and collect the Payment.
- </p><p>
- Note that once a Quotation becomes a Sales Order, it will be moved from the Quotations list to the Sales Order list.
+ Once the quotation is confirmed by the customer, it becomes a sales order.<br/> You will be able to create an invoice and collect the payment.
</p>
</field>
</record>
diff --git a/addons/sale/views/sale_views.xml b/addons/sale/views/sale_views.xml
index b4454f6ba82..1f6700bd170 100644
--- a/addons/sale/views/sale_views.xml
+++ b/addons/sale/views/sale_views.xml
@@ -493,13 +493,10 @@
<field name="context">{}</field>
<field name="domain">[('state', 'not in', ('draft', 'sent', 'cancel'))]</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Create a Quotation, the first step of a new sale.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new quotation, the first step of a new sale!
</p><p>
- Once the quotation is confirmed, it becomes a sales order.
- You'll be able to invoice it and collect payments.
- From the <i>Sales Orders</i> menu, you can track delivery
- orders or services.
+ Once the quotation is confirmed by the customer, it becomes a sales order.<br/> You will be able to create an invoice and collect the payment.
</p>
</field>
</record>
@@ -520,11 +517,11 @@
<field name="domain">[('invoice_status','=','to invoice')]</field>
<field name="search_view_id" ref="view_sales_order_filter"/>
<field name="help" type="html">
- <p>
- You will find here all orders that are ready to be invoiced.
+ <p class="o_view_nocontent_smiling_face">
+ No orders to invoice found
</p><p>
- You can select all orders and invoice them in batch, or check
- every order and invoice them one by one.
+ You can select all orders and invoice them in batch,<br/>
+ or check every order and invoice them one by one.
</p>
</field>
</record>
@@ -549,14 +546,14 @@
<field name="context">{'create': False}</field>
<field name="search_view_id" ref="view_sales_order_filter"/>
<field name="help" type="html">
- <p>
- Orders to upsell are orders having products with an invoicing
- policy based on <i>ordered quantities</i> for which you have
- delivered more than what have been ordered.
+ <p class="o_view_nocontent_smiling_face">
+ No orders to upsell found
</p><p>
- <i>Example: pre-paid service offers for which the customer have
- to buy an extra pack of hours, because he used all his support
- hours.</i>
+ These are orders with products invoiced based on ordered quantities,
+ in the case you have delivered more than what was ordered.
+ A typical example is the pre-paid hours of service,
+ where you want to sell extra hours to the customer
+ because the initial hours have already been used.
</p>
</field>
</record>
@@ -574,11 +571,10 @@
<field name="view_mode">tree,kanban,form,calendar,pivot,graph</field>
<field name="search_view_id" ref="sale_order_view_search_inherit_quotation"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Create a Quotation, the first step of a new sale.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new quotation, the first step of a new sale!
</p><p>
- Your next actions should flow efficiently: confirm the Quotation
- to a Sales Order, then create the Invoice and collect the Payment.
+ Once the quotation is confirmed by the customer, it becomes a sales order.<br/> You will be able to create an invoice and collect the payment.
</p>
</field>
</record>
@@ -825,12 +821,10 @@
}
</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Create a Quotation, the first step of a new sale.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new quotation, the first step of a new sale!
</p><p>
- Your next actions should flow efficiently: confirm the Quotation to a Sales Order, then create the Invoice and collect the Payment.
- </p><p>
- Note that once a Quotation becomes a Sales Order, it will be moved from the Quotations list to the Sales Order list.
+ Once the quotation is confirmed by the customer, it becomes a sales order.<br/> You will be able to create an invoice and collect the payment.
</p>
</field>
</record>
@@ -865,14 +859,10 @@
<field name="domain">[]</field>
<field name="search_view_id" ref="sale.sale_order_view_search_inherit_quotation"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Create a Quotation, the first step of a new sale.
- </p><p>
- Your next actions should flow efficiently: confirm the Quotation
- to a Sales Order, then create the Invoice and collect the Payment.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new quotation, the first step of a new sale!
</p><p>
- Note that once a Quotation becomes a Sales Order, it will be moved
- from the Quotations list to the Sales Order list.
+ Once the quotation is confirmed by the customer, it becomes a sales order.<br/> You will be able to create an invoice and collect the payment.
</p>
</field>
</record>
diff --git a/addons/sale_timesheet/models/account_invoice.py b/addons/sale_timesheet/models/account_invoice.py
index 16e73b677ad..3c1b3b78ae0 100644
--- a/addons/sale_timesheet/models/account_invoice.py
+++ b/addons/sale_timesheet/models/account_invoice.py
@@ -30,8 +30,8 @@ class AccountInvoice(models.Model):
'view_mode': 'tree,form',
'view_type': 'form',
'help': _("""
- <p class="oe_view_nocontent_create">
- Click to record timesheets.
+ <p class="o_view_nocontent_smiling_face">
+ Record timesheets
</p><p>
You can register and track your workings hours by project every
day. Every time spent on a project will become a cost and can be re-invoiced to
diff --git a/addons/sale_timesheet/models/project.py b/addons/sale_timesheet/models/project.py
index 52963156d4c..3244e4990c0 100644
--- a/addons/sale_timesheet/models/project.py
+++ b/addons/sale_timesheet/models/project.py
@@ -24,8 +24,8 @@ class Project(models.Model):
'view_mode': 'tree,form',
'view_type': 'form',
'help': _("""
- <p class="oe_view_nocontent_create">
- Click to record timesheets.
+ <p class="o_view_nocontent_smiling_face">
+ Record timesheets
</p><p>
You can register and track your workings hours by project every
day. Every time spent on a project will become a cost and can be re-invoiced to
diff --git a/addons/sales_team/views/crm_team_views.xml b/addons/sales_team/views/crm_team_views.xml
index d56ff136993..dc2ae1fc338 100644
--- a/addons/sales_team/views/crm_team_views.xml
+++ b/addons/sales_team/views/crm_team_views.xml
@@ -29,8 +29,8 @@
<field name="context">{'search_default_my_favorites': 1}</field>
<field name="view_id" ref="crm_team_salesteams_search"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click here to define a new sales channel.
+ <p class="o_view_nocontent_smiling_face">
+ Define a new sales channel
</p><p>
Use sales channels to organize your sales departments.
Each channel will work with a separate pipeline.
@@ -161,8 +161,8 @@
<field name="context">{}</field>
<field name="view_id" ref="crm_team_salesteams_search"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click here to define a new sales channel.
+ <p class="o_view_nocontent_smiling_face">
+ Define a new sales channel
</p><p>
Use sales channels to organize your sales departments.
Each channel will work with a separate pipeline.
diff --git a/addons/stock/views/product_views.xml b/addons/stock/views/product_views.xml
index 4368d9570bd..9c30bd765d0 100644
--- a/addons/stock/views/product_views.xml
+++ b/addons/stock/views/product_views.xml
@@ -327,8 +327,8 @@
<field name="view_type">form</field>
<field name="context">{"search_default_consumable": 1, 'default_type': 'product'}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to define a new product.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new product
</p>
</field>
</record>
diff --git a/addons/stock/views/stock_incoterms_views.xml b/addons/stock/views/stock_incoterms_views.xml
index 7fdeb1e5fda..dba3dd8ed54 100644
--- a/addons/stock/views/stock_incoterms_views.xml
+++ b/addons/stock/views/stock_incoterms_views.xml
@@ -48,8 +48,8 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click here to create new incoterm.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new incoterm
</p><p>
Incoterms are used to divide transaction costs and responsibilities between buyer and seller.
</p>
diff --git a/addons/stock/views/stock_inventory_views.xml b/addons/stock/views/stock_inventory_views.xml
index 6df76b3f678..c4717eaa8a3 100644
--- a/addons/stock/views/stock_inventory_views.xml
+++ b/addons/stock/views/stock_inventory_views.xml
@@ -249,13 +249,10 @@
<field name="view_id" ref="view_inventory_tree"/>
<field name="search_view_id" ref="view_inventory_filter"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to start an inventory.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new inventory adjustment
</p><p>
- Periodical Inventories are used to count the number of products
- available per location. You can use it once a year when you do
- the general inventory or whenever you need it, to adapt the
- current inventory level of a product.
+ This is used to correct the product quantities you have in stock.
</p>
</field>
</record>
diff --git a/addons/stock/views/stock_location_views.xml b/addons/stock/views/stock_location_views.xml
index 0cfc66ee471..b29c735bb29 100644
--- a/addons/stock/views/stock_location_views.xml
+++ b/addons/stock/views/stock_location_views.xml
@@ -118,8 +118,8 @@
<field name="search_view_id" ref="view_location_search"/>
<field name="context">{'search_default_in_location':1}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a location.
+ <p class="o_view_nocontent_smiling_face">
+ Add a new location
</p><p>
Define your locations to reflect your warehouse structure and
organization. Odoo is able to manage physical locations
@@ -296,13 +296,14 @@
<field name="view_mode">tree,form</field>
<field name="view_id" ref="stock_location_route_tree" />
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a route.
+ <p class="o_view_nocontent_smiling_face">
+ Add a new route
+ </p><p>
+ You can define here the main routes that run through
+ your warehouses and that define the flows of your products. These
+ routes can be assigned to a product, a product category or be fixed
+ on procurement or sales order.
</p>
- <p>You can define here the main routes that run through
- your warehouses and that define the flows of your products. These
- routes can be assigned to a product, a product category or be fixed
- on procurement or sales order. </p>
</field>
</record>
diff --git a/addons/stock/views/stock_move_line_views.xml b/addons/stock/views/stock_move_line_views.xml
index da8882d4f63..c0175c1380b 100644
--- a/addons/stock/views/stock_move_line_views.xml
+++ b/addons/stock/views/stock_move_line_views.xml
@@ -115,6 +115,11 @@
<field name="view_mode">tree,kanban,pivot,form</field>
<field name="view_id" ref="view_move_line_tree"/>
<field name="context">{'search_default_done': 1}</field>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_empty_folder">
+ There's no product move yet
+ </p>
+ </field>
</record>
<menuitem
diff --git a/addons/stock/views/stock_move_views.xml b/addons/stock/views/stock_move_views.xml
index 016faf5f620..1a012255ae1 100644
--- a/addons/stock/views/stock_move_views.xml
+++ b/addons/stock/views/stock_move_views.xml
@@ -356,8 +356,8 @@
<field name="search_view_id" ref="view_move_search"/>
<field name="context">{}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a stock movement.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new stock movement
</p><p>
This menu gives you the full traceability of inventory
operations on a specific product. You can filter on the product
@@ -530,15 +530,16 @@
(0, 0, {'view_mode': 'kanban', 'view_id': ref('stock_move_view_kanban')})]"/>
<field name="context">{'product_receive': True, 'search_default_future': True}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to register a product receipt.
+ <p class="o_view_nocontent_smiling_face">
+ Register a product receipt
</p><p>
Here you can receive individual products, no matter what
purchase order or picking order they come from. You will find
- the list of all products you are waiting for. Once you receive
- an order, you can filter based on the name of the vendor or
- the purchase order reference. Then you can confirm all products
- received using the buttons on the right of each line.
+ the list of all products you are waiting for.
+ </p><p>
+ Once you receive an order, you can filter based on the name of
+ the vendor or the purchase order reference. Then you can confirm
+ all products received using the buttons on the right of each line.
</p>
</field>
</record>
diff --git a/addons/stock/views/stock_picking_views.xml b/addons/stock/views/stock_picking_views.xml
index 82b74d5f32e..13a177b84f5 100644
--- a/addons/stock/views/stock_picking_views.xml
+++ b/addons/stock/views/stock_picking_views.xml
@@ -73,8 +73,8 @@
<field name="view_type">form</field>
<field name="view_mode">kanban,form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a new operation type.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new operation type
</p><p>
The operation type system allows you to assign each stock
operation a specific type which will alter its views accordingly.
@@ -107,10 +107,8 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to define a new transfer.
- </p><p>
- You can either do it immediately or mark it as Todo for future processing. Use your scanner to validate the transferred quantity quicker.
+ <p class="o_view_nocontent_smiling_face">
+ Define a new transfer
</p>
</field>
@@ -391,10 +389,8 @@
</field>
<field name="search_view_id" ref="view_picking_internal_search"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click here to create a new transfer.
- </p><p>
- You can either do it immediately or mark it as Todo for future processing. Use your scanner to validate the transferred quantity quicker.
+ <p class="o_view_nocontent_smiling_face">
+ Define a new transfer
</p>
</field>
</record>
@@ -416,10 +412,8 @@
</field>
<field name="search_view_id" ref="view_picking_internal_search"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click here to create a new transfer.
- </p><p>
- You can either do it immediately or mark it as Todo for future processing. Use your scanner to validate the transferred quantity quicker.
+ <p class="o_view_nocontent_smiling_face">
+ Define a new transfer
</p>
</field>
</record>
@@ -440,10 +434,8 @@
</field>
<field name="search_view_id" ref="view_picking_internal_search"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click here to create a new transfer.
- </p><p>
- You can either do it immediately or mark it as Todo for future processing. Use your scanner to validate the transferred quantity quicker.
+ <p class="o_view_nocontent_smiling_face">
+ Define a new transfer
</p>
</field>
</record>
@@ -464,10 +456,8 @@
</field>
<field name="search_view_id" ref="view_picking_internal_search"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click here to create a new transfer.
- </p><p>
- You can either do it immediately or mark it as Todo for future processing. Use your scanner to validate the transferred quantity quicker.
+ <p class="o_view_nocontent_smiling_face">
+ Define a new transfer
</p>
</field>
</record>
@@ -489,10 +479,8 @@
</field>
<field name="search_view_id" ref="view_picking_internal_search"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click here to create a new transfer.
- </p><p>
- You can either do it immediately or mark it as Todo for future processing. Use your scanner to validate the transferred quantity quicker.
+ <p class="o_view_nocontent_smiling_face">
+ Define a new transfer
</p>
</field>
</record>
@@ -513,10 +501,8 @@
</field>
<field name="search_view_id" ref="view_picking_internal_search"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click here to create a new transfer.
- </p><p>
- You can either do it immediately or mark it as Todo for future processing. Use your scanner to validate the transferred quantity quicker.
+ <p class="o_view_nocontent_smiling_face">
+ Define a new transfer
</p>
</field>
</record>
@@ -538,10 +524,8 @@
</field>
<field name="search_view_id" ref="view_picking_internal_search"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click here to create a new transfer.
- </p><p>
- You can either do it immediately or mark it as Todo for future processing. Use your scanner to validate the transferred quantity quicker.
+ <p class="o_view_nocontent_smiling_face">
+ Define a new transfer
</p>
</field>
</record>
@@ -563,10 +547,8 @@
</field>
<field name="search_view_id" ref="view_picking_internal_search"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click here to create a new transfer.
- </p><p>
- You can either do it immediately or mark it as Todo for future processing. Use your scanner to validate the transferred quantity quicker.
+ <p class="o_view_nocontent_smiling_face">
+ Define a new transfer
</p>
</field>
</record>
@@ -586,8 +568,8 @@
</field>
<field name="search_view_id" ref="view_picking_internal_search"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a stock operation.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new stock operation
</p><p>
Most operations are prepared automatically by Odoo according
to your preconfigured logistics rules, but you can also record
@@ -612,10 +594,8 @@
</field>
<field name="search_view_id" ref="view_picking_internal_search"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click here to create a new transfer.
- </p><p>
- You can either do it immediately or mark it as Todo for future processing. Use your scanner to validate the transferred quantity quicker.
+ <p class="o_view_nocontent_smiling_face">
+ Define a new transfer
</p>
</field>
</record>
diff --git a/addons/stock/views/stock_production_lot_views.xml b/addons/stock/views/stock_production_lot_views.xml
index 19ee7968de8..64860c3a932 100644
--- a/addons/stock/views/stock_production_lot_views.xml
+++ b/addons/stock/views/stock_production_lot_views.xml
@@ -102,8 +102,8 @@
<field name="search_view_id" ref="search_product_lot_filter"/>
<field name="context">{'search_default_group_by_product': 1}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a lot/serial number.
+ <p class="o_view_nocontent_smiling_face">
+ Add a lot/serial number
</p><p>
This is the list of all the production lots you recorded. When
you select a lot, you can get the traceability of the products contained in lot.
diff --git a/addons/stock/views/stock_quant_views.xml b/addons/stock/views/stock_quant_views.xml
index 2c6ce9fbd61..82a3957baa5 100644
--- a/addons/stock/views/stock_quant_views.xml
+++ b/addons/stock/views/stock_quant_views.xml
@@ -120,7 +120,13 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form,pivot,graph</field>
<field name="context">{'search_default_internal_loc': 1, 'search_default_stockable': 1, 'group_by': ['product_id', 'location_id']}</field>
- <field name="help">This analysis gives you a fast overview on the current stock level of your products and their current inventory value.</field>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_empty_folder">
+ No inventory found
+ </p><p>
+ This analysis gives you a fast overview on the current stock level of your products and their current inventory value.
+ </p>
+ </field>
</record>
<record model="ir.actions.act_window" id="product_template_open_quants"> <!-- Not used -->
<field name="name">Stock On Hand</field>
@@ -263,7 +269,10 @@
<field name="res_model">stock.quant.package</field>
<field name="view_mode">kanban,tree,form</field>
<field name="help" type="html">
- <p>Packages are usually created by pack operations made on transfers and can contains several different products. You can then reuse a package to move its whole content somewhere else, or to pack it into another bigger package. A package can also be unpacked, allowing the disposal of its former content as single units again.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new package
+ </p><p>
+ Packages are usually created by pack operations made on transfers and can contains several different products. You can then reuse a package to move its whole content somewhere else, or to pack it into another bigger package. A package can also be unpacked, allowing the disposal of its former content as single units again.
</p>
</field>
</record>
diff --git a/addons/stock/views/stock_scrap_views.xml b/addons/stock/views/stock_scrap_views.xml
index c18782965e2..b47df4d2152 100644
--- a/addons/stock/views/stock_scrap_views.xml
+++ b/addons/stock/views/stock_scrap_views.xml
@@ -92,8 +92,8 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click here to scrap products.
+ <p class="o_view_nocontent_smiling_face">
+ Scrap products
</p><p>
Scrapping a product will remove it from your stock. The product will
end up in a scrap location that can be used for reporting purpose.
diff --git a/addons/stock/views/stock_warehouse_views.xml b/addons/stock/views/stock_warehouse_views.xml
index 74586f23beb..3e0dfdbda2b 100644
--- a/addons/stock/views/stock_warehouse_views.xml
+++ b/addons/stock/views/stock_warehouse_views.xml
@@ -110,8 +110,8 @@
<field name="view_type">form</field>
<field name="view_id" ref="view_warehouse_tree"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to define a new warehouse.
+ <p class="o_view_nocontent_smiling_face">
+ Define a new warehouse
</p>
</field>
</record>
@@ -240,9 +240,11 @@
<field name="view_id" ref="view_warehouse_orderpoint_tree"/>
<field name="search_view_id" ref="warehouse_orderpoint_search" />
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a reordering rule.
- </p><p>You can define your minimum stock rules, so that Odoo will automatically create draft manufacturing orders or request for quotations according to the stock level. Once the virtual stock of a product (= stock on hand minus all confirmed orders and reservations) is below the minimum quantity, Odoo will generate a procurement request to increase the stock up to the maximum quantity.</p>
+ <p class="o_view_nocontent_smiling_face">
+ Create a reordering rule
+ </p><p>
+ Define a minimum stock rule so that Odoo creates automatically requests for quotations or draft manufacturing orders to resupply your stock.
+ </p>
</field>
</record>
<menuitem
diff --git a/addons/stock_account/views/product_views.xml b/addons/stock_account/views/product_views.xml
index 5491d63a6bd..6b92f62cf4b 100644
--- a/addons/stock_account/views/product_views.xml
+++ b/addons/stock_account/views/product_views.xml
@@ -110,7 +110,9 @@
<field name="domain">[('type', '=', 'product'), ('qty_available', '!=', 0)]</field>
<field name="context">{}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
+ <p class="o_view_nocontent_smiling_face">
+ Create a new product valuation
+ </p><p>
If there are products, you will see its name and valuation.
</p>
</field>
@@ -173,8 +175,8 @@
<field name="search_view_id" ref="stock.view_move_search"/>
<field name="context">{'search_default_outgoing': 1, 'search_default_incoming': 1, 'search_default_done': 1, 'search_default_group_by_product': 1}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a stock movement.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new stock movement
</p>
</field>
</record>
diff --git a/addons/stock_landed_costs/views/stock_landed_cost_views.xml b/addons/stock_landed_costs/views/stock_landed_cost_views.xml
index c927482802c..6ec34e5db11 100644
--- a/addons/stock_landed_costs/views/stock_landed_cost_views.xml
+++ b/addons/stock_landed_costs/views/stock_landed_cost_views.xml
@@ -138,8 +138,8 @@
<field name="view_mode">tree,form</field>
<field name="context">{}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a new landed cost.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new landed cost
</p>
</field>
</record>
@@ -219,8 +219,8 @@
<field name="context">{'default_landed_cost_ok': True, 'default_type': 'service'}</field>
<field name="search_view_id" ref="product.product_search_form_view"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to define a new kind of landed cost.
+ <p class="o_view_nocontent_smiling_face">
+ Define a new kind of landed cost
</p>
</field>
</record>
diff --git a/addons/stock_picking_batch/views/stock_picking_batch_views.xml b/addons/stock_picking_batch/views/stock_picking_batch_views.xml
index 5c086b43124..5ed3be8dec0 100644
--- a/addons/stock_picking_batch/views/stock_picking_batch_views.xml
+++ b/addons/stock_picking_batch/views/stock_picking_batch_views.xml
@@ -105,8 +105,8 @@
<field name="context">{"search_default_in_progress" : True,}</field>
<field name="search_view_id" ref="stock_picking_batch_filter"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a Batch Picking.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new batch picking
</p><p>
The goal of the batch picking is to group operations that may
(needs to) be done together in order to increase their efficiency.
diff --git a/addons/survey/views/survey_views.xml b/addons/survey/views/survey_views.xml
index 65a3e86a306..90924d9c049 100644
--- a/addons/survey/views/survey_views.xml
+++ b/addons/survey/views/survey_views.xml
@@ -126,7 +126,9 @@
<field name="search_view_id" ref="survey_user_input_search"/>
<field name="context">{'search_default_group_by_survey': True}</field>
<field name="help" type="html">
- <p>Nobody has replied to your surveys yet.</p>
+ <p class="o_view_nocontent_empty_folder">
+ Nobody has replied to your surveys yet
+ </p>
</field>
</record>
<record id="action_selected_survey_user_input" model="ir.actions.act_window">
@@ -137,7 +139,9 @@
<field name="search_view_id" ref="survey_user_input_search"/>
<field name="context">{'search_default_survey_id': active_id, 'default_survey_id': active_id}</field>
<field name="help" type="html">
- <p>Nobody has replied to your survey yet.</p>
+ <p class="o_view_nocontent_empty_folder">
+ Nobody has replied to your surveys yet
+ </p>
</field>
</record>
@@ -309,9 +313,13 @@
<field name="view_type">form</field>
<field name="view_mode">kanban,tree,form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">Click to add a survey.</p>
- <p>You can create surveys for different purposes: customer opinion, services feedback, recruitment interviews, employee's periodical evaluations, marketing campaigns, etc.</p>
- <p>Design easily your survey, send invitations to answer by email and analyse answers.</p>
+ <p class="o_view_nocontent_smiling_face">
+ Add a new survey
+ </p><p>
+ You can create surveys for different purposes: customer opinion, services feedback, recruitment interviews, employee's periodical evaluations, marketing campaigns, etc.
+ </p><p>
+ Design easily your survey, send invitations to answer by email and analyse answers.
+ </p>
</field>
</record>
<act_window context="{'search_default_survey_id': [active_id], 'default_survey_id': active_id}" id="act_survey_pages" name="Pages" res_model="survey.page" src_model="survey.survey"/>
@@ -373,6 +381,11 @@
<field name="view_mode">tree,form</field>
<field name="search_view_id" ref="survey_page_search"/>
<field name="context">{'search_default_group_by_survey': True}</field>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_empty_folder">
+ No pages found
+ </p>
+ </field>
</record>
<act_window context="{'search_default_page_id': active_id, 'default_page_id': active_id}" id="act_survey_page_question" name="Questions" res_model="survey.question" src_model="survey.page"/>
@@ -557,6 +570,11 @@
<field name="view_mode">tree,form</field>
<field name="search_view_id" ref="survey_question_search"/>
<field name="context">{'search_default_group_by_page': True}</field>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_empty_folder">
+ No questions found
+ </p>
+ </field>
</record>
<!-- LABELS -->
@@ -591,6 +609,11 @@
<field name="view_mode">tree,form</field>
<field name="search_view_id" ref="survey_label_search"/>
<field name="context">{'search_default_group_by_question': True}</field>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_empty_folder">
+ No survey labels found
+ </p>
+ </field>
</record>
<!-- USER INPUT LINES
@@ -657,6 +680,11 @@
<field name="view_mode">tree,form</field>
<field name="search_view_id" ref="survey_response_line_search"/>
<field name="context">{'search_default_group_by_survey': True, 'search_default_group_by_user_input': True}</field>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_empty_folder">
+ No user input lines found
+ </p>
+ </field>
</record>
diff --git a/addons/utm/views/utm.xml b/addons/utm/views/utm.xml
index ca27f7b9b61..6e66bf89103 100644
--- a/addons/utm/views/utm.xml
+++ b/addons/utm/views/utm.xml
@@ -65,8 +65,8 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to define a new medium.
+ <p class="o_view_nocontent_smiling_face">
+ Define a new medium
</p>
</field>
</record>
@@ -100,8 +100,8 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to define a new source.
+ <p class="o_view_nocontent_smiling_face">
+ Define a new source
</p>
</field>
</record>
diff --git a/addons/web/static/src/img/empty_state_folder_neutral.svg b/addons/web/static/src/img/empty_folder.svg
index a770048e9c1..a770048e9c1 100644
--- a/addons/web/static/src/img/empty_state_folder_neutral.svg
+++ b/addons/web/static/src/img/empty_folder.svg
diff --git a/addons/web/static/src/img/empty_state_file_neutral.svg b/addons/web/static/src/img/neutral_face.svg
index 8ead42fee13..8ead42fee13 100644
--- a/addons/web/static/src/img/empty_state_file_neutral.svg
+++ b/addons/web/static/src/img/neutral_face.svg
diff --git a/addons/web/static/src/img/smiling_face.png b/addons/web/static/src/img/smiling_face.png
new file mode 100644
index 00000000000..ff1e070ff5b
--- /dev/null
+++ b/addons/web/static/src/img/smiling_face.png
Binary files differ
diff --git a/addons/web/static/src/img/empty_state_file_happy.svg b/addons/web/static/src/img/smiling_face.svg
index 9aaa6ba0840..9aaa6ba0840 100644
--- a/addons/web/static/src/img/empty_state_file_happy.svg
+++ b/addons/web/static/src/img/smiling_face.svg
diff --git a/addons/web/static/src/js/views/basic/basic_renderer.js b/addons/web/static/src/js/views/basic/basic_renderer.js
index 042d85d414a..83d2da5169a 100644
--- a/addons/web/static/src/js/views/basic/basic_renderer.js
+++ b/addons/web/static/src/js/views/basic/basic_renderer.js
@@ -562,7 +562,7 @@ var BasicRenderer = AbstractRenderer.extend({
*/
_renderNoContentHelper: function () {
var $msg = $('<div>')
- .addClass('oe_view_nocontent')
+ .addClass('o_view_nocontent')
.html(this.noContentHelp);
this.$el.html($msg);
},
diff --git a/addons/web/static/src/js/views/graph/graph_renderer.js b/addons/web/static/src/js/views/graph/graph_renderer.js
index 178d3ef3bd5..4d51f8786d0 100644
--- a/addons/web/static/src/js/views/graph/graph_renderer.js
+++ b/addons/web/static/src/js/views/graph/graph_renderer.js
@@ -55,9 +55,12 @@ return AbstractRenderer.extend({
* returning immediately, then wait a tiny interval before actually
* displaying the data.
*
+ * @override
+ * @private
* @returns {Deferred} The _super deferred is actually resolved immediately
*/
_render: function () {
+ this.$el.toggleClass('o_view_nocontent_container', !this.state.data.length);
if (this.to_remove) {
nv.utils.offWindowResize(this.to_remove);
}
@@ -71,8 +74,7 @@ return AbstractRenderer.extend({
this.$el.empty();
this.$el.append(qweb.render('GraphView.error', {
title: _t("No data to display"),
- description: _t("No data available for this chart. " +
- "Try to add some records, or make sure that " +
+ description: _t("Try to add some records, or make sure that " +
"there is no active filter in the search bar."),
}));
} else {
diff --git a/addons/web/static/src/js/views/kanban/kanban_renderer.js b/addons/web/static/src/js/views/kanban/kanban_renderer.js
index e4e37095afa..1dad8e9c35d 100644
--- a/addons/web/static/src/js/views/kanban/kanban_renderer.js
+++ b/addons/web/static/src/js/views/kanban/kanban_renderer.js
@@ -305,7 +305,7 @@ var KanbanRenderer = BasicRenderer.extend({
this.$el.empty();
var displayNoContentHelper = !this._hasContent() && !!this.noContentHelp;
- this.$el.toggleClass('o_kanban_nocontent', displayNoContentHelper);
+ this.$el.toggleClass('o_view_nocontent_container', displayNoContentHelper);
if (displayNoContentHelper) {
// display the no content helper if there is no data to display
this._renderNoContentHelper();
diff --git a/addons/web/static/src/js/views/list/list_renderer.js b/addons/web/static/src/js/views/list/list_renderer.js
index f4c5219259a..470e0dae0e5 100644
--- a/addons/web/static/src/js/views/list/list_renderer.js
+++ b/addons/web/static/src/js/views/list/list_renderer.js
@@ -629,8 +629,10 @@ var ListRenderer = BasicRenderer.extend({
_.invoke(this.pagers, 'destroy');
this.pagers = [];
+ var displayNoContentHelper = !this._hasContent() && !!this.noContentHelp;
+ this.$el.toggleClass('o_view_nocontent_container', displayNoContentHelper);
// display the no content helper if there is no data to display
- if (!this._hasContent() && this.noContentHelp) {
+ if (displayNoContentHelper) {
this._renderNoContentHelper();
return this._super();
}
diff --git a/addons/web/static/src/less/kanban_view.less b/addons/web/static/src/less/kanban_view.less
index 4b576c9082d..8e31f176e81 100644
--- a/addons/web/static/src/less/kanban_view.less
+++ b/addons/web/static/src/less/kanban_view.less
@@ -616,12 +616,6 @@
}
}
- // Kanban special layouts
- &.o_kanban_nocontent {
- min-height: 0;
- padding: 0;
- }
-
&.o_kanban_mobile .o_kanban_record {
div.label {
.o-text-overflow();
diff --git a/addons/web/static/src/less/variables.less b/addons/web/static/src/less/variables.less
index 010c972f29b..0be635aae18 100644
--- a/addons/web/static/src/less/variables.less
+++ b/addons/web/static/src/less/variables.less
@@ -40,6 +40,8 @@
@odoo-tooltip-background-color: black;
@odoo-tooltip-color: white;
@odoo-tooltip-arrow-color: black;
+@odoo-tooltip-text-color: #777777;
+@odoo-tooltip-title-text-color: #4c4c4c;
// UI custom colors for tags, kanban records' colors, ...)
@odoo-nb-ui-color: 12;
diff --git a/addons/web/static/src/less/views.less b/addons/web/static/src/less/views.less
index 48117cb1b75..e882ac31659 100644
--- a/addons/web/static/src/less/views.less
+++ b/addons/web/static/src/less/views.less
@@ -3,20 +3,6 @@
* all renderers. For field default rules, see the fields.less file.
*/
-// No content helper
-.oe_view_nocontent {
- a {
- cursor: pointer;
- }
- span, a {
- display: inline!important;
- }
-}
-.o_field_widget .oe_view_nocontent,
-.o_cannot_create .oe_view_nocontent_create {
- display: none;
-}
-
// Invisible modifier (can be inside the view, the button area, ...)
.o_invisible_modifier {
display: none!important;
@@ -51,3 +37,61 @@
margin-left: 3px;
}
}
+
+// No content helper
+.o_view_nocontent_container {
+ .o-flex-display();
+ height: 100%;
+ padding: 0;
+}
+
+.o_view_nocontent {
+ max-width: 650px;
+ margin: auto;
+ padding: 15px;
+ text-align: center;
+ color: @odoo-tooltip-text-color;
+ font-size: 115%;
+
+ > p:first-of-type {
+ margin-top: 0;
+ color: @odoo-tooltip-title-text-color;
+ font-weight: bold;
+ font-size: 125%;
+ }
+
+ .o-init-image() {
+ content: "";
+ display: block;
+ margin: auto;
+ background-size: cover;
+ }
+
+ .o_view_nocontent_smiling_face:before {
+ .o-init-image();
+ .size(120px, 140px);
+ background: transparent url(/web/static/src/img/smiling_face.svg) no-repeat center;
+ }
+
+ .o_view_nocontent_neutral_face:before {
+ .o-init-image();
+ .size(120px, 140px);
+ background: transparent url(/web/static/src/img/neutral_face.svg) no-repeat center;
+ }
+
+ .o_view_nocontent_empty_folder:before {
+ .o-init-image();
+ .size(120px, 80px);
+ margin-top: 30px;
+ margin-bottom: 30px;
+ background: transparent url(/web/static/src/img/empty_folder.svg) no-repeat center;
+ }
+
+ .o_empty_custom_dashboard {
+ min-height: 327px;
+ margin-left: -@grid-gutter-width/2;
+ margin-top: -@grid-gutter-width/2;
+ padding: 100px 0 0 137px;
+ background: transparent url(/web/static/src/img/graph_background.png) no-repeat 0 0;
+ }
+}
diff --git a/addons/web/static/src/less/views_extra.less b/addons/web/static/src/less/views_extra.less
deleted file mode 100644
index ad6f4c83017..00000000000
--- a/addons/web/static/src/less/views_extra.less
+++ /dev/null
@@ -1,33 +0,0 @@
-// No content helper
-.oe_view_nocontent {
- padding: 15px;
- margin-top: 0;
- color: #777777;
- font-size: 125%;
- max-width: 700px;
- .oe_view_nocontent_create {
- margin-top: 0;
- padding-top: 35px;
- color: #4c4c4c;
- &:before {
- content: "";
- display: inline-block;
- position: absolute;
- width: 70px;
- height: 80px;
- margin-left: -70px;
- margin-top: -50px;
- background: transparent url(/web/static/src/img/view_empty_arrow.png) no-repeat 0px 0px;
- }
- }
- > p {
- padding-left: 78px;
- }
- .oe_empty_custom_dashboard {
- background: transparent url(/web/static/src/img/graph_background.png) no-repeat 0 0;
- margin-top: -15px;
- padding: 100px 0 0 137px;
- min-height: 327px;
- margin-left: -15px;
- }
-}
diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml
index ea4f554b183..196346d4d9c 100644
--- a/addons/web/static/src/xml/base.xml
+++ b/addons/web/static/src/xml/base.xml
@@ -487,8 +487,8 @@
<button class="btn btn-default fa fa-pie-chart o_graph_button" title="Pie Chart" data-mode="pie"/>
</div>
</t>
-<div t-name="GraphView.error" class="oe_view_nocontent" >
- <p><strong><t t-esc="title"/></strong></p>
+<div t-name="GraphView.error" class="o_view_nocontent" >
+ <p class="o_view_nocontent_empty_folder"><t t-esc="title"/></p>
<p><t t-esc="description"/></p>
</div>
@@ -539,12 +539,15 @@
</t>
</ul>
</t>
-<div t-name="PivotView.nodata" class="oe_view_nocontent" >
- <p><strong>No data to display.</strong></p>
- <p>
- No data available for this pivot table. Try to add some records, or make sure
- that there is at least one measure and no active filter in the search bar.
- </p>
+<div t-name="PivotView.nodata" class="o_view_nocontent_container" >
+ <div class="o_view_nocontent">
+ <p class="o_view_nocontent_empty_folder">
+ No data to display
+ </p><p>
+ Try to add some records, or make sure
+ that there is at least one measure and no active filter in the search bar.
+ </p>
+ </div>
</div>
<t t-name="FormSelection">
diff --git a/addons/web/static/tests/views/graph_tests.js b/addons/web/static/tests/views/graph_tests.js
index f7d22f27a64..be1fccd36e1 100644
--- a/addons/web/static/tests/views/graph_tests.js
+++ b/addons/web/static/tests/views/graph_tests.js
@@ -148,7 +148,7 @@ QUnit.module('Views', {
});
return concurrency.delay(0).then(function () {
assert.ok(!graph.$('svg').length, "should not have a svg");
- assert.ok(graph.$('.oe_view_nocontent').length, "should have an error message");
+ assert.ok(graph.$('.o_view_nocontent').length, "should have an error message");
graph.destroy();
done();
});
@@ -204,13 +204,13 @@ QUnit.module('Views', {
return concurrency.delay(0).then(function () {
assert.ok(graph.$('div.o_graph_svg_container svg.nvd3-svg').length,
"should contain a div with a svg element");
- assert.notOk(graph.$('div.oe_view_nocontent').length,
+ assert.notOk(graph.$('div.o_view_nocontent').length,
"should not display the no content helper");
graph.update({domain: [['product_id', '=', 4]]});
assert.notOk(graph.$('div.o_graph_svg_container svg.nvd3-svg').length,
"should not contain a div with a svg element");
- assert.ok(graph.$('div.oe_view_nocontent').length,
+ assert.ok(graph.$('div.o_view_nocontent').length,
"should display the no content helper");
graph.destroy();
done();
diff --git a/addons/web/static/tests/views/kanban_tests.js b/addons/web/static/tests/views/kanban_tests.js
index 5b34ed413c5..6e9a7a4c0de 100644
--- a/addons/web/static/tests/views/kanban_tests.js
+++ b/addons/web/static/tests/views/kanban_tests.js
@@ -1373,22 +1373,22 @@ QUnit.module('Views', {
},
});
- assert.ok(kanban.$('.o_kanban_view').hasClass('o_kanban_nocontent'),
+ assert.ok(kanban.$('.o_kanban_view').hasClass('o_view_nocontent_container'),
"$el should have correct no content class");
- assert.strictEqual(kanban.$('.oe_view_nocontent').length, 1,
+ assert.strictEqual(kanban.$('.o_view_nocontent').length, 1,
"should display the no content helper");
- assert.strictEqual(kanban.$('.oe_view_nocontent p.hello:contains(add a partner)').length, 1,
+ assert.strictEqual(kanban.$('.o_view_nocontent p.hello:contains(add a partner)').length, 1,
"should have rendered no content helper from action");
this.data.partner.records = records;
kanban.reload();
- assert.notOk(kanban.$el.hasClass('o_kanban_nocontent'),
+ assert.notOk(kanban.$el.hasClass('o_view_nocontent_container'),
"$el should have removed no content class");
- assert.strictEqual(kanban.$('.oe_view_nocontent').length, 0,
+ assert.strictEqual(kanban.$('.o_view_nocontent').length, 0,
"should not display the no content helper");
kanban.destroy();
});
@@ -1462,7 +1462,7 @@ QUnit.module('Views', {
"there should be no columns");
assert.strictEqual(kanban.$('.o_kanban_record').length, 0,
"there should be no records");
- assert.strictEqual(kanban.$('.oe_view_nocontent').length, 0,
+ assert.strictEqual(kanban.$('.o_view_nocontent').length, 0,
"there should be no nocontent helper");
assert.strictEqual(kanban.$('.o_column_quick_create').length, 1,
"there should be a column quick create");
@@ -1495,7 +1495,7 @@ QUnit.module('Views', {
"there should be no columns");
assert.strictEqual(kanban.$('.o_kanban_record').length, 0,
"there should be no records");
- assert.strictEqual(kanban.$('.oe_view_nocontent').length, 1,
+ assert.strictEqual(kanban.$('.o_view_nocontent').length, 1,
"there should be a nocontent helper");
assert.strictEqual(kanban.$('.o_column_quick_create').length, 0,
"there should not be a column quick create");
diff --git a/addons/web/static/tests/views/list_tests.js b/addons/web/static/tests/views/list_tests.js
index b86a820196e..c84b8351990 100644
--- a/addons/web/static/tests/views/list_tests.js
+++ b/addons/web/static/tests/views/list_tests.js
@@ -1270,18 +1270,18 @@ QUnit.module('Views', {
},
});
- assert.strictEqual(list.$('.oe_view_nocontent').length, 1,
+ assert.strictEqual(list.$('.o_view_nocontent').length, 1,
"should display the no content helper");
assert.strictEqual(list.$('table').length, 0, "should not have a table in the dom");
- assert.strictEqual(list.$('.oe_view_nocontent p.hello:contains(add a partner)').length, 1,
+ assert.strictEqual(list.$('.o_view_nocontent p.hello:contains(add a partner)').length, 1,
"should have rendered no content helper from action");
this.data.foo.records = records;
list.reload();
- assert.strictEqual(list.$('.oe_view_nocontent').length, 0,
+ assert.strictEqual(list.$('.o_view_nocontent').length, 0,
"should not display the no content helper");
assert.strictEqual(list.$('table').length, 1, "should have a table in the dom");
list.destroy();
@@ -1299,7 +1299,7 @@ QUnit.module('Views', {
arch: '<tree><field name="foo"/></tree>',
});
- assert.strictEqual(list.$('.oe_view_nocontent').length, 0,
+ assert.strictEqual(list.$('.o_view_nocontent').length, 0,
"should not display the no content helper");
assert.strictEqual(list.$('tr.o_data_row').length, 0,
@@ -1339,7 +1339,7 @@ QUnit.module('Views', {
},
});
- assert.strictEqual(list.$('.oe_view_nocontent').length, 1,
+ assert.strictEqual(list.$('.o_view_nocontent').length, 1,
"should have a no content helper displayed");
assert.strictEqual(list.$('div.table-responsive').length, 0,
@@ -1348,7 +1348,7 @@ QUnit.module('Views', {
list.$buttons.find('.o_list_button_add').click();
- assert.strictEqual(list.$('.oe_view_nocontent').length, 0,
+ assert.strictEqual(list.$('.o_view_nocontent').length, 0,
"should not have a no content helper displayed");
assert.strictEqual(list.$('table').length, 1, "should have rendered a table");
assert.strictEqual(list.$el.css('height'), list.$('div.table-responsive').css('height'),
diff --git a/addons/web/static/tests/views/pivot_tests.js b/addons/web/static/tests/views/pivot_tests.js
index fe8c4c5b3f9..94d4bcf36b8 100644
--- a/addons/web/static/tests/views/pivot_tests.js
+++ b/addons/web/static/tests/views/pivot_tests.js
@@ -446,14 +446,14 @@ QUnit.module('Views', {
'</pivot>',
});
- assert.strictEqual(pivot.$('.oe_view_nocontent').length, 0,
+ assert.strictEqual(pivot.$('.o_view_nocontent').length, 0,
"should not have a no_content_helper");
assert.strictEqual(pivot.$('table').length, 1,
"should have a table in DOM");
pivot.$buttons.find('li[data-field=__count] a').click();
- assert.strictEqual(pivot.$('.oe_view_nocontent').length, 1,
+ assert.strictEqual(pivot.$('.o_view_nocontent').length, 1,
"should have a no_content_helper");
assert.strictEqual(pivot.$('table').length, 0,
"should not have a table in DOM");
@@ -471,14 +471,14 @@ QUnit.module('Views', {
'</pivot>',
});
- assert.strictEqual(pivot.$('.oe_view_nocontent').length, 0,
+ assert.strictEqual(pivot.$('.o_view_nocontent').length, 0,
"should not have a no_content_helper");
assert.strictEqual(pivot.$('table').length, 1,
"should have a table in DOM");
pivot.update({domain: [['foo', '=', 12345]]});
- assert.strictEqual(pivot.$('.oe_view_nocontent').length, 1,
+ assert.strictEqual(pivot.$('.o_view_nocontent').length, 1,
"should have a no_content_helper");
assert.strictEqual(pivot.$('table').length, 0,
"should not have a table in DOM");
@@ -497,7 +497,7 @@ QUnit.module('Views', {
arch: '<pivot string="Partners"></pivot>',
});
- assert.strictEqual(pivot.$('.oe_view_nocontent').length, 1,
+ assert.strictEqual(pivot.$('.o_view_nocontent').length, 1,
"should have a no_content_helper");
pivot.destroy();
});
@@ -515,13 +515,13 @@ QUnit.module('Views', {
},
});
- assert.strictEqual(pivot.$('.oe_view_nocontent').length, 1,
+ assert.strictEqual(pivot.$('.o_view_nocontent').length, 1,
"should have a no_content_helper");
pivot.update({domain: [['foo', '=', 12345]]});
- assert.strictEqual(pivot.$('.oe_view_nocontent').length, 1,
+ assert.strictEqual(pivot.$('.o_view_nocontent').length, 1,
"should still have a no_content_helper");
pivot.update({domain: []});
- assert.strictEqual(pivot.$('.oe_view_nocontent').length, 0,
+ assert.strictEqual(pivot.$('.o_view_nocontent').length, 0,
"should not have a no_content_helper");
// tries to open a field selection menu, to make sure it was not
diff --git a/addons/web/views/webclient_templates.xml b/addons/web/views/webclient_templates.xml
index 61eb0fbc2ad..f6e337a8731 100644
--- a/addons/web/views/webclient_templates.xml
+++ b/addons/web/views/webclient_templates.xml
@@ -115,7 +115,6 @@
<link rel="stylesheet" type="text/less" href="/web/static/src/less/fields.less"/>
<link rel="stylesheet" type="text/less" href="/web/static/src/less/fields_extra.less"/>
<link rel="stylesheet" type="text/less" href="/web/static/src/less/views.less"/>
- <link rel="stylesheet" type="text/less" href="/web/static/src/less/views_extra.less"/>
<link rel="stylesheet" type="text/less" href="/web/static/src/less/pivot_view.less"/>
<link rel="stylesheet" type="text/less" href="/web/static/src/less/graph_view.less"/>
<link rel="stylesheet" type="text/less" href="/web/static/src/less/form_view.less"/>
diff --git a/addons/website/data/website_data.xml b/addons/website/data/website_data.xml
index 511458091d0..9ba425ed7e7 100644
--- a/addons/website/data/website_data.xml
+++ b/addons/website/data/website_data.xml
@@ -163,8 +163,11 @@
<field name="view_mode">kanban,form</field>
<field name="context" eval="'{\'search_default_category_id\':'+str(ref('base.module_category_website'))+'}'"/>
<field name="help" type="html">
- <p><b>No website module found!</b></p>
- <p>You should try other search criteria.</p>
+ <p class="o_view_nocontent_empty_folder">
+ No website module found!
+ </p><p>
+ You should try other search criteria.
+ </p>
</field>
</record>
@@ -175,8 +178,11 @@
<field name="view_mode">kanban,form</field>
<field name="context" eval="'{\'search_default_category_id\':'+str(ref('base.module_category_theme'))+'}'"/>
<field name="help" type="html">
- <p><b>No theme module found!</b></p>
- <p>You should try other search criteria.</p>
+ <p class="o_view_nocontent_empty_folder">
+ No website module found!
+ </p><p>
+ You should try other search criteria.
+ </p>
</field>
</record>
diff --git a/addons/website_blog/views/website_blog_views.xml b/addons/website_blog/views/website_blog_views.xml
index ffe4e90ce33..1adad0aba7d 100644
--- a/addons/website_blog/views/website_blog_views.xml
+++ b/addons/website_blog/views/website_blog_views.xml
@@ -124,8 +124,8 @@
<field name="view_id" ref="view_blog_post_list"/>
<field name="search_view_id" ref="view_blog_post_search"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a new blog post.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new blog post
</p>
</field>
</record>
diff --git a/addons/website_customer/views/res_partner_views.xml b/addons/website_customer/views/res_partner_views.xml
index 58d948ca26a..97b62551bb9 100644
--- a/addons/website_customer/views/res_partner_views.xml
+++ b/addons/website_customer/views/res_partner_views.xml
@@ -47,13 +47,11 @@
<field name="res_model">res.partner.tag</field>
<field name="view_type">form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a new partner tag.
- </p>
- <p>
- Manage the partner tags to better classify them on your website.
- You can add the filter by tag on your website in the "Customize" menu.
- </p>
+ <p class="o_view_nocontent_smiling_face">
+ Create a new contact tag
+ </p><p>
+ Manage contact tags to better classify them for tracking and analysis purposes.
+ </p>
</field>
</record>
diff --git a/addons/website_event_track/views/event_track_views.xml b/addons/website_event_track/views/event_track_views.xml
index e44a2eaca9e..34572522866 100644
--- a/addons/website_event_track/views/event_track_views.xml
+++ b/addons/website_event_track/views/event_track_views.xml
@@ -189,10 +189,10 @@
<field name="res_model">event.track</field>
<field name="view_mode">kanban,tree,form,calendar,graph</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a track.
+ <p class="o_view_nocontent_smiling_face">
+ Add a new track
</p><p>
- Tracks define the schedule of your event. These can bea talk, a round table, a meeting, etc.
+ Tracks define the schedule of your event. These can be a talk, a round table, a meeting, etc.
</p>
</field>
</record>
@@ -204,11 +204,11 @@
<field name="view_mode">kanban,tree,form,calendar,graph</field>
<field name="context">{'search_default_event_id': active_id, 'default_event_id': active_id, 'group_by': 'stage_id'}</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a track.
- </p><p>
+ <p class="o_view_nocontent_smiling_face">
+ Add a new track
+ </p><p>
Tracks define the schedule of your event. These can be a talk, a round table, a meeting, etc.
- </p>
+ </p>
</field>
</record>
@@ -433,14 +433,15 @@
<field name="view_mode">tree,kanban,form</field>
<field name="view_id" ref="event_track_stage_view_tree"/>
<field name="help" type="html">
-<p class="oe_view_nocontent_create">
- Click to add a stage in the task pipeline.
-</p><p>
- Define the steps that will be used in the event from the
- creation of the track, up to the closing of the track.
- You will use these stages in order to track the progress in
- solving an event track.
-</p></field>
+ <p class="o_view_nocontent_smiling_face">
+ Add a new stage in the task pipeline
+ </p><p>
+ Define the steps that will be used in the event from the
+ creation of the track, up to the closing of the track.
+ You will use these stages in order to track the progress in
+ solving an event track.
+ </p>
+ </field>
</record>
<menuitem name="Track Stages"
diff --git a/addons/website_forum/views/forum.xml b/addons/website_forum/views/forum.xml
index 490c9f9f9bb..1d2417e1a15 100644
--- a/addons/website_forum/views/forum.xml
+++ b/addons/website_forum/views/forum.xml
@@ -241,6 +241,11 @@
<field name="view_id" ref="view_forum_post_list"/>
<field name="search_view_id" ref="view_forum_post_search"/>
<field name="context">{'search_default_questions':1}</field>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_smiling_face">
+ Create a new forum post
+ </p>
+ </field>
</record>
<menuitem id="menu_forum_posts" parent="menu_website_forum" name="Posts" action="action_forum_post" sequence="20"/>
@@ -281,6 +286,11 @@
<field name="res_model">forum.tag</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_smiling_face">
+ Create a new tag
+ </p>
+ </field>
</record>
<menuitem id="menu_forum_tag" parent="menu_website_forum" name="Tag" action="forum_tag_action" sequence="30"/>
diff --git a/addons/website_quote/views/sale_order_views.xml b/addons/website_quote/views/sale_order_views.xml
index 566479d5374..5baae5ee8ff 100644
--- a/addons/website_quote/views/sale_order_views.xml
+++ b/addons/website_quote/views/sale_order_views.xml
@@ -45,14 +45,10 @@
<record id="sale.action_quotations" model="ir.actions.act_window">
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Create a Quotation, the first step of a new sale.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new quotation, the first step of a new sale!
</p><p>
- Your next actions should flow efficiently: confirm the Quotation
- to a Sales Order, then create the Invoice and collect the Payment.
- </p><p>
- Note that once a Quotation becomes a Sales Order, it will be moved
- from the Quotations list to the Sales Order list.
+ Once the quotation is confirmed by the customer, it becomes a sales order.<br/> You will be able to create an invoice and collect the payment.
</p>
</field>
</record>
diff --git a/addons/website_quote/views/sale_quote_views.xml b/addons/website_quote/views/sale_quote_views.xml
index 88af719f528..98b1a1c8c33 100644
--- a/addons/website_quote/views/sale_quote_views.xml
+++ b/addons/website_quote/views/sale_quote_views.xml
@@ -123,8 +123,8 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click here to create your template.
+ <p class="o_view_nocontent_smiling_face">
+ Create your quotation template
</p><p>
Use templates to create polished, professional quotes in minutes.
Send these quotes by email and let your customers sign online.
diff --git a/addons/website_sale/models/crm_team.py b/addons/website_sale/models/crm_team.py
index 213a0022f70..e17804537c4 100644
--- a/addons/website_sale/models/crm_team.py
+++ b/addons/website_sale/models/crm_team.py
@@ -55,7 +55,7 @@ class CrmTeam(models.Model):
'create': False
},
'res_model': 'sale.order',
- 'help': _('''<p class="oe_view_nocontent_create">
+ 'help': _('''<p class="o_view_nocontent_smiling_face">
You can find all abandoned carts here, i.e. the carts generated by your website's visitors from over an hour ago that haven't been confirmed yet.</p>
<p>You should send an email to the customers to encourage them!</p>
'''),
diff --git a/addons/website_sale/views/product_views.xml b/addons/website_sale/views/product_views.xml
index eac174c5fda..dc1cd67120f 100644
--- a/addons/website_sale/views/product_views.xml
+++ b/addons/website_sale/views/product_views.xml
@@ -18,6 +18,13 @@
<field name="view_type">form</field>
<field name="view_mode">kanban,tree,form</field>
<field name="context">{'search_default_published': 1, 'default_website_published': True}</field>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_smiling_face">
+ Create a new product
+ </p><p>
+ A product can be either a physical product or a service that you sell to your customers.
+ </p>
+ </field>
</record>
<record id="product_attribute_line_form" model="ir.ui.view">
@@ -178,8 +185,8 @@
<field name="view_mode">tree,form</field>
<field name="view_id" eval="False"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to define a new category.
+ <p class="o_view_nocontent_smiling_face">
+ Define a new category
</p><p>
Categories are used to browse your products through the
touchscreen interface.
diff --git a/addons/website_sale/views/sale_order_views.xml b/addons/website_sale/views/sale_order_views.xml
index 21062be5fd2..cb895d7bb0d 100644
--- a/addons/website_sale/views/sale_order_views.xml
+++ b/addons/website_sale/views/sale_order_views.xml
@@ -45,7 +45,11 @@
<field name="domain">[('team_id.team_type', '=', 'website')]</field>
<field name="context">{'show_sale': True, 'search_default_order_confirmed': 1}</field>
<field name="search_view_id" ref="view_sales_order_filter_ecommerce"/>
- <field name="help">You don't have any confirmed order from the website.</field>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_empty_folder">
+ There is no confirmed order from the website
+ </p>
+ </field>
</record>
<record id="action_unpaid_orders_ecommerce" model="ir.actions.act_window">
@@ -55,7 +59,13 @@
<field name="domain">[('state', '=', 'sent'), ('team_id.team_type', '=', 'website')]</field>
<field name="context">{'show_sale': True, 'create': False}</field>
<field name="search_view_id" ref="view_sales_order_filter_ecommerce"/>
- <field name="help">You don't have any unpaid order from the website.</field>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_empty_folder">
+ There is no unpaid order from the website yet
+ </p><p>
+ Process the order once the payment is received.
+ </p>
+ </field>
</record>
<record id="action_abandoned_orders_ecommerce" model="ir.actions.act_window">
@@ -65,9 +75,15 @@
<field name="domain">[('is_abandoned_cart', '=', True)]</field>
<field name="context" eval="{'show_sale': True, 'create': False, 'search_default_recovery_email' : 1}"/>
<field name="search_view_id" ref="view_sales_order_filter_ecommerce"/>
- <field name="help" type="xml">
-<p>Find here all the abandoned carts, i.e. the carts generated by your website's visitors more than one hour ago and not confirmed.</p>
-<p>You should send an email to revive them!</p></field>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_empty_folder">
+ No abandoned carts found
+ </p><p>
+ You'll find here all the carts abandoned by your visitors, if they completed their address.
+ You should send them a recovery email!
+ The time to mark a cart as abandoned can be changed in the settings.
+ </p>
+ </field>
</record>
<record id="sale_order_action_to_invoice" model="ir.actions.act_window">
@@ -77,7 +93,11 @@
<field name="domain">[('state', 'in', ('sale', 'done')), ('invoice_status', '=', 'to invoice'), ('team_id.team_type', '=', 'website')]</field>
<field name="context">{'show_sale': True, 'search_default_order_confirmed': 1, 'create': False}</field>
<field name="search_view_id" ref="view_sales_order_filter_ecommerce"/>
- <field name="help">You don't have any order from the website.</field>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_empty_folder">
+ You don't have any order to invoice from the website
+ </p>
+ </field>
</record>
<!-- Server action to send multiple recovery email-->
@@ -100,6 +120,13 @@
<field name="domain">[('state', '=', 'sent'), ('team_id.team_type', '=', 'website')]</field>
<field name="context" eval="{'show_sale': True, 'create': False}"/>
<field name="view_id" ref="sale.view_quotation_tree"/>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_empty_folder">
+ There is no unpaid order from the website yet
+ </p><p>
+ Process the order once the payment is received.
+ </p>
+ </field>
</record>
<record id="action_view_abandoned_tree" model="ir.actions.act_window">
@@ -109,6 +136,15 @@
<field name="domain">[('state', '=', 'draft'), ('order_line', '!=', False), ('partner_id', '!=', context.get('public_partner_id')), ('team_id.team_type', '=', 'website'), ('date_order', '&lt;=', (datetime.datetime.utcnow() - datetime.timedelta(hours=1)).strftime('%Y-%m-%d %H:%M:%S'))]</field>
<field name="context" eval="{'show_sale': True, 'create': False, 'public_partner_id': ref('base.public_partner')}"/>
<field name="view_id" ref="sale.view_quotation_tree"/>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_empty_folder">
+ No abandoned carts found
+ </p><p>
+ You'll find here all the carts abandoned by your visitors, if they completed their address.
+ You should send them a recovery email!
+ The time to mark a cart as abandoned can be changed in the settings.
+ </p>
+ </field>
</record>
<!-- Main website sale menu items -->
diff --git a/addons/website_sale/views/sale_report_views.xml b/addons/website_sale/views/sale_report_views.xml
index b9c39c34926..256472179b7 100644
--- a/addons/website_sale/views/sale_report_views.xml
+++ b/addons/website_sale/views/sale_report_views.xml
@@ -56,7 +56,11 @@
<field name="view_mode">pivot,graph</field>
<field name="domain">[('state','in',('sale', 'done')), ('team_id.team_type', '=', 'website')]</field>
<field name="search_view_id" ref="sale_report_view_search_website"/>
- <field name="help">You don't have any order from the website.</field>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_empty_folder">
+ You don't have any order from the website
+ </p>
+ </field>
</record>
<record id="sale_report_action_view_pivot_website" model="ir.actions.act_window.view">
@@ -79,7 +83,11 @@
<field name="view_mode">pivot,graph</field>
<field name="domain">[('team_id.team_type', '=', 'website')]</field>
<field name="search_view_id" ref="sale_report_view_search_website"/>
- <field name="help">You don't have any order from the website.</field>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_empty_folder">
+ You don't have any order from the website
+ </p>
+ </field>
</record>
<record id="sale_report_action_view_pivot_carts" model="ir.actions.act_window.view">
diff --git a/addons/website_sale_digital/models/product.py b/addons/website_sale_digital/models/product.py
index 9ad8dc20c8d..cfbd3c33918 100644
--- a/addons/website_sale_digital/models/product.py
+++ b/addons/website_sale_digital/models/product.py
@@ -28,7 +28,7 @@ class ProductTemplate(models.Model):
'view_type': 'form',
'context': "{'default_res_model': '%s','default_res_id': %d, 'default_product_downloadable': True}" % (self._name, self.id),
'help': """
- <p class="oe_view_nocontent_create">Click on create to add attachments for this digital product.</p>
+ <p class="o_view_nocontent_smiling_face">Add attachments for this digital product</p>
<p>The attached files are the ones that will be purchased and sent to the customer.</p>
""",
}
@@ -61,7 +61,7 @@ class Product(models.Model):
'view_type': 'form',
'context': "{'default_res_model': '%s','default_res_id': %d, 'default_product_downloadable': True}" % (self._name, self.id),
'help': """
- <p class="oe_view_nocontent_create">Click on create to add attachments for this digital product.</p>
+ <p class="o_view_nocontent_smiling_face">Add attachments for this digital product</p>
<p>The attached files are the ones that will be purchased and sent to the customer.</p>
""",
}
diff --git a/addons/website_slides/views/website_slides_backend.xml b/addons/website_slides/views/website_slides_backend.xml
index a9c5cc2f09d..14457005244 100644
--- a/addons/website_slides/views/website_slides_backend.xml
+++ b/addons/website_slides/views/website_slides_backend.xml
@@ -158,6 +158,11 @@
<field name="res_model">slide.slide</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form,graph</field>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_smiling_face">
+ Add a new slide
+ </p>
+ </field>
</record>
<menuitem action="action_slides_slides" id="submenu_action_slides_slides" parent="menu_website_slides_root" sequence="3"/>
@@ -194,6 +199,11 @@
<field name="res_model">slide.category</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_smiling_face">
+ Create a new category
+ </p>
+ </field>
</record>
<menuitem action="action_ir_slide_category" id="menu_action_ir_slide_category" parent="menu_website_slides_root" sequence="2"/>
@@ -289,6 +299,11 @@
<field name="res_model">slide.channel</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_smiling_face">
+ Create a channel
+ </p>
+ </field>
</record>
<menuitem action="action_slide_channels" id="menu_action_slide_channels"
parent="menu_website_slides_root" sequence="1"/>
diff --git a/doc/howtos/backend/exercise-basic-action b/doc/howtos/backend/exercise-basic-action
index 537554b6cd7..8fa44f743c6 100644
--- a/doc/howtos/backend/exercise-basic-action
+++ b/doc/howtos/backend/exercise-basic-action
@@ -31,7 +31,7 @@ Index: addons/openacademy/views/openacademy.xml
+ <field name="view_type">form</field>
+ <field name="view_mode">tree,form</field>
+ <field name="help" type="html">
-+ <p class="oe_view_nocontent_create">Create the first course
++ <p class="oe_view_nocontent_smiling_face">Create the first course
+ </p>
+ </field>
+ </record>
diff --git a/doc/howtos/backend/exercise-searchview b/doc/howtos/backend/exercise-searchview
index 6919e1708da..ed6fc681a99 100644
--- a/doc/howtos/backend/exercise-searchview
+++ b/doc/howtos/backend/exercise-searchview
@@ -24,5 +24,5 @@ Index: addons/openacademy/views/openacademy.xml
<field name="view_mode">tree,form</field>
+ <field name="context" eval="{'search_default_my_courses': 1}"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">Create the first course
+ <p class="oe_view_nocontent_smiling_face">Create the first course
</p>
diff --git a/odoo/addons/base/views/ir_attachment_views.xml b/odoo/addons/base/views/ir_attachment_views.xml
index 573f56d9a9b..d0292745ff3 100644
--- a/odoo/addons/base/views/ir_attachment_views.xml
+++ b/odoo/addons/base/views/ir_attachment_views.xml
@@ -93,8 +93,8 @@
<field name="view_id" eval="False"/>
<field name="search_view_id" ref="view_attachment_search"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click here to create new documents.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new document
</p>
<p>
Also you will find here all the related documents and download it by clicking on any individual document.
diff --git a/odoo/addons/base/views/ir_module_views.xml b/odoo/addons/base/views/ir_module_views.xml
index 67dcba26cda..53768df481b 100644
--- a/odoo/addons/base/views/ir_module_views.xml
+++ b/odoo/addons/base/views/ir_module_views.xml
@@ -183,8 +183,11 @@
<field name="context">{'search_default_app':1}</field>
<field name="search_view_id" ref="view_module_filter"/>
<field name="help" type="html">
- <p><b>No module found!</b></p>
- <p>You should try other search criteria.</p>
+ <p class="o_view_nocontent_empty_folder">
+ No website module found!
+ </p><p>
+ You should try other search criteria.
+ </p>
</field>
</record>
<menuitem id="menu_module_tree" parent="menu_management" name="Apps" sequence="5" action="open_module_tree" />
diff --git a/odoo/addons/base/views/ir_ui_view_views.xml b/odoo/addons/base/views/ir_ui_view_views.xml
index 256b85cf918..2d7edc91a47 100644
--- a/odoo/addons/base/views/ir_ui_view_views.xml
+++ b/odoo/addons/base/views/ir_ui_view_views.xml
@@ -132,7 +132,7 @@
<field name="name">Customized Views</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">ir.ui.view.custom</field>
- <field name="help" type="html"><p class="oe_view_nocontent_create">Click here to create a customized view</p><p>Customized views are used when users reorganize the content of their dashboard views (via web client)</p></field>
+ <field name="help" type="html"><p class="o_view_nocontent_smiling_face">Create a customized view</p><p>Customized views are used when users reorganize the content of their dashboard views (via web client)</p></field>
</record>
<menuitem id="menu_action_ui_view_custom" action="action_ui_view_custom" parent="base.next_id_2" sequence="3"/>
diff --git a/odoo/addons/base/views/res_bank_views.xml b/odoo/addons/base/views/res_bank_views.xml
index 8453b2f5e84..c592105a0cd 100644
--- a/odoo/addons/base/views/res_bank_views.xml
+++ b/odoo/addons/base/views/res_bank_views.xml
@@ -49,8 +49,8 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a new bank.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new bank
</p><p>
Manage bank records you want to be used in the system.
</p>
@@ -101,8 +101,8 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a bank account.
+ <p class="o_view_nocontent_smiling_face">
+ Create a bank account
</p>
</field>
</record>
diff --git a/odoo/addons/base/views/res_company_views.xml b/odoo/addons/base/views/res_company_views.xml
index 895f84526a1..ab9f202b176 100644
--- a/odoo/addons/base/views/res_company_views.xml
+++ b/odoo/addons/base/views/res_company_views.xml
@@ -110,7 +110,13 @@
<field name="res_model">res.company</field>
<field name="view_type">form</field>
<field name="view_mode">tree,kanban,form</field>
- <field name="help">Create and manage the companies that will be managed by Odoo from here. Shops or subsidiaries can be created and maintained from here.</field>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_smiling_face">
+ Create a new company
+ </p><p>
+ Create and manage the companies that will be managed by Odoo from here. Shops or subsidiaries can be created and maintained from here.
+ </p>
+ </field>
</record>
<menuitem action="action_res_company_form" id="menu_action_res_company_form" parent="base.menu_users"/>
diff --git a/odoo/addons/base/views/res_partner_views.xml b/odoo/addons/base/views/res_partner_views.xml
index 83c39fce280..8893ee1cb15 100644
--- a/odoo/addons/base/views/res_partner_views.xml
+++ b/odoo/addons/base/views/res_partner_views.xml
@@ -499,12 +499,10 @@
<field name="context">{"search_default_customer":1}</field>
<field name="search_view_id" ref="view_res_partner_filter"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a contact in your address book.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new customer in your address book
</p><p>
- Odoo helps you easily track all activities related to
- a customer: discussions, history of business opportunities,
- documents, etc.
+ Odoo helps you easily track all activities related to a customer.
</p>
</field>
</record>
@@ -537,12 +535,10 @@
<field name="context">{'default_customer':1, 'search_default_customer':1, 'default_company_type': 'company','default_is_company': 1}</field>
<field name="filter" eval="True"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a contact in your address book.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new customer in your address book
</p><p>
- Odoo helps you easily track all activities related to
- a customer: discussions, history of business opportunities,
- documents, etc.
+ Odoo helps you easily track all activities related to a customer.
</p>
</field>
</record>
@@ -575,12 +571,10 @@
<field name="context">{'search_default_supplier': 1,'default_customer': 0,'default_supplier': 1, 'default_company_type': 'company'}</field>
<field name="filter" eval="True"/>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to add a contact in your address book.
+ <p class="o_view_nocontent_smiling_face">
+ Create a new vendor in your address book
</p><p>
- Odoo helps you easily track all activities related to
- a supplier: discussions, history of purchases,
- documents, etc.
+ Odoo helps you easily track all activities related to a vendor.
</p>
</field>
</record>
@@ -653,13 +647,11 @@
<field name="res_model">res.partner.category</field>
<field name="view_type">form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a new partner tag.
- </p>
- <p>
- Manage partner tags to better classify them for tracking and analysis purposes.
- A partner may have several categories and categories have a hierarchical structure: a partner with a category has also the parent category.
- </p>
+ <p class="o_view_nocontent_smiling_face">
+ Create a new contact tag
+ </p><p>
+ Manage contact tags to better classify them for tracking and analysis purposes.
+ </p>
</field>
</record>
@@ -696,12 +688,11 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click to create a new industry.
- </p>
- <p>
- Manage sectors of activity to better classify partners for tracking and analysis purposes.
- </p>
+ <p class="o_view_nocontent_smiling_face">
+ Create a new industry
+ </p><p>
+ Manage sectors of activity to better classify partners for tracking and analysis purposes.
+ </p>
</field>
</record>
</data>
diff --git a/odoo/addons/test_main_flows/static/src/js/tour.js b/odoo/addons/test_main_flows/static/src/js/tour.js
index b59aaff1d5c..df19f6c2df3 100644
--- a/odoo/addons/test_main_flows/static/src/js/tour.js
+++ b/odoo/addons/test_main_flows/static/src/js/tour.js
@@ -28,7 +28,7 @@ tour.register('main_flow_tour', {
trigger: '.o-kanban-button-new',
extra_trigger: '.o_kanban_view',
content: _t('Let\'s create your first product.'),
- position: 'right',
+ position: 'bottom',
}, {
trigger: 'input[name=name]',
extra_trigger: '.o_form_sheet',
@@ -68,7 +68,7 @@ tour.register('main_flow_tour', {
}, {
trigger: ".o_list_button_add",
content: _t("Let's create a new bill of material"),
- position: "right",
+ position: "bottom",
}, {
// Add first component
trigger: ".o_field_x2many_list_row_add > a",
@@ -195,7 +195,7 @@ tour.register('main_flow_tour', {
trigger: '.o-kanban-button-new',
extra_trigger: '.o_kanban_view',
content: _t('Let\'s create your second product.'),
- position: 'right',
+ position: 'bottom',
}, {
trigger: 'input[name=name]',
extra_trigger: '.o_form_sheet',
@@ -246,7 +246,7 @@ tour.register('main_flow_tour', {
trigger: ".o-kanban-button-new",
extra_trigger: '.o_opportunity_kanban',
content: _t("Click here to <b>create your first opportunity</b> and add it to your pipeline."),
- position: "right"
+ position: "bottom"
}, {
trigger: ".modal-body input:first",
content: _t("Enter the opportunity title."),