diff options
| author | Alexandre Kühn <aku@odoo.com> | 2017-11-24 08:33:01 +0100 |
|---|---|---|
| committer | Alexandre Kühn <alex.e.kuhn@gmail.com> | 2018-01-18 21:43:29 +0100 |
| commit | a87d761fdbf345ada5dc93e0a686b08a0f5a0417 (patch) | |
| tree | d23be6ea90567a7ede9b4dc8c1ab33144835ca80 | |
| parent | 1f1c5f62c7322980ef60650d719d6efe2eeb4e1d (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
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 Binary files differnew file mode 100644 index 00000000000..ff1e070ff5b --- /dev/null +++ b/addons/web/static/src/img/smiling_face.png 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', '<=', (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."), |
