[IMP] Improve compatibility with screen readers (accessibility) (#24574)
Today, Odoo is really tricky to use without seeing the screen, it must be improved to be usable. This PR forbid to use labels without a "for" attribute, add some title, rule and aria attributes in HTML. With that, Odoo will be fully usable with a screen reader. * [IMP] Labels must have a for attribute. Improve accessibility. * [IMP] Better error message when trying to read a missing cached value * [FIX] Add some aria-label and title attributes for screen readers. * [FIX] Template name is not included in the error message in case of SyntaxError in QWeb * [FIX] Improve the Tour failed at step error message to be more explicit. * [IMP] Add aria-labels * [FIX] Add missing aria-label on failing test * [IMP] aria-hidden means hidden. Fix all bad aria-hidden and hide aria-hidden for all. * [IMP] Color names on kanban views and many2many tags * [IMP] Add some checks on views for accessibility. * [IMP] Add `alt` attribute on `img` tags. * [IMP] Add aria-label and title on non-described icons * [IMP] Add button role to widgets with btn class * [IMP] Translate aria and formatted attributes. * [IMP] Remove wrong aria-labelledby * [IMP] Add menu role on dropdowns * [IMP] Buttons must be focusable * [IMP] Add aria attributes on progress bars * [IMP] Improve accessibility of basic widgets * [IMP] Change main layout to more semantic tags * [IMP] Add menuitem role when missing * [IMP] Remove wrong role='presentation' * [IMP] Improve accessibility of tab panels * [IMP] Add aria-invalid on invalid fields * [IMP] Add aria-sort on ordered columns * [IMP] Add role on alerts * [IMP] Use dialog role, header, main and footer tags for modals * [IMP] Add labels on o_status * [IMP] Improve accessibility of kanban view with feeds and articles * [IMP] Add alerts in case of new messages * [IMP] Add widget, navigation or img role to aria-labelled items
This commit is contained in:
@@ -6,22 +6,22 @@
|
||||
<div class="o_form_statusbar">
|
||||
<div class="o_statusbar_status" data-original-title="" title="" >
|
||||
<button name="setting_chart_of_accounts_action" type="company_object" t-attf-class="btn btn-sm o_arrow_button btn-default account_setup_dashboard_action #{values['chart_of_accounts'] and 'o_action_done' or ''}" >
|
||||
<i class="fa fa-check" t-if="values['chart_of_accounts']"/>
|
||||
<i class="fa fa-check" t-if="values['chart_of_accounts']" role="img" aria-label="Current state" title="Current state" aria-current="step"/>
|
||||
<b class="o_account_dashboard_index">4</b>
|
||||
Chart of Accounts
|
||||
</button>
|
||||
<button name="setting_init_fiscal_year_action" type="company_object" t-attf-class="btn btn-sm o_arrow_button btn-default account_setup_dashboard_action #{values['fiscal_year'] and 'o_action_done' or ''}">
|
||||
<i class="fa fa-check" t-if="values['fiscal_year']"/>
|
||||
<i class="fa fa-check" t-if="values['fiscal_year']" role="img" aria-label="Current state" title="Current state" aria-current="step"/>
|
||||
<b class="o_account_dashboard_index">3</b>
|
||||
Fiscal Year
|
||||
</button>
|
||||
<button name="setting_init_bank_account_action" type="company_object" t-attf-class="btn btn-sm o_arrow_button btn-default account_setup_dashboard_action #{values['bank'] and 'o_action_done' or ''}">
|
||||
<i class="fa fa-check" t-if="values['bank']"/>
|
||||
<i class="fa fa-check" t-if="values['bank']" role="img" aria-label="Current state" title="Current state" aria-current="step"/>
|
||||
<b class="o_account_dashboard_index">2</b>
|
||||
Add a Bank Account
|
||||
</button>
|
||||
<button name="setting_init_company_action" type="company_object" t-attf-class="btn btn-sm o_arrow_button btn-default account_setup_dashboard_action #{values['company'] and 'o_action_done' or ''}">
|
||||
<i class="fa fa-check" t-if="values['company']"/>
|
||||
<i class="fa fa-check" t-if="values['company']" role="img" aria-label="Current state" title="Current state" aria-current="step"/>
|
||||
<b class="o_account_dashboard_index">1</b>
|
||||
Company Data
|
||||
</button>
|
||||
@@ -29,7 +29,7 @@
|
||||
<h4 class="text-muted">Configuration Steps</h4>
|
||||
</div>
|
||||
<div class="pull-right" style="padding: 7px 0;">
|
||||
<button aria-hidden="true" data-dismiss="modal" type="company_object" name="setting_hide_setup_bar" class="account_setup_dashboard_action close">×</button>
|
||||
<button aria-label="Hide setup bar" data-dismiss="modal" type="company_object" name="setting_hide_setup_bar" class="account_setup_dashboard_action close">×</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
</t>
|
||||
<t t-if="!outstanding">
|
||||
<td>
|
||||
<a role="button" tabindex="0" class="js_payment_info fa fa-info-circle" t-att-index="line.index" style="margin-right:5px;"></a>
|
||||
<a role="button" tabindex="0" class="js_payment_info fa fa-info-circle" t-att-index="line.index" style="margin-right:5px;" aria-label="Info" title="Info"></a>
|
||||
</td>
|
||||
<td>
|
||||
<i class="o_field_widget text-right o_payment_label">Paid on <t t-esc="line.date"></t></i>
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<td class="cell_action"><span class="toggle_match fa fa-cog"></span></td>
|
||||
<td class="cell_action"><span class="toggle_match fa fa-cog" aria-label="Settings" role="img" title="Settings"></span></td>
|
||||
<td class="cell_account_code"><t t-esc="state.st_line.account_code"/></td>
|
||||
<td class="cell_due_date"><t t-esc="state.st_line.date"/></td>
|
||||
<td class="cell_label"><t t-if="state.st_line.name" t-esc="state.st_line.name"/> <t t-if="state.st_line.amount_currency_str"> (<t t-esc="state.st_line.amount_currency_str"/>)</t></td>
|
||||
@@ -120,7 +120,7 @@
|
||||
</t>
|
||||
<t t-jquery=".accounting_view thead tr" t-operation="replace">
|
||||
<tr>
|
||||
<td class="cell_action"><span class="toggle_match fa fa-cog"></span></td>
|
||||
<td class="cell_action"><span class="toggle_match fa fa-cog" aria-label="Settings" role="img" title="Settings"></span></td>
|
||||
<td colspan="3"><span/><span t-if="state.last_time_entries_checked">Last Reconciliation: <t t-esc="state.last_time_entries_checked"/></span></td>
|
||||
<td colspan="2"><t t-esc="state.st_line.account_code"/></td>
|
||||
<td class="cell_info_popover"></td>
|
||||
@@ -130,12 +130,12 @@
|
||||
|
||||
<t t-name="reconciliation.line.balance">
|
||||
<tr t-if="state.balance.amount_currency && !(state.reconciliation_proposition[0] || {}).partial_reconcile">
|
||||
<td class="cell_action"><span class="toggle_create fa fa-play"></span></td>
|
||||
<td class="cell_action"><span role="img" class="toggle_create fa fa-play" aria-label="Run" title="Run"></span></td>
|
||||
<td class="cell_account_code"><t t-esc="state.balance.account_code"/></td>
|
||||
<td class="cell_due_date"></td>
|
||||
<td class="cell_label"><t t-if="state.balance.amount_currency < 0">Create Write-off</t><t t-elif="state.st_line.partner_id">Open balance</t><t t-else="">Choose counterpart</t></td>
|
||||
<td class="cell_left"><t t-if="state.balance.amount_currency < 0"><span t-if="state.balance.amount_currency_str" t-attf-class="o_multi_currency o_multi_currency_color_#{state.balance.currency_id%8} line_info_button fa fa-money" t-att-data-content="state.balance.amount_currency_str"/><t t-raw="state.balance.amount_str"/></t></td>
|
||||
<td class="cell_right"><t t-if="state.balance.amount_currency > 0"><span t-if="state.balance.amount_currency_str" t-attf-class="o_multi_currency o_multi_currency_color_#{state.balance.currency_id%8} line_info_button fa fa-money" t-att-data-content="state.balance.amount_currency_str"/><t t-raw="state.balance.amount_str"/></t></td>
|
||||
<td class="cell_left"><t t-if="state.balance.amount_currency < 0"><span role="img" t-if="state.balance.amount_currency_str" t-attf-class="o_multi_currency o_multi_currency_color_#{state.balance.currency_id%8} line_info_button fa fa-money" t-att-data-content="state.balance.amount_currency_str" t-att-aria-label="state.balance.amount_currency_str" t-att-title="state.balance.amount_currency_str"/><t t-raw="state.balance.amount_str"/></t></td>
|
||||
<td class="cell_right"><t t-if="state.balance.amount_currency > 0"><span role="img" t-if="state.balance.amount_currency_str" t-attf-class="o_multi_currency o_multi_currency_color_#{state.balance.currency_id%8} line_info_button fa fa-money" t-att-data-content="state.balance.amount_currency_str" t-att-aria-label="state.balance.amount_currency_str" t-att-title="state.balance.amount_currency_str"/><t t-raw="state.balance.amount_str"/></t></td>
|
||||
<td class="cell_info_popover"></td>
|
||||
</tr>
|
||||
</t>
|
||||
@@ -144,8 +144,8 @@
|
||||
<div t-name="reconciliation.line.match">
|
||||
<div class="match_controls">
|
||||
<input class="filter" placeholder="Filter..." type="text" value=""/>
|
||||
<span class="pull-right fa fa-chevron-right disabled"></span>
|
||||
<span class="pull-right fa fa-chevron-left disabled"></span>
|
||||
<span class="pull-right fa fa-chevron-right disabled" role="img" aria-label="Previous" title="Previous"></span>
|
||||
<span class="pull-right fa fa-chevron-left disabled" role="img" aria-label="Next" title="Next"></span>
|
||||
</div>
|
||||
<table>
|
||||
<tbody>
|
||||
@@ -163,10 +163,10 @@
|
||||
<p t-if="!state.reconcileModels.length" style="color: #bbb;">To speed up reconciliation, define <a style="cursor: pointer;" class="reconcile_model_create">reconciliation models</a>.</p>
|
||||
</div>
|
||||
<div class="dropdown pull-right">
|
||||
<a data-toggle="dropdown" href="#"><span class="fa fa-cog"/></a>
|
||||
<ul class="dropdown-menu dropdown-menu-right" role="menu" aria-labelledby="Presets config">
|
||||
<li><a class="reconcile_model_create" href="#">Create model</a></li>
|
||||
<li><a class="reconcile_model_edit" href="#">Modify models</a></li>
|
||||
<a data-toggle="dropdown" href="#"><span class="fa fa-cog" role="img" aria-label="Settings"/></a>
|
||||
<ul class="dropdown-menu dropdown-menu-right" role="menu" aria-label="Presets config">
|
||||
<li><a role="menuitem" class="reconcile_model_create" href="#">Create model</a></li>
|
||||
<li><a role="menuitem" class="reconcile_model_edit" href="#">Modify models</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@@ -205,14 +205,14 @@
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="add_line_container">
|
||||
<a class="add_line" t-att-style="!state.balance.amout ? 'display: none;' : null"><i class="fa fa-plus-circle"/> Save and New</a>
|
||||
<a class="add_line fa fa-plus-circle" t-att-style="!state.balance.amout ? 'display: none;' : null">Save and New</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<t t-name="reconciliation.line.mv_line">
|
||||
<tr t-if="line.display !== false" t-attf-class="mv_line #{line.already_paid ? ' already_reconciled' : ''} #{line.__invalid ? 'invalid' : ''} #{line.is_tax ? 'is_tax' : ''}" t-att-data-line-id="line.id" t-att-data-selected="selected">
|
||||
<td class="cell_action"><span class="fa fa-add-remove"/></td>
|
||||
<td class="cell_action"><span class="fa fa-add-remove" role="img" aria-label="Set" title="Set"/></td>
|
||||
<td class="cell_account_code"><t t-esc="line.account_code"/></td>
|
||||
<td class="cell_due_date"><t t-esc="line.date_maturity === false ? line.date : line.date_maturity"/></td>
|
||||
<td class="cell_label">
|
||||
@@ -225,8 +225,8 @@
|
||||
<t t-if="line.ref && line.ref.length"> : </t>
|
||||
<t t-esc="line.ref"/>
|
||||
</td>
|
||||
<td class="cell_left"><t t-if="line.amount < 0"><span t-if="line.amount_currency_str" t-attf-class="o_multi_currency o_multi_currency_color_#{line.currency_id%8} line_info_button fa fa-money" t-att-data-content="line.amount_currency_str"/><t t-raw="line.amount_str"/></t></td>
|
||||
<td class="cell_right"><t t-if="line.amount > 0"><span t-if="line.amount_currency_str" t-attf-class="o_multi_currency o_multi_currency_color_#{line.currency_id%8} line_info_button fa fa-money" t-att-data-content="line.amount_currency_str"/><t t-raw="line.amount_str"/></t></td>
|
||||
<td class="cell_left"><t t-if="line.amount < 0"><span role="img" t-if="line.amount_currency_str" t-attf-class="o_multi_currency o_multi_currency_color_#{line.currency_id%8} line_info_button fa fa-money" t-att-data-content="line.amount_currency_str" t-att-aria-label="line.amount_currency_str" t-att-title="line.amount_currency_str"/><t t-raw="line.amount_str"/></t></td>
|
||||
<td class="cell_right"><t t-if="line.amount > 0"><span role="img" t-if="line.amount_currency_str" t-attf-class="o_multi_currency o_multi_currency_color_#{line.currency_id%8} line_info_button fa fa-money" t-att-data-content="line.amount_currency_str" t-att-aria-label="line.amount_currency_str" t-att-title="line.amount_currency_str"/><t t-raw="line.amount_str"/></t></td>
|
||||
<td class="cell_info_popover"></td>
|
||||
</tr>
|
||||
</t>
|
||||
@@ -266,10 +266,10 @@
|
||||
|
||||
<t t-name="reconciliation.notification">
|
||||
<div t-att-class="'notification alert-dismissible alert alert-' + type" role="alert">
|
||||
<button type="button" class="close" data-dismiss="alert"><span aria-hidden="true" class="fa fa-times"></span><span class="sr-only">Close</span></button>
|
||||
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span title="Close" class="fa fa-times"></span></button>
|
||||
<t t-esc="message" />
|
||||
<t t-if="details !== undefined">
|
||||
<a class="fa fa-external-link" rel="do_action" href="#"
|
||||
<a class="fa fa-external-link" rel="do_action" href="#" aria-label="External link" title="External link"
|
||||
t-att-data-action_name="details.name"
|
||||
t-att-data-model="details.model"
|
||||
t-att-data-ids="details.ids">
|
||||
|
||||
@@ -941,11 +941,11 @@ QUnit.module('account', {
|
||||
|
||||
// Simulate changing partner with SelectCreateDialog
|
||||
widget = clientAction.widgets[1];
|
||||
assert.strictEqual($('.modal').length, 0, "shouldn't have any opened modal");
|
||||
assert.strictEqual($('[role="dialog"]').length, 0, "shouldn't have any opened modal");
|
||||
widget.$('.o_input_dropdown input').trigger('click');
|
||||
$('.ui-autocomplete .ui-menu-item a:contains(Search More):eq(1)').trigger('mouseenter').trigger('click');
|
||||
assert.strictEqual($('.modal').length, 1, "should open a SelectCreateDialog");
|
||||
$('.modal table.o_list_view td:contains(Camptocamp)').click();
|
||||
assert.strictEqual($('[role="dialog"]').length, 1, "should open a SelectCreateDialog");
|
||||
$('[role="dialog"] table.o_list_view td:contains(Camptocamp)').click();
|
||||
assert.strictEqual(widget.$('.o_input_dropdown input').val(), "Camptocamp", "the partner many2one should display Camptocamp");
|
||||
|
||||
widget = clientAction.widgets[2];
|
||||
@@ -1100,7 +1100,7 @@ QUnit.module('account', {
|
||||
widget.$('.create .create_account_id input').trigger('click');
|
||||
$('.ui-autocomplete .ui-menu-item a:contains(Search)').trigger('mouseenter').trigger('click');
|
||||
// select the account who does not appear in the drop drown
|
||||
$('.modal tr.o_data_row:contains(502)').click();
|
||||
$('[role="dialog"] tr.o_data_row:contains(502)').click();
|
||||
assert.strictEqual(widget.$('.create .create_account_id input').val(), "101200 Account Receivable", "Selected account does not change");
|
||||
// wait the name_get to render the changes
|
||||
def.resolve();
|
||||
|
||||
@@ -235,11 +235,11 @@
|
||||
<field name="has_outstanding" invisible="1"/>
|
||||
<sheet string="Vendor Bill">
|
||||
<div>
|
||||
<label string="Draft Bill" attrs="{'invisible': ['|',('state','!=','draft'), ('type','!=','in_invoice')]}"/>
|
||||
<label string="- First Number:" attrs="{'invisible': [('sequence_number_next_prefix','=',False)]}"/>
|
||||
<label string="Draft Credit Note" attrs="{'invisible': ['|',('state','!=','draft'), ('type','!=','in_refund')]}"/>
|
||||
<label string="Bill " attrs="{'invisible': ['|',('state', '=', 'draft'), ('type','!=','in_invoice')]}"/>
|
||||
<label string="Credit Note " attrs="{'invisible': ['|',('state', '=', 'draft'), ('type','!=','in_refund')]}"/>
|
||||
<span class="o_form_label" attrs="{'invisible': ['|',('state','!=','draft'), ('type','!=','in_invoice')]}">Draft Bill</span>
|
||||
<span class="o_form_label" attrs="{'invisible': [('sequence_number_next_prefix','=',False)]}">- First Number:</span>
|
||||
<span class="o_form_label" attrs="{'invisible': ['|',('state','!=','draft'), ('type','!=','in_refund')]}">Draft Credit Note</span>
|
||||
<span class="o_form_label" attrs="{'invisible': ['|',('state', '=', 'draft'), ('type','!=','in_invoice')]}">Bill </span>
|
||||
<span class="o_form_label" attrs="{'invisible': ['|',('state', '=', 'draft'), ('type','!=','in_refund')]}">Credit Note </span>
|
||||
<h1 class="mt0">
|
||||
<field name="number" class="oe_inline" attrs="{'invisible': [('state', '=', 'draft')]}"/>
|
||||
<div attrs="{'invisible': [('sequence_number_next_prefix','=',False)]}">
|
||||
@@ -387,15 +387,15 @@
|
||||
<sheet string="Invoice">
|
||||
<div class="oe_button_box" name="button_box">
|
||||
</div>
|
||||
<label string="Credit Note" attrs="{'invisible': ['|',('state','=','draft'), ('type','!=','out_refund')]}"/>
|
||||
<span class="o_form_label"> attrs="{'invisible': ['|',('state','=','draft'), ('type','!=','out_refund')]}">Credit Note</span>
|
||||
<h1 class="mt0">
|
||||
<div attrs="{'invisible': [('sequence_number_next_prefix','!=',False)]}">
|
||||
<label string="Draft Invoice" attrs="{'invisible': ['|',('state','not in',('draft',)), ('type','!=','out_invoice')]}"/>
|
||||
<label string="Draft Credit Note" attrs="{'invisible': ['|',('state','not in',('draft',)), ('type','!=','out_refund')]}"/>
|
||||
<label for="number" string="Draft Invoice" attrs="{'invisible': ['|',('state','not in',('draft',)), ('type','!=','out_invoice')]}"/>
|
||||
<label for="number" string="Draft Credit Note" attrs="{'invisible': ['|',('state','not in',('draft',)), ('type','!=','out_refund')]}"/>
|
||||
<field name="number" readonly="1" class="oe_inline" attrs="{'invisible': [('state','in',('draft',))]}"/>
|
||||
</div>
|
||||
<div attrs="{'invisible': [('sequence_number_next_prefix','=',False)]}">
|
||||
<label string="Invoice Number:"/><br/>
|
||||
<label for="sequence_number_next_prefix" string="Invoice Number:"/><br/>
|
||||
<field name="sequence_number_next_prefix" class="oe_inline"/>
|
||||
<field name="sequence_number_next" class="oe_inline"/>
|
||||
</div>
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
</t>
|
||||
</div>
|
||||
<t t-if="journal_type == 'bank' || journal_type == 'cash' || journal_type == 'sale' || journal_type == 'purchase'" t-call="JournalBodyGraph"/>
|
||||
</div><div class="container o_kanban_card_manage_pane dropdown-menu">
|
||||
</div><div class="container o_kanban_card_manage_pane dropdown-menu" role="menu">
|
||||
<t t-call="JournalManage"/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -46,7 +46,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="o_kanban_manage_button_section">
|
||||
<a class="o_kanban_manage_toggle_button" href="#"><i class="fa fa-ellipsis-v" /></a>
|
||||
<a class="o_kanban_manage_toggle_button" href="#"><i class="fa fa-ellipsis-v" aria-label="Selection" role="img" title="Selection"/></a>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
@@ -57,57 +57,57 @@
|
||||
<div t-if="journal_type == 'bank' || journal_type == 'cash'" class="row">
|
||||
<div class="col-xs-4 o_kanban_card_manage_section o_kanban_manage_view">
|
||||
<div class="o_kanban_card_manage_title">
|
||||
<span>View</span>
|
||||
<span role="separator">View</span>
|
||||
</div>
|
||||
<div>
|
||||
<a type="object" name="open_action">Statements</a>
|
||||
<a role="menuitem" type="object" name="open_action">Statements</a>
|
||||
</div>
|
||||
<div>
|
||||
<a type="object" name="open_action_with_context" context="{'action_name': 'action_bank_statement_line', 'search_default_journal': True}">Operations</a>
|
||||
<a role="menuitem" type="object" name="open_action_with_context" context="{'action_name': 'action_bank_statement_line', 'search_default_journal': True}">Operations</a>
|
||||
</div>
|
||||
<div>
|
||||
<a type="object" name="open_collect_money">Customer Payments</a>
|
||||
<a role="menuitem" type="object" name="open_collect_money">Customer Payments</a>
|
||||
</div>
|
||||
<div>
|
||||
<a type="object" name="open_spend_money">Vendor Payments</a>
|
||||
<a role="menuitem" type="object" name="open_spend_money">Vendor Payments</a>
|
||||
</div>
|
||||
<div>
|
||||
<a type="object" name="open_transfer_money">Internal Transfers</a>
|
||||
<a role="menuitem" type="object" name="open_transfer_money">Internal Transfers</a>
|
||||
</div>
|
||||
<div>
|
||||
<a type="object" name="open_action" context="{'action_name': 'action_account_moves_all_a'}" groups="base.group_no_one">Journal Items</a>
|
||||
<a role="menuitem" type="object" name="open_action" context="{'action_name': 'action_account_moves_all_a'}" groups="base.group_no_one">Journal Items</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-xs-4 o_kanban_card_manage_section o_kanban_manage_new">
|
||||
<div class="o_kanban_card_manage_title">
|
||||
<span>New</span>
|
||||
<span role="separator">New</span>
|
||||
</div>
|
||||
<div name="bank_cash_commands">
|
||||
<t t-if="journal_type == 'bank'">
|
||||
<a type="object" name="create_bank_statement">Statement</a>
|
||||
<a role="menuitem" type="object" name="create_bank_statement">Statement</a>
|
||||
</t>
|
||||
<t t-if="journal_type == 'cash'">
|
||||
<a type="object" name="create_cash_statement">Statement</a>
|
||||
<a role="menuitem" type="object" name="create_cash_statement">Statement</a>
|
||||
</t>
|
||||
</div>
|
||||
<div>
|
||||
<a type="object" name="create_customer_payment">Customer Payment</a>
|
||||
<a role="menuitem" type="object" name="create_customer_payment">Customer Payment</a>
|
||||
</div>
|
||||
<div>
|
||||
<a type="object" name="create_supplier_payment">Vendor Payment</a>
|
||||
<a role="menuitem" type="object" name="create_supplier_payment">Vendor Payment</a>
|
||||
</div>
|
||||
<div>
|
||||
<a type="object" name="create_internal_transfer">Internal Transfer</a>
|
||||
<a role="menuitem" type="object" name="create_internal_transfer">Internal Transfer</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-xs-4 o_kanban_card_manage_section o_kanban_manage_reconciliation">
|
||||
<div class="o_kanban_card_manage_title">
|
||||
<span>Reconciliation</span>
|
||||
<span role="separator">Reconciliation</span>
|
||||
</div>
|
||||
<div>
|
||||
<a type="object" name="open_action_with_context" context="{'action_name': 'action_account_reconcile_model', 'use_domain': True}" groups="account.group_account_manager">Reconciliation Models</a>
|
||||
<a role="menuitem" type="object" name="open_action_with_context" context="{'action_name': 'action_account_reconcile_model', 'use_domain': True}" groups="account.group_account_manager">Reconciliation Models</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
<strong><span><field name="name"/></span></strong>
|
||||
</div>
|
||||
<div class="col-xs-6 text-right">
|
||||
<strong><i class="fa fa-clock-o"/> <t t-esc="record.payment_date.value"/></strong>
|
||||
<strong><i class="fa fa-clock-o" role="img" aria-label="Date" title="Date"/> <t t-esc="record.payment_date.value"/></strong>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
@@ -272,7 +272,7 @@
|
||||
<div attrs="{'invisible': [('payment_difference_handling','=','open')]}">
|
||||
<label for="writeoff_account_id" class="oe_edit_only" string="Post Difference In"/>
|
||||
<field name="writeoff_account_id" string="Post Difference In" attrs="{'required': [('payment_difference_handling', '=', 'reconcile')]}"/>
|
||||
<label string="Journal" attrs="{'invisible': [('amount', '!=', 0)]}"/>
|
||||
<label for="journal_id" string="Journal" attrs="{'invisible': [('amount', '!=', 0)]}"/>
|
||||
<field name="journal_id" string="Journal" widget="selection" attrs="{'invisible': [('amount', '!=', 0)]}"/>
|
||||
<label for="writeoff_label" class="oe_edit_only" string="Label"/>
|
||||
<field name="writeoff_label" attrs="{'required': [('payment_difference_handling', '=', 'reconcile')]}"/>
|
||||
@@ -339,7 +339,7 @@
|
||||
<div attrs="{'invisible': [('payment_difference_handling','=','open')]}">
|
||||
<label for="writeoff_account_id" class="oe_edit_only" string="Post Difference In"/>
|
||||
<field name="writeoff_account_id" string="Post Difference In" attrs="{'required': [('payment_difference_handling', '=', 'reconcile')]}"/>
|
||||
<label string="Journal" attrs="{'invisible': [('amount', '!=', 0)]}"/>
|
||||
<label for="journal_id" string="Journal" attrs="{'invisible': [('amount', '!=', 0)]}"/>
|
||||
<field name="journal_id" string="Journal" widget="selection" attrs="{'invisible': [('amount', '!=', 0)]}"/>
|
||||
<label for="writeoff_label" class="oe_edit_only" string="Label"/>
|
||||
<field name="writeoff_label" attrs="{'required': [('payment_difference_handling', '=', 'reconcile')]}"/>
|
||||
|
||||
@@ -48,13 +48,13 @@
|
||||
<td class='hidden-xs'><span t-field="invoice.date_due"/></td>
|
||||
<td class="tx_status">
|
||||
<t t-if="invoice.state == 'open'">
|
||||
<span class="label label-info"><i class="fa fa-fw fa-clock-o"></i><span class="hidden-xs"> Waiting for Payment</span></span>
|
||||
<span class="label label-info"><i class="fa fa-fw fa-clock-o" aria-label="Opened" title="Opened" role="img"></i><span class="hidden-xs"> Waiting for Payment</span></span>
|
||||
</t>
|
||||
<t t-if="invoice.state == 'paid'">
|
||||
<span class="label label-default"><i class="fa fa-fw fa-check"></i><span class="hidden-xs"> Paid</span></span>
|
||||
<span class="label label-default"><i class="fa fa-fw fa-check" aria-label="Paid" title="Paid" role="img"></i><span class="hidden-xs"> Paid</span></span>
|
||||
</t>
|
||||
<t t-if="invoice.state == 'cancel'">
|
||||
<span class="label label-default"><i class="fa fa-fw fa-remove"></i><span class="hidden-xs"> Cancelled</span></span>
|
||||
<span class="label label-default"><i class="fa fa-fw fa-remove" aria-label="Cancelled" title="Cancelled" role="img"></i><span class="hidden-xs"> Cancelled</span></span>
|
||||
</t>
|
||||
</td>
|
||||
<td><span t-esc="-invoice.residual if invoice.type == 'out_refund' else invoice.residual" t-options='{"widget": "monetary", "display_currency": invoice.currency_id}'/></td>
|
||||
@@ -93,8 +93,8 @@
|
||||
<div class="pb8 ml16 mr16 container">
|
||||
<t t-if="invoice.user_id">
|
||||
<div><strong>Your Contact:</strong></div>
|
||||
<img class="img-circle mr4 pull-left o_portal_contact_img" t-if="invoice.user_id.image" t-attf-src="data:image/png;base64,#{invoice.user_id.image}"/>
|
||||
<img class="img-circle mr4 pull-left o_portal_contact_img" t-if="not invoice.user_id.image" src="/web/static/src/img/placeholder.png"/>
|
||||
<img class="img-circle mr4 pull-left o_portal_contact_img" t-if="invoice.user_id.image" t-attf-src="data:image/png;base64,#{invoice.user_id.image}" alt="Contact"/>
|
||||
<img class="img-circle mr4 pull-left o_portal_contact_img" t-if="not invoice.user_id.image" src="/web/static/src/img/placeholder.png" alt="Contact"/>
|
||||
<span t-field="invoice.user_id" t-field-options='{"widget": "contact", "fields": ["name", "phone"], "no_marker": True}'/>
|
||||
<a data-toggle="modal" href="#" data-target="#invoice_chatter">Contact us</a>
|
||||
</t>
|
||||
@@ -142,7 +142,7 @@
|
||||
|
||||
<template id="portal_invoice_error" name="Invoice error/warning display">
|
||||
<div class="row mr16">
|
||||
<div t-attf-class="'col-md-12 mr16 ml16 alert alert-dismissable' #{'alert-danger' if error else 'alert-warning'}">
|
||||
<div t-attf-class="'col-md-12 mr16 ml16 alert alert-dismissable' #{'alert-danger' if error else 'alert-warning'}" role="alert">
|
||||
<a href="#" class="close" data-dismiss="alert" aria-label="close" title="close">×</a>
|
||||
<t t-if="error == 'generic'" name="generic">
|
||||
There was an error processing this page.
|
||||
@@ -153,7 +153,7 @@
|
||||
|
||||
<template id="portal_invoice_success" name="Invoice success display">
|
||||
<div class="row mr16">
|
||||
<div class="col-md-12 mr16 ml16 alert alert-dismissable alert-success">
|
||||
<div class="col-md-12 mr16 ml16 alert alert-dismissable alert-success" role="status">
|
||||
<a href="#" class="close" data-dismiss="alert" aria-label="close" title="close">×</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -345,7 +345,7 @@
|
||||
<field name="loss_account_id"/>
|
||||
</group>
|
||||
<group name="group_alias" string="Email your Vendor Bills" attrs="{'invisible': [('type', '!=', 'purchase')]}">
|
||||
<label string="Email Alias" attrs="{'invisible': [('alias_domain', '=', False)]}"/>
|
||||
<label string="Email Alias" attrs="{'invisible': [('alias_domain', '=', False)]}" for="alias_id"/>
|
||||
<div name="alias_def" attrs="{'invisible': [('alias_domain', '=', False)]}">
|
||||
<field name="alias_id" class="oe_read_only oe_inline"/>
|
||||
<div class="oe_edit_only oe_inline" name="edit_alias" style="display: inline;" >
|
||||
@@ -353,7 +353,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="content-group" attrs="{'invisible': [('alias_domain', '!=', False)]}">
|
||||
<a type='action' name='%(action_open_settings)d' class="btn btn-sm btn-link"><i class="fa fa-fw o_button_icon fa-arrow-right"/> Configure Email Servers</a>
|
||||
<a type='action' name='%(action_open_settings)d' class="btn btn-sm btn-link" role="button"><span class="fa fa-fw o_button_icon fa-arrow-right"> Configure Email Servers</span></a>
|
||||
</div>
|
||||
</group>
|
||||
</group>
|
||||
@@ -860,7 +860,7 @@
|
||||
<label for="amount"/>
|
||||
<div>
|
||||
<field name="amount" class="oe_inline"/>
|
||||
<label string="%" class="oe_inline" attrs="{'invisible':[('amount_type','!=','percentage')]}" />
|
||||
<span class="o_form_label oe_inline" attrs="{'invisible':[('amount_type','!=','percentage')]}">%</span>
|
||||
</div>
|
||||
<field name="journal_id" domain="[('company_id', '=', company_id)]" widget="selection"/>
|
||||
</group>
|
||||
@@ -882,7 +882,7 @@
|
||||
<label for="second_amount" string="Amount"/>
|
||||
<div>
|
||||
<field name="second_amount" class="oe_inline"/>
|
||||
<label string="%" class="oe_inline" attrs="{'invisible':[('amount_type','!=','percentage')]}" />
|
||||
<span class="o_form_label oe_inline" attrs="{'invisible':[('amount_type','!=','percentage')]}">%</span>
|
||||
</div>
|
||||
<field name="second_journal_id" string="Journal" domain="[('company_id', '=', company_id)]" widget="selection"/>
|
||||
</group>
|
||||
@@ -1105,7 +1105,7 @@
|
||||
<label for="amount" attrs="{'invisible':[('amount_type','not in', ('fixed', 'percent', 'division'))]}"/>
|
||||
<div attrs="{'invisible':[('amount_type','not in', ('fixed', 'percent', 'division'))]}">
|
||||
<field name="amount" class="oe_inline" />
|
||||
<label string="%" class="oe_inline" attrs="{'invisible':[('amount_type','=','fixed')]}" />
|
||||
<span class="o_form_label oe_inline" attrs="{'invisible':[('amount_type','=','fixed')]}">%</span>
|
||||
</div>
|
||||
</group>
|
||||
<group attrs="{'invisible':[('amount_type','=', 'group')]}" groups="account.group_account_user">
|
||||
@@ -1257,13 +1257,13 @@
|
||||
<span t-esc="record.move_id.value"/>
|
||||
</strong>
|
||||
<strong class="col-xs-6 text-right">
|
||||
<i class="fa fa-clock-o"/><field name="date_maturity"/>
|
||||
<i class="fa fa-clock-o" aria-label="Date" role="img" title="Date"/><field name="date_maturity"/>
|
||||
</strong>
|
||||
<div class="col-xs-10">
|
||||
<span t-esc="record.name.value"/>
|
||||
</div>
|
||||
<div class="col-xs-2 text-right">
|
||||
<img t-att-src="kanban_image('res.partner', 'image_small', record.partner_id.raw_value)" t-att-title="record.partner_id.value" width="24" height="24" class="oe_kanban_avatar"/>
|
||||
<img t-att-src="kanban_image('res.partner', 'image_small', record.partner_id.raw_value)" t-att-title="record.partner_id.value" t-att-alt="record.partner_id.value" width="24" height="24" class="oe_kanban_avatar"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1468,7 +1468,7 @@
|
||||
<strong><span><field name="journal_id"/></span></strong>
|
||||
</div>
|
||||
<div class="col-xs-6 text-right">
|
||||
<strong><i class="fa fa-clock-o"/> <t t-esc="record.date.value"/></strong>
|
||||
<strong><i class="fa fa-clock-o" aria-label="Date" role="img" title="Date"/> <t t-esc="record.date.value"/></strong>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
@@ -1695,7 +1695,7 @@
|
||||
<div attrs="{'invisible':[('value','=', 'balance')]}" class="o_row">
|
||||
<label for="value_amount" attrs="{'invisible':[('value','=', 'balance')]}"/>
|
||||
<field name="value_amount" class="oe_inline"/>
|
||||
<label string="%" class="oe_inline" attrs="{'invisible':[('value','!=','percent')]}"/>
|
||||
<span class="o_form_label oe_inline" attrs="{'invisible':[('value','!=','percent')]}">%</span>
|
||||
</div>
|
||||
</group>
|
||||
</group>
|
||||
@@ -1713,7 +1713,7 @@
|
||||
<div colspan="2" attrs="{'invisible': [('option','!=', 'day_after_invoice_date')]}">
|
||||
<label for="day_of_the_month" string="On the"/>
|
||||
<field name="day_of_the_month" class="oe_inline"/>
|
||||
<label string="of the month"/>
|
||||
<span class="o_form_label">of the month</span>
|
||||
</div>
|
||||
</form>
|
||||
</field>
|
||||
@@ -1942,7 +1942,7 @@
|
||||
<label for="amount" attrs="{'invisible':[('amount_type','=', 'group')]}"/>
|
||||
<div attrs="{'invisible':[('amount_type','=', 'group')]}">
|
||||
<field name="amount" class="oe_inline" />
|
||||
<label string="%" class="oe_inline" attrs="{'invisible':[('amount_type','=','fixed')]}" />
|
||||
<span class="o_form_label oe_inline" attrs="{'invisible':[('amount_type','=','fixed')]}">%</span>
|
||||
</div>
|
||||
</group>
|
||||
<group attrs="{'invisible':[('amount_type','=', 'group')]}">
|
||||
|
||||
@@ -24,14 +24,14 @@
|
||||
<div class="col-xs-12 col-md-6 o_setting_box" attrs="{'invisible': [('has_accounting_entries','!=',False)]}">
|
||||
<div class="o_setting_left_pane"/>
|
||||
<div class="o_setting_right_pane">
|
||||
<label string="Fiscal Localization"/>
|
||||
<span class="fa fa-lg fa-building-o" title="Values set here are company-specific." groups="base.group_multi_company"/>
|
||||
<span class="o_form_label">Fiscal Localization</span>
|
||||
<span class="fa fa-lg fa-building-o" title="Values set here are company-specific." aria-label="Values set here are company-specific." groups="base.group_multi_company" role="img"/>
|
||||
<div class="text-muted">
|
||||
Taxes, fiscal positions, chart of accounts & legal statements for your country
|
||||
</div>
|
||||
<div class="content-group">
|
||||
<div class="row mt16">
|
||||
<label string="Package" class="col-md-3 o_light_label"/>
|
||||
<label for="chart_template_id" string="Package" class="col-md-3 o_light_label"/>
|
||||
<field name="chart_template_id" widget="selection"/>
|
||||
</div>
|
||||
<div>
|
||||
@@ -49,7 +49,7 @@
|
||||
<field name="account_hide_setup_bar" widget="upgrade_boolean"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label string='Hide the Configuration Steps bar'/>
|
||||
<label for="account_hide_setup_bar" string='Hide the Configuration Steps bar'/>
|
||||
<div class="text-muted">
|
||||
Deactivate the "Configuration Steps" bar on the dashboard
|
||||
</div>
|
||||
@@ -62,8 +62,8 @@
|
||||
<div class="col-xs-12 col-md-6 o_setting_box" title="These taxes are set in any new product created.">
|
||||
<div class="o_setting_left_pane"/>
|
||||
<div class="o_setting_right_pane">
|
||||
<label string='Default Taxes'/>
|
||||
<span class="fa fa-lg fa-building-o" title="Values set here are company-specific." groups="base.group_multi_company"/>
|
||||
<span class="o_form_label">Default Taxes</span>
|
||||
<span class="fa fa-lg fa-building-o" title="Values set here are company-specific." aria-label="Values set here are company-specific." groups="base.group_multi_company" role="img"/>
|
||||
<div class="text-muted">
|
||||
Default taxes applied to local transactions
|
||||
</div>
|
||||
@@ -82,7 +82,7 @@
|
||||
<div class="col-xs-12 col-md-6 o_setting_box" id="rounding_method" title="A rounding per line is advised if your prices are tax-included. That way, the sum of line subtotals equals the total with taxes.">
|
||||
<div class="o_setting_left_pane"/>
|
||||
<div class="o_setting_right_pane">
|
||||
<label string="Rounding Method"/>
|
||||
<span class="o_form_label">Rounding Method</span>
|
||||
<div class="text-muted">
|
||||
How total tax amount is computed in orders and invoices
|
||||
</div>
|
||||
@@ -97,7 +97,7 @@
|
||||
</div>
|
||||
<div class="o_setting_right_pane" name="account_taxcloud_right_pane">
|
||||
<label for="module_account_taxcloud" string="TaxCloud"/>
|
||||
<span class="fa fa-lg fa-building-o" title="Values set here are company-specific." groups="base.group_multi_company"/>
|
||||
<span class="fa fa-lg fa-building-o" title="Values set here are company-specific." aria-label="Values set here are company-specific." groups="base.group_multi_company" role="img"/>
|
||||
<div class="text-muted">
|
||||
Compute tax rates based on U.S. ZIP codes
|
||||
</div>
|
||||
@@ -120,7 +120,7 @@
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="tax_exigibility"/>
|
||||
<span class="fa fa-lg fa-building-o" title="Values set here are company-specific." groups="base.group_multi_company"/>
|
||||
<span class="fa fa-lg fa-building-o" title="Values set here are company-specific." aria-label="Values set here are company-specific." groups="base.group_multi_company" role="img"/>
|
||||
<div class="text-muted">
|
||||
Allow to configure taxes using cash basis
|
||||
</div>
|
||||
@@ -138,8 +138,8 @@
|
||||
<div class="col-xs-12 col-md-6 o_setting_box">
|
||||
<div class="o_setting_left_pane"/>
|
||||
<div class="o_setting_right_pane">
|
||||
<label string="Main Currency"/>
|
||||
<span class="fa fa-lg fa-building-o" title="Values set here are company-specific." groups="base.group_multi_company"/>
|
||||
<span class="o_form_label">Main Currency</span>
|
||||
<span class="fa fa-lg fa-building-o" title="Values set here are company-specific." aria-label="Values set here are company-specific." groups="base.group_multi_company" role="img"/>
|
||||
<div class="text-muted">
|
||||
Main currency of your company
|
||||
</div>
|
||||
@@ -223,7 +223,7 @@
|
||||
<field name="module_account_payment"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label string="Online Payment"/>
|
||||
<label for="module_account_payment" string="Online Payment"/>
|
||||
<div class="text-muted">
|
||||
Let your customers pay their invoices online
|
||||
</div>
|
||||
@@ -234,7 +234,7 @@
|
||||
<field name="module_account_batch_payment" widget="upgrade_boolean"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label string="Batch Payments"/>
|
||||
<label for="module_account_batch_deposit" string="Batch Payments"/>
|
||||
<div class="text-muted">
|
||||
Group payments into a single batch to ease the reconciliation process
|
||||
</div>
|
||||
@@ -246,7 +246,7 @@
|
||||
</div>
|
||||
<div class="o_setting_right_pane" name="sepa_direct_debit_right_pane">
|
||||
<label string="SEPA Direct Debit (SDD)" for="module_account_sepa"/>
|
||||
<span class="fa fa-lg fa-building-o" title="Values set here are company-specific." groups="base.group_multi_company"/>
|
||||
<span class="fa fa-lg fa-building-o" title="Values set here are company-specific." aria-label="Values set here are company-specific." groups="base.group_multi_company" role="img"/>
|
||||
<div class="text-muted">
|
||||
Collect customer payments in one-click using Euro SEPA Service
|
||||
</div>
|
||||
@@ -267,7 +267,7 @@
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label string="Checks" for="module_account_check_printing"/>
|
||||
<span class="fa fa-lg fa-building-o" title="Values set here are company-specific." groups="base.group_multi_company"/>
|
||||
<span class="fa fa-lg fa-building-o" title="Values set here are company-specific." aria-label="Values set here are company-specific." groups="base.group_multi_company" role="img"/>
|
||||
<div class="text-muted" id="print_bills_payment">
|
||||
Print checks to pay your vendors
|
||||
</div>
|
||||
@@ -279,7 +279,7 @@
|
||||
</div>
|
||||
<div class="o_setting_right_pane" name="sepa_right_pane">
|
||||
<label for="module_account_sepa"/>
|
||||
<span class="fa fa-lg fa-building-o" title="Values set here are company-specific." groups="base.group_multi_company"/>
|
||||
<span class="fa fa-lg fa-building-o" title="Values set here are company-specific." aria-label="Values set here are company-specific." groups="base.group_multi_company" role="img"/>
|
||||
<div class="text-muted">
|
||||
Pay your bills in one-click using Euro SEPA Service
|
||||
</div>
|
||||
@@ -295,7 +295,7 @@
|
||||
<field name="module_account_yodlee" widget="upgrade_boolean"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label string="Automatic Import"/>
|
||||
<label for="module_account_yodlee" string="Automatic Import"/>
|
||||
<div class="text-muted">
|
||||
Import your bank statements automatically
|
||||
</div>
|
||||
@@ -306,7 +306,7 @@
|
||||
<field name="module_account_bank_statement_import_csv" widget="upgrade_boolean"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label string="CSV Import"/>
|
||||
<label for="module_account_bank_statement_import_csv" string="CSV Import"/>
|
||||
<div class="text-muted">
|
||||
Import your bank statements in CSV
|
||||
</div>
|
||||
@@ -317,7 +317,7 @@
|
||||
<field name="module_account_bank_statement_import_qif" widget="upgrade_boolean"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label string="QIF Import"/>
|
||||
<label for="module_account_bank_statement_import_qif" string="QIF Import"/>
|
||||
<div class="text-muted">
|
||||
Import your bank statements in QIF
|
||||
</div>
|
||||
@@ -328,7 +328,7 @@
|
||||
<field name="module_account_bank_statement_import_ofx" widget="upgrade_boolean"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label string="OFX Import"/>
|
||||
<label for="module_account_bank_statement_import_ofx" string="OFX Import"/>
|
||||
<div class="text-muted">
|
||||
Import your bank statements in OFX
|
||||
</div>
|
||||
@@ -339,7 +339,7 @@
|
||||
<field name="module_account_bank_statement_import_camt" widget="upgrade_boolean"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label string="CAMT Import"/>
|
||||
<label for="module_account_bank_statement_import_camt" string="CAMT Import"/>
|
||||
<div class="text-muted">
|
||||
Import your bank statements in CAMT.053
|
||||
</div>
|
||||
@@ -405,7 +405,7 @@
|
||||
<field name="module_product_margin"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label string="Margin Analysis"/>
|
||||
<label for="module_product_margin" string="Margin Analysis"/>
|
||||
<div class="text-muted">
|
||||
Monitor your product margins from invoices
|
||||
</div>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<field name="arch" type="xml">
|
||||
<form string="Report Options">
|
||||
<separator string="Aged Partner Balance"/>
|
||||
<label string="Aged Partner Balance is a more detailed report of your receivables by intervals. Odoo calculates a table of credit balance by start Date. So if you request an interval of 30 days Odoo generates an analysis of creditors for the past month, past two months, and so on. "/>
|
||||
<span class="o_form_label">Aged Partner Balance is a more detailed report of your receivables by intervals. Odoo calculates a table of credit balance by start Date. So if you request an interval of 30 days Odoo generates an analysis of creditors for the past month, past two months, and so on. </span>
|
||||
<group col="4">
|
||||
<field name="date_from"/>
|
||||
<field name="period_length"/>
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<field name="arch" type="xml">
|
||||
<form string="Unreconcile">
|
||||
<separator string="Unreconcile Transactions"/>
|
||||
<label string="If you unreconcile transactions, you must also verify all the actions that are linked to those transactions because they will not be disabled"/>
|
||||
<form class="o_form_label">If you unreconcile transactions, you must also verify all the actions that are linked to those transactions because they will not be disabled</form>
|
||||
<footer>
|
||||
<button string="Unreconcile" name="trans_unrec" type="object" default_focus="1" class="btn-primary"/>
|
||||
<button string="Cancel" class="btn-default" special="cancel"/>
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<field name="model">validate.account.move</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Post Journal Entries">
|
||||
<label string="All selected journal entries will be validated and posted. You won't be able to modify them afterwards."/>
|
||||
<span class="o_form_label">All selected journal entries will be validated and posted. You won't be able to modify them afterwards.</span>
|
||||
<footer>
|
||||
<button string="Post Journal Entries" name="validate_move" type="object" default_focus="1" class="btn-primary"/>
|
||||
<button string="Cancel" class="btn-default" special="cancel"/>
|
||||
|
||||
@@ -55,9 +55,9 @@
|
||||
<div t-attf-class="oe_kanban_card oe_kanban_global_click">
|
||||
<div>
|
||||
<strong><span><field name="analytic_id"/></span></strong>
|
||||
<img t-att-src="kanban_image('res.users', 'image_small', record.user_id.raw_value)" t-att-title="record.user_id.value" width="24" height="24" class="oe_kanban_avatar pull-right"/>
|
||||
<img t-att-src="kanban_image('res.users', 'image_small', record.user_id.raw_value)" t-att-title="record.user_id.value" t-att-alt="record.user_id.value" width="24" height="24" class="oe_kanban_avatar pull-right"/>
|
||||
</div>
|
||||
<div t-if="record.date_start.value"><i class="fa fa-calendar"></i> From <field name="date_start"/> <t t-if="record.date_stop.value">to <field name="date_stop"/></t></div>
|
||||
<div t-if="record.date_start.value"><span class="fa fa-calendar"> From</span> <field name="date_start"/> <t t-if="record.date_stop.value">to <field name="date_stop"/></t></div>
|
||||
<div t-if="record.product_id.value"><strong>Product</strong> <field name="product_id"/> </div>
|
||||
<div t-if="record.partner_id.value"><strong>Customer</strong> <field name="partner_id"/> </div>
|
||||
</div>
|
||||
|
||||
@@ -196,14 +196,14 @@ Budgets
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-10">
|
||||
<i class="fa fa-clock-o"/>
|
||||
<i class="fa fa-clock-o" role="img" aria-label="Period" title="Period"/>
|
||||
<t t-esc="record.date_from.value"/>-
|
||||
<t t-esc="record.date_to.value"/>
|
||||
</div>
|
||||
<div class="col-xs-2">
|
||||
<span class="pull-right">
|
||||
<img t-att-src="kanban_image('res.users', 'image_small', record.user_id.raw_value)"
|
||||
t-att-title="record.user_id.value" width="24" height="24"
|
||||
t-att-title="record.user_id.value" t-att-alt="record.user_id.value" width="24" height="24"
|
||||
class="oe_kanban_avatar pull-right"/>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<t t-set="tx_ids" t-value="invoice.transaction_ids.filtered(lambda tx: tx.state in ('pending', 'authorized', 'done'))"/>
|
||||
<t t-set="pending_manual_txs" t-value="tx_ids.filtered(lambda tx: tx.state == 'pending' and tx.acquirer_id.provider in ('transfer', 'manual'))"/>
|
||||
<a t-if="invoice.state == 'open' and invoice.amount_total and invoice.type == 'out_invoice' and (pending_manual_txs or not tx_ids)"
|
||||
t-att-href="'/my/invoices/%s#portal_pay' % invoice.id" alt="Pay Now" class="btn btn-xs btn-primary">
|
||||
t-att-href="'/my/invoices/%s#portal_pay' % invoice.id" title="Pay now" aria-label="Pay now" class="btn btn-xs btn-primary" role="button">
|
||||
<i class="fa fa-arrow-circle-right"/><span class='hidden-xs'> Pay Now</span>
|
||||
</a>
|
||||
</td>
|
||||
@@ -73,15 +73,15 @@
|
||||
<div class="mb8 ml16 mr16">
|
||||
<a t-if="invoice.state == 'open' and invoice.amount_total and invoice.type == 'out_invoice' and (pending_manual_txs or not tx_ids)"
|
||||
class="btn btn-primary btn-block" data-toggle="modal" data-target="#pay_with">
|
||||
<i class="fa fa-arrow-circle-right"/> Pay Now
|
||||
<span class="fa fa-arrow-circle-right">Pay Now</span>
|
||||
</a>
|
||||
<a t-if="tx_ids and not pending_manual_txs and invoice.state != 'paid'"
|
||||
class="btn btn-warning btn-block" disabled="disabled">
|
||||
<i class="fa fa-check-circle"/> Pending
|
||||
<span class="fa fa-check-circle">Pending</span>
|
||||
</a>
|
||||
<a t-if="invoice.state == 'paid'"
|
||||
class="btn btn-success btn-block" disabled="disabled">
|
||||
<i class="fa fa-check-circle"/> Paid
|
||||
<span class="fa fa-check-circle">Paid</span>
|
||||
</a>
|
||||
</div>
|
||||
</xpath>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<odoo>
|
||||
<template id="auth_oauth.providers" name="OAuth Providers">
|
||||
<div t-foreach="providers" t-as="p">
|
||||
<a t-att-href="p['auth_link']" class="btn btn-link">
|
||||
<a t-att-href="p['auth_link']" class="btn btn-link" role="button">
|
||||
<i t-att-class="p['css_class']"/>
|
||||
<t t-esc="p['body']"/>
|
||||
</a>
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
<label for="auth_oauth_google_client_id" string="Client ID:" class="col-md-3 o_light_label"/>
|
||||
<field name="auth_oauth_google_client_id" placeholder="e.g. 1234-xyz.apps.googleusercontent.com"/>
|
||||
</div>
|
||||
<a href="https://www.odoo.com/documentation/user/online/general/auth/google.html" target="_blank"><i class="fa fa-fw fa-arrow-right"/>Tutorial</a>
|
||||
<a class="fa fa-fw fa-arrow-right" href="https://www.odoo.com/documentation/user/online/general/auth/google.html" target="_blank">Tutorial</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
<odoo>
|
||||
<template id="auth_signup.login" inherit_id="web.login" name="Sign up - Reset Password">
|
||||
<xpath expr="//button[@type='submit']" position="before">
|
||||
<a t-if="signup_enabled" t-attf-href="/web/signup?{{ keep_query() }}" class="btn btn-link pull-right">Don't have an account?</a>
|
||||
<a t-if="reset_password_enabled" t-attf-href="/web/reset_password?{{ keep_query() }}" class="btn btn-link pull-right">Reset Password</a>
|
||||
<a t-if="signup_enabled" t-attf-href="/web/signup?{{ keep_query() }}" class="btn btn-link pull-right" role="button">Don't have an account?</a>
|
||||
<a t-if="reset_password_enabled" t-attf-href="/web/reset_password?{{ keep_query() }}" class="btn btn-link pull-right" role="button">Reset Password</a>
|
||||
</xpath>
|
||||
</template>
|
||||
|
||||
@@ -43,13 +43,13 @@
|
||||
<t t-set="only_passwords" t-value="bool(token and not invalid_token)"/>
|
||||
</t>
|
||||
|
||||
<p class="alert alert-danger" t-if="error">
|
||||
<p class="alert alert-danger" t-if="error" role="alert">
|
||||
<t t-esc="error"/>
|
||||
</p>
|
||||
<input type="hidden" name="redirect" t-att-value="redirect"/>
|
||||
<input type="hidden" name="token" t-att-value="token"/>
|
||||
<div class="clearfix oe_login_buttons">
|
||||
<a t-attf-href="/web/login?{{ keep_query() }}" class="btn btn-link pull-right">Already have an account?</a>
|
||||
<a t-attf-href="/web/login?{{ keep_query() }}" class="btn btn-link pull-right" role="button">Already have an account?</a>
|
||||
<button type="submit" class="btn btn-primary pull-left o_signup_btn"> Sign up</button>
|
||||
</div>
|
||||
|
||||
@@ -60,10 +60,10 @@
|
||||
<template id="auth_signup.reset_password" name="Reset password">
|
||||
<t t-call="web.login_layout">
|
||||
<div t-if="message">
|
||||
<p class="alert alert-success" t-if="message">
|
||||
<p class="alert alert-success" t-if="message" role="status">
|
||||
<t t-esc="message"/>
|
||||
</p>
|
||||
<a href="/web/login" class="btn btn-link pull-right">Back to Login</a>
|
||||
<a href="/web/login" class="btn btn-link pull-right" role="button">Back to Login</a>
|
||||
</div>
|
||||
|
||||
<form class="oe_reset_password_form" role="form" method="post" t-if="not message">
|
||||
@@ -83,14 +83,14 @@
|
||||
</div>
|
||||
</t>
|
||||
|
||||
<p class="alert alert-danger" t-if="error">
|
||||
<p class="alert alert-danger" t-if="error" role="alert">
|
||||
<t t-esc="error"/>
|
||||
</p>
|
||||
<input type="hidden" name="redirect" t-att-value="redirect"/>
|
||||
<input type="hidden" name="token" t-att-value="token"/>
|
||||
<div class="clearfix oe_login_buttons">
|
||||
<a t-if="not token" t-attf-href="/web/login?{{ keep_query() }}" class="btn btn-link pull-right">Back to Login</a>
|
||||
<a t-if="invalid_token" href="/web/login" class="btn btn-link pull-right">Back to Login</a>
|
||||
<a t-if="not token" t-attf-href="/web/login?{{ keep_query() }}" class="btn btn-link pull-right" role="button">Back to Login</a>
|
||||
<a t-if="invalid_token" href="/web/login" class="btn btn-link pull-right" role="button">Back to Login</a>
|
||||
<button type="submit" class="btn btn-primary pull-left">Confirm</button>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -18,8 +18,8 @@
|
||||
</xpath>
|
||||
|
||||
<xpath expr="//sheet/div[@name='button_box']" position="after">
|
||||
<div class="alert alert-success text-center o_form_header" attrs="{'invisible': [('signup_valid', '!=', True)]}">
|
||||
<a class="close" data-dismiss="alert" href="#" aria-hidden="true">x</a>
|
||||
<div class="alert alert-success text-center o_form_header" attrs="{'invisible': [('signup_valid', '!=', True)]}" role="status">
|
||||
<a class="close" data-dismiss="alert" href="#" aria-label="Close">x</a>
|
||||
<div attrs="{'invisible': [('state', '!=', 'active')]}">
|
||||
<strong>A password reset has been requested for this user. An email containing the following link has been sent:</strong>
|
||||
</div>
|
||||
|
||||
@@ -349,7 +349,7 @@ FormController.include({
|
||||
}
|
||||
// only catch the event if we're not focused in
|
||||
// another field and it's a number
|
||||
if (!$(event.target).is('body, .modal') || !/[0-9]/.test(character)) {
|
||||
if (!$(event.target).is('body, [role="dialog"]') || !/[0-9]/.test(character)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -468,12 +468,12 @@ QUnit.test('specification of widget barcode_handler with keypress and notifyChan
|
||||
setTimeout(function () {
|
||||
var keycode = $.ui.keyCode.ENTER;
|
||||
|
||||
assert.strictEqual($('.modal .modal-body').length, 1, 'should open a modal with a quantity as input');
|
||||
assert.strictEqual($('.modal .modal-body .o_set_qty_input').val(), '5', 'the quantity by default in the modal shoud be 5');
|
||||
assert.strictEqual($('main.modal-body').length, 1, 'should open a modal with a quantity as input');
|
||||
assert.strictEqual($('main.modal-body .o_set_qty_input').val(), '5', 'the quantity by default in the modal shoud be 5');
|
||||
|
||||
$('.modal .modal-body .o_set_qty_input').val('7');
|
||||
$('main.modal-body .o_set_qty_input').val('7');
|
||||
|
||||
$('.modal .modal-body .o_set_qty_input').trigger($.Event('keypress', {which: keycode, keyCode: keycode}));
|
||||
$('main.modal-body .o_set_qty_input').trigger($.Event('keypress', {which: keycode, keyCode: keycode}));
|
||||
assert.strictEqual(form.$('.o_data_row .o_data_cell:nth(1)').text(), '7',
|
||||
"quantity checked should be 7");
|
||||
|
||||
@@ -533,7 +533,7 @@ QUnit.test('barcode_scanned only trigger error for active view', function (asser
|
||||
} else {
|
||||
keycode = char.charCodeAt(0);
|
||||
}
|
||||
return $('.modal').trigger($.Event('keypress', {which: keycode, keyCode: keycode}));
|
||||
return $('[role="dialog"]').trigger($.Event('keypress', {which: keycode, keyCode: keycode}));
|
||||
}
|
||||
_.each(['O','-','B','T','N','.','c','a','n','c','e','l','Enter'], modalTriggerKeypressEvent);
|
||||
assert.verifySteps(['warning'], "only one event should be triggered");
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
<xpath expr="//form/sheet" position="inside">
|
||||
<group string="Gengo Translation Service" col="4" colspan="4">
|
||||
<field name="gengo_translation" />
|
||||
<label string="Note: If the translation state is 'In Progress', it means that the translation has to be approved to be uploaded in this system. You are supposed to do that directly by using your Gengo Account"/>
|
||||
<span class="o_form_label">Note: If the translation state is 'In Progress', it means that the translation has to be approved to be uploaded in this system. You are supposed to do that directly by using your Gengo Account</span>
|
||||
<field name="gengo_comment" nolabel="1" placeholder="Gengo Comments & Activity..." colspan="4"/>
|
||||
</group>
|
||||
</xpath>
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
<field name="model">base.gengo.translations</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Gengo Request Form">
|
||||
<div class="alert alert-warning text-center" attrs="{'invisible': [('authorized_credentials', '=', True)]}">
|
||||
<label string="Gengo Public or Private keys are wrong or missing."/>
|
||||
<div class="alert alert-warning text-center" attrs="{'invisible': [('authorized_credentials', '=', True)]}" role="alert">
|
||||
<span class="o_form_label">Gengo Public or Private keys are wrong or missing.</span>
|
||||
<button type="object" name="open_company" string="Click here to Configure Gengo Parameters" icon="fa-cogs" class="oe_inline oe_link"/>
|
||||
<field name="authorized_credentials" invisible="1"/>
|
||||
</div>
|
||||
|
||||
@@ -14,11 +14,11 @@
|
||||
<div class="input-group">
|
||||
<input type="text" class="oe_import_file_show form-control" placeholder="No file chosen..."/>
|
||||
<span class="input-group-btn">
|
||||
<label class="btn btn-primary" for="my-file-selector">
|
||||
<button class="btn btn-primary">
|
||||
<input accept=".csv, .xls, .xlsx, .xlsm, .ods" id-attf-id="file_#{_id}"
|
||||
name="file" id="my-file-selector" class="oe_import_file" type="file" style="display:none;"/>
|
||||
Load File
|
||||
</label>
|
||||
</button>
|
||||
</span>
|
||||
<span class="input-group-btn">
|
||||
<button type="button" class="btn btn-default oe_import_file_reload" disabled="disabled">Reload File</button>
|
||||
@@ -26,7 +26,7 @@
|
||||
</div>
|
||||
<div class="template-import mt24 hidden">
|
||||
<h5>
|
||||
<a href="#" class="import-link fa fa-download"></a>
|
||||
<a href="#" class="import-link fa fa-download" aria-label="Download" title="Download"></a>
|
||||
</h5>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
</h1>
|
||||
<p>
|
||||
And this static image too !
|
||||
<img src="/test_module/static/src/img/c64.png"/>
|
||||
<img src="/test_module/static/src/img/c64.png" alt='Logo'/>
|
||||
</p>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
<field name="state" invisible="1"/>
|
||||
<separator string="Import Module" colspan="4"/>
|
||||
<group states="init" col="4">
|
||||
<label string="Select module package to import (.zip file):" colspan="4"/>
|
||||
<label for="module_file" string="Select module package to import (.zip file):" colspan="4"/>
|
||||
<field name="module_file" colspan="4"/>
|
||||
|
||||
<field name="force"/>
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
<div class="row mt16 o_settings_container">
|
||||
<div class="col-xs-12 col-md-6 o_setting_box">
|
||||
<div class="o_setting_right_pane">
|
||||
<label string="Format"/>
|
||||
<span class="fa fa-lg fa-building-o" title="Values set here are company-specific." groups="base.group_multi_company"/>
|
||||
<span class="o_form_label">Format</span>
|
||||
<span class="fa fa-lg fa-building-o" title="Values set here are company-specific." aria-label="Values set here are company-specific." groups="base.group_multi_company" role="img"/>
|
||||
<div class="text-muted">
|
||||
Set the paper format of printed documents
|
||||
</div>
|
||||
@@ -28,8 +28,8 @@
|
||||
</div>
|
||||
<div class="col-xs-12 col-md-6 o_setting_box">
|
||||
<div class="o_setting_right_pane">
|
||||
<label string="Document Template"/>
|
||||
<span class="fa fa-lg fa-building-o" title="Values set here are company-specific." groups="base.group_multi_company"/>
|
||||
<span class="o_form_label">Document Template</span>
|
||||
<span class="fa fa-lg fa-building-o" title="Values set here are company-specific." aria-label="Values set here are company-specific." groups="base.group_multi_company" role="img"/>
|
||||
<div class="text-muted">
|
||||
Choose your document's header and footer layout
|
||||
</div>
|
||||
@@ -120,8 +120,7 @@
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label string="Inter Company Flows" for="module_inter_company_rules"/>
|
||||
<span class="fa fa-lg fa-building-o"/>
|
||||
<div class="text-muted">
|
||||
<div class="fa fa-lg fa-building-o text-muted">
|
||||
the creation of documents between your companies
|
||||
</div>
|
||||
<div class="content-group" attrs="{'invisible': [('module_inter_company_rules','=',False)]}" id="inter_companies_rules">
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="vat_check_vies"/>
|
||||
<span class="fa fa-lg fa-building-o" title="Values set here are company-specific." groups="base.group_multi_company"/>
|
||||
<span class="fa fa-lg fa-building-o" title="Values set here are company-specific." aria-label="Values set here are company-specific." groups="base.group_multi_company" role="img"/>
|
||||
<div class="text-muted">
|
||||
Verify VAT numbers using the European VIES service
|
||||
</div>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<t t-name="DashBoard">
|
||||
<div class="oe_dashboard_links">
|
||||
<button type="button" class="button oe_dashboard_link_change_layout" title="Change Layout..">
|
||||
<img src="/board/static/src/img/layout_1-1-1.png" width="16" height="16"/>
|
||||
<img src="/board/static/src/img/layout_1-1-1.png" width="16" height="16" alt=""/>
|
||||
<span> Change Layout </span>
|
||||
</button>
|
||||
</div>
|
||||
@@ -37,8 +37,8 @@
|
||||
</p>
|
||||
<ul>
|
||||
<li t-foreach="'1 1-1 1-1-1 1-2 2-1'.split(' ')" t-as="layout" t-att-data-layout="layout">
|
||||
<img t-attf-src="/board/static/src/img/layout_#{layout}.png"/>
|
||||
<i t-if="layout == currentLayout" class="oe_dashboard_selected_layout fa fa-check fa-lg text-success"/>
|
||||
<img t-attf-src="/board/static/src/img/layout_#{layout}.png" alt=""/>
|
||||
<i t-if="layout == currentLayout" class="oe_dashboard_selected_layout fa fa-check fa-lg text-success" aria-label='Layout' role="img" title="Layout"/>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -161,17 +161,17 @@ QUnit.test('basic functionality, with one sub action', function (assert) {
|
||||
assert.ok(form.$('.oe_content').is(':visible'), "content is visible again");
|
||||
assert.verifySteps(['load action', 'edit custom', 'edit custom']);
|
||||
|
||||
assert.strictEqual($('.modal').length, 0, "should have no modal open");
|
||||
assert.strictEqual($('[role="dialog"]').length, 0, "should have no modal open");
|
||||
|
||||
form.$('button.oe_dashboard_link_change_layout').click();
|
||||
|
||||
assert.strictEqual($('.modal').length, 1, "should have opened a modal");
|
||||
assert.strictEqual($('.modal li[data-layout="2-1"] i.oe_dashboard_selected_layout').length, 1,
|
||||
assert.strictEqual($('[role="dialog"]').length, 1, "should have opened a modal");
|
||||
assert.strictEqual($('[role="dialog"] li[data-layout="2-1"] i.oe_dashboard_selected_layout').length, 1,
|
||||
"should mark currently selected layout");
|
||||
|
||||
$('.modal .oe_dashboard_layout_selector li[data-layout="1-1"]').click();
|
||||
$('[role="dialog"] .oe_dashboard_layout_selector li[data-layout="1-1"]').click();
|
||||
|
||||
assert.strictEqual($('.modal').length, 0, "should have no modal open");
|
||||
assert.strictEqual($('[role="dialog"]').length, 0, "should have no modal open");
|
||||
assert.strictEqual(form.$('table.oe_dashboard[data-layout="1-1"]').length, 1,
|
||||
"should have rendered a table with correct layout");
|
||||
|
||||
@@ -179,12 +179,12 @@ QUnit.test('basic functionality, with one sub action', function (assert) {
|
||||
assert.strictEqual(form.$('.oe_action').length, 1, "should have one displayed action");
|
||||
form.$('span.oe_close').click();
|
||||
|
||||
assert.strictEqual($('.modal').length, 1, "should have opened a modal");
|
||||
assert.strictEqual($('[role="dialog"]').length, 1, "should have opened a modal");
|
||||
|
||||
// confirm the close operation
|
||||
$('.modal button.btn-primary').click();
|
||||
$('[role="dialog"] button.btn-primary').click();
|
||||
|
||||
assert.strictEqual($('.modal').length, 0, "should have no modal open");
|
||||
assert.strictEqual($('[role="dialog"]').length, 0, "should have no modal open");
|
||||
assert.strictEqual(form.$('.oe_action').length, 0, "should have no displayed action");
|
||||
|
||||
assert.verifySteps(['load action', 'edit custom', 'edit custom', 'edit custom', 'edit custom']);
|
||||
|
||||
@@ -63,15 +63,15 @@ QUnit.module('calendar', {
|
||||
});
|
||||
|
||||
assert.ok(form.$('.o_field_widget[name="partner_ids"]').hasClass('o_field_many2manytags'));
|
||||
assert.strictEqual(form.$('.o_field_widget[name="partner_ids"] > span').length, 2,
|
||||
assert.strictEqual(form.$('.o_field_widget[name="partner_ids"] > button').length, 2,
|
||||
"there should be 2 tags");
|
||||
assert.strictEqual(form.$('.o_field_widget[name="partner_ids"] > span:first').text().trim(), "Jesus",
|
||||
assert.strictEqual(form.$('.o_field_widget[name="partner_ids"] > button:first').text().trim(), "Jesus",
|
||||
"the tag should be correctly named");
|
||||
assert.ok(form.$('.o_field_widget[name="partner_ids"] > span:first .o_calendar_invitation').hasClass('accepted'),
|
||||
assert.ok(form.$('.o_field_widget[name="partner_ids"] > button:first .o_calendar_invitation').hasClass('accepted'),
|
||||
"Jesus should attend the meeting");
|
||||
assert.strictEqual(form.$('.o_field_widget[name="partner_ids"] > span[data-id="2"]').text().trim(), "Mahomet",
|
||||
assert.strictEqual(form.$('.o_field_widget[name="partner_ids"] > button[data-id="2"]').text().trim(), "Mahomet",
|
||||
"the tag should be correctly named");
|
||||
assert.ok(form.$('.o_field_widget[name="partner_ids"] > span[data-id="2"] .o_calendar_invitation').hasClass('needsAction'),
|
||||
assert.ok(form.$('.o_field_widget[name="partner_ids"] > button[data-id="2"] .o_calendar_invitation').hasClass('needsAction'),
|
||||
"Mohamet should still confirm his attendance to the meeting");
|
||||
|
||||
form.destroy();
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
|
||||
<div class="container">
|
||||
<div class="o_logo">
|
||||
<img class="img img-responsive center-block" src="/web/binary/company_logo"/>
|
||||
<img class="img img-responsive center-block" src="/web/binary/company_logo" alt="Logo"/>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default">
|
||||
|
||||
@@ -112,7 +112,7 @@
|
||||
<notebook>
|
||||
<page name="page_details" string="Meeting Details">
|
||||
<group attrs="{'invisible': [('recurrency','==',False)]}" class="oe_edit_only ">
|
||||
<p class='alert alert-warning'> This event is linked to a recurrence...<br/>
|
||||
<p class='alert alert-warning' role="status"> This event is linked to a recurrence...<br/>
|
||||
<button type="object" name="action_detach_recurring_event" string="Update only this instance" help="Click here to update only this instance and not all recurrences. " class="oe_link"/>
|
||||
</p>
|
||||
</group>
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="padding:2px;width:30%;">
|
||||
<img src="web/static/src/img/logo.png"/>
|
||||
<img src="web/static/src/img/logo.png" alt="Logo"/>
|
||||
</td>
|
||||
<td style="vertical-align: top; padding: 8px 10px;text-align: left;font-size: 14px;">
|
||||
<a href="web/login" style="float:right ;margin:15px auto;background: #875A7B;border-radius: 5px;color: #ffffff;font-size: 16px;padding: 10px 20px 10px 20px;text-decoration: none;">Auto Login</a>
|
||||
|
||||
@@ -41,12 +41,12 @@ tour.register('crm_tour', {
|
||||
content: _t("Let's schedule an activity."),
|
||||
position: "bottom"
|
||||
}, {
|
||||
trigger: ".modal-body .o_field_many2one",
|
||||
trigger: 'main.modal-body .o_field_many2one',
|
||||
extra_trigger: ".o_opportunity_kanban",
|
||||
content: _t("<p>You will be able to customize your followup activities. Examples:</p><ol><li>introductory email</li><li>call 10 days after</li><li>second call 3 days after, ...</li></ol><p class='mb0'><i>Select a standard activity for now.</i></p>"),
|
||||
position: "bottom",
|
||||
run: function (actions) {
|
||||
actions.auto(".modal-footer button[special=cancel]");
|
||||
actions.auto('footer.modal-footer button[special=cancel]');
|
||||
},
|
||||
}, {
|
||||
trigger: ".o_kanban_record",
|
||||
|
||||
@@ -189,14 +189,14 @@
|
||||
<div class="oe_kanban_bottom_left">
|
||||
<field name="priority" widget="priority"/>
|
||||
<t t-if="record.message_needaction_counter.raw_value">
|
||||
<span class="oe_kanban_mail_new" title="Unread Messages"><i class="fa fa-comments"/><t t-raw="record.message_needaction_counter.raw_value"/></span>
|
||||
<span role="alert" class="oe_kanban_mail_new" title="Unread Messages"><i class="fa fa-comments" aria-label="Messages" role="img"/><t t-raw="record.message_needaction_counter.raw_value"/></span>
|
||||
</t>
|
||||
<div class="o_kanban_inline_block">
|
||||
<field name="activity_ids" widget="kanban_activity"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="oe_kanban_bottom_right">
|
||||
<img t-att-src="kanban_image('res.users', 'image_small', record.user_id.raw_value)" t-att-title="record.user_id.value" width="24" height="24" class="oe_kanban_avatar pull-right"/>
|
||||
<img t-att-src="kanban_image('res.users', 'image_small', record.user_id.raw_value)" t-att-title="record.user_id.value" t-att-alt="record.user_id.value" width="24" height="24" class="oe_kanban_avatar pull-right"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -324,15 +324,15 @@
|
||||
<div t-attf-class="#{kanban_color(record.color.raw_value)} oe_kanban_global_click">
|
||||
<div class="o_dropdown_kanban dropdown">
|
||||
|
||||
<a class="dropdown-toggle btn" data-toggle="dropdown" href="#" >
|
||||
<a class="dropdown-toggle btn" role="button" data-toggle="dropdown" href="#" aria-label="Dropdown menu" title="Dropdown menu">
|
||||
<span class="fa fa-ellipsis-v"/>
|
||||
</a>
|
||||
<ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
|
||||
<t t-if="widget.editable"><li><a type="edit">Edit</a></li></t>
|
||||
<t t-if="widget.deletable"><li><a type="delete">Delete</a></li></t>
|
||||
<li t-if="! record.active.value"><a name="action_set_active" type="object">Restore</a></li>
|
||||
<li t-if="record.active.value"><a name="action_set_unactive" type="object">Archive</a></li>
|
||||
<li><ul class="oe_kanban_colorpicker" data-field="color"/></li>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<t t-if="widget.editable"><li><a role="menuitem" type="edit">Edit</a></li></t>
|
||||
<t t-if="widget.deletable"><li><a role="menuitem" type="delete">Delete</a></li></t>
|
||||
<li t-if="! record.active.value"><a role="menuitem" name="action_set_active" type="object">Restore</a></li>
|
||||
<li t-if="record.active.value"><a role="menuitem" name="action_set_unactive" type="object">Archive</a></li>
|
||||
<li role="menuitem" aria-haspopup="true"><ul class="oe_kanban_colorpicker" data-field="color" role="menu"/></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="oe_kanban_content">
|
||||
@@ -350,12 +350,12 @@
|
||||
<div class="oe_kanban_bottom_left">
|
||||
<field name="priority" widget="priority" groups="base.group_user"/>
|
||||
<t t-if="record.message_needaction_counter.raw_value">
|
||||
<span class='oe_kanban_mail_new' title='Unread Messages'><i class='fa fa-comments'/><t t-raw="record.message_needaction_counter.raw_value"/></span>
|
||||
<span role="alert" class='oe_kanban_mail_new' title='Unread Messages'><i class='fa fa-comments' aria-label="Unread messages" role="img"/><t t-raw="record.message_needaction_counter.raw_value"/></span>
|
||||
</t>
|
||||
<field name="activity_ids" widget="kanban_activity"/>
|
||||
</div>
|
||||
<div class="oe_kanban_bottom_right">
|
||||
<img t-att-src="kanban_image('res.users', 'image_small', record.user_id.raw_value)" t-att-title="record.user_id.value" width="24" height="24" class="oe_kanban_avatar"/>
|
||||
<img t-att-src="kanban_image('res.users', 'image_small', record.user_id.raw_value)" t-att-title="record.user_id.value" t-att-alt="record.user_id.value" width="24" height="24" class="oe_kanban_avatar"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -188,7 +188,7 @@
|
||||
|
||||
<xpath expr="//div[hasclass('o_primary')]" position="after">
|
||||
<div t-if="record.use_leads.raw_value and record.alias_name.value and record.alias_domain.value">
|
||||
<small t-translation="off"><i class="fa fa-envelope-o"></i>&nbsp; <field name="alias_id"/></small>
|
||||
<small t-translation="off"><i class="fa fa-envelope-o" aria-label="Leads" title="Leads" role="img"></i>&nbsp; <field name="alias_id"/></small>
|
||||
</div>
|
||||
</xpath>
|
||||
|
||||
|
||||
@@ -31,17 +31,17 @@
|
||||
<field name="generate_lead_from_alias"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label string="Manual Assignation of Incoming Emails"/>
|
||||
<label for="generate_lead_from_alias" string="Manual Assignation of Incoming Emails"/>
|
||||
<div class="text-muted">
|
||||
Generate leads from incoming emails and assign them
|
||||
to a sales channel manually
|
||||
</div>
|
||||
<div class="content-group" attrs="{'invisible': [('generate_lead_from_alias','=',False)]}">
|
||||
<div class="mt16">
|
||||
<label string="Alias" class="o_light_label"/>
|
||||
<label for="crm_alias_prefix" string="Alias" class="o_light_label"/>
|
||||
<field name="crm_alias_prefix" class="oe_inline"
|
||||
attrs="{'required': [('generate_lead_from_alias', '=', True)]}"/>
|
||||
<span>@</span>
|
||||
<label for="alias_domain" string="@"/>
|
||||
<field name="alias_domain" readonly="1" class="oe_inline"/>
|
||||
</div>
|
||||
<div attrs="{'invisible': [('alias_domain', 'not in', ['localhost', '', False])]}">
|
||||
|
||||
@@ -70,8 +70,8 @@
|
||||
<field name="meeting_count"/>
|
||||
</field>
|
||||
<xpath expr="//div[hasclass('oe_kanban_partner_links')]" position="inside">
|
||||
<span class="badge" t-if="record.opportunity_count.value>0"><i class="fa fa-fw fa-star"/><t t-esc="record.opportunity_count.value"/></span>
|
||||
<span class="badge" t-if="record.meeting_count.value>0"><i class="fa fa-fw fa-calendar"/><t t-esc="record.meeting_count.value"/></span>
|
||||
<span class="badge" t-if="record.opportunity_count.value>0"><i class="fa fa-fw fa-star" aria-label="Favorites" role="img" title="Favorites"/><t t-esc="record.opportunity_count.value"/></span>
|
||||
<span class="badge" t-if="record.meeting_count.value>0"><i class="fa fa-fw fa-calendar" aria-label="Meetings" role="img" title="Meetings"/><t t-esc="record.meeting_count.value"/></span>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@@ -275,7 +275,7 @@
|
||||
<label for="carrier_id"/>
|
||||
<div name='carrier_selection'>
|
||||
<div>
|
||||
<field name="carrier_id" domain="[('id', 'in', available_carrier_ids)]" context="{'order_id': id}" class="oe_inline" options="{'no_create': True, 'no_open': True}" attrs="{'readonly':[('state','not in',('draft','sent'))]}"/> <i class="fa fa-check text-success" aria-hidden="true" attrs="{'invisible':['|','|',('carrier_id','=',False),('state','not in',('draft','sent')),('delivery_rating_success','=',False)]}"></i>
|
||||
<field name="carrier_id" domain="[('id', 'in', available_carrier_ids)]" context="{'order_id': id}" class="oe_inline" options="{'no_create': True, 'no_open': True}" attrs="{'readonly':[('state','not in',('draft','sent'))]}"/> <i class="fa fa-check text-success" role="img" aria-label="Rating OK" title="Rating OK" attrs="{'invisible':['|','|',('carrier_id','=',False),('state','not in',('draft','sent')),('delivery_rating_success','=',False)]}"></i>
|
||||
</div>
|
||||
<div>
|
||||
<field name='delivery_price' widget='monetary' class="oe_inline" options="{'currency_field': 'currency_id'}" nolabel="1" attrs="{'invisible': [('carrier_id','=', False)]}" force_save="1"/>
|
||||
@@ -283,7 +283,7 @@
|
||||
<button name="set_delivery_line" string="Set price" type="object" class="oe_inline fa fa-arrow-right oe_link" attrs="{'invisible':['|','|',('carrier_id','=',False),('state','not in',('draft','sent')),('delivery_rating_success','=',False)]}"/>
|
||||
<field name='delivery_rating_success' invisible="1" force_save="1"/>
|
||||
</div>
|
||||
<div class="alert alert-info" role="alert" attrs="{'invisible': ['|',('carrier_id','=', False),('delivery_message','=',False)]}">
|
||||
<div class="alert alert-info" role="status" attrs="{'invisible': ['|',('carrier_id','=', False),('delivery_message','=',False)]}">
|
||||
<field name='delivery_message' force_save="1"/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -301,7 +301,7 @@
|
||||
<field name="arch" type="xml">
|
||||
<form string="Trackers URL">
|
||||
<group>
|
||||
<div class="alert alert-info">
|
||||
<div class="alert alert-info" role="status">
|
||||
<p>You have multiple URL, they should be available in the chatter.</p>
|
||||
</div>
|
||||
</group>
|
||||
|
||||
@@ -70,7 +70,7 @@ odoo.define('document.tests', function (require) {
|
||||
|
||||
assert.strictEqual(form.sidebar.$('.o_sidebar_delete_attachment').length, 2, "there should be two attachments");
|
||||
form.sidebar.$('.o_sidebar_delete_attachment:eq(0)').click();
|
||||
$('.modal-footer .btn-primary').click();
|
||||
$('footer.modal-footer .btn-primary').click();
|
||||
assert.strictEqual(form.sidebar.$('.o_sidebar_delete_attachment').length, 1, "there should be only one attachment");
|
||||
form.destroy();
|
||||
});
|
||||
|
||||
@@ -104,7 +104,7 @@
|
||||
<table style="width:100%;">
|
||||
<tr>
|
||||
<td style="vertical-align:top;">
|
||||
<img src="/web_editor/font_to_img/61555/rgb(81,81,102)/34" style="padding:4px;max-width:inherit;" height="34"/>
|
||||
<img src="/web_editor/font_to_img/61555/rgb(81,81,102)/34" style="padding:4px;max-width:inherit;" height="34" alt=""/>
|
||||
</td>
|
||||
<td style="padding: 0px 10px 0px 10px;width:50%;line-height:20px;vertical-align:top;">
|
||||
<div><strong>From</strong> ${object.event_id.date_begin_located}</div>
|
||||
@@ -113,7 +113,7 @@
|
||||
</td>
|
||||
% if object.event_id.address_id.country_id.name:
|
||||
<td style="vertical-align:top;">
|
||||
<img src="/web_editor/font_to_img/61505/rgb(81,81,102)/34" style="padding:4px;max-width:inherit;" height="34"/>
|
||||
<img src="/web_editor/font_to_img/61505/rgb(81,81,102)/34" style="padding:4px;max-width:inherit;" height="34" alt=""/>
|
||||
</td>
|
||||
<td style="padding: 0px 10px 0px 10px;width:50%;vertical-align:top;">
|
||||
% set location = ''
|
||||
@@ -176,10 +176,10 @@
|
||||
<tr>
|
||||
<td style="padding:25px 0px;">
|
||||
<strong>Add this event to your calendar</strong>
|
||||
<a href="https://www.google.com/calendar/render?action=TEMPLATE&text=${object.event_id.name}&dates=${date_begin}/${date_end}&location=${location}" style="padding:3px 5px;border:1px solid #875A7B;color:#875A7B;text-decoration:none;border-radius:3px;" target="new"><img src="/web_editor/font_to_img/61525/rgb(135,90,123)/16" style="vertical-align:middle;" height="16"/> Google</a>
|
||||
<a href="https://bay02.calendar.live.com/calendar/calendar.aspx?rru=addevent&summary=${object.event_id.name}&dtstart=${date_begin}&dtend=${date_end}&location=${location}" style="padding:3px 5px;border:1px solid #875A7B;color:#875A7B;text-decoration:none;border-radius:3px;" target="new"><img src="/web_editor/font_to_img/61525/rgb(135,90,123)/16" style="vertical-align:middle;" height="16"/> Outlook</a>
|
||||
<a href="https://www.google.com/calendar/render?action=TEMPLATE&text=${object.event_id.name}&dates=${date_begin}/${date_end}&location=${location}" style="padding:3px 5px;border:1px solid #875A7B;color:#875A7B;text-decoration:none;border-radius:3px;" target="new"><img src="/web_editor/font_to_img/61525/rgb(135,90,123)/16" style="vertical-align:middle;" height="16" alt=""/> Google</a>
|
||||
<a href="https://bay02.calendar.live.com/calendar/calendar.aspx?rru=addevent&summary=${object.event_id.name}&dtstart=${date_begin}&dtend=${date_end}&location=${location}" style="padding:3px 5px;border:1px solid #875A7B;color:#875A7B;text-decoration:none;border-radius:3px;" target="new"><img src="/web_editor/font_to_img/61525/rgb(135,90,123)/16" style="vertical-align:middle;" height="16" alt=""/> Outlook</a>
|
||||
<a href="https://calendar.yahoo.com/?v=60&view=d&type=20&title=${object.event_id.name}&in_loc=${location}&st=${format_tz(object.event_id.date_begin, tz='UTC', format='%Y%m%dT%H%M%S')}&et=${format_tz(object.event_id.date_end, tz='UTC', format='%Y%m%dT%H%M%S')}" style="padding:3px 5px;border:1px solid #875A7B;color:#875A7B;text-decoration:none;border-radius:3px;" target="new">
|
||||
<img src="/web_editor/font_to_img/61525/rgb(135,90,123)/16" style="vertical-align:middle;" height="16"/> Yahoo</a>
|
||||
<img src="/web_editor/font_to_img/61525/rgb(135,90,123)/16" style="vertical-align:middle;" height="16" alt=""/> Yahoo</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@@ -192,7 +192,7 @@
|
||||
<table style="width:100%;"><tr><td>
|
||||
<div>
|
||||
<a href="https://maps.google.com/maps?q=${location}" target="new">
|
||||
<img src="http://maps.googleapis.com/maps/api/staticmap?autoscale=1&size=598x200&maptype=roadmap&format=png&visual_refresh=true&markers=size:mid%7Ccolor:0xa5117d%7Clabel:%7C${location}" style="vertical-align:bottom; width: 100%;"/>
|
||||
<img src="http://maps.googleapis.com/maps/api/staticmap?autoscale=1&size=598x200&maptype=roadmap&format=png&visual_refresh=true&markers=size:mid%7Ccolor:0xa5117d%7Clabel:%7C${location}" style="vertical-align:bottom; width: 100%;" alt="Google Maps"/>
|
||||
</a>
|
||||
</div>
|
||||
</td></tr></table>
|
||||
@@ -299,7 +299,7 @@
|
||||
<table style="width:100%;">
|
||||
<tr>
|
||||
<td style="vertical-align:top;">
|
||||
<img src="/web_editor/font_to_img/61555/rgb(81,81,102)/34" style="padding:4px;max-width:inherit;" height="34"/>
|
||||
<img src="/web_editor/font_to_img/61555/rgb(81,81,102)/34" style="padding:4px;max-width:inherit;" height="34" alt=""/>
|
||||
</td>
|
||||
<td style="padding: 0px 10px 0px 10px;width:50%;line-height:20px;vertical-align:top;">
|
||||
<div><strong>From</strong> ${object.event_id.date_begin_located}</div>
|
||||
@@ -308,7 +308,7 @@
|
||||
</td>
|
||||
% if object.event_id.address_id.country_id.name:
|
||||
<td style="vertical-align:top;">
|
||||
<img src="/web_editor/font_to_img/61505/rgb(81,81,102)/34" style="padding:4px;max-width:inherit;" height="34"/>
|
||||
<img src="/web_editor/font_to_img/61505/rgb(81,81,102)/34" style="padding:4px;max-width:inherit;" height="34" alt=""/>
|
||||
</td>
|
||||
<td style="padding: 0px 10px 0px 10px;width:50%;vertical-align:top;">
|
||||
% set location = ''
|
||||
@@ -371,10 +371,10 @@
|
||||
<tr>
|
||||
<td style="padding:25px 0px;">
|
||||
<strong>Add this event to your calendar</strong>
|
||||
<a href="https://www.google.com/calendar/render?action=TEMPLATE&text=${object.event_id.name}&dates=${date_begin}/${date_end}&location=${location}" style="padding:3px 5px;border:1px solid #875A7B;color:#875A7B;text-decoration:none;border-radius:3px;" target="new"><img src="/web_editor/font_to_img/61525/rgb(135,90,123)/16" style="vertical-align:middle;" height="16"/> Google</a>
|
||||
<a href="https://bay02.calendar.live.com/calendar/calendar.aspx?rru=addevent&summary=${object.event_id.name}&dtstart=${date_begin}&dtend=${date_end}&location=${location}" style="padding:3px 5px;border:1px solid #875A7B;color:#875A7B;text-decoration:none;border-radius:3px;" target="new"><img src="/web_editor/font_to_img/61525/rgb(135,90,123)/16" style="vertical-align:middle;" height="16"/> Outlook</a>
|
||||
<a href="https://www.google.com/calendar/render?action=TEMPLATE&text=${object.event_id.name}&dates=${date_begin}/${date_end}&location=${location}" style="padding:3px 5px;border:1px solid #875A7B;color:#875A7B;text-decoration:none;border-radius:3px;" target="new"><img src="/web_editor/font_to_img/61525/rgb(135,90,123)/16" style="vertical-align:middle;" height="16" alt=""/> Google</a>
|
||||
<a href="https://bay02.calendar.live.com/calendar/calendar.aspx?rru=addevent&summary=${object.event_id.name}&dtstart=${date_begin}&dtend=${date_end}&location=${location}" style="padding:3px 5px;border:1px solid #875A7B;color:#875A7B;text-decoration:none;border-radius:3px;" target="new"><img src="/web_editor/font_to_img/61525/rgb(135,90,123)/16" style="vertical-align:middle;" height="16" alt=""/> Outlook</a>
|
||||
<a href="https://calendar.yahoo.com/?v=60&view=d&type=20&title=${object.event_id.name}&in_loc=${location}&st=${format_tz(object.event_id.date_begin, tz='UTC', format='%Y%m%dT%H%M%S')}&et=${format_tz(object.event_id.date_end, tz='UTC', format='%Y%m%dT%H%M%S')}" style="padding:3px 5px;border:1px solid #875A7B;color:#875A7B;text-decoration:none;border-radius:3px;" target="new">
|
||||
<img src="/web_editor/font_to_img/61525/rgb(135,90,123)/16" style="vertical-align:middle;" height="16"/> Yahoo</a>
|
||||
<img src="/web_editor/font_to_img/61525/rgb(135,90,123)/16" style="vertical-align:middle;" height="16" alt=""/> Yahoo</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@@ -387,7 +387,7 @@
|
||||
<table style="width:100%;"><tr><td>
|
||||
<div>
|
||||
<a href="https://maps.google.com/maps?q=${location}" target="new">
|
||||
<img src="http://maps.googleapis.com/maps/api/staticmap?autoscale=1&size=598x200&maptype=roadmap&format=png&visual_refresh=true&markers=size:mid%7Ccolor:0xa5117d%7Clabel:%7C${location}" style="vertical-align:bottom; width: 100%;"/>
|
||||
<img src="http://maps.googleapis.com/maps/api/staticmap?autoscale=1&size=598x200&maptype=roadmap&format=png&visual_refresh=true&markers=size:mid%7Ccolor:0xa5117d%7Clabel:%7C${location}" style="vertical-align:bottom; width: 100%;" alt="Google Maps"/>
|
||||
</a>
|
||||
</div>
|
||||
</td></tr></table>
|
||||
|
||||
@@ -15,10 +15,10 @@
|
||||
<div t-field="o.event_id.event_logo"/>
|
||||
</t>
|
||||
<span t-if="not o.event_id.event_logo and o.event_id.organizer_id.company_id.logo_web and o.event_id.organizer_id.is_company">
|
||||
<img t-att-src="'data:image/png;base64,%s' % to_text(o.event_id.organizer_id.company_id.logo_web)" style="max-height:1cm; max-width:4cm;"/>
|
||||
<img t-att-src="'data:image/png;base64,%s' % to_text(o.event_id.organizer_id.company_id.logo_web)" style="max-height:1cm; max-width:4cm;" alt="Logo"/>
|
||||
</span>
|
||||
<h5 t-field="o.event_id.name"/>
|
||||
<h5>( <i class="fa fa-clock-o"></i> <span itemprop="startDate" t-field="o.event_id.with_context(tz=o.event_id.date_tz).date_begin" t-options='{"hide_seconds": True}'> </span> <i>to</i> <span itemprop="endDate" t-field="o.event_id.with_context(tz=o.event_id.date_tz).date_end" t-options='{"hide_seconds": True}'> </span> )</h5>
|
||||
<h5>( <i class="fa fa-clock-o" aria-label="Period" role="img" title="Period"></i> <span itemprop="startDate" t-field="o.event_id.with_context(tz=o.event_id.date_tz).date_begin" t-options='{"hide_seconds": True}'> </span> <i>to</i> <span itemprop="endDate" t-field="o.event_id.with_context(tz=o.event_id.date_tz).date_end" t-options='{"hide_seconds": True}'> </span> )</h5>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12 text-center" id="o_event_name">
|
||||
@@ -65,11 +65,11 @@
|
||||
<div class="col-xs-12">
|
||||
<span t-if="event.organizer_id.is_company and event.organizer_id.company_id.logo_web">
|
||||
<div t-field="event.event_logo">
|
||||
<img t-att-src="'data:image/png;base64,%s' % to_text(event.organizer_id.company_id.logo_web)" style="max-height:1cm; max-width:4cm;"/>
|
||||
<img t-att-src="'data:image/png;base64,%s' % to_text(event.organizer_id.company_id.logo_web)" style="max-height:1cm; max-width:4cm;" alt="Logo"/>
|
||||
</div>
|
||||
</span>
|
||||
<h4 t-field="event.name"/>
|
||||
<h5>( <i class="fa fa-clock-o"></i> <span itemprop="startDate" t-field="event.date_begin" t-options='{"hide_seconds": True}'> </span> <i>to</i> <span itemprop="endDate" t-field="event.date_end" t-options='{"hide_seconds": True}'> </span> )</h5>
|
||||
<h5>( <i class="fa fa-clock-o" aria-label="Period" role="img" title="Period"></i> <span itemprop="startDate" t-field="event.date_begin" t-options='{"hide_seconds": True}'> </span> <i>to</i> <span itemprop="endDate" t-field="event.date_end" t-options='{"hide_seconds": True}'> </span> )</h5>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row" t-ignore="true">
|
||||
|
||||
@@ -305,14 +305,14 @@
|
||||
<div t-attf-class="oe_kanban_color_#{kanban_getcolor(record.color.raw_value)} oe_kanban_card oe_kanban_global_click">
|
||||
<div class="o_dropdown_kanban dropdown">
|
||||
|
||||
<a class="dropdown-toggle btn" data-toggle="dropdown" href="#" >
|
||||
<a class="dropdown-toggle btn" role="button" data-toggle="dropdown" href="#" aria-label="Dropdown menu" title="Dropdown menu">
|
||||
<span class="fa fa-ellipsis-v"/>
|
||||
</a>
|
||||
<ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<t t-if="widget.deletable">
|
||||
<li><a type="delete">Delete</a></li>
|
||||
<li><a role="menuitem" type="delete">Delete</a></li>
|
||||
</t>
|
||||
<li><ul class="oe_kanban_colorpicker" data-field="color"/></li>
|
||||
<li role="menuitem" aria-haspopup="true"><ul class="oe_kanban_colorpicker" data-field="color" role="menu"/></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="o_event_left">
|
||||
@@ -327,8 +327,7 @@
|
||||
<h4 class="o_kanban_record_title"><field name="name"/></h4>
|
||||
<div>
|
||||
<t t-if="record.country_id.raw_value"> <b class="o_kanban_record_subtitle"> <field name="country_id"/> </b> <br/> </t>
|
||||
<i class="fa fa-clock-o"/>
|
||||
<b>To</b> <t t-esc="moment(record.date_end.raw_value).format('lll')"/>
|
||||
<b class="fa fa-clock-o">To</b> <t t-esc="moment(record.date_end.raw_value).format('lll')"/>
|
||||
</div>
|
||||
<h4>
|
||||
<a name="%(act_event_registration_from_event)d" type="action">
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<field name="model">event.confirm</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Event Confirmation">
|
||||
<label string="Warning: This Event has not reached its Minimum Registration Limit. Are you sure you want to confirm it?"/>
|
||||
<span class="o_form_label">Warning: This Event has not reached its Minimum Registration Limit. Are you sure you want to confirm it?</span>
|
||||
<footer>
|
||||
<button name="confirm" string="Confirm Anyway" type="object" class="btn-primary"/>
|
||||
<button string="Cancel" class="btn-default" special="cancel" />
|
||||
|
||||
@@ -142,7 +142,7 @@
|
||||
<div class="row">
|
||||
<div class="col-xs-5">
|
||||
<p>
|
||||
<i class="fa fa-twitter"/> #OpenDays
|
||||
<i class="fa fa-twitter" role="img" aria-label="Twitter" title="Twitter"/> #OpenDays
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-xs-6">
|
||||
@@ -154,7 +154,7 @@
|
||||
<small class="col-xs-3" style="float: left; padding-right: 0px; padding-left: 0px;">sponsored by</small>
|
||||
<div class="col-xs-2" style="padding-right: 0px; padding-left: 0px;">
|
||||
<span>
|
||||
<img class="img img-responsive" src="/base/static/img/logo_white.png"/>
|
||||
<img class="img img-responsive" src="/base/static/img/logo_white.png alt="Logo"/>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<templates>
|
||||
<t t-name="kanban-box">
|
||||
<div style="position: relative">
|
||||
<a t-if="! read_only_mode" type="delete" style="position: absolute; right: 0; padding: 4px; diplay: inline-block"><i class="fa fa-times text-danger"/></a>
|
||||
<a t-if="! read_only_mode" type="delete" style="position: absolute; right: 0; padding: 4px; diplay: inline-block" aria-label="Delete" title="Delete"><i class="fa fa-times text-danger"/></a>
|
||||
<div class="oe_module_vignette">
|
||||
<div class="oe_module_desc o_kanban_record_title">
|
||||
<field name="name"/>
|
||||
@@ -125,7 +125,7 @@
|
||||
<t t-name="kanban-box">
|
||||
<div class="oe_kanban_vignette oe_semantic_html_override">
|
||||
<a type="open" href="#" class="o_kanban_image oe_kanban_action">
|
||||
<img t-att-src="kanban_image('fleet.vehicle.model.brand', 'image_small', record.id.raw_value)" class="img-responsive" style="width:100px;"/>
|
||||
<img alt="Open" t-att-src="kanban_image('fleet.vehicle.model.brand', 'image_small', record.id.raw_value)" class="img-responsive" style="width:100px;"/>
|
||||
</a>
|
||||
<div class="oe_kanban_details">
|
||||
<h4 class="oe_partner_heading">
|
||||
|
||||
@@ -197,7 +197,7 @@
|
||||
<t t-name="kanban-box">
|
||||
<div class="oe_kanban_global_click">
|
||||
<div class="o_kanban_image">
|
||||
<img t-att-src="kanban_image('fleet.vehicle', 'image_small', record.id.raw_value)"/>
|
||||
<img t-att-src="kanban_image('fleet.vehicle', 'image_small', record.id.raw_value)" alt="Vehicle"/>
|
||||
</div>
|
||||
<div class="oe_kanban_details">
|
||||
<strong class="o_kanban_record_title">
|
||||
@@ -222,10 +222,10 @@
|
||||
<field name="contract_count"/>
|
||||
Contract(s)
|
||||
<span t-if="record.contract_renewal_due_soon.raw_value and !record.contract_renewal_overdue.raw_value"
|
||||
class="fa fa-exclamation-triangle" t-att-style="'color:orange'">
|
||||
class="fa fa-exclamation-triangle" t-att-style="'color:orange'" role="img" aria-label="Warning: renewal due soon" title="Warning: renewal due soon">
|
||||
</span>
|
||||
<span t-if="record.contract_renewal_overdue.raw_value"
|
||||
class="fa fa-exclamation-triangle" t-att-style="'color:red;'">
|
||||
class="fa fa-exclamation-triangle" t-att-style="'color:red;'" role="img" aria-label="Attention: renewal overdue" title="Attention: renewal overdue">
|
||||
</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -111,7 +111,7 @@
|
||||
<t t-name="kanban-box">
|
||||
<div t-attf-class="o_kanban_gamification oe_kanban_global_click #{record.stat_my.raw_value ? 'oe_kanban_color_5' : 'oe_kanban_color_white'}">
|
||||
<div class="o_kanban_image">
|
||||
<img t-att-src="kanban_image('gamification.badge', 'image', record.id.raw_value)" t-att-title="record.name.value"/>
|
||||
<img t-att-src="kanban_image('gamification.badge', 'image', record.id.raw_value)" t-att-title="record.name.value" t-att-alt="record.name.value"/>
|
||||
</div>
|
||||
<div class="oe_kanban_details">
|
||||
<strong class="o_kanban_record_title"><field name="name"/></strong>
|
||||
@@ -132,7 +132,7 @@
|
||||
<em><field name="description"/></em>
|
||||
<div>
|
||||
<t t-foreach="record.unique_owner_ids.raw_value.slice(0,11)" t-as="owner">
|
||||
<img width="24" height="24" class="oe_kanban_avatar" t-att-src="kanban_image('res.users', 'image_small', owner)" t-att-data-member_id="owner"/>
|
||||
<img width="24" height="24" class="oe_kanban_avatar" t-att-src="kanban_image('res.users', 'image_small', owner)" t-att-data-member_id="owner" alt="Owner"/>
|
||||
</t>
|
||||
</div>
|
||||
</div>
|
||||
@@ -165,7 +165,7 @@
|
||||
<div class="oe_kanban_card oe_kanban_global_click oe_kanban_badge oe_kanban_color_white o_kanban_gamification">
|
||||
<div class="o_kanban_content">
|
||||
<div class="o_kanban_image">
|
||||
<a type="open"><img t-att-src="kanban_image('gamification.badge', 'image', record.badge_id.raw_value)" t-att-title="record.badge_name.value" /></a>
|
||||
<a type="open"><img t-att-src="kanban_image('gamification.badge', 'image', record.badge_id.raw_value)" t-att-title="record.badge_name.value" t-att-alt="record.badge_name.value" /></a>
|
||||
</div>
|
||||
<div class="oe_kanban_details">
|
||||
<h4 class="mt0 mb0">
|
||||
|
||||
@@ -158,7 +158,7 @@
|
||||
</div>
|
||||
</strong>
|
||||
<t t-foreach="record.user_ids.raw_value.slice(0,11)" t-as="member">
|
||||
<img class="o_kanban_badge_avatars" t-att-src="kanban_image('res.users', 'image_small', member)" t-att-data-member_id="member"/>
|
||||
<img class="o_kanban_badge_avatars" t-att-src="kanban_image('res.users', 'image_small', member)" t-att-data-member_id="member" alt="Member"/>
|
||||
</t>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -150,15 +150,15 @@
|
||||
<div class="o_kanban_content">
|
||||
<p><strong><h4 class="oe_goal_name text-center" tooltip="kanban-tooltip"><field name="definition_id" /></h4></strong></p>
|
||||
<div class="pull-left">
|
||||
<img t-att-src="kanban_image('res.users', 'image_small', record.user_id.raw_value)" t-att-title="record.user_id.value" width="24" height="24" />
|
||||
<img t-att-src="kanban_image('res.users', 'image_small', record.user_id.raw_value)" t-att-title="record.user_id.value" t-att-alt="record.user_id.value" width="24" height="24" />
|
||||
</div>
|
||||
<field name="user_id" />
|
||||
<div class="o_goal_state_block">
|
||||
<t t-if="record.definition_display.raw_value == 'boolean'">
|
||||
<div class="o_goal_state text-center">
|
||||
<t t-if="record.state.raw_value=='reached'"><i class="o_green fa fa-check fa-3x" title="Goal Reached"/></t>
|
||||
<t t-if="record.state.raw_value=='inprogress'"><i class="fa fa-clock-o fa-3x" title="Goal in Progress"/></t>
|
||||
<t t-if="record.state.raw_value=='failed'"><i class="o_red fa fa-times fa-3x" title="Goal Failed"/></t>
|
||||
<t t-if="record.state.raw_value=='reached'"><i role="img" class="o_green fa fa-check fa-3x" title="Goal Reached" aria-label="Goal Reached"/></t>
|
||||
<t t-if="record.state.raw_value=='inprogress'"><i role="img" class="fa fa-clock-o fa-3x" title="Goal in Progress" aria-label="Goal in Progress"/></t>
|
||||
<t t-if="record.state.raw_value=='failed'"><i role="img" class="o_red fa fa-times fa-3x" title="Goal Failed" aria-label="Goal Failed"/></t>
|
||||
</div>
|
||||
</t>
|
||||
<t t-if="record.definition_display.raw_value == 'progress'">
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
<label for="cal_client_secret" string="Client Secret" class="col-xs-3 col-md-3 o_light_label"/>
|
||||
<field name="cal_client_secret" password="True" nolabel="1"/>
|
||||
</div>
|
||||
<a href="https://www.odoo.com/documentation/user/11.0/crm/optimize/google_calendar_credentials.html" class="oe-link" target="_blank"><i class="fa fa-fw fa-arrow-right"/>Tutorial</a>
|
||||
<a href="https://www.odoo.com/documentation/user/11.0/crm/optimize/google_calendar_credentials.html" class="oe-link fa fa-fw fa-arrow-right" target="_blank">Tutorial</a>
|
||||
</div>
|
||||
</div>
|
||||
</field>
|
||||
|
||||
@@ -13,9 +13,9 @@
|
||||
<field name="google_drive_authorization_code"/>
|
||||
</div>
|
||||
<div>
|
||||
<span type="button" class="btn-link o_btn-link-as-button fa-arrow-right">
|
||||
<button type="button" class="btn-link o_btn-link-as-button fa-arrow-right">
|
||||
<field name="google_drive_uri" widget="url" text="Get Authorization Code"/>
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
<div>
|
||||
<button type="action" name="%(action_google_drive_users_config)d" string="Google Drive Templates" icon="fa-arrow-right" class="btn-link"/>
|
||||
|
||||
@@ -207,13 +207,13 @@
|
||||
<t t-name="kanban-box">
|
||||
<div class="oe_kanban_global_click">
|
||||
<div class="o_kanban_image">
|
||||
<img t-att-src="kanban_image('hr.employee', 'image_medium', record.id.raw_value)"/>
|
||||
<img t-att-src="kanban_image('hr.employee', 'image_medium', record.id.raw_value)" alt="Employee"/>
|
||||
<div class="o_employee_summary_icons">
|
||||
<t t-if="record.message_needaction_counter.raw_value">
|
||||
<span class='oe_kanban_mail_new' title='Unread Messages'><i class='fa fa-comments'/><t t-raw="record.message_needaction_counter.raw_value"/></span>
|
||||
<span role="alert" class='oe_kanban_mail_new' title='Unread Messages'><i class='fa fa-comments' role="img" aria-label="Unread Messages"/><t t-raw="record.message_needaction_counter.raw_value"/></span>
|
||||
</t>
|
||||
<span title='Messages'><i class='fa fa-comments'/><t t-esc="record.message_ids.raw_value.length"/></span>
|
||||
<span title='Followers'><i class='fa fa-users'/><t t-esc="record.message_follower_ids.raw_value.length"/></span>
|
||||
<span title='Messages'><i class='fa fa-comments' role="img" aria-label="Messages"/><t t-esc="record.message_ids.raw_value.length"/></span>
|
||||
<span title='Followers'><i class='fa fa-users' role="img" aria-label="Followers"/><t t-esc="record.message_follower_ids.raw_value.length"/></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="oe_kanban_details">
|
||||
@@ -229,9 +229,9 @@
|
||||
<ul>
|
||||
<li id="last_login"/>
|
||||
<li t-if="record.work_location.raw_value"><field name="work_location"/></li>
|
||||
<li t-if="record.work_email.raw_value"><i class="fa fa-envelope"></i> <field name="work_email"/></li>
|
||||
<li t-if="record.work_phone.raw_value"><i class="fa fa-phone"></i> <field name="work_phone"/></li>
|
||||
<li t-if="record.mobile_phone.raw_value"><i class="fa fa-mobile"></i> <field name="mobile_phone"/></li>
|
||||
<li t-if="record.work_email.raw_value"><i class="fa fa-envelope" role="img" aria-label="Email" title="Email"></i> <field name="work_email"/></li>
|
||||
<li t-if="record.work_phone.raw_value"><i class="fa fa-phone" role="img" aria-label="Phone" title="Phone"></i> <field name="work_phone"/></li>
|
||||
<li t-if="record.mobile_phone.raw_value"><i class="fa fa-mobile" role="img" aria-label="Mobile" title="Mobile"></i> <field name="mobile_phone"/></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@@ -567,7 +567,7 @@
|
||||
<div class="o_secondary"><field name="company_id" groups="base.group_multi_company"/></div>
|
||||
</div>
|
||||
<div class="o_kanban_manage_button_section">
|
||||
<a class="o_kanban_manage_toggle_button" href="#"><i class="fa fa-ellipsis-v" /></a>
|
||||
<a class="o_kanban_manage_toggle_button" href="#"><i class="fa fa-ellipsis-v" role="img" aria-label="Manage" title="Manage"/></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container o_kanban_card_content">
|
||||
@@ -578,19 +578,19 @@
|
||||
<div class="col-xs-6 o_kanban_primary_right">
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="container o_kanban_card_manage_pane dropdown-menu">
|
||||
</div><div class="container o_kanban_card_manage_pane dropdown-menu" role="menu">
|
||||
<div class="row">
|
||||
<div class="col-xs-4 o_kanban_card_manage_section o_kanban_manage_to_do">
|
||||
<div role="menuitem" class="col-xs-4 o_kanban_card_manage_section o_kanban_manage_to_do">
|
||||
<div class="o_kanban_card_manage_title">
|
||||
<span>To Do</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-4 o_kanban_card_manage_section o_kanban_manage_to_approve">
|
||||
<div role="menuitem" class="col-xs-4 o_kanban_card_manage_section o_kanban_manage_to_approve">
|
||||
<div class="o_kanban_card_manage_title">
|
||||
<span>To Approve</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-4 o_kanban_card_manage_section o_kanban_manage_reports">
|
||||
<div role="menuitem" class="col-xs-4 o_kanban_card_manage_section o_kanban_manage_reports">
|
||||
<div class="o_kanban_card_manage_title">
|
||||
<span>Reporting</span>
|
||||
</div>
|
||||
@@ -598,11 +598,11 @@
|
||||
</div>
|
||||
|
||||
<div t-if="widget.editable" class="o_kanban_card_manage_settings row">
|
||||
<div class="col-xs-8">
|
||||
<ul class="oe_kanban_colorpicker" data-field="color"/>
|
||||
<div role="menuitem" aria-haspopup="true" class="col-xs-8">
|
||||
<ul class="oe_kanban_colorpicker" data-field="color" role="menu"/>
|
||||
</div>
|
||||
<div class="col-xs-4 text-right">
|
||||
<a type="edit">Settings</a>
|
||||
<a role="menuitem" type="edit">Settings</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
<div class="col-xs-12 col-md-6 o_setting_box">
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="resource_calendar_id"/>
|
||||
<span class="fa fa-lg fa-building-o" title="Values set here are company-specific." groups="base.group_multi_company"/>
|
||||
<span class="fa fa-lg fa-building-o" title="Values set here are company-specific." role="img" aria-label="Values set here are company-specific." groups="base.group_multi_company"/>
|
||||
<div class="row">
|
||||
<div class="text-muted col-md-8">
|
||||
Set default calendar used to compute time allocation for leaves, timesheets, ...
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
<table style="width:155pt; height:85pt">
|
||||
<tr><th><div style="font-size:15pt; margin-bottom:0pt;margin-top:0pt;" align="center"><t t-esc="employee.name"/></div></th></tr>
|
||||
<tr><td><div align="center" style="font-size:10pt;margin-bottom:5pt;"><t t-esc="employee.job_id.name"/></div></td></tr>
|
||||
<tr><td><img t-if="employee.barcode" t-att-src="'/report/barcode/?type=%s&value=%s&width=%s&height=%s' % ('Code128', employee.barcode, 600, 120)" style="max-height:50pt;max-width:100%;" align="center"/></td></tr>
|
||||
<tr><td><img alt="barcode" t-if="employee.barcode" t-att-src="'/report/barcode/?type=%s&value=%s&width=%s&height=%s' % ('Code128', employee.barcode, 600, 120)" style="max-height:50pt;max-width:100%;" align="center"/></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</table>
|
||||
@@ -43,4 +43,4 @@
|
||||
</div>
|
||||
</t>
|
||||
</template>
|
||||
</odoo>
|
||||
</odoo>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<template xml:space="preserve">
|
||||
<t t-name="PresenceIndicator">
|
||||
<div id="oe_hr_attendance_status" class="fa fa-user">
|
||||
<div id="oe_hr_attendance_status" class="fa fa-user" role="img" aria-label="Available" title="Available">
|
||||
</div>
|
||||
</t>
|
||||
|
||||
@@ -42,8 +42,9 @@
|
||||
</div>
|
||||
<h1 class="mb8"><t t-esc="widget.employee.name"/></h1>
|
||||
<h3 class="mt8 mb24"><t t-if="!checked_in">Welcome!</t><t t-else="">Want to check out?</t></h3>
|
||||
<a t-attf-class="fa fa-7x o_hr_attendance_sign_in_out_icon {{checked_in? 'fa-sign-out btn-warning' : 'fa-sign-in btn-default'}}"/>
|
||||
<h3 class="mt0 mb0 text-muted">Click to <b t-if="checked_in">check out</b><b t-else="">check in</b></h3>
|
||||
<a class="fa fa-7x o_hr_attendance_sign_in_out_icon fa-sign-out btn-warning" t-if="checked_in" aria-label="Sign out" title="Sign out"/>
|
||||
<a class="fa fa-7x o_hr_attendance_sign_in_out_icon fa-sign-in btn-default" t-if="!checked_in" aria-label="Sign in" title="Sign in"/>
|
||||
<h3 class="mt0 mb0 text-muted">Click to <b t-if="checked_in">check out</b><b t-if="!checked_in">check in</b></h3>
|
||||
</t>
|
||||
<t t-else="">
|
||||
Error : Could not find employee linked to user.
|
||||
@@ -59,8 +60,8 @@
|
||||
<div class="o_hr_attendance_kiosk_mode">
|
||||
<t t-set="checked_in" t-value="widget.employee_state=='checked_in'"/>
|
||||
<div class="o_hr_attendance_back_button">
|
||||
<span class="btn btn-default btn-lg visible-xs"><i class="fa fa-chevron-left mr8"/> Go back</span>
|
||||
<span class="btn btn-default hidden-xs"><i class="fa fa-chevron-left"/></span>
|
||||
<span class="btn btn-default btn-lg visible-xs"><span class="fa fa-chevron-left mr8"> Go back</span></span>
|
||||
<span class="btn btn-default hidden-xs"><i role="img" class="fa fa-chevron-left" aria-label="Go back" title="Go back"/></span>
|
||||
</div>
|
||||
<t t-if="widget.employee_id">
|
||||
<div class="o_hr_attendance_user_badge o_home_menu_background">
|
||||
@@ -69,7 +70,8 @@
|
||||
<h1 class="mb8"><t t-esc="widget.employee_name"/></h1>
|
||||
<h3 class="mt8 mb24"><t t-if="!checked_in">Welcome!</t><t t-else="">Want to check out?</t></h3>
|
||||
<t t-if="!widget.use_pin">
|
||||
<a t-attf-class="fa fa-7x o_hr_attendance_sign_in_out_icon {{checked_in? 'fa-sign-out btn-warning' : 'fa-sign-in btn-default'}}"/>
|
||||
<a class="fa fa-7x o_hr_attendance_sign_in_out_icon fa-sign-out btn-warning" t-if="checked_in" aria-label="Sign out" title="Sign out"/>
|
||||
<a class="fa fa-7x o_hr_attendance_sign_in_out_icon fa-sign-in btn-default" t-if="!checked_in" aria-label="Sign in" title="Sign in"/>
|
||||
<h3 class="mt0 mb0 text-muted">Click to <b t-if="checked_in">check out</b><b t-else="">check in</b></h3>
|
||||
</t>
|
||||
<t t-else="">
|
||||
@@ -90,10 +92,10 @@
|
||||
</div>
|
||||
</t>
|
||||
</t>
|
||||
<div t-else="" class="alert alert-danger">
|
||||
<div t-else="" class="alert alert-danger" role="alert">
|
||||
<b>Error: could not find corresponding employee.</b><br/>Please return to the main menu.
|
||||
</div>
|
||||
<div class="oe_attendance_sign_in_out"/>
|
||||
<a role="button" class="oe_attendance_sign_in_out" aria-label="Sign out" title="Sign out"/>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
@@ -110,20 +112,20 @@
|
||||
<t t-if="widget.attendance.check_out">
|
||||
<h1 class="mb0">Goodbye <t t-esc="widget.employee_name"/>!</h1>
|
||||
<h2 class="o_hr_attendance_message_message mt4 mb24"/>
|
||||
<div class="alert alert-info h2 mt0">
|
||||
<div class="alert alert-info h2 mt0" role="status">
|
||||
Checked out at <b><t t-esc="widget.attendance.check_out_time"/></b>
|
||||
</div>
|
||||
<h3 class="o_hr_attendance_random_message mb24"/>
|
||||
<div class="o_hr_attendance_warning_message mt24 alert alert-warning" style="display:none"/>
|
||||
<div class="o_hr_attendance_warning_message mt24 alert alert-warning" style="display:none" role="alert"/>
|
||||
</t>
|
||||
<t t-else="">
|
||||
<h1 class="mb0">Welcome <t t-esc="widget.employee_name"/>!</h1>
|
||||
<h2 class="o_hr_attendance_message_message mt4 mb24"/>
|
||||
<div class="alert alert-info h2 mt0">
|
||||
<div class="alert alert-info h2 mt0" role="status">
|
||||
Checked in at <b><t t-esc="widget.attendance.check_in_time"/></b>
|
||||
</div>
|
||||
<h3 class="o_hr_attendance_random_message mb24"/>
|
||||
<div class="o_hr_attendance_warning_message mt24 alert alert-warning" style="display:none"/>
|
||||
<div class="o_hr_attendance_warning_message mt24 alert alert-warning" style="display:none" role="alert"/>
|
||||
</t>
|
||||
<button class="o_hr_attendance_button_dismiss btn btn-primary btn-lg">
|
||||
<span class="text-capitalize" t-if="widget.attendance.check_out">Goodbye</span>
|
||||
@@ -131,7 +133,7 @@
|
||||
</button>
|
||||
</t>
|
||||
<t t-else="">
|
||||
<div class="alert alert-warning">Invalid request, please return to the main menu.</div>
|
||||
<div class="alert alert-warning" role="alert">Invalid request, please return to the main menu.</div>
|
||||
<button class="o_hr_attendance_button_dismiss btn btn-default btn-lg">Go back</button>
|
||||
</t>
|
||||
</div>
|
||||
|
||||
@@ -27,14 +27,14 @@
|
||||
<t t-name="kanban-box">
|
||||
<div t-attf-class="oe_kanban_global_click">
|
||||
<div>
|
||||
<img t-att-src="kanban_image('hr.employee', 'image_small', record.employee_id.raw_value)" t-att-title="record.employee_id.value" width="24" height="24" class="oe_kanban_avatar mr4"/>
|
||||
<img t-att-src="kanban_image('hr.employee', 'image_small', record.employee_id.raw_value)" t-att-title="record.employee_id.value" t-att-alt="record.employee_id.value" width="24" height="24" class="oe_kanban_avatar mr4"/>
|
||||
<span class="o_kanban_record_title">
|
||||
<strong><t t-esc="record.employee_id.value"/></strong>
|
||||
</span>
|
||||
</div>
|
||||
<hr class="mt4 mb8"/>
|
||||
<div class="o_kanban_record_subtitle">
|
||||
<i class="fa fa-calendar" aria-hidden="true"></i>
|
||||
<i class="fa fa-calendar" aria-label="Period" role="img" title="Period"></i>
|
||||
<t t-esc="record.check_in.value"/>
|
||||
- <t t-esc="record.check_out.value"/>
|
||||
</div>
|
||||
|
||||
@@ -12,8 +12,8 @@
|
||||
<button name="%(hr_attendance_action_employee)d"
|
||||
class="oe_stat_button"
|
||||
type="action" attrs="{'invisible': [('attendance_state', '=', False)]}">
|
||||
<div id="oe_hr_attendance_status" class="fa fa-fw fa-user o_button_icon oe_hr_attendance_status_green" attrs="{'invisible': [('attendance_state', '=', 'checked_out')]}"/>
|
||||
<div id="oe_hr_attendance_status" class="fa fa-fw fa-user o_button_icon oe_hr_attendance_status_red" attrs="{'invisible': [('attendance_state', '=', 'checked_in')]}"/>
|
||||
<div role="img" id="oe_hr_attendance_status" class="fa fa-fw fa-user o_button_icon oe_hr_attendance_status_green" attrs="{'invisible': [('attendance_state', '=', 'checked_out')]}" aria-label="Available" title="Available"/>
|
||||
<div role="img" id="oe_hr_attendance_status" class="fa fa-fw fa-user o_button_icon oe_hr_attendance_status_red" attrs="{'invisible': [('attendance_state', '=', 'checked_in')]}" aria-label="Not available" title="Not available"/>
|
||||
<div class="o_stat_info">
|
||||
<span class="o_stat_text">Attendance</span>
|
||||
</div>
|
||||
@@ -55,15 +55,15 @@
|
||||
<t t-name="kanban-box">
|
||||
<div class="oe_kanban_global_click">
|
||||
<div class="o_kanban_image">
|
||||
<img t-att-src="kanban_image('hr.employee', 'image_medium', record.id.raw_value)"/>
|
||||
<img t-att-src="kanban_image('hr.employee', 'image_medium', record.id.raw_value)" alt="Employee"/>
|
||||
</div>
|
||||
<div class="oe_kanban_details">
|
||||
<div id="textbox">
|
||||
<div class="pull-right" t-if="record.attendance_state.raw_value == 'checked_in'">
|
||||
<span id="oe_hr_attendance_status" class="fa fa-user oe_hr_attendance_status_green"></span>
|
||||
<span id="oe_hr_attendance_status" class="fa fa-user oe_hr_attendance_status_green" role="img" aria-label="Available" title="Available"></span>
|
||||
</div>
|
||||
<div class="pull-right" t-if="record.attendance_state.raw_value == 'checked_out'">
|
||||
<span id="oe_hr_attendance_status" class="fa fa-user oe_hr_attendance_status_red"></span>
|
||||
<span id="oe_hr_attendance_status" class="fa fa-user oe_hr_attendance_status_red" role="img" aria-label="Not available" title="Not available"></span>
|
||||
</div>
|
||||
<strong>
|
||||
<field name="name"/>
|
||||
@@ -93,10 +93,10 @@
|
||||
<field name="name" position="replace">
|
||||
<div>
|
||||
<div class="pull-right" t-if="record.attendance_state.raw_value == 'checked_in'">
|
||||
<span id="oe_hr_attendance_status" class="fa fa-user oe_hr_attendance_status_green"></span>
|
||||
<span id="oe_hr_attendance_status" class="fa fa-user oe_hr_attendance_status_green" role="img" aria-label="Available" title="Available"></span>
|
||||
</div>
|
||||
<div class="pull-right" t-if="record.attendance_state.raw_value == 'checked_out'">
|
||||
<span id="oe_hr_attendance_status" class="fa fa-user oe_hr_attendance_status_red"></span>
|
||||
<span id="oe_hr_attendance_status" class="fa fa-user oe_hr_attendance_status_red" role="img" aria-label="Not available" title="Not available"></span>
|
||||
</div>
|
||||
<strong>
|
||||
<field name="name" placeholder="Employee's Name"/>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<field name="group_attendance_use_pin"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label string="Employee PIN"/>
|
||||
<span class="o_form_label">Employee PIN</span>
|
||||
<div class="text-muted">
|
||||
Use PIN codes to check in in Kiosk Mode
|
||||
</div>
|
||||
|
||||
@@ -175,12 +175,12 @@
|
||||
<t t-name="kanban-box">
|
||||
<div class="oe_kanban_card oe_kanban_global_click">
|
||||
<div class="o_dropdown_kanban dropdown" groups="base.group_user">
|
||||
<a class="dropdown-toggle btn" data-toggle="dropdown" href="#" >
|
||||
<a class="dropdown-toggle btn" role="button" data-toggle="dropdown" href="#" aria-label="Dropdown menu" title="Dropdown menu">
|
||||
<span class="fa fa-ellipsis-v"/>
|
||||
</a>
|
||||
<ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
|
||||
<t t-if="widget.editable"><li><a type="edit">Edit Contract</a></li></t>
|
||||
<t t-if="widget.deletable"><li><a type="delete">Delete</a></li></t>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<t t-if="widget.editable"><li><a role="menuitem" type="edit">Edit Contract</a></li></t>
|
||||
<t t-if="widget.deletable"><li><a role="menuitem" type="delete">Delete</a></li></t>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="oe_kanban_content">
|
||||
@@ -191,7 +191,7 @@
|
||||
<field name="job_id"/>
|
||||
</div>
|
||||
<div class="oe_kanban_bottom_right">
|
||||
<img t-att-src="kanban_image('hr.employee', 'image_medium', record.employee_id.raw_value)" t-att-title="record.employee_id.value" width="24" height="24" class="oe_kanban_avatar pull-right"/>
|
||||
<img t-att-src="kanban_image('hr.employee', 'image_medium', record.employee_id.raw_value)" t-att-title="record.employee_id.value" t-att-alt="record.employee_id.value" width="24" height="24" class="oe_kanban_avatar pull-right"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="oe_clear"></div>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
</div>
|
||||
<div class="content-group" attrs="{'invisible': ['|', ('use_mailgateway', '=', False), ('alias_domain', 'in', ['localhost', '', False])]}">
|
||||
<div class="mt16">
|
||||
<label string="Email Alias" class="o_light_label"/>
|
||||
<label for="expense_alias_prefix" string="Email Alias" class="o_light_label"/>
|
||||
<field name="expense_alias_prefix" class="oe_inline"/>
|
||||
<span>@</span>
|
||||
<field name="alias_domain" class="oe_inline" readonly="1"/>
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
<div t-attf-class="oe_kanban_global_click">
|
||||
<div>
|
||||
<span>
|
||||
<img t-att-src="kanban_image('hr.employee', 'image_small', record.employee_id.raw_value)" t-att-title="record.employee_id.value" width="40" height="40" class="oe_kanban_avatar pull-left mr4"/>
|
||||
<img t-att-src="kanban_image('hr.employee', 'image_small', record.employee_id.raw_value)" t-att-title="record.employee_id.value" t-att-alt="record.employee_id.value" width="40" height="40" class="oe_kanban_avatar pull-left mr4"/>
|
||||
</span>
|
||||
<span>
|
||||
<div>
|
||||
|
||||
@@ -75,7 +75,8 @@
|
||||
<field name="type_request_unit" invisible="1"/>
|
||||
<field name="name" attrs="{'readonly':[('state','!=','draft'),('state','!=','confirm')]}"/>
|
||||
<field name="holiday_status_id" context="{'employee_id':employee_id}"/>
|
||||
<label string="Duration" attrs="{'invisible': [('accrual', '=', True)]}"/>
|
||||
<label for="number_of_days_temp" string="Duration" attrs="{'invisible': [('type_request_unit', '=', 'hour'),('accrual', '=', True)]}"/>
|
||||
<label for="number_of_hours" string="Duration" attrs="{'invisible': [('type_request_unit', '!=', 'hour'),('accrual', '=', True)]}"/>
|
||||
<div>
|
||||
<div attrs="{'invisible': ['|', ('type_request_unit', '=', 'hour'), ('accrual', '=', True)]}">
|
||||
<field name="number_of_days_temp" class="oe_inline" attrs="{'readonly': [('state', '=', 'validate')]}"/> days
|
||||
|
||||
@@ -99,7 +99,7 @@
|
||||
<field name="department_id"/>
|
||||
</xpath>
|
||||
<xpath expr="//img[@t-att-title='record.owner_user_id.value']" position='replace'>
|
||||
<img t-att-src="kanban_image('hr.employee', 'image_small', record.employee_id.raw_value)" t-att-title="record.employee_id.value" width="27" height="27" class="oe_kanban_avatar"/>
|
||||
<img t-att-src="kanban_image('hr.employee', 'image_small', record.employee_id.raw_value)" t-att-title="record.employee_id.value" t-att-alt="record.employee_id.value" width="27" height="27" class="oe_kanban_avatar"/>
|
||||
</xpath>
|
||||
<div t-if="record.serial_no.raw_value" position='after'>
|
||||
<div t-if="!record.employee_id.raw_value">Unassigned</div>
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
<a class="well media-object text-center o_employee_redirect"
|
||||
t-att-href="managers[0].link"
|
||||
t-att-data-employee-id="managers[0].id">
|
||||
<i t-attf-class="fa fa-angle-double-up"/>
|
||||
<i t-attf-class="fa fa-angle-double-up" role="img" aria-label="More managers" title="More managers"/>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -83,7 +83,7 @@
|
||||
</t>
|
||||
|
||||
<t t-if="!children.length && !managers.length">
|
||||
<div class="alert alert-info">
|
||||
<div class="alert alert-info" role="alert">
|
||||
<p><b>No hierarchy position.</b></p>
|
||||
<p>This employee has no manager or subordinate.</p>
|
||||
<p>In order to get an organigram, set a manager and save the record.</p>
|
||||
@@ -152,7 +152,7 @@
|
||||
<t t-name="hr_orgchart_emp_popover_title">
|
||||
<div>
|
||||
<span t-att-style='"background-image:url(\"/web/image/hr.employee/" + employee.id + "/image/\")"'/>
|
||||
<a href="#" class="pull-right o_employee_redirect" t-att-data-employee-id="employee.id"><i class="fa fa-external-link"></i></a>
|
||||
<a href="#" class="pull-right o_employee_redirect" t-att-data-employee-id="employee.id"><i class="fa fa-external-link" role="img" aria-label='Redirect' title="Redirect"></i></a>
|
||||
<b><t t-esc="employee.name"/></b>
|
||||
</div>
|
||||
</t>
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
<div class="row mt16 o_settings_container" id="hr_payroll_localization" attrs="{'invisible': ['|', '|', ('module_l10n_fr_hr_payroll', '=', True), ('module_l10n_be_hr_payroll', '=', True), ('module_l10n_in_hr_payroll', '=', True)]}">
|
||||
<div class="col-md-6 col-xs-12 o_setting_box">
|
||||
<div class="o_setting_right_pane">
|
||||
<label string="Payroll Rules"/>
|
||||
<span class="o_form_label">Payroll Rules</span>
|
||||
<div class="text-muted">
|
||||
Payroll rules that apply to your country
|
||||
</div>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<button icon="fa-cogs" string="Generate" name="compute_sheet" type="object" class="oe_highlight" />
|
||||
</header>
|
||||
<group>
|
||||
<label colspan="4" nolabel="1" string="This wizard will generate payslips for all selected employee(s) based on the dates and credit note specified on Payslips Run." />
|
||||
<span colspan="4" nolabel="1">This wizard will generate payslips for all selected employee(s) based on the dates and credit note specified on Payslips Run.</span>
|
||||
</group>
|
||||
<group colspan="4" >
|
||||
<separator string="Employees" colspan="4"/>
|
||||
|
||||
@@ -221,7 +221,7 @@
|
||||
% if object.job_id.address_id:
|
||||
<div style="width:598px;margin:0px auto;border-left:1px solid #dddddd;border-right:1px solid #dddddd;border-bottom:1px solid #dddddd;">
|
||||
<a href="https://maps.google.com/maps?q=${location}" target="new">
|
||||
<img src="http://maps.googleapis.com/maps/api/staticmap?autoscale=1&size=598x200&maptype=roadmap&format=png&visual_refresh=true&markers=size:mid%7Ccolor:0xa5117d%7Clabel:%7C${location}" style="vertical-align:bottom;"/>
|
||||
<img src="http://maps.googleapis.com/maps/api/staticmap?autoscale=1&size=598x200&maptype=roadmap&format=png&visual_refresh=true&markers=size:mid%7Ccolor:0xa5117d%7Clabel:%7C${location}" style="vertical-align:bottom;" alt="Google Maps"/>
|
||||
</a>
|
||||
</div>
|
||||
% endif
|
||||
@@ -360,7 +360,7 @@
|
||||
% if object.job_id.address_id:
|
||||
<div style="width:598px;margin:0px auto;border-left:1px solid #dddddd;border-right:1px solid #dddddd;border-bottom:1px solid #dddddd;">
|
||||
<a href="https://maps.google.com/maps?q=${location}" target="new">
|
||||
<img src="http://maps.googleapis.com/maps/api/staticmap?autoscale=1&size=598x200&maptype=roadmap&format=png&visual_refresh=true&markers=size:mid%7Ccolor:0xa5117d%7Clabel:%7C${location}" style="vertical-align:bottom;"/>
|
||||
<img src="http://maps.googleapis.com/maps/api/staticmap?autoscale=1&size=598x200&maptype=roadmap&format=png&visual_refresh=true&markers=size:mid%7Ccolor:0xa5117d%7Clabel:%7C${location}" style="vertical-align:bottom;" alt="Google Maps"/>
|
||||
</a>
|
||||
</div>
|
||||
% endif
|
||||
|
||||
@@ -30,11 +30,11 @@
|
||||
<div class="o_kanban_card_header_title">
|
||||
<div class="o_primary"><t t-esc="record.name.value"/></div>
|
||||
<div t-if="record.alias_name.value and record.alias_domain.value and record.state.raw_value == 'recruit'" class="o_secondary o_job_alias">
|
||||
<small> <i class="fa fa-envelope-o"></i> <field name="alias_id"/> </small>
|
||||
<small> <i class="fa fa-envelope-o" role="img" aria-label="Alias" title="Alias"></i> <field name="alias_id"/> </small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="o_kanban_manage_button_section">
|
||||
<a class="o_kanban_manage_toggle_button" href="#"><i class="fa fa-ellipsis-v" /></a>
|
||||
<a class="o_kanban_manage_toggle_button" href="#"><i class="fa fa-ellipsis-v" role="img" aria-label="Manage" title="Manage"/></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container o_kanban_card_content">
|
||||
@@ -47,7 +47,7 @@
|
||||
<div name="kanban_boxes" class="row o_recruitment_kanban_boxes">
|
||||
<div class="o_recruitment_kanban_box o_kanban_primary_bottom bottom_block">
|
||||
<a name="action_get_attachment_tree_view" type="object">
|
||||
<span title='Documents'><i class='fa fa-book'/>
|
||||
<span title='Documents'><i class='fa fa-book' role="img" aria-label="Documents"/>
|
||||
</span>
|
||||
</a>
|
||||
</div>
|
||||
@@ -66,16 +66,16 @@
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</div><div class="container o_kanban_card_manage_pane dropdown-menu">
|
||||
</div><div class="container o_kanban_card_manage_pane dropdown-menu" role="menu">
|
||||
<div t-if="widget.editable" class="o_kanban_card_manage_settings row">
|
||||
<div class="col-xs-8">
|
||||
<ul class="oe_kanban_colorpicker" data-field="color"/>
|
||||
<div class="col-xs-8" role="menuitem" aria-haspopup="true">
|
||||
<ul class="oe_kanban_colorpicker" data-field="color" role="menu"/>
|
||||
</div>
|
||||
<div class="col-xs-4">
|
||||
<a t-if="record.state.raw_value == 'recruit'" name="set_open" type="object">Recruitment Done</a>
|
||||
<a t-if="record.state.raw_value == 'open'" name="set_recruit" type="object">Start recruitment</a>
|
||||
<br/>
|
||||
<a name="edit_job" type="edit">Edit</a>
|
||||
<a role="menuitem" t-if="record.state.raw_value == 'recruit'" name="set_open" type="object">Recruitment Done</a>
|
||||
<a role="menuitem" t-if="record.state.raw_value == 'open'" name="set_recruit" type="object">Start recruitment</a>
|
||||
<br role="separator"/>
|
||||
<a role="menuitem" name="edit_job" type="edit">Edit</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -290,13 +290,13 @@
|
||||
<div t-attf-class="oe_kanban_color_#{kanban_getcolor(record.color.raw_value)} oe_kanban_card oe_kanban_global_click oe_applicant_kanban oe_semantic_html_override">
|
||||
<div class="o_dropdown_kanban dropdown">
|
||||
|
||||
<a class="dropdown-toggle btn" data-toggle="dropdown" href="#" >
|
||||
<a class="dropdown-toggle btn" role="button" data-toggle="dropdown" href="#" aria-label="Dropdown menu" title="Dropdown menu">
|
||||
<span class="fa fa-ellipsis-v"/>
|
||||
</a>
|
||||
<ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
|
||||
<t t-if="widget.deletable"><li><a type="delete">Delete</a></li></t>
|
||||
<li><a name="action_makeMeeting" type="object">Schedule Interview</a></li>
|
||||
<li><ul class="oe_kanban_colorpicker" data-field="color"/></li>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<t t-if="widget.deletable"><li><a role="menuitem" type="delete">Delete</a></li></t>
|
||||
<li><a role="menuitem" name="action_makeMeeting" type="object">Schedule Interview</a></li>
|
||||
<li role="menuitem" aira-haspopup="true"><ul role="menu" class="oe_kanban_colorpicker" data-field="color"/></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="oe_kanban_content">
|
||||
@@ -313,7 +313,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<field name="categ_ids" widget="many2many_tags" options="{'color_field': 'color'}"/>
|
||||
<t t-if="record.partner_mobile.raw_value"><i class="fa fa-mobile mr4"/><field name="partner_mobile"/><br/></t>
|
||||
<t t-if="record.partner_mobile.raw_value"><i class="fa fa-mobile mr4" role="img" aria-label="Mobile" title="Mobile"/><field name="partner_mobile"/><br/></t>
|
||||
<div class="o_kanban_record_bottom mt4">
|
||||
<div class="oe_kanban_bottom_left">
|
||||
<div class="pull-left mr4" groups="base.group_user">
|
||||
@@ -323,12 +323,12 @@
|
||||
<field name="activity_ids" widget="kanban_activity"/>
|
||||
</div>
|
||||
<t t-if="record.message_needaction_counter.raw_value">
|
||||
<span class='oe_kanban_mail_new mr4' title='Unread Messages'><i class='fa fa-comments'/><t t-raw="record.message_needaction_counter.raw_value"/></span>
|
||||
<span role="alert" class='oe_kanban_mail_new mr4' title='Unread Messages'><i class='fa fa-comments' role="img" aria-label="Unread messages"/><t t-raw="record.message_needaction_counter.raw_value"/></span>
|
||||
</t>
|
||||
</div>
|
||||
<div class="oe_kanban_bottom_right">
|
||||
<a name="action_get_attachment_tree_view" type="object">
|
||||
<span title='Documents'><i class='fa fa-book'/>
|
||||
<span title='Documents'><i class='fa fa-book' role="img" aria-label="Documents"/>
|
||||
<t t-esc="record.attachment_number.raw_value"/>
|
||||
</span>
|
||||
</a>
|
||||
@@ -338,7 +338,7 @@
|
||||
<field name="legend_blocked" invisible="1"/>
|
||||
<field name="legend_done" invisible="1"/>
|
||||
</div>
|
||||
<img t-att-src="kanban_image('res.users', 'image_small', record.user_id.raw_value)" t-att-title="record.user_id.value" width="30" height="30" class="oe_kanban_avatar"/>
|
||||
<img t-att-src="kanban_image('res.users', 'image_small', record.user_id.raw_value)" t-att-title="record.user_id.value" t-att-alt="record.user_id.value" width="30" height="30" class="oe_kanban_avatar"/>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
<field name="module_website_hr_recruitment"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label string="Online Posting"/>
|
||||
<label for="module_website_hr_recruitment" string="Online Posting"/>
|
||||
<div class="text-muted">
|
||||
Publish available jobs on your website
|
||||
</div>
|
||||
@@ -30,7 +30,7 @@
|
||||
<field name="module_hr_recruitment_survey"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label string="Interview Forms"/>
|
||||
<label for="module_hr_recruitment_survey" string="Interview Forms"/>
|
||||
<div class="text-muted">
|
||||
Use interview forms during recruitment process
|
||||
</div>
|
||||
|
||||
@@ -176,7 +176,7 @@
|
||||
<div t-attf-class="oe_kanban_global_click">
|
||||
<div class="row">
|
||||
<div class="col-xs-2">
|
||||
<img t-att-src="kanban_image('res.users', 'image_small', record.user_id.raw_value)" t-att-title="record.user_id.value" width="40" height="40" class="oe_kanban_avatar pull-left"/>
|
||||
<img t-att-src="kanban_image('res.users', 'image_small', record.user_id.raw_value)" t-att-title="record.user_id.value" t-att-alt="record.user_id.value" width="40" height="40" class="oe_kanban_avatar pull-left"/>
|
||||
</div>
|
||||
<div class="col-xs-10">
|
||||
<div>
|
||||
@@ -191,7 +191,7 @@
|
||||
</div>
|
||||
<hr class="mt4 mb4"/>
|
||||
<span>
|
||||
<i class="fa fa-calendar" aria-hidden="true"></i>
|
||||
<i class="fa fa-calendar" role="img" aria-label="Date" title="Date"></i>
|
||||
<t t-esc="record.date.value"/>
|
||||
</span>
|
||||
<span class="pull-right">
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
</group>
|
||||
</group>
|
||||
<group name="timesheet_error" attrs="{'invisible': [('allow_timesheets', '!=', False)]}">
|
||||
<div class="alert alert-warning">
|
||||
<div class="alert alert-warning" role="alert">
|
||||
Your project is linked to an inactive analytic account. Change it, or reactivate the current one to timesheet on the project.
|
||||
</div>
|
||||
</group>
|
||||
|
||||
@@ -19,8 +19,8 @@
|
||||
<t t-extend="DashboardApps">
|
||||
<t t-jquery=".o_web_settings_dashboard_pills" t-operation="after">
|
||||
<div class="text-center" style="display: inline-block">
|
||||
<a t-att-href="widget.data.url" target="_blank">
|
||||
<i class="fa fa-money fa-2x text-muted"/> In-App Purchases</a>
|
||||
<a t-att-href="widget.data.url" target="_blank" class="fa fa-money fa-2x text-muted">
|
||||
In-App Purchases</a>
|
||||
</div>
|
||||
</t>
|
||||
</t>
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
|
||||
<t t-name="CopyClipboardText">
|
||||
<button class="btn btn-xs btn-primary o_clipboard_button o_btn_text_copy">
|
||||
<i class="fa fa-clipboard"/> Copy Text
|
||||
<span class="fa fa-clipboard">Copy Text</span>
|
||||
</button>
|
||||
</t>
|
||||
|
||||
<t t-name="CopyClipboardChar">
|
||||
<button class="btn btn-xs btn-primary o_clipboard_button o_btn_char_copy">
|
||||
<i class="fa fa-clipboard"/> Copy Text
|
||||
<span class="fa fa-clipboard">Copy Text</span>
|
||||
</button>
|
||||
</t>
|
||||
|
||||
|
||||
@@ -17,8 +17,7 @@
|
||||
<t t-extend="mail.discuss_mobile">
|
||||
<t t-jquery=".o_mail_mobile_tabs" t-operation="append">
|
||||
<div class="o_mail_mobile_tab" data-type="livechat">
|
||||
<span class="fa fa-comments"/>
|
||||
<span class="o_tab_title">Livechat</span>
|
||||
<span class="fa fa-comments o_tab_title">Livechat</span>
|
||||
</div>
|
||||
</t>
|
||||
</t>
|
||||
|
||||
@@ -36,23 +36,23 @@
|
||||
<t t-name="kanban-box">
|
||||
<div class="oe_kanban_global_click">
|
||||
<div class="o_kanban_image">
|
||||
<img t-att-src="kanban_image('im_livechat.channel', 'image_medium', record.id.raw_value)" class="img-responsive"/>
|
||||
<img t-att-src="kanban_image('im_livechat.channel', 'image_medium', record.id.raw_value)" class="img-responsive" alt="Channel"/>
|
||||
</div>
|
||||
<div class="oe_kanban_details">
|
||||
<strong class="o_kanban_record_title"><field name="name"/></strong>
|
||||
<div>
|
||||
<p>
|
||||
<i class="fa fa-user"></i>
|
||||
<i class="fa fa-user" role="img" aria-label="User" title="User"></i>
|
||||
<t t-esc="(record.user_ids.raw_value || []).length"/> Operators
|
||||
<br/>
|
||||
<i class="fa fa-comments"></i>
|
||||
<i class="fa fa-comments" role="img" aria-label="Comments" title="Comments"></i>
|
||||
<t t-esc="record.nbr_channel.raw_value"/> Sessions
|
||||
<div>
|
||||
<t t-if="record.rating_percentage_satisfaction.raw_value > 0">
|
||||
<a type="action" name="%(rating_rating_action_view_livechat_rating)d">
|
||||
<i class="fa fa-smile-o text-success" t-if="record.rating_percentage_satisfaction.raw_value >= 70" title="Rating: Great"/>
|
||||
<i class="fa fa-meh-o text-warning" t-if="record.rating_percentage_satisfaction.raw_value > 30 and record.rating_percentage_satisfaction.raw_value < 70" title="Rating: Okay"/>
|
||||
<i class="fa fa-frown-o text-danger" t-if="record.rating_percentage_satisfaction.raw_value <= 30" title="Rating: Bad"/>
|
||||
<i class="fa fa-smile-o text-success" t-if="record.rating_percentage_satisfaction.raw_value >= 70" title="Rating: Great" role="img" aria-label="Happy face"/>
|
||||
<i class="fa fa-meh-o text-warning" t-if="record.rating_percentage_satisfaction.raw_value > 30 and record.rating_percentage_satisfaction.raw_value < 70" title="Rating: Okay" role="img" aria-label="Neutral face"/>
|
||||
<i class="fa fa-frown-o text-danger" t-if="record.rating_percentage_satisfaction.raw_value <= 30" title="Rating: Bad" role="img" aria-label="Sad face"/>
|
||||
<t t-esc="record.rating_percentage_satisfaction.raw_value"/>%
|
||||
</a>
|
||||
</t>
|
||||
@@ -106,9 +106,9 @@
|
||||
<templates>
|
||||
<t t-name="kanban-box">
|
||||
<div>
|
||||
<a t-if="!read_only_mode" type="delete" class="fa fa-times pull-right"/>
|
||||
<a t-if="!read_only_mode" type="delete" class="fa fa-times pull-right" aria-label="Delete" title="Delete"/>
|
||||
<div class="o_kanban_image">
|
||||
<img t-att-src="kanban_image('res.users', 'image', record.id.raw_value)"/>
|
||||
<img t-att-src="kanban_image('res.users', 'image', record.id.raw_value)" alt="User"/>
|
||||
</div>
|
||||
<div class="o_kanban_details">
|
||||
<h4 class="o_kanban_record_title"><field name="name"/></h4>
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
<field name="car_atn" attrs="{'invisible': [('transport_mode_car', '=', False)]}" invisible="1"/>
|
||||
<field name="transport_employer_cost" invisible="1"/>
|
||||
<field name="transport_mode_public"/>
|
||||
<label string="Public Transport" attrs="{'invisible': [('transport_mode_public', '=', False)]}" name="public_transport_label"/>
|
||||
<span class="o_form_label" attrs="{'invisible': [('transport_mode_public', '=', False)]}" name="public_transport_label">Public Transport</span>
|
||||
<div attrs="{'invisible': [('transport_mode_public', '=', False)]}" name="public_transport_div">
|
||||
<div>
|
||||
<label for="public_transport_employee_amount" class="oe_inline"/>
|
||||
@@ -74,7 +74,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<field name="transport_mode_others"/>
|
||||
<label string="Other" attrs="{'invisible': [('transport_mode_others', '=', False)]}" name="others_label"/>
|
||||
<span class="o_form_label" attrs="{'invisible': [('transport_mode_others', '=', False)]}" name="others_label">Other</span>
|
||||
<div attrs="{'invisible': [('transport_mode_others', '=', False)]}" class="o_row" name="others_div">
|
||||
<field name="others_reimbursed_amount" class="oe_inline" nolabel="1"/>
|
||||
<span>/ month</span>
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
<div class="col-xs-12 col-md-6 o_setting_box">
|
||||
<div class="o_setting_left_pane"/>
|
||||
<div class="o_setting_right_pane">
|
||||
<label string="New Car Request"/>
|
||||
<span class="o_form_label">New Car Request</span>
|
||||
<div class="text-muted content-group mt16">
|
||||
<span>An employee cannot request a new car if there are more than </span>
|
||||
<field name="max_unused_cars" class="text-center oe_inline" />
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
<div class="col-xs-12 col-md-6 o_setting_box" id="l10n_ch-isr_print_scanline_offset">
|
||||
<div class="o_setting_left_pane"/>
|
||||
<div class="o_setting_right_pane">
|
||||
<label string="ISR scan line offset"/>
|
||||
<span class="o_form_label">ISR scan line offset</span>
|
||||
<div class="text-muted">
|
||||
Offset to move the the scan line in mm
|
||||
</div>
|
||||
|
||||
@@ -12,8 +12,8 @@
|
||||
<div class="col-xs-12 col-md-6 o_setting_box">
|
||||
<div class="o_setting_left_pane"/>
|
||||
<div class="o_setting_right_pane">
|
||||
<span class="fa fa-lg fa-building-o" title="Values set here are company-specific." groups="base.group_multi_company"/>
|
||||
<label string="Paie"/>
|
||||
<span class="fa fa-lg fa-building-o" title="Values set here are company-specific." aria-label="Values set here are company-specific." groups="base.group_multi_company" role="img"/>
|
||||
<span class="o_form_label">Paie</span>
|
||||
<div class="content-group">
|
||||
<div class="row mt16">
|
||||
<label for="plafond_secu" class="col-md-3 o_light_label"/>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<field name="model">hr.salary.employee.month</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Employee Pay Head Breakup">
|
||||
<label string="This wizard will print report which displays employees break-up of Net Head for a specified dates."/>
|
||||
<span class="o_form_label">This wizard will print report which displays employees break-up of Net Head for a specified dates.</span>
|
||||
<footer>
|
||||
<button name="print_report" string="Print" type="object" class="btn-primary"/>
|
||||
<button string="Cancel" class="btn-default" special="cancel" />
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<field name="model">yearly.salary.detail</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Pay Head Employee Breakup">
|
||||
<label string="This wizard will print report which display a pay head employee breakup for a specified dates."/>
|
||||
<span class="o_form_label">This wizard will print report which display a pay head employee breakup for a specified dates.</span>
|
||||
<footer>
|
||||
<button name="print_report" string="Print" type="object" class="btn-primary"/>
|
||||
<button string="Cancel" class="btn-default" special="cancel" />
|
||||
|
||||
@@ -11,8 +11,7 @@
|
||||
<h3><t t-esc="supplier"/></h3>
|
||||
<div t-foreach='categories[supplier]' t-as='order' class="o_lunch_vignette">
|
||||
<button type="button" class="pull-right o_add_button oe_edit_only oe_link" t-att-data-id="order.line_id">
|
||||
<span class="fa fa-plus-square"></span>
|
||||
<span>Add</span>
|
||||
<span class="fa fa-plus-square">Add</span>
|
||||
</button>
|
||||
<div>
|
||||
<t t-esc="order.product_name"/>
|
||||
|
||||
@@ -105,17 +105,17 @@
|
||||
</div>
|
||||
<div class="col-xs-4 text-right">
|
||||
<span class="badge">
|
||||
<strong><i class="fa fa-money"/> <field name="amount"/></strong>
|
||||
<strong><i class="fa fa-money" role="img" aria-label="Amount" title="Amount"/> <field name="amount"/></strong>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-6">
|
||||
<i class="fa fa-clock-o"/>
|
||||
<i class="fa fa-clock-o" role="img" aria-label="Date" title="Date"/>
|
||||
<t t-esc="record.date.value"/>
|
||||
</div>
|
||||
<div class="col-xs-6">
|
||||
<img t-att-src="kanban_image('res.users', 'image_small', record.user_id.raw_value)" t-att-title="record.user_id.value" width="24" height="24" class="oe_kanban_avatar pull-right"/>
|
||||
<img t-att-src="kanban_image('res.users', 'image_small', record.user_id.raw_value)" t-att-title="record.user_id.value" t-att-alt="record.user_id.value" width="24" height="24" class="oe_kanban_avatar pull-right"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -213,9 +213,9 @@
|
||||
</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.
|
||||
Click on the <span class="fa fa-phone text-success" role="img" aria-label="Order button" title="Order button"/> to announce that the order is ordered.<br/>
|
||||
Click on the <span class="fa fa-check text-success" role="img" aria-label="Receive button" title="Receive button"/> to announce that the order is received.<br/>
|
||||
Click on the <span class="fa fa-times-circle text-danger" role="img" aria-label="Cancel button" title="Cancel button"/> to announce that the order isn't available.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
@@ -234,9 +234,9 @@
|
||||
</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.
|
||||
Click on the <span class="fa fa-phone text-success" role="img" aria-label="Order button" title="Order button"/> to announce that the order is ordered.<br/>
|
||||
Click on the <span class="fa fa-check text-success" role="img" aria-label="Receive button" title="Receive button"/> to announce that the order is received.<br/>
|
||||
Click on the <span class="fa fa-times-circle text-danger" role="img" aria-label="Cancel button" title="Cancel button"/> red X to announce that the order isn't available.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
@@ -390,26 +390,26 @@
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-6">
|
||||
<i class="fa fa-money"/> <field name="price"/>
|
||||
<i class="fa fa-money" role="img" aria-label="Money" title="Money"/> <field name="price"/>
|
||||
</div>
|
||||
<div class="col-xs-6 text-right">
|
||||
<i class="fa fa-clock-o"/> <field name="date"/>
|
||||
<i class="fa fa-clock-o" role="img" aria-label="Date" title="Date"/> <field name="date"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mt4">
|
||||
<div class="col-xs-6">
|
||||
<a class="btn btn-xs btn-success" name="order" string="Order" type="object" attrs="{'invisible': ['|',('state','=','confirmed'),('state','=','ordered')]}" groups="lunch.group_lunch_manager">
|
||||
<i class="fa fa-phone"/>
|
||||
<a class="btn btn-xs btn-success" role="button" name="order" string="Order" type="object" attrs="{'invisible': ['|',('state','=','confirmed'),('state','=','ordered')]}" groups="lunch.group_lunch_manager">
|
||||
<i class="fa fa-phone" role="img" aria-label="Order button" title="Order button"/>
|
||||
</a>
|
||||
<a class="btn btn-xs btn-info" name="confirm" string="Receive" type="object" attrs="{'invisible': [('state','!=','ordered')]}" groups="lunch.group_lunch_manager">
|
||||
<i class="fa fa-check"/>
|
||||
<a class="btn btn-xs btn-info" role="button" name="confirm" string="Receive" type="object" attrs="{'invisible': [('state','!=','ordered')]}" groups="lunch.group_lunch_manager">
|
||||
<i class="fa fa-check" role="img" aria-label="Receive button" title="Receive button"/>
|
||||
</a>
|
||||
<a class="btn btn-xs btn-danger" name="cancel" string="Cancel" type="object" attrs="{'invisible': [('state','=','cancelled')]}" groups="lunch.group_lunch_manager">
|
||||
<i class="fa fa-times"/>
|
||||
<a class="btn btn-xs btn-danger" role="button" name="cancel" string="Cancel" type="object" attrs="{'invisible': [('state','=','cancelled')]}" groups="lunch.group_lunch_manager">
|
||||
<i class="fa fa-times" role="img" aria-label="Cancel button" title="Cancel button"/>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-xs-6">
|
||||
<img t-att-src="kanban_image('res.users', 'image_small', record.user_id.raw_value)" t-att-title="record.user_id.value" width="24" height="24" class="oe_kanban_avatar pull-right"/>
|
||||
<img t-att-src="kanban_image('res.users', 'image_small', record.user_id.raw_value)" t-att-title="record.user_id.value" t-att-alt="record.user_id.value" width="24" height="24" class="oe_kanban_avatar pull-right"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -464,7 +464,7 @@
|
||||
<field name='date'/>
|
||||
</group>
|
||||
<div>
|
||||
<div attrs="{'invisible': ['|',('state','!=','new'),('alerts','=',False)]}" class="alert alert-danger oe_edit_only">
|
||||
<div attrs="{'invisible': ['|',('state','!=','new'),('alerts','=',False)]}" class="alert alert-danger oe_edit_only" role="alert">
|
||||
<field name='alerts'/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -2,22 +2,22 @@
|
||||
<templates xml:space="preserve">
|
||||
<t t-name="mail.activity_items">
|
||||
<div class="o_thread_date_separator o_border_dashed" data-toggle="collapse" data-target="#o_chatter_planned_activities">
|
||||
<span class="o_thread_date btn">
|
||||
<i class="fa fa-fw fa-caret-down"/>
|
||||
Planned activities
|
||||
<a href="#" role="button" class="o_thread_date btn">
|
||||
<span class="fa fa-fw fa-caret-down">
|
||||
Planned activities</span>
|
||||
<small class="o_chatter_planned_activities_summary ml8">
|
||||
<span class="label img-circle label-danger"><t t-esc="nbOverdueActivities"/></span>
|
||||
<span class="label img-circle label-warning"><t t-esc="nbTodayActivities"/></span>
|
||||
<span class="label img-circle label-success"><t t-esc="nbPlannedActivities"/></span>
|
||||
</small>
|
||||
</span>
|
||||
</a>
|
||||
</div>
|
||||
<div id="o_chatter_planned_activities" class="collapse in">
|
||||
<t t-foreach="activities" t-as="activity">
|
||||
<div class="o_thread_message" style="margin-bottom: 10px">
|
||||
<div class="o_thread_message_sidebar">
|
||||
<div class="o_avatar_stack">
|
||||
<img t-attf-src="/web/image#{activity.user_id[0] >= 0 ? ('/res.users/' + activity.user_id[0] + '/image_small') : ''}" class="o_thread_message_avatar img-circle mb8" t-att-title="activity.user_id[1]"/>
|
||||
<img t-attf-src="/web/image#{activity.user_id[0] >= 0 ? ('/res.users/' + activity.user_id[0] + '/image_small') : ''}" class="o_thread_message_avatar img-circle mb8" t-att-title="activity.user_id[1]" t-att-alt="activity.user_id[1]"/>
|
||||
<i t-att-class="'o_avatar_icon fa ' + activity.icon + ' bg-' + (activity.state == 'planned'? 'success' : (activity.state == 'today'? 'warning' : 'danger')) + '-full'"
|
||||
t-att-title="activity.activity_type_id[1]"/>
|
||||
</div>
|
||||
@@ -30,7 +30,7 @@
|
||||
<em> for </em>
|
||||
<t t-esc="activity.user_id[1]" />
|
||||
<a class="btn btn-link btn-info text-muted collapsed o_activity_info ml4" role="button" data-toggle="collapse" t-attf-data-target="#o_chatter_activity_info_#{activity.id}">
|
||||
<i class="fa fa-info-circle"></i>
|
||||
<i class="fa fa-info-circle" role="img" aria-label="Info" title="Info"></i>
|
||||
</a>
|
||||
<div class="o_thread_message_collapse collapse" t-attf-id="o_chatter_activity_info_#{activity.id}">
|
||||
<dl class="dl-horizontal well">
|
||||
@@ -44,7 +44,7 @@
|
||||
</dd>
|
||||
<dt>Assigned to</dt>
|
||||
<dd class="mb8">
|
||||
<img t-attf-src="/web/image#{activity.user_id[0] >= 0 ? ('/res.users/' + activity.user_id[0] + '/image_small') : ''}" height="18" width="18" class="img-circle mr4" t-att-title="activity.user_id[1]"/>
|
||||
<img t-attf-src="/web/image#{activity.user_id[0] >= 0 ? ('/res.users/' + activity.user_id[0] + '/image_small') : ''}" height="18" width="18" class="img-circle mr4" t-att-title="activity.user_id[1]" t-att-alt="activity.user_id[1]"/>
|
||||
<b><t t-esc="activity.user_id[1]"/></b>
|
||||
<em>, due on </em><span t-attf-class="o_activity_color_#{activity.state}"><t t-esc="activity.date_deadline.format(date_format)"/></span>
|
||||
</dd>
|
||||
@@ -55,14 +55,14 @@
|
||||
<t t-raw="activity.note"/>
|
||||
</div>
|
||||
<div class="o_thread_message_tools btn-group">
|
||||
<a href="#" class="btn btn-link btn-success text-muted btn-sm o_activity_done o_activity_link mr8" t-att-data-activity-id="activity.id" t-att-data-previous-activity-type-id="activity.activity_type_id[0]" data-toggle="popover">
|
||||
<i class="fa fa-check"/> Mark Done
|
||||
<a role="button" href="#" class="btn btn-link btn-success text-muted btn-sm o_activity_done o_activity_link mr8" t-att-data-activity-id="activity.id" t-att-data-previous-activity-type-id="activity.activity_type_id[0]" data-toggle="popover">
|
||||
<span class="fa fa-check">Mark Done</span>
|
||||
</a>
|
||||
<a href="#" class="btn btn-link btn-default text-muted btn-sm o_activity_edit o_activity_link" t-att-data-activity-id="activity.id">
|
||||
<i class="fa fa-pencil"/> Edit
|
||||
<a role="button" href="#" class="btn btn-link btn-default text-muted btn-sm o_activity_edit o_activity_link" t-att-data-activity-id="activity.id">
|
||||
<span class="fa fa-pencil">Edit</span>
|
||||
</a>
|
||||
<a href="#" class="btn btn-link btn-sm btn-danger text-muted o_activity_unlink o_activity_link" t-att-data-activity-id="activity.id">
|
||||
<i class="fa fa-times"/> Cancel
|
||||
<a role="button" href="#" class="btn btn-link btn-sm btn-danger text-muted o_activity_unlink o_activity_link" t-att-data-activity-id="activity.id">
|
||||
<span class="fa fa-times">Cancel</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -20,15 +20,15 @@
|
||||
|
||||
<t t-name="mail.ChatWindowsDropdown">
|
||||
<div t-attf-class="o_chat_window o_in_home_menu o_chat_window_dropdown dropup #{open ? 'open' : ''}">
|
||||
<span class="o_chat_window_dropdown_toggler dropdown-toggle" data-toggle="dropdown">
|
||||
<i class="fa fa-comments-o"/> <t t-esc="sessions.length"/>
|
||||
<span role="alert" class="o_chat_window_dropdown_toggler dropdown-toggle" data-toggle="dropdown" title="Unread messages">
|
||||
<i class="fa fa-comments-o" role="img" aria-label="Messages"/> <t t-esc="sessions.length"/>
|
||||
<span class="o_total_unread_counter">
|
||||
<t t-if="unread_counter"><t t-esc="unread_counter"/></t>
|
||||
</span>
|
||||
</span>
|
||||
<ul class="dropdown-menu">
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<t t-foreach="sessions" t-as="session">
|
||||
<li class="o_chat_header" t-att-data-session-id="session.id">
|
||||
<li role="menuitem" class="o_chat_header" t-att-data-session-id="session.id">
|
||||
<t t-call="mail.ChatWindowHeaderContent">
|
||||
<t t-set="status" t-value="session.window.status"/>
|
||||
<t t-set="title" t-value="session.window.title"/>
|
||||
@@ -42,7 +42,7 @@
|
||||
|
||||
<t t-name="mail.ChatWindowHeaderContent">
|
||||
<span t-if="widget.isMobile">
|
||||
<a href="#" class="o_chat_window_close fa fa-1x fa-arrow-left mr4"/>
|
||||
<a href="#" class="o_chat_window_close fa fa-1x fa-arrow-left mr4" aria-label="Close chat window" title="Close chat window"/>
|
||||
</span>
|
||||
<span class="o_chat_title">
|
||||
<t t-if="status" t-call="mail.chat.UserStatus"/>
|
||||
@@ -50,7 +50,7 @@
|
||||
<span t-if="unread_counter"> (<t t-esc="unread_counter"/>)</span>
|
||||
</span>
|
||||
<span t-if="!widget.isMobile" class="o_chat_window_buttons">
|
||||
<a href="#" class="o_chat_window_close fa fa-close"/>
|
||||
<a href="#" class="o_chat_window_close fa fa-close" aria-label="Close chat window" title="Close chat window"/>
|
||||
</span>
|
||||
</t>
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
|
||||
<!-- Add a button to open the full composer dialog -->
|
||||
<t t-jquery=".o_composer_button_add_attachment" t-operation="after">
|
||||
<button tabindex="6" class="btn btn-sm btn-icon fa fa-expand o_composer_button_full_composer" type="button"/>
|
||||
<button tabindex="6" class="btn btn-sm btn-icon fa fa-expand o_composer_button_full_composer" type="button" title="Full composer" aria-label="Full composer"/>
|
||||
</t>
|
||||
</t>
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
Log note
|
||||
</button>
|
||||
<button t-if="schedule_activity_btn" class="btn btn-sm btn-link o_chatter_button_schedule_activity" title="Log or schedule an activity" disabled="disabled">
|
||||
<i class="fa fa-clock-o"/> <t t-if="isMobile">Activity</t><t t-else="">Schedule activity</t>
|
||||
<i class="fa fa-clock-o" role="img" aria-label="Dates" title="Dates"/> <t t-if="isMobile">Activity</t><t t-else="">Schedule activity</t>
|
||||
</button>
|
||||
</t>
|
||||
|
||||
@@ -65,9 +65,9 @@
|
||||
Chatter main div
|
||||
-->
|
||||
<t t-name="mail.Chatter">
|
||||
<div class="o_chatter">
|
||||
<aside class="o_chatter">
|
||||
<div class="o_chatter_topbar"/>
|
||||
</div>
|
||||
</aside>
|
||||
</t>
|
||||
|
||||
</templates>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
<div t-name="mail.ChatComposer" t-attf-class="o_chat_composer #{widget.extended ? 'o_chat_composer_extended' : (widget.notInline ? '' : 'o_chat_inline_composer')} #{widget.isMini ? 'o_chat_mini_composer' : ''}">
|
||||
<div class="o_composer_container">
|
||||
<img t-if="widget.avatarURL" height="36" width="36" class="o_thread_message_sidebar o_chatter_avatar img-circle" t-att-src="widget.avatarURL"/>
|
||||
<img t-if="widget.avatarURL" height="36" width="36" class="o_thread_message_sidebar o_chatter_avatar img-circle" t-att-src="widget.avatarURL" alt="Avatar"/>
|
||||
<div t-if="widget.extended" class="o_composer_subject">
|
||||
<input tabindex="1" type="text" placeholder="Subject" class="o_input"/>
|
||||
</div>
|
||||
@@ -11,9 +11,9 @@
|
||||
<div class="o_composer_input">
|
||||
<textarea class="o_input o_composer_text_field" tabindex="2" placeholder="Write something..."/>
|
||||
<div class="o_chatter_composer_tools">
|
||||
<button tabindex="4" class="btn btn-sm btn-icon fa fa-smile-o o_composer_button_emoji" type="button" data-toggle="popover"/>
|
||||
<button tabindex="5" class="btn btn-sm btn-icon fa fa-paperclip o_composer_button_add_attachment" type="button"/>
|
||||
<button t-if="widget.options.isMobile" tabindex="3" class="btn btn-sm btn-icon fa fa-paper-plane-o o_composer_button_send" type="button"/>
|
||||
<button tabindex="4" class="btn btn-sm btn-icon fa fa-smile-o o_composer_button_emoji" type="button" data-toggle="popover" title="Emojis" aria-label="Emojis"/>
|
||||
<button tabindex="5" class="btn btn-sm btn-icon fa fa-paperclip o_composer_button_add_attachment" type="button" aria-label="Add attachment" title="Add attachment"/>
|
||||
<button t-if="widget.options.isMobile" tabindex="3" class="btn btn-sm btn-icon fa fa-paper-plane-o o_composer_button_send" type="button" title="Send" aria-label="Send"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -36,18 +36,18 @@
|
||||
|
||||
<div t-name="mail.ChatComposer.emojis" class="o_mail_emoji_container">
|
||||
<t t-foreach="emojis" t-as="emoji">
|
||||
<button t-att-data-emoji="emoji.source" class="btn btn-link o_mail_emoji" t-att-title="emoji.description">
|
||||
<button t-att-data-emoji="emoji.source" class="btn btn-link o_mail_emoji" t-att-title="emoji.description" t-att-aria-label="emoji.description">
|
||||
<t t-raw="emoji.unicode_source"/>
|
||||
</button>
|
||||
</t>
|
||||
</div>
|
||||
|
||||
<t t-name="mail.AbstractMentionSuggestions">
|
||||
<ul class="dropdown-menu" aria-labelledby="dropdownMailMentionMenu">
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<t t-foreach="suggestions" t-as="suggestion">
|
||||
<li t-if="suggestion.divider" class="divider"/>
|
||||
<li role="separator" t-if="suggestion.divider" class="divider"/>
|
||||
<li t-if="!suggestion.divider" class="o_mention_proposition" t-att-data-id="suggestion.id">
|
||||
<a href="#"/>
|
||||
<a role="menuitem" href="#"/>
|
||||
</li>
|
||||
</t>
|
||||
</ul>
|
||||
@@ -79,15 +79,15 @@
|
||||
</t>
|
||||
|
||||
<t t-name="FieldMany2ManyTagsEmail" t-extend="FieldMany2ManyTag">
|
||||
<t t-jquery="span[t-attf-class*=badge]" t-operation="replace">
|
||||
<t t-jquery="button[t-attf-class*=badge]" t-operation="replace">
|
||||
<t t-set="email_error" t-value="''"/>
|
||||
<t t-if="el.email.indexOf('@') < 0">
|
||||
<t t-set="email_error" t-value="'o_tag_error'"/>
|
||||
</t>
|
||||
<span t-attf-class="badge dropdown o_tag_color_0 #{email_error}" t-att-data-color="color" t-att-data-index="el_index" t-att-data-id="el.id">
|
||||
<button t-attf-class="badge dropdown o_tag_color_0 #{email_error}" t-att-data-color="color" t-att-data-index="el_index" t-att-data-id="el.id">
|
||||
<span class="o_badge_text" t-attf-title="#{el.email}"><t t-esc="el.display_name"/></span>
|
||||
<span t-if="!readonly" class="fa fa-times o_delete"/>
|
||||
</span>
|
||||
<span t-if="!readonly" class="fa fa-times o_delete" role="img" aria-label="Delete" title="Delete"/>
|
||||
</button>
|
||||
</t>
|
||||
</t>
|
||||
</templates>
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
<t t-if="widget.notification_bar">
|
||||
<div class="o_mail_annoying_notification_bar">
|
||||
<span class="o_mail_request_permission">Odoo needs your permission to <a href="#"> enable desktop notifications</a>.</span>
|
||||
<span class="fa fa-close"></span>
|
||||
<span class="fa fa-close" role="button" aria-label="Close" title="Close"></span>
|
||||
</div>
|
||||
</t>
|
||||
</div>
|
||||
@@ -19,13 +19,13 @@
|
||||
<div class="o_mail_chat_sidebar">
|
||||
<div t-attf-class="o_mail_chat_title_main o_mail_chat_channel_item #{(active_channel_id === 'channel_inbox') ? 'o_active': ''}"
|
||||
data-channel-id="channel_inbox">
|
||||
<span class="o_channel_name"><i class="fa fa-inbox mr8"/>Inbox</span>
|
||||
<span class="o_channel_name fa fa-inbox mr8">Inbox</span>
|
||||
<t t-set="counter" t-value="needaction_counter"/>
|
||||
<t t-call="mail.chat.SidebarNeedaction"/>
|
||||
</div>
|
||||
<div t-attf-class="o_mail_chat_title_main o_mail_chat_title_starred o_mail_chat_channel_item #{(active_channel_id === 'channel_starred') ? 'o_active': ''}"
|
||||
data-channel-id="channel_starred">
|
||||
<span class="o_channel_name"><i class="fa fa-star-o mr8"/>Starred</span>
|
||||
<span class="o_channel_name fa fa-star-o mr8">Starred</span>
|
||||
<t t-set="counter" t-value="starred_counter"/>
|
||||
<t t-call="mail.chat.SidebarNeedaction"/>
|
||||
</div>
|
||||
@@ -87,10 +87,10 @@
|
||||
<t t-if="!disable_add_channel || !empty">
|
||||
<div class="o_mail_sidebar_title">
|
||||
<h4 t-att-class="channel_type == 'public' ? 'o_mail_open_channels' : ''">
|
||||
<i t-if="channel_icon" t-attf-class="mr4 fa-fw fa #{channel_icon}"></i>
|
||||
<i t-if="channel_icon" t-attf-class="mr4 fa-fw fa #{channel_icon}" role="img" aria-label="Channel" title="Channel"></i>
|
||||
<b><t t-esc="channel_title"/></b>
|
||||
</h4>
|
||||
<span t-if="!disable_add_channel" class="fa fa-plus o_add" title="Add" t-attf-data-type="#{channel_type}"/>
|
||||
<span t-if="!disable_add_channel" class="fa fa-plus o_add" title="Add" t-attf-data-type="#{channel_type}" role="img" aria-label="Add"/>
|
||||
</div>
|
||||
</t>
|
||||
</t>
|
||||
@@ -111,21 +111,21 @@
|
||||
</span>
|
||||
<span t-if="display_hash" class="o_mail_hash">#</span>
|
||||
<t t-esc="channel.name"/>
|
||||
<i t-if="channel.mass_mailing" class="fa fa-envelope-o" title="Sends messages by email"/>
|
||||
<i t-if="channel.mass_mailing" class="fa fa-envelope-o" title="Sends messages by email" role="img" aria-label="Send by mail"/>
|
||||
</span>
|
||||
<span t-attf-class="fa fa-cog o_mail_channel_settings"
|
||||
title="Channel settings" t-att-data-channel-id="channel.id"/>
|
||||
title="Channel settings" role="img" aria-label="Channel settings" t-att-data-channel-id="channel.id"/>
|
||||
<t t-call="mail.chat.SidebarNeedaction"/>
|
||||
<span t-if="! channel.group_based_subscription" t-attf-class="fa fa-times o_mail_partner_unpin #{counter ? 'hide' : ''}"
|
||||
title="Leave this channel" t-att-data-channel-id="channel.id"/>
|
||||
title="Leave this channel" role="img" aria-label="Leave this channel" t-att-data-channel-id="channel.id"/>
|
||||
</div>
|
||||
</t>
|
||||
</t>
|
||||
|
||||
<t t-name="mail.chat.UserStatus">
|
||||
<i t-if="status == 'online'" class="o_mail_user_status o_user_online fa fa-circle" title="Online"/>
|
||||
<i t-if="status == 'away'" class="o_mail_user_status o_user_idle fa fa-circle" title="Idle"/>
|
||||
<i t-if="status == 'offline'" class="o_mail_user_status fa fa-circle-o" title="Offline"/>
|
||||
<i t-if="status == 'online'" class="o_mail_user_status o_user_online fa fa-circle" title="Online" role="img" aria-label="User is online"/>
|
||||
<i t-if="status == 'away'" class="o_mail_user_status o_user_idle fa fa-circle" title="Idle" role="img" aria-label="User is idle"/>
|
||||
<i t-if="status == 'offline'" class="o_mail_user_status fa fa-circle-o" title="Offline" role="img" aria-label="User is offline"/>
|
||||
</t>
|
||||
|
||||
<t t-name="mail.chat.MessageSentSnackbar">
|
||||
@@ -174,20 +174,16 @@
|
||||
<div class="o_mail_chat_content"/>
|
||||
<div class="o_mail_mobile_tabs">
|
||||
<div class="o_mail_mobile_tab" data-type="channel_inbox">
|
||||
<span class="fa fa-inbox"/>
|
||||
<span class="o_tab_title">Inbox</span>
|
||||
<span class="o_tab_title fa fa-inbox">Inbox</span>
|
||||
</div>
|
||||
<div class="o_mail_mobile_tab" data-type="dm">
|
||||
<span class="fa fa-user"/>
|
||||
<span class="o_tab_title">Chat</span>
|
||||
<span class="o_tab_title fa fa-user">Chat</span>
|
||||
</div>
|
||||
<div class="o_mail_mobile_tab" data-type="public">
|
||||
<span class="fa fa-users"/>
|
||||
<span class="o_tab_title">Channels</span>
|
||||
<span class="o_tab_title fa fa-users">Channels</span>
|
||||
</div>
|
||||
<div class="o_mail_mobile_tab" data-type="private">
|
||||
<span class="fa fa-eye-slash"/>
|
||||
<span class="o_tab_title">Private Channels</span>
|
||||
<span class="o_tab_title fa fa-eye-slash">Private Channels</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -212,9 +208,9 @@
|
||||
<div t-attf-class="o_mail_channel_preview #{channel.unread_counter ? 'o_channel_unread' : ''}"
|
||||
t-att-data-channel_id="channel.id" t-att-data-res_id="channel.res_id" t-att-data-res_model="channel.model">
|
||||
<div t-attf-class="o_mail_channel_image #{channel.model? 'o_mail_channel_app' : ''}">
|
||||
<img class="o_mail_channel_image" t-att-src="channel.image_src"/>
|
||||
<i t-if="channel.status === 'online'" class="o_mail_user_status o_user_online fa fa-circle" title="Online"/>
|
||||
<i t-if="channel.status === 'away'" class="o_mail_user_status o_user_idle fa fa-circle" title="Idle"/>
|
||||
<img class="o_mail_channel_image" t-att-src="channel.image_src" alt="Channel"/>
|
||||
<i t-if="channel.status === 'online'" class="o_mail_user_status o_user_online fa fa-circle" title="Online" role="img" aria-label="User is online"/>
|
||||
<i t-if="channel.status === 'away'" class="o_mail_user_status o_user_idle fa fa-circle" title="Idle" role="img" aria-label="User is idle"/>
|
||||
</div>
|
||||
<div class="o_channel_info">
|
||||
<div class="o_channel_title">
|
||||
@@ -228,7 +224,7 @@
|
||||
</div>
|
||||
<div t-if="channel.last_message" class="o_last_message_preview">
|
||||
<t t-if="channel.last_message.is_author">
|
||||
<span class="fa fa-mail-reply"/> You:
|
||||
<span class="fa fa-mail-reply" role="img" aria-label="Reply"/> You:
|
||||
</t>
|
||||
<t t-else="">
|
||||
<t t-if="channel.last_message.displayed_author">
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
<t t-extend="mail.ChatWindowHeaderContent">
|
||||
<t t-jquery=".o_chat_window_buttons" t-operation="prepend">
|
||||
<a href="#" class="o_chat_window_expand fa fa-expand" title="Open in Discuss"/>
|
||||
<a href="#" class="o_chat_window_expand fa fa-expand" title="Open in Discuss" aria-label="Open in discuss"/>
|
||||
</t>
|
||||
</t>
|
||||
|
||||
|
||||
@@ -7,9 +7,9 @@
|
||||
<t t-name="mail.Followers">
|
||||
<div class="o_followers">
|
||||
<div class="o_followers_title_box">
|
||||
<button class="btn btn-sm btn-link dropdown-toggle"
|
||||
<button class="btn btn-sm btn-link dropdown-toggle" title="Dropdown menu - Followers"
|
||||
data-toggle="dropdown" aria-expanded="false">
|
||||
<i class="fa fa-user"></i>
|
||||
<i class="fa fa-user" role="img" aria-label="Dropdown menu - Followers"></i>
|
||||
<span class="o_followers_count"/>
|
||||
</button>
|
||||
<ul class="dropdown-menu o_followers_list" role="menu"></ul>
|
||||
@@ -18,12 +18,10 @@
|
||||
<div class="btn-group btn-group-sm o_subtypes_list">
|
||||
<button class="btn btn-sm btn-link o_followers_follow_button o_followers_notfollow">
|
||||
<span class="o_follow">Follow</span>
|
||||
<span class="fa fa-times o_followers_unfollow"/>
|
||||
<span class="o_followers_unfollow"> Unfollow</span>
|
||||
<span class="fa fa-check o_followers_following"/>
|
||||
<span class="o_followers_following"> Following</span>
|
||||
<span class="fa fa-times o_followers_unfollow"> Unfollow</span>
|
||||
<span class="fa fa-check o_followers_following"> Following</span>
|
||||
</button><button class="btn btn-sm btn-link dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
|
||||
<span class="fa fa-bell"/>
|
||||
<span class="fa fa-bell" role="img" aria-label="Alarm menu" title="Alarm menu"/>
|
||||
</button>
|
||||
<ul class="dropdown-menu" role="menu"/>
|
||||
</div>
|
||||
@@ -35,8 +33,8 @@
|
||||
Partner or channel following the record
|
||||
-->
|
||||
<t t-name="mail.Followers.partner">
|
||||
<li class='o_partner'>
|
||||
<img t-att-src="record.avatar_url"/>
|
||||
<li role="menuitem" class='o_partner'>
|
||||
<img t-att-src="record.avatar_url" alt="Avatar"/>
|
||||
<a class="o_mail_redirect"
|
||||
href="#"
|
||||
t-att-title="record.name"
|
||||
@@ -44,10 +42,12 @@
|
||||
t-att-data-oe-id="record.res_id"><t t-esc="record.name"/></a>
|
||||
<i t-if="record.is_editable" class="fa fa-pencil o_edit_subtype hide"
|
||||
title="Edit subscription"
|
||||
aria-label="Edit subscription" role="img"
|
||||
t-att-data-follower-id="record.id"
|
||||
t-att-data-oe-id="record.res_id"
|
||||
t-att-data-oe-model="record.res_model"/>
|
||||
<i t-if="widget.isEditable" class="fa fa-remove o_remove_follower"
|
||||
aria-label="Remove this follower" role="img"
|
||||
title="Remove this follower"/>
|
||||
</li>
|
||||
</t>
|
||||
@@ -57,13 +57,13 @@
|
||||
-->
|
||||
<t t-name="mail.Followers.add_more">
|
||||
<t t-if="widget.isEditable">
|
||||
<li class="o_add_follower">
|
||||
<li role="menuitem" class="o_add_follower">
|
||||
<a href="#"> Add Followers </a>
|
||||
</li>
|
||||
<li class="o_add_follower_channel">
|
||||
<li role="menuitem" class="o_add_follower_channel">
|
||||
<a href="#"> Add Channels </a>
|
||||
</li>
|
||||
<li t-if="widget.followers.length > 0" class="divider"/>
|
||||
<li role="separator" t-if="widget.followers.length > 0" class="divider"/>
|
||||
</t>
|
||||
</t>
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
Message subtypes of a follower subscription
|
||||
-->
|
||||
<t t-name="mail.Followers.subtype">
|
||||
<li class="o_subtype">
|
||||
<li role="menuitem" class="o_subtype">
|
||||
<div class="o_checkbox">
|
||||
<input type="checkbox" t-att-checked="record.followed"
|
||||
t-att-id="'input_mail_followers_subtype_'+record.id+(dialog ? '_in_dialog': '')"
|
||||
@@ -81,12 +81,12 @@
|
||||
<span t-att-for="'input_mail_followers_subtype_'+record.id+(dialog ? '_in_dialog': '')">
|
||||
<t t-esc="record.name"/>
|
||||
</span>
|
||||
<i t-if="display_warning" class="fa fa-warning text-warning"/>
|
||||
<i t-if="display_warning" class="fa fa-warning text-warning" role="img" aria-label="Warning" title="Warning"/>
|
||||
</li>
|
||||
</t>
|
||||
<t t-name="mail.Followers.subtypes.warning">
|
||||
<span class="text-warning">
|
||||
<i class="fa fa-warning"/> Be careful with channels following internal notifications
|
||||
<span class="text-warning" role="alert">
|
||||
<span class="fa fa-warning"> Be careful with channels following internal notifications</span>
|
||||
</span>
|
||||
</t>
|
||||
|
||||
|
||||
@@ -4,15 +4,15 @@
|
||||
<t t-name="mail.chat.MessagingMenu">
|
||||
<li class="o_mail_navbar_item">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" aria-expanded="false" title="Conversations" href="#">
|
||||
<i class="fa fa-comments"/> <span class="o_notification_counter badge"/>
|
||||
<i class="fa fa-comments" role="img" aria-label="Messages"/> <span class="o_notification_counter badge"/>
|
||||
</a>
|
||||
<ul class="o_mail_navbar_dropdown dropdown-menu" role="menu">
|
||||
<li t-if="widget.isMobile">
|
||||
<li role="menuitem" t-if="widget.isMobile">
|
||||
<div class="o_mail_navbar_mobile_header">
|
||||
<button type="button" class="btn btn-default btn-sm o_new_message"> New message </button>
|
||||
</div>
|
||||
</li>
|
||||
<li t-if="!widget.isMobile" class="o_mail_navbar_dropdown_top">
|
||||
<li role="menuitem" t-if="!widget.isMobile" class="o_mail_navbar_dropdown_top">
|
||||
<div>
|
||||
<button type="button" class="btn btn-sm btn-link o_filter_button active"> All </button>
|
||||
<button type="button" class="btn btn-sm btn-link o_filter_button" data-filter='chat'> Chat </button>
|
||||
@@ -20,20 +20,17 @@
|
||||
</div>
|
||||
<button type="button" class="btn btn-sm btn-link o_new_message"> New message </button>
|
||||
</li>
|
||||
<li class="o_mail_navbar_dropdown_channels"/>
|
||||
<li t-if="widget.isMobile">
|
||||
<li role="menuitem" class="o_mail_navbar_dropdown_channels"/>
|
||||
<li role="menuitem" t-if="widget.isMobile">
|
||||
<div class="o_mail_mobile_tabs">
|
||||
<div class="o_mail_mobile_tab o_filter_button active">
|
||||
<span class="fa fa-envelope"/>
|
||||
<span class="o_tab_title">All</span>
|
||||
<span class="o_tab_title fa fa-envelope">All</span>
|
||||
</div>
|
||||
<div class="o_mail_mobile_tab o_filter_button" data-filter='chat'>
|
||||
<span class="fa fa-user"/>
|
||||
<span class="o_tab_title">Chat</span>
|
||||
<span class="o_tab_title fa fa-user">Chat</span>
|
||||
</div>
|
||||
<div class="o_mail_mobile_tab o_filter_button" data-filter='channels'>
|
||||
<span class="fa fa-users"/>
|
||||
<span class="o_tab_title">Channels</span>
|
||||
<span class="o_tab_title fa fa-users">Channels</span>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
@@ -61,7 +58,7 @@
|
||||
<t t-foreach="activities" t-as="activity">
|
||||
<div class="o_mail_channel_preview" t-att-data-res_model="activity.model" t-att-data-model_name="activity.name" data-filter='my'>
|
||||
<div class="o_mail_channel_image o_mail_channel_app">
|
||||
<img t-att-src="activity.icon"/>
|
||||
<img t-att-src="activity.icon" alt="Activity"/>
|
||||
</div>
|
||||
<div class="o_channel_info">
|
||||
<div class="o_channel_title">
|
||||
@@ -85,10 +82,10 @@
|
||||
<t t-name="mail.chat.ActivityMenu">
|
||||
<li class="o_mail_navbar_item">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" aria-expanded="false" title="Activities" href="#">
|
||||
<i class="fa fa-clock-o"/> <span class="o_notification_counter badge"/>
|
||||
<i class="fa fa-clock-o" role="img" aria-label="Activities"/> <span class="o_notification_counter badge"/>
|
||||
</a>
|
||||
<ul class="o_mail_navbar_dropdown dropdown-menu" role="menu">
|
||||
<li class="o_mail_navbar_dropdown_channels"/>
|
||||
<li role="menuitem" class="o_mail_navbar_dropdown_channels"/>
|
||||
</ul>
|
||||
</li>
|
||||
</t>
|
||||
|
||||
@@ -23,20 +23,20 @@
|
||||
<div class="o_viewer_content">
|
||||
<div class="o_viewer-header">
|
||||
<span class="o_image_caption">
|
||||
<i class="fa fa-picture-o mr8" t-if="widget.activeAttachment.type == 'image'"/>
|
||||
<i class="fa fa-file-text mr8" t-if="widget.activeAttachment.type == 'application/pdf'"/>
|
||||
<i class="fa fa-video-camera mr8" t-if="widget.activeAttachment.type == 'video'"/>
|
||||
<i class="fa fa-picture-o mr8" t-if="widget.activeAttachment.type == 'image'" role="img" aria-label="Image" title="Image"/>
|
||||
<i class="fa fa-file-text mr8" t-if="widget.activeAttachment.type == 'application/pdf'" role="img" aria-label="PDF file" title="PDF file"/>
|
||||
<i class="fa fa-video-camera mr8" t-if="widget.activeAttachment.type == 'video'" role="img" aria-label="Video" title="Video"/>
|
||||
<t t-esc="widget.activeAttachment.name"/>
|
||||
<a href="#" class="o_download_btn ml8 small" data-toggle="tooltip" data-placement="right" title="Download"><i class="fa fa-fw fa-download"/></a>
|
||||
<a role="button" href="#" class="o_download_btn ml8 small" data-toggle="tooltip" data-placement="right" title="Download"><i class="fa fa-fw fa-download" role="img" aria-label="Download"/></a>
|
||||
</span>
|
||||
<a class="o_close_btn pull-right" href="#">×</a>
|
||||
<a role="button" class="o_close_btn pull-right" href="#" aria-label="Close" title="Close">×</a>
|
||||
</div>
|
||||
<div class="o_viewer_img_wrapper">
|
||||
<div class="o_viewer_zoomer">
|
||||
<div t-if="widget.activeAttachment.type == 'image'" class="o_loading_img text-center">
|
||||
<i class="fa fa-circle-o-notch fa-spin text-gray-light fa-3x fa-fw" aria-hidden="true"/>
|
||||
<i class="fa fa-circle-o-notch fa-spin text-gray-light fa-3x fa-fw" role="img" aria-label="Loading" title="Loading"/>
|
||||
</div>
|
||||
<img t-if="widget.activeAttachment.type == 'image'" class="o_viewer_img" t-attf-src="/web/image/#{widget.activeAttachment.id}?unique=1"/>
|
||||
<img t-if="widget.activeAttachment.type == 'image'" class="o_viewer_img" t-attf-src="/web/image/#{widget.activeAttachment.id}?unique=1" alt="Viewer"/>
|
||||
<iframe class="mt32 o_viewer_pdf" t-if="widget.activeAttachment.type == 'application/pdf'" t-attf-src="/web/static/lib/pdfjs/web/viewer.html?file=/web/content/#{widget.activeAttachment.id}" />
|
||||
<video t-if="widget.activeAttachment.type == 'video'" class="o_viewer_video" controls="controls">
|
||||
<source t-attf-src="/web/image/#{widget.activeAttachment.id}" t-att-data-type="widget.activeAttachment.mimetype"/>
|
||||
@@ -45,31 +45,31 @@
|
||||
</div>
|
||||
<div t-if="widget.activeAttachment.type == 'image'" class="o_viewer_toolbar btn-toolbar" role="toolbar">
|
||||
<div class="btn-group ml0" role="group">
|
||||
<a href="#" class="o_viewer_toolbar_btn btn o_zoom_in" data-toggle="tooltip" title="Zoom In"><i class="fa fa-fw fa-plus"/></a>
|
||||
<a href="#" class="o_viewer_toolbar_btn btn o_zoom_reset disabled" data-toggle="tooltip" title="Reset Zoom"><i class="fa fa-fw fa-search"/></a>
|
||||
<a href="#" class="o_viewer_toolbar_btn btn o_zoom_out disabled" data-toggle="tooltip" title="Zoom Out"><i class="fa fa-fw fa-minus"/></a>
|
||||
<a role="button" href="#" class="o_viewer_toolbar_btn btn o_zoom_in" data-toggle="tooltip" title="Zoom In"><i class="fa fa-fw fa-plus" role="img" aria-label="Zoom In"/></a>
|
||||
<a role="button" href="#" class="o_viewer_toolbar_btn btn o_zoom_reset disabled" data-toggle="tooltip" title="Reset Zoom"><i class="fa fa-fw fa-search" role="img" aria-label="Reset Zoom"/></a>
|
||||
<a role="button" href="#" class="o_viewer_toolbar_btn btn o_zoom_out disabled" data-toggle="tooltip" title="Zoom Out"><i class="fa fa-fw fa-minus" role="img" aria-label="Zoom Out"/></a>
|
||||
</div>
|
||||
<div class="btn-group ml8" role="group">
|
||||
<a href="#" class="o_viewer_toolbar_btn btn o_rotate" data-toggle="tooltip" title="Rotate"><i class="fa fa-fw fa-repeat"/></a>
|
||||
<a role="button" href="#" class="o_viewer_toolbar_btn btn o_rotate" data-toggle="tooltip" title="Rotate"><i class="fa fa-fw fa-repeat" role="img" aria-label="Rotate"/></a>
|
||||
</div>
|
||||
<div class="btn-group ml8" role="group">
|
||||
<a href="#" class="o_viewer_toolbar_btn btn o_print_btn" data-toggle="tooltip" title="Print"><i class="fa fa-fw fa-print"/></a>
|
||||
<a href="#" class="o_viewer_toolbar_btn btn o_download_btn" data-toggle="tooltip" title="Download"><i class="fa fa-fw fa-download"/></a>
|
||||
<a role="button" href="#" class="o_viewer_toolbar_btn btn o_print_btn" data-toggle="tooltip" title="Print"><i class="fa fa-fw fa-print" role="img" aria-label="Print"/></a>
|
||||
<a role="button" href="#" class="o_viewer_toolbar_btn btn o_download_btn" data-toggle="tooltip" title="Download"><i class="fa fa-fw fa-download" role="img" aria-label="Download"/></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
|
||||
<t t-name="DocumentViewer">
|
||||
<div class="modal o_modal_fullscreen" tabindex="-1" data-keyboard="false" role="dialog" aria-hidden="true">
|
||||
<div class="modal o_modal_fullscreen" tabindex="-1" data-keyboard="false" role="dialog">
|
||||
<t t-call="DocumentViewer.Content"/>
|
||||
|
||||
<t t-if="widget.attachment.length != 1">
|
||||
<a class="arrow arrow-left move_previous" href="#">
|
||||
<span class="fa fa-chevron-left"/>
|
||||
<span class="fa fa-chevron-left" role="img" aria-label="Previous" title="Previous"/>
|
||||
</a>
|
||||
<a class="arrow arrow-right move_next" href="#">
|
||||
<span class="fa fa-chevron-right"/>
|
||||
<span class="fa fa-chevron-right" role="img" aria-label="Next" title="Next"/>
|
||||
</a>
|
||||
</t>
|
||||
</div>
|
||||
@@ -88,7 +88,7 @@
|
||||
</script>
|
||||
</head>
|
||||
<body onload='onload_img()'>
|
||||
<img t-att-src='src' />
|
||||
<img t-att-src='src' alt=""/>
|
||||
</body>
|
||||
</html>
|
||||
</t>
|
||||
@@ -129,6 +129,7 @@
|
||||
<div t-if="options.display_avatar" class="o_thread_message_sidebar">
|
||||
<t t-if="!message.mailto and message.author_id[0]">
|
||||
<img t-if="message.avatar_src and message.display_author"
|
||||
alt=""
|
||||
t-att-src="message.avatar_src"
|
||||
data-oe-model="res.partner"
|
||||
t-att-data-oe-id="message.author_redirect ? message.author_id[0] : ''"
|
||||
@@ -136,6 +137,7 @@
|
||||
</t>
|
||||
<t t-if="message.mailto || !message.author_id[0]">
|
||||
<img t-if="message.avatar_src and message.display_author"
|
||||
alt=""
|
||||
t-att-src="message.avatar_src"
|
||||
class="o_thread_message_avatar img-circle"/>
|
||||
</t>
|
||||
@@ -144,7 +146,7 @@
|
||||
</span>
|
||||
<i t-if="!message.display_author and options.display_stars and message.message_type != 'notification'"
|
||||
t-att-class="'fa o_thread_message_star o_thread_icon ' + (message.is_starred ? 'fa-star' : 'fa-star-o')"
|
||||
t-att-data-message-id="message.id" title="Mark as Todo"/>
|
||||
t-att-data-message-id="message.id" title="Mark as Todo" role="img" aria-label="Mark as todo"/>
|
||||
</div>
|
||||
<div class="o_thread_message_core">
|
||||
<p t-if="message.display_author" class="o_mail_info text-muted">
|
||||
@@ -183,11 +185,11 @@
|
||||
<span class="o_thread_tooltip_content">
|
||||
<t t-foreach="message.customer_email_data" t-as="customer">
|
||||
<span>
|
||||
<t t-if="customer[2] === 'sent'"><i class='fa fa-check'/></t>
|
||||
<t t-if="customer[2] === 'bounce'"><i class='fa fa-exclamation'/></t>
|
||||
<t t-if="customer[2] === 'exception'"><i class='fa fa-exclamation'/></t>
|
||||
<t t-if="customer[2] === 'ready'"><i class='fa fa-send-o'/></t>
|
||||
<t t-if="customer[2] === 'canceled'"><i class='fa fa-trash-o'/></t>
|
||||
<t t-if="customer[2] === 'sent'"><i class='fa fa-check' title="Sent" role="img" aria-label="Sent"/></t>
|
||||
<t t-if="customer[2] === 'bounce'"><i class='fa fa-exclamation' title="Bounced" role="img" aria-label="Bounced"/></t>
|
||||
<t t-if="customer[2] === 'exception'"><i class='fa fa-exclamation' title="Error" role="img" aria-label="Error"/></t>
|
||||
<t t-if="customer[2] === 'ready'"><i class='fa fa-send-o' title="Ready" role="img" aria-label="Ready"/></t>
|
||||
<t t-if="customer[2] === 'canceled'"><i class='fa fa-trash-o' title="Canceled" role="img" aria-label="Canceled"/></t>
|
||||
<t t-esc="customer[1]"/>
|
||||
</span>
|
||||
<br />
|
||||
@@ -197,13 +199,13 @@
|
||||
<span t-attf-class="o_thread_icons">
|
||||
<i t-if="options.display_stars and !message.is_system_notification and !message.needsModeration"
|
||||
t-att-class="'fa fa-lg o_thread_icon o_thread_message_star ' + (message.is_starred ? 'fa-star' : 'fa-star-o')"
|
||||
t-att-data-message-id="message.id" title="Mark as Todo"/>
|
||||
t-att-data-message-id="message.id" title="Mark as Todo" role="img" aria-label="Mark as Todo"/>
|
||||
<i t-if="message.record_name && message.model != 'mail.channel' && options.display_reply_icon"
|
||||
class="fa fa-reply o_thread_icon o_thread_message_reply"
|
||||
t-att-data-message-id="message.id" title="Reply"/>
|
||||
t-att-data-message-id="message.id" title="Reply" role="img" aria-label="Reply"/>
|
||||
<i t-if="message.is_needaction && options.display_needactions"
|
||||
class="fa fa-check o_thread_icon o_thread_message_needaction"
|
||||
t-att-data-message-id="message.id" title="Mark as Read"/>
|
||||
t-att-data-message-id="message.id" title="Mark as Read" role="img" aria-label="Mark as Read"/>
|
||||
|
||||
<t t-if="message.needsModeration and message.model === 'mail.channel'">
|
||||
<t t-if="message.isModerator">
|
||||
@@ -279,7 +281,7 @@
|
||||
<t t-esc="value.changed_field"/>:
|
||||
<t t-if="value.old_value">
|
||||
<span> <t t-esc="value.old_value || ((value.field_type !== 'boolean') and '')"/> </span>
|
||||
<span t-if="value.old_value != value.new_value" class="fa fa-long-arrow-right"/>
|
||||
<span t-if="value.old_value != value.new_value" class="fa fa-long-arrow-right" role="img" aria-label="Changed" title="Changed"/>
|
||||
</t>
|
||||
<span t-if="value.old_value != value.new_value">
|
||||
<t t-esc="value.new_value || ((value.field_type !== 'boolean') and '')"/>
|
||||
@@ -307,7 +309,7 @@
|
||||
<div t-attf-class="o_image_overlay o_attachment_view" t-att-data-id="attachment.id">
|
||||
<span class="o_attachment_title text-white"><t t-esc="attachment.name"/></span>
|
||||
<a class="o_attachment_download" t-att-href='attachment.url'>
|
||||
<i t-attf-class="fa fa-download text-white" t-att-title="'Download ' + attachment.name" aria-hidden="true"></i>
|
||||
<i t-attf-class="fa fa-download text-white" t-att-title="'Download ' + attachment.name" role="img" aria-label="Download"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -328,10 +330,10 @@
|
||||
t-att-style="type == 'image' ? 'background-image:url(/web/image/' + attachment.id + '/38x38/?crop=true' : '' "
|
||||
t-att-data-mimetype="attachment.mimetype">
|
||||
</div>
|
||||
<a t-elif="!editable" t-att-href='attachment.url' t-att-title="'Download ' + attachment.name">
|
||||
<a t-elif="!editable" t-att-href='attachment.url' t-att-title="'Download ' + attachment.name" aria-label="Download">
|
||||
<span class="o_image o_hover" t-att-data-mimetype="attachment.mimetype" t-att-data-ext="ext"/>
|
||||
</a>
|
||||
<span t-else="" class="o_image" t-att-data-mimetype="attachment.mimetype" t-att-data-ext="ext"/>
|
||||
<span t-else="" class="o_image" t-att-data-mimetype="attachment.mimetype" t-att-data-ext="ext" role="img" aria-label="Document not downloadable"/>
|
||||
</div>
|
||||
|
||||
<div class="caption">
|
||||
@@ -347,10 +349,10 @@
|
||||
<div t-if="!editable" class="caption small">
|
||||
<b t-if="has_preview" class="ml4 small text-uppercase o_attachment_view" t-att-data-id="attachment.id"><t t-esc="ext"/></b>
|
||||
<a t-else="" class="ml4 small text-uppercase" t-att-href="attachment.url" t-att-title="'Download ' + attachment.name"><b><t t-esc='ext'/></b></a>
|
||||
<a class="ml4 o_attachment_download pull-right" t-att-title="'Download ' + attachment.name" t-att-href='attachment.url'><i t-attf-class="fa fa-download"/></a>
|
||||
<a class="ml4 o_attachment_download pull-right" t-att-title="'Download ' + attachment.name" t-att-href='attachment.url'><i t-attf-class="fa fa-download" role="img" aria-label="Download"/></a>
|
||||
</div>
|
||||
<div t-if="editable" class="o_attachment_uploaded"><i class="text-success fa fa-check"/></div>
|
||||
<div t-if="editable" class="o_attachment_delete" t-att-data-id="attachment.id"><span class="text-white">×</span></div>
|
||||
<div t-if="editable" class="o_attachment_uploaded"><i class="text-success fa fa-check" role="img" aria-label="Uploaded" title="Uploaded"/></div>
|
||||
<div t-if="editable" class="o_attachment_delete" t-att-data-id="attachment.id"><span class="text-white" role="img" aria-label="Delete" title="Delete">×</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
@@ -358,7 +360,7 @@
|
||||
<t t-name="mail.ChatThread.LoadMore">
|
||||
<div class="o_thread_show_more">
|
||||
<t t-if="options.loadMoreOnScroll">
|
||||
<span><i class="fa fa-spinner fa-spin"/> Loading older messages... </span>
|
||||
<span><i class="fa fa-spinner fa-spin" role="img" aria-label="Please wait" title="Please wait"/> Loading older messages... </span>
|
||||
</t>
|
||||
<t t-else="">
|
||||
<button class="btn btn-sm btn-link">-------- Show older messages --------</button>
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
|
||||
<t t-name="mail.KanbanActivity">
|
||||
<div class="o_kanban_inline_block dropdown o_kanban_selection o_mail_activity">
|
||||
<a class="dropdown-toggle o_activity_btn" data-toggle="dropdown">
|
||||
<span class="fa fa-clock-o fa-lg fa-fw" t-att-title="widget.selection[widget.activity_state]"/>
|
||||
<a role="button" class="dropdown-toggle o_activity_btn" data-toggle="dropdown">
|
||||
<span class="fa fa-clock-o fa-lg fa-fw" t-att-title="widget.selection[widget.activity_state]" role="img" t-att-aria-label="widget.selection[widget.activity_state]"/>
|
||||
</a>
|
||||
<ul class="dropdown-menu o_activity" role="menu">
|
||||
</ul>
|
||||
@@ -13,49 +13,49 @@
|
||||
|
||||
<t t-name="mail.KanbanActivityLoading">
|
||||
<li class="text-center o_no_activity">
|
||||
<span class="fa fa-spinner fa-spin fa-2x" />
|
||||
<span class="fa fa-spinner fa-spin fa-2x" role="img" aria-label="Loading..." title="Loading..."/>
|
||||
</li>
|
||||
</t>
|
||||
|
||||
<t t-name="mail.KanbanActivityDropdown">
|
||||
<li t-if="_.isEmpty(records)" class="text-center o_no_activity">
|
||||
<li role="menuitem" t-if="_.isEmpty(records)" class="text-center o_no_activity">
|
||||
<span>No activities planned.</span>
|
||||
</li>
|
||||
<li t-if="!_.isEmpty(records)">
|
||||
<ul class="nav o_activity_log">
|
||||
<li t-if="!_.isEmpty(records)" aria-haspopup="true" role="menu">
|
||||
<ul class="nav o_activity_log" role="menu">
|
||||
<t t-foreach="_.keys(records)" t-as="key">
|
||||
<t t-set="logs" t-value="records[key]" />
|
||||
<li class="o_activity_label">
|
||||
<li role="menuitem" class="o_activity_label">
|
||||
<strong t-attf-class="o_activity_color_#{key}">
|
||||
<t t-esc="selection[key]" /> (<t t-esc="logs.length"/>)
|
||||
</strong>
|
||||
</li>
|
||||
<li t-foreach="logs" t-as="log" t-att-data-activity-id="log.id" class="o_schedule_activity">
|
||||
<li role="menuitem" t-foreach="logs" t-as="log" t-att-data-activity-id="log.id" class="o_schedule_activity">
|
||||
<div class="o_activity_title pull-left">
|
||||
<span t-attf-class="fa #{log.icon} fa-fw" />
|
||||
<span t-attf-class="fa #{log.icon} fa-fw" role="img" aria-label="Log" title="Log"/>
|
||||
<strong>
|
||||
<t t-esc="log.title_action or log.activity_type_id[1]" />
|
||||
</strong>
|
||||
<div>
|
||||
<span class="fa fa-clock-o fa-fw" />
|
||||
<span class="fa fa-clock-o fa-fw" role="img" aria-label="Deadline" title="Deadline"/>
|
||||
<span t-att-title="log.date_deadline"><t t-esc="log.label_delay" /></span>
|
||||
<t t-if="log.user_id[0] != uid">
|
||||
<span class="ml4 fa fa-user" />
|
||||
<span class="ml4 fa fa-user" role="img" aria-label="User" title="User"/>
|
||||
<span><t t-esc="log.user_id[1]" /></span>
|
||||
</t>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pull-right">
|
||||
<span class="o_mark_as_done o_activity_link o_activity_link_kanban fa fa-check-circle fa-2x mt4" t-att-data-activity-id="log.id" title="Mark as done" />
|
||||
<span class="o_mark_as_done o_activity_link o_activity_link_kanban fa fa-check-circle fa-2x mt4" t-att-data-activity-id="log.id" title="Mark as done" role="img" aria-label="Mark as done"/>
|
||||
</div>
|
||||
</li>
|
||||
</t>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="o_schedule_activity text-center">
|
||||
<span class="btn btn-link btn-block">
|
||||
<i class="fa fa-plus fa-fw" aria-hidden="true"></i><strong>Schedule an activity</strong>
|
||||
</span>
|
||||
<li role="menuitem" class="o_schedule_activity text-center">
|
||||
<a role="button" class="btn btn-link btn-block">
|
||||
<strong class="fa fa-plus fa-fw">Schedule an activity</strong>
|
||||
</a>
|
||||
</li>
|
||||
</t>
|
||||
|
||||
|
||||
@@ -690,7 +690,7 @@ QUnit.test('chatter: Attachment viewer', function (assert) {
|
||||
assert.strictEqual($('.o_modal_fullscreen img.o_viewer_img[data-src="/web/image/1?unique=1"]').length, 1,
|
||||
"Modal popup should open with first image src");
|
||||
// click on next button
|
||||
$('.modal .arrow.arrow-right.move_next span').click();
|
||||
$('[role="dialog"] .arrow.arrow-right.move_next span').click();
|
||||
assert.strictEqual($('.o_modal_fullscreen img.o_viewer_img[data-src="/web/image/2?unique=1"]').length, 1,
|
||||
"Modal popup should have now second image src");
|
||||
assert.strictEqual($('.o_modal_fullscreen .o_viewer_toolbar .o_download_btn').length, 1,
|
||||
@@ -1172,8 +1172,8 @@ QUnit.test('followers widget: follow/unfollow, edit subtypes', function (assert)
|
||||
|
||||
// click to unfollow
|
||||
form.$('.o_followers_follow_button').click(); // click to open the dropdown
|
||||
assert.ok($('.modal').length, 'a confirm modal should be opened');
|
||||
$('.modal .modal-footer .btn-primary').click(); // click on 'OK'
|
||||
assert.ok($('[role="dialog"]').length, 'a confirm modal should be opened');
|
||||
$('footer.modal-footer .btn-primary').click(); // click on 'OK'
|
||||
assert.strictEqual(form.$('.o_followers_count').text(), "0", 'should have no followers');
|
||||
assert.ok(form.$('.o_followers_follow_button.o_followers_notfollow').length,
|
||||
'should display the "Follow" button');
|
||||
@@ -1366,9 +1366,9 @@ QUnit.test('fieldmany2many tags email', function (assert) {
|
||||
}).then(function (form) {
|
||||
// should read it 3 times (1 with the form view, one with the form dialog and one after save)
|
||||
assert.verifySteps([[12, 14], [14], [14]]);
|
||||
assert.strictEqual(form.$('.o_field_many2manytags[name="timmy"] span.o_tag_color_0').length, 2,
|
||||
assert.strictEqual(form.$('.o_field_many2manytags[name="timmy"] button.o_tag_color_0').length, 2,
|
||||
"two tags should be present");
|
||||
var firstTag = form.$('.o_field_many2manytags[name="timmy"] span.o_tag_color_0').first();
|
||||
var firstTag = form.$('.o_field_many2manytags[name="timmy"] button.o_tag_color_0').first();
|
||||
assert.strictEqual(firstTag.find('.o_badge_text').text(), "gold",
|
||||
"tag should only show display_name");
|
||||
assert.strictEqual(firstTag.find('.o_badge_text').attr('title'), "coucou@petite.perruche",
|
||||
@@ -1377,16 +1377,16 @@ QUnit.test('fieldmany2many tags email', function (assert) {
|
||||
done();
|
||||
});
|
||||
|
||||
assert.strictEqual($('.modal-body.o_act_window').length, 1,
|
||||
assert.strictEqual($('main.modal-body.o_act_window').length, 1,
|
||||
"there should be one modal opened to edit the empty email");
|
||||
assert.strictEqual($('.modal-body.o_act_window input[name="display_name"]').val(), "silver",
|
||||
assert.strictEqual($('main.modal-body input[name="display_name"]').val(), "silver",
|
||||
"the opened modal should be a form view dialog with the partner_type 14");
|
||||
assert.strictEqual($('.modal-body.o_act_window input[name="email"]').length, 1,
|
||||
assert.strictEqual($('main.modal-body input[name="email"]').length, 1,
|
||||
"there should be an email field in the modal");
|
||||
|
||||
// set the email and save the modal (will render the form view)
|
||||
$('.modal-body.o_act_window input[name="email"]').val('coucou@petite.perruche').trigger('input');
|
||||
$('.modal-footer .btn-primary').click();
|
||||
$('main.modal-body input[name="email"]').val('coucou@petite.perruche').trigger('input');
|
||||
$('footer.modal-footer .btn-primary').click();
|
||||
});
|
||||
|
||||
QUnit.test('fieldmany2many tags email (edition)', function (assert) {
|
||||
@@ -1421,7 +1421,7 @@ QUnit.test('fieldmany2many tags email (edition)', function (assert) {
|
||||
});
|
||||
|
||||
assert.verifySteps([[12]]);
|
||||
assert.strictEqual(form.$('.o_field_many2manytags[name="timmy"] span.o_tag_color_0').length, 1,
|
||||
assert.strictEqual(form.$('.o_field_many2manytags[name="timmy"] button.o_tag_color_0').length, 1,
|
||||
"should contain one tag");
|
||||
|
||||
// add an other existing tag
|
||||
@@ -1429,18 +1429,18 @@ QUnit.test('fieldmany2many tags email (edition)', function (assert) {
|
||||
$input.click(); // opens the dropdown
|
||||
$input.autocomplete('widget').find('li:first').click(); // add 'silver'
|
||||
|
||||
assert.strictEqual($('.modal-body.o_act_window').length, 1,
|
||||
assert.strictEqual($('main.modal-body.o_act_window').length, 1,
|
||||
"there should be one modal opened to edit the empty email");
|
||||
assert.strictEqual($('.modal-body.o_act_window input[name="display_name"]').val(), "silver",
|
||||
"the opened modal should be a form view dialog with the partner_type 14");
|
||||
assert.strictEqual($('.modal-body.o_act_window input[name="email"]').length, 1,
|
||||
assert.strictEqual($('main.modal-body input[name="display_name"]').val(), "silver",
|
||||
"the opened modal in edit mode should be a form view dialog with the partner_type 14");
|
||||
assert.strictEqual($('main.modal-body input[name="email"]').length, 1,
|
||||
"there should be an email field in the modal");
|
||||
|
||||
// set the email and save the modal (will rerender the form view)
|
||||
$('.modal-body.o_act_window input[name="email"]').val('coucou@petite.perruche').trigger('input');
|
||||
$('.modal-footer .btn-primary').click();
|
||||
$('main.modal-body input[name="email"]').val('coucou@petite.perruche').trigger('input');
|
||||
$('footer.modal-footer .btn-primary').click();
|
||||
|
||||
assert.strictEqual(form.$('.o_field_many2manytags[name="timmy"] span.o_tag_color_0').length, 2,
|
||||
assert.strictEqual(form.$('.o_field_many2manytags[name="timmy"] button.o_tag_color_0').length, 2,
|
||||
"should contain the second tag");
|
||||
// should have read [14] three times: when opening the dropdown, when opening the modal, and
|
||||
// after the save
|
||||
|
||||
@@ -551,7 +551,7 @@ QUnit.test('moderator: discard pending moderation message (reject without explan
|
||||
// check discard dialog prompt
|
||||
assert.strictEqual($('.modal-dialog').length, 1,
|
||||
"a dialog should be prompt to the moderator on click discard");
|
||||
assert.strictEqual($('.modal-body').text(),
|
||||
assert.strictEqual($('.modal-body:first').text(),
|
||||
"You are going to discard 1 message. Do you confirm the action?",
|
||||
"should warn the user on discard action");
|
||||
assert.strictEqual($('.modal-footer button').length, 2,
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
</t>
|
||||
<t t-name="kanban-box">
|
||||
<div class="oe_module_vignette oe_kanban_global_click">
|
||||
<img t-att-src="kanban_image('mail.channel', 'image_medium', record.id.raw_value)" class="oe_module_icon"/>
|
||||
<img t-att-src="kanban_image('mail.channel', 'image_medium', record.id.raw_value)" class="oe_module_icon" alt="Channel"/>
|
||||
<div class="oe_module_desc">
|
||||
<h4 class="o_kanban_record_title">#<field name="name"/></h4>
|
||||
<p class="oe_module_name">
|
||||
@@ -109,7 +109,7 @@
|
||||
<field name="description" placeholder="Topics discussed in this group..."/>
|
||||
</group>
|
||||
<group name="group_alias" attrs="{'invisible': [('alias_domain', '=', False)]}">
|
||||
<label for="alias_id" string=" " class="fa fa-envelope-o" style="min-width: 20px;"/>
|
||||
<label for="alias_id" string=" " class="fa fa-envelope-o" style="min-width: 20px;" aria-label="Email" title="Email" role="img"/>
|
||||
<div name="alias_def">
|
||||
<field name="alias_id" class="oe_read_only oe_inline"
|
||||
string="Email Alias" required="0"/>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user