mirror of
https://github.com/bringout/oca-ocb-core.git
synced 2026-04-20 22:12:02 +02:00
19.0 vanilla
This commit is contained in:
parent
d1963a3c3a
commit
2d3ee4855a
7430 changed files with 2687981 additions and 2965473 deletions
|
|
@ -0,0 +1,44 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="discuss_call_history_view_tree" model="ir.ui.view">
|
||||
<field name="name">discuss.call.history.view.list</field>
|
||||
<field name="model">discuss.call.history</field>
|
||||
<field name="arch" type="xml">
|
||||
<list string="Call History" sample="1">
|
||||
<field name="channel_id"/>
|
||||
<field name="start_dt"/>
|
||||
<field name="end_dt"/>
|
||||
<field name="duration_hour" widget="float_time" options="{'displaySeconds': True}"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
<record id="discuss_call_history_view_form" model="ir.ui.view">
|
||||
<field name="name">discuss.call.history.view.form</field>
|
||||
<field name="model">discuss.call.history</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Call History">
|
||||
<group class="oe_form_field">
|
||||
<field name="channel_id"/>
|
||||
<field name="start_dt"/>
|
||||
<field name="end_dt"/>
|
||||
<field name="duration_hour" widget="float_time" options="{'displaySeconds': True}"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="discuss_call_history_action" model="ir.actions.act_window">
|
||||
<field name="name">Call History</field>
|
||||
<field name="res_model">discuss.call.history</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
<field name="context">{"create": False}</field>
|
||||
</record>
|
||||
<menuitem
|
||||
action="discuss_call_history_action"
|
||||
id="discuss_call_history_menu"
|
||||
name="Call History"
|
||||
parent="discuss_technical"
|
||||
sequence="15"
|
||||
/>
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
<?xml version="1.0"?>
|
||||
<odoo>
|
||||
|
||||
<record id="discuss_gif_favorite_view_form" model="ir.ui.view">
|
||||
<field name="name">discuss.gif.favorite.form</field>
|
||||
<field name="model">discuss.gif.favorite</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="GIF favorite">
|
||||
<sheet>
|
||||
<group>
|
||||
<field name="id"/>
|
||||
<field name="tenor_gif_id"/>
|
||||
<field name="create_uid"/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="discuss_gif_favorite_view_tree" model="ir.ui.view">
|
||||
<field name="name">discuss.gif.favorite.list</field>
|
||||
<field name="model">discuss.gif.favorite</field>
|
||||
<field name="priority">10</field>
|
||||
<field name="arch" type="xml">
|
||||
<list string="GIF favorite">
|
||||
<field name="id"/>
|
||||
<field name="tenor_gif_id"/>
|
||||
<field name="create_uid"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="discuss_gif_favorite_action" model="ir.actions.act_window">
|
||||
<field name="name">GIF favorite</field>
|
||||
<field name="res_model">discuss.gif.favorite</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<menuitem
|
||||
id="discuss_technical"
|
||||
name="Technical"
|
||||
parent="mail.menu_root_discuss"
|
||||
groups="base.group_no_one"
|
||||
sequence="10"
|
||||
/>
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
<?xml version="1.0"?>
|
||||
<odoo><data>
|
||||
<!-- discuss.channel.member -->
|
||||
<record id="discuss_channel_member_view_tree" model="ir.ui.view">
|
||||
<field name="name">discuss.channel.member.list</field>
|
||||
<field name="model">discuss.channel.member</field>
|
||||
<field name="priority">10</field>
|
||||
<field name="arch" type="xml">
|
||||
<list string="Channels">
|
||||
<field name="channel_id"/>
|
||||
<field name="partner_id"/>
|
||||
<field name="guest_id"/>
|
||||
<field name="is_pinned"/>
|
||||
<field name="last_seen_dt"/>
|
||||
<field name="last_interest_dt"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="discuss_channel_member_view_form" model="ir.ui.view">
|
||||
<field name="name">discuss.channel.member.form</field>
|
||||
<field name="model">discuss.channel.member</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Channel Member">
|
||||
<sheet>
|
||||
<group>
|
||||
<field name="channel_id" readonly="id"/>
|
||||
<field name="partner_id" readonly="id or guest_id" required="not guest_id"/>
|
||||
<field name="guest_id" readonly="id or partner_id" required="not partner_id"/>
|
||||
<field name="custom_channel_name"/>
|
||||
<field name="fetched_message_id"/>
|
||||
<field name="seen_message_id"/>
|
||||
<field name="new_message_separator"/>
|
||||
<field name="message_unread_counter"/>
|
||||
<field name="custom_notifications"/>
|
||||
<field name="mute_until_dt"/>
|
||||
<field name="is_pinned"/>
|
||||
<field name="last_interest_dt"/>
|
||||
<field name="last_seen_dt"/>
|
||||
<field name="rtc_inviting_session_id"/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="discuss_channel_member_action" model="ir.actions.act_window">
|
||||
<field name="name">Channels/Members</field>
|
||||
<field name="res_model">discuss.channel.member</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
</record>
|
||||
|
||||
</data></odoo>
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
<?xml version="1.0"?>
|
||||
<odoo>
|
||||
|
||||
<record id="mail_channel_rtc_session_view_search" model="ir.ui.view">
|
||||
<field name="name">mail.channel.rtc.session.search</field>
|
||||
<field name="model">mail.channel.rtc.session</field>
|
||||
<record id="discuss_channel_rtc_session_view_search" model="ir.ui.view">
|
||||
<field name="name">discuss.channel.rtc.session.search</field>
|
||||
<field name="model">discuss.channel.rtc.session</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search RTC session">
|
||||
<field name="channel_member_id"/>
|
||||
|
|
@ -12,11 +12,11 @@
|
|||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_channel_rtc_session_view_tree" model="ir.ui.view">
|
||||
<field name="name">mail.channel.rtc.session.tree</field>
|
||||
<field name="model">mail.channel.rtc.session</field>
|
||||
<record id="discuss_channel_rtc_session_view_tree" model="ir.ui.view">
|
||||
<field name="name">discuss.channel.rtc.session.list</field>
|
||||
<field name="model">discuss.channel.rtc.session</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="RTC Session">
|
||||
<list string="RTC Session">
|
||||
<header>
|
||||
<button name="action_disconnect" type="object" string="Disconnect"/>
|
||||
</header>
|
||||
|
|
@ -24,13 +24,13 @@
|
|||
<field name="channel_member_id"/>
|
||||
<field name="channel_id"/>
|
||||
<field name="write_date"/>
|
||||
</tree>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_channel_rtc_session_view_form" model="ir.ui.view">
|
||||
<field name="name">mail.channel.rtc.session.form</field>
|
||||
<field name="model">mail.channel.rtc.session</field>
|
||||
<record id="discuss_channel_rtc_session_view_form" model="ir.ui.view">
|
||||
<field name="name">discuss.channel.rtc.session.form</field>
|
||||
<field name="model">discuss.channel.rtc.session</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="RTC Session">
|
||||
<sheet>
|
||||
|
|
@ -55,11 +55,11 @@
|
|||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_channel_rtc_session_action" model="ir.actions.act_window">
|
||||
<record id="discuss_channel_rtc_session_action" model="ir.actions.act_window">
|
||||
<field name="name">RTC sessions</field>
|
||||
<field name="res_model">mail.channel.rtc.session</field>
|
||||
<field name="res_model">discuss.channel.rtc.session</field>
|
||||
<field name="context">{'search_default_group_by_channel': True}</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
152
odoo-bringout-oca-ocb-mail/mail/views/discuss_channel_views.xml
Normal file
152
odoo-bringout-oca-ocb-mail/mail/views/discuss_channel_views.xml
Normal file
|
|
@ -0,0 +1,152 @@
|
|||
<?xml version="1.0"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<!-- discuss.channel -->
|
||||
<record id="mail.discuss_channel_view_kanban" model="ir.ui.view">
|
||||
<field name="name">discuss.channel.kanban</field>
|
||||
<field name="model">discuss.channel</field>
|
||||
<field name="priority" eval="10"/>
|
||||
<field name="arch" type="xml">
|
||||
<kanban>
|
||||
<field name="is_member"/>
|
||||
<field name="group_ids"/>
|
||||
<field name="active"/>
|
||||
<templates>
|
||||
<t t-name="card" class="row g-0">
|
||||
<widget name="web_ribbon" class="d-flex" title="Archived" bg_color="text-bg-danger" invisible="active"/>
|
||||
<aside class="col-2 my-auto">
|
||||
<field name="avatar_128" widget="image" options="{'size': [50, 50], 'img_class': 'bg-transparent'}" alt="Channel"/>
|
||||
</aside>
|
||||
<main class="col me-4 ms-2">
|
||||
<span class="fw-bold fs-5">#<field name="name"/></span>
|
||||
<field name="channel_type" groups="base.group_no_one"/>
|
||||
<field name="description" class="text-muted lh-1 small"/>
|
||||
<button type="object" invisible="is_member or group_ids" class="btn btn-primary ms-auto mt-auto" name="channel_join">Join</button>
|
||||
<button type="object" invisible="not is_member or group_ids" class="btn btn-secondary ms-auto mt-auto" name="action_unfollow">Leave</button>
|
||||
</main>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail.discuss_channel_view_list" model="ir.ui.view">
|
||||
<field name="name">discuss.channel.list</field>
|
||||
<field name="model">discuss.channel</field>
|
||||
<field name="priority" eval="10"/>
|
||||
<field name="arch" type="xml">
|
||||
<list string="Channels" default_order="name">
|
||||
<field name="avatar_128" invisible="parent_channel_id" widget="image" options="{'size': [24, 24]}" width="30" string=""/>
|
||||
<field name="name"/>
|
||||
<field name="description"/>
|
||||
<button type="object" invisible="is_member or group_ids" class="btn btn-primary ms-auto mt-auto" name="channel_join" string="Join"/>
|
||||
<button type="object" invisible="not is_member or group_ids" class="btn btn-secondary ms-auto mt-auto" name="action_unfollow" string="Leave"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail.discuss_channel_view_form" model="ir.ui.view">
|
||||
<field name="name">discuss.channel.form</field>
|
||||
<field name="model">discuss.channel</field>
|
||||
<field name="priority" eval="10"/>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Mail Channel Form">
|
||||
<sheet>
|
||||
<div class="oe_button_box" name="button_box"/>
|
||||
<field name="avatar_128" invisible="1"/>
|
||||
<field name="is_editable" invisible="1"/>
|
||||
<field name="image_128" widget="image" class="oe_avatar" options="{'size': [90, 90], 'preview_image':'avatar_128'}" readonly="not is_editable"/>
|
||||
<widget name="web_ribbon" title="Archived" bg_color="text-bg-danger" invisible="active"/>
|
||||
<div class="oe_title">
|
||||
<label for="name" string="Group Name"/>
|
||||
<h1>
|
||||
#<field name="name" class="oe_inline" default_focus="1" placeholder="e.g. support" readonly="not is_editable"/>
|
||||
</h1>
|
||||
</div>
|
||||
<group class="o_label_nowrap">
|
||||
<field name="active" invisible="1"/>
|
||||
<field name="description" placeholder="Topics discussed in this group..." readonly="not is_editable"/>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Privacy" name="privacy">
|
||||
<group class="o_label_nowrap">
|
||||
<field name="group_public_id"
|
||||
invisible="channel_type != 'channel' or parent_channel_id" readonly="not is_editable"/>
|
||||
<field name="group_ids" widget="many2many_tags"
|
||||
invisible="channel_type != 'channel'"
|
||||
string="Auto Subscribe Groups" readonly="not is_editable"/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="Members" name="members">
|
||||
<field name="channel_type" invisible="1"/>
|
||||
<field name="channel_member_ids" mode="list" context="{'active_test': False}" readonly="channel_type == 'chat'">
|
||||
<list string="Members" editable="bottom">
|
||||
<field name="partner_id" readonly="id or guest_id" required="not guest_id"/>
|
||||
<field name="guest_id" readonly="id or partner_id" required="not partner_id"/>
|
||||
</list>
|
||||
</field>
|
||||
</page>
|
||||
<page string="Extra info" name="extra_info" groups="base.group_no_one">
|
||||
<group class="o_label_nowrap">
|
||||
<field name="channel_type"/>
|
||||
<field name="parent_channel_id"/>
|
||||
<field name="sub_channel_ids"/>
|
||||
<field name="from_message_id"/>
|
||||
<field name="sfu_channel_uuid"/>
|
||||
<field name="sfu_server_url"/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="Integrations" invisible="1" name="discuss_channel_integrations"></page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail.discuss_channel_view_tree" model="ir.ui.view">
|
||||
<field name="name">discuss.channel.list</field>
|
||||
<field name="model">discuss.channel</field>
|
||||
<field name="priority" eval="10"/>
|
||||
<field name="arch" type="xml">
|
||||
<list string="Groups">
|
||||
<field name="name"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail.discuss_channel_view_search" model="ir.ui.view">
|
||||
<field name="name">discuss.channel.search</field>
|
||||
<field name="model">discuss.channel</field>
|
||||
<field name="priority" eval="10"/>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Groups">
|
||||
<field name="name"/>
|
||||
<filter string="Archived" name="inactive" domain="[('active', '=', False)]"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail.discuss_channel_action_view" model="ir.actions.act_window">
|
||||
<field name="name">Join a group</field>
|
||||
<field name="res_model">discuss.channel</field>
|
||||
<field name="view_mode">kanban,list,form</field>
|
||||
<field name="search_view_id" ref="discuss_channel_view_search"/>
|
||||
</record>
|
||||
|
||||
<record id="mail.discuss_channel_action" model="ir.actions.act_window">
|
||||
<field name="name">Channels</field>
|
||||
<field name="res_model">discuss.channel</field>
|
||||
<field name="view_mode">kanban,form</field>
|
||||
<field name="domain" eval="[(('channel_type', '=', 'channel'))]" />
|
||||
<field name="search_view_id" ref="discuss_channel_view_search" />
|
||||
</record>
|
||||
|
||||
<record id="mail.action_discuss" model="ir.actions.client">
|
||||
<field name="name">Discuss</field>
|
||||
<field name="tag">mail.action_discuss</field>
|
||||
<field name="path">discuss</field>
|
||||
<field name="params" eval=""{ 'default_active_id': 'mail.box_inbox' }""/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -1,54 +1,32 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<template id="mail.discuss_public_layout"><!DOCTYPE html>
|
||||
<template id="mail.discuss_public_channel_template" name="Discuss Public Template"><!DOCTYPE html>
|
||||
<html class="h-100">
|
||||
<head>
|
||||
<meta charset="utf-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
|
||||
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"/>
|
||||
<title t-esc="title or 'Odoo'"/>
|
||||
<link type="image/x-icon" rel="shortcut icon" t-att-href="x_icon or '/web/static/img/favicon.ico'"/>
|
||||
|
||||
<script>
|
||||
window.odoo = {
|
||||
__session_info__: <t t-out="json.dumps(session_info)"/>,
|
||||
csrf_token: "<t t-out="request.csrf_token(None)"/>",
|
||||
debug: "<t t-out="debug"/>",
|
||||
discuss_data: <t t-out="json.dumps(data)"/>
|
||||
};
|
||||
{
|
||||
const { user_context, cache_hashes } = odoo.__session_info__;
|
||||
fetch(`/web/webclient/translations/${cache_hashes.translations}?lang=${user_context.lang}`);
|
||||
}
|
||||
</script>
|
||||
|
||||
<t t-call-assets="mail.assets_common_discuss_public"/>
|
||||
<t t-call-assets="mail.assets_discuss_public"/>
|
||||
<t t-call-assets="mail.assets_public"/>
|
||||
<t t-call-assets="mail.assets_discuss_public_test_tours" t-if="'tests' in debug or test_mode_enabled"/>
|
||||
|
||||
<t t-out="head or ''"/>
|
||||
<style>
|
||||
body {
|
||||
direction: <t t-out="env['res.lang']._get_data(code=lang or env.user.lang).direction or 'ltr'" />;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body class="d-flex flex-column h-100">
|
||||
<t t-out="body or ''"/>
|
||||
</body>
|
||||
</html>
|
||||
</template>
|
||||
|
||||
<template id="mail.discuss_public_channel_template" name="Discuss Public Channel Template">
|
||||
<t t-call="mail.discuss_public_layout">
|
||||
<t t-set="head">
|
||||
<style>
|
||||
body {
|
||||
direction: <t t-out="env['res.lang']._lang_get(lang or env.user.lang).direction or 'ltr'" />;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
odoo.define('mail.discuss_public_channel_template', function() {
|
||||
return {
|
||||
data: <t t-out="json.dumps(data)"/>,
|
||||
};
|
||||
});
|
||||
</script>
|
||||
</t>
|
||||
</t>
|
||||
</template>
|
||||
</odoo>
|
||||
|
|
|
|||
|
|
@ -5,15 +5,15 @@
|
|||
<field name="name">fetchmail.server.list</field>
|
||||
<field name="model">fetchmail.server</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="POP/IMAP Servers">
|
||||
<list string="POP/IMAP Servers">
|
||||
<field name="name"/>
|
||||
<field name="server_type"/>
|
||||
<field name="user"/>
|
||||
<field name="user" readonly="state != 'draft'"/>
|
||||
<field name="date"/>
|
||||
<field name="state" widget="badge"
|
||||
decoration-info="state == 'draft'"
|
||||
decoration-success="state == 'done'"/>
|
||||
</tree>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
|
@ -22,25 +22,25 @@
|
|||
<field name="model">fetchmail.server</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Incoming Mail Server">
|
||||
<header attrs="{'invisible' : [('server_type', '=', 'local')]}">
|
||||
<button string="Test & Confirm" type="object" name="button_confirm_login" states="draft"/>
|
||||
<button string="Fetch Now" type="object" name="fetch_mail" states="done"/>
|
||||
<button string="Reset Confirmation" type="object" name="set_draft" states="done"/>
|
||||
<header invisible="server_type == 'local'">
|
||||
<button string="Test & Confirm" type="object" name="button_confirm_login" invisible="state != 'draft'"/>
|
||||
<button string="Fetch Now" type="object" name="fetch_mail" invisible="state != 'done'"/>
|
||||
<button string="Reset Confirmation" type="object" name="set_draft" invisible="state != 'done'"/>
|
||||
<field name="state" widget="statusbar"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<field name="active" invisible="1"/>
|
||||
<widget name="web_ribbon" title="Archived" bg_color="bg-danger"
|
||||
attrs="{'invisible': [('active', '=', True)]}"/>
|
||||
<widget name="web_ribbon" title="Archived" bg_color="text-bg-danger"
|
||||
invisible="active"/>
|
||||
<group>
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="server_type" widget="radio" attrs="{'readonly': [('state', '=', 'done')]}"/>
|
||||
<field name="server_type" widget="radio" readonly="state == 'done'"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="date" attrs="{'invisible': [('date', '=', False)]}"/>
|
||||
<field name="date" invisible="not date"/>
|
||||
<div class="text-muted fst-italic" colspan="8" role="alert"
|
||||
attrs="{'invisible': [('server_type_info', '=', False)]}">
|
||||
invisible="not server_type_info">
|
||||
<field name="server_type_info"/>
|
||||
</div>
|
||||
</group>
|
||||
|
|
@ -48,23 +48,25 @@
|
|||
<notebook>
|
||||
<page string="Server & Login" name="server_login_details">
|
||||
<group>
|
||||
<group attrs="{'invisible' : [('server_type', '=', 'local')]}" string="Server Information">
|
||||
<field name="server" attrs="{'required' : [('server_type', '!=', 'local')]}" />
|
||||
<group invisible="server_type == 'local'" string="Server Information">
|
||||
<field name="server" readonly="state != 'draft'" required="server_type != 'local'" />
|
||||
<field name="port"
|
||||
required="1"
|
||||
attrs="{'required' : [('server_type', '!=', 'local')]}"
|
||||
readonly="state != 'draft'"
|
||||
options="{'format': false}" />
|
||||
<field name="is_ssl"/>
|
||||
</group>
|
||||
<group attrs="{'invisible' : [('server_type', '=', 'local')]}" string="Login Information">
|
||||
<field name="user" attrs="{'required' : [('server_type', '!=', 'local')]}"/>
|
||||
<group invisible="server_type == 'local'" string="Login Information">
|
||||
<field name="user" readonly="state != 'draft'" required="server_type != 'local'"/>
|
||||
<field name="password" password="True"
|
||||
attrs="{'required' : [('server_type', 'in', ('imap', 'pop'))], 'invisible' : [('server_type', 'not in', ('imap', 'pop'))]}"/>
|
||||
invisible="server_type not in ('imap', 'pop')"
|
||||
readonly="state != 'draft'"
|
||||
required="server_type in ('imap', 'pop')"/>
|
||||
</group>
|
||||
<group string="Actions to Perform on Incoming Mails">
|
||||
<field name="object_id"/>
|
||||
</group>
|
||||
<group attrs="{'invisible' : [('server_type', '!=', 'local')]}" string="Configuration">
|
||||
<group invisible="server_type != 'local'" string="Configuration">
|
||||
<field name="configuration"/>
|
||||
<field name="script" widget="url"/>
|
||||
</group>
|
||||
|
|
@ -73,10 +75,14 @@
|
|||
<page string="Advanced" name="advanced_options" groups="base.group_no_one">
|
||||
<group>
|
||||
<group string="Advanced Options">
|
||||
<field name="priority"/>
|
||||
<field name="priority" readonly="state != 'draft'"/>
|
||||
<field name="attach"/>
|
||||
<field name="original"/>
|
||||
</group>
|
||||
<group string="Last Error">
|
||||
<field name="error_date"/>
|
||||
<field name="error_message"/>
|
||||
</group>
|
||||
</group>
|
||||
</page>
|
||||
</notebook>
|
||||
|
|
@ -105,9 +111,16 @@
|
|||
<record id="action_email_server_tree" model="ir.actions.act_window">
|
||||
<field name="name">Incoming Mail Servers</field>
|
||||
<field name="res_model">fetchmail.server</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
<field name="view_id" ref="view_email_server_tree"/>
|
||||
<field name="search_view_id" ref="view_email_server_search"/>
|
||||
<field name="help" type="html">
|
||||
<div>
|
||||
<b class="o_view_nocontent_smiling_face">
|
||||
No Incoming Servers yet
|
||||
</b>
|
||||
</div>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
|
|
|
|||
|
|
@ -7,50 +7,83 @@
|
|||
<field name="model">ir.actions.server</field>
|
||||
<field name="inherit_id" ref="base.view_server_action_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//page[@name='page_object']" position="after">
|
||||
<page string="Activity" name="next_activity" autofocus="autofocus" attrs="{'invisible': [('state', '!=', 'next_activity')]}">
|
||||
<group>
|
||||
<group>
|
||||
<field name="activity_type_id" options="{'no_create': True, 'no_open': True}"
|
||||
attrs="{'required': [('state', '=', 'next_activity')]}"/>
|
||||
<field name="activity_summary" placeholder="e.g. Discuss proposal"/>
|
||||
</group>
|
||||
<group>
|
||||
<label for="activity_date_deadline_range"/>
|
||||
<div class="o_row">
|
||||
<field name="activity_date_deadline_range"/>
|
||||
<field name="activity_date_deadline_range_type" attrs="{
|
||||
'required': [('state', '=', 'next_activity'), ('activity_date_deadline_range', '>', 0)]
|
||||
}"/>
|
||||
</div>
|
||||
<field name="activity_user_type" attrs="{
|
||||
'required': [('state', '=', 'next_activity')]
|
||||
}"/>
|
||||
<field name="activity_user_field_name" attrs="{
|
||||
'invisible': [('activity_user_type', '=', 'specific')],
|
||||
'required': [('state', '=', 'next_activity'), ('activity_user_type', '=', 'generic')]
|
||||
}"/>
|
||||
<field name="activity_user_id" attrs="{
|
||||
'invisible': [('activity_user_type', '=', 'generic')],
|
||||
'required': [('state', '=', 'next_activity'), ('activity_user_type', '=', 'specific')]
|
||||
}"/>
|
||||
</group>
|
||||
</group>
|
||||
<field name="activity_note" class="oe-bordered-editor" placeholder="Log a note..."/>
|
||||
</page>
|
||||
<xpath expr="//form" position="inside">
|
||||
<chatter/>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='link_field_id']" position="after">
|
||||
<field name="partner_ids" widget="many2many_tags"
|
||||
attrs="{'invisible': [('state', '!=', 'followers')]}"/>
|
||||
<field name="template_id"
|
||||
attrs="{'invisible': [('state', '!=', 'mail_post')],
|
||||
'required': [('state', '=', 'mail_post')]}"
|
||||
context="{'default_model': model_name,
|
||||
'default_use_default_to': True}"/>
|
||||
<field name="mail_post_method"
|
||||
attrs="{'invisible': [('state', '!=', 'mail_post')],
|
||||
'required': [('state', '=', 'mail_post')]}"/>
|
||||
<field name="mail_post_autofollow" invisible="1"/>
|
||||
<xpath expr="//t[@name='action_content']//notebook" position="before">
|
||||
<!-- Create next activity -->
|
||||
<group invisible="state != 'next_activity'">
|
||||
<group>
|
||||
<field name="activity_type_id" options="{'no_create': True, 'no_open': True}"
|
||||
required="state == 'next_activity'"/>
|
||||
<field name="activity_summary" placeholder="e.g. Discuss proposal"/>
|
||||
</group>
|
||||
<group>
|
||||
<label for="activity_date_deadline_range"/>
|
||||
<div class="o_row">
|
||||
<field name="activity_date_deadline_range" class="oe_inline"/>
|
||||
<field name="activity_date_deadline_range_type" class="oe_inline" required="state == 'next_activity' and activity_date_deadline_range > 0"/>
|
||||
</div>
|
||||
<field name="activity_user_type" required="state == 'next_activity'"/>
|
||||
<field name="activity_user_field_name"
|
||||
widget="field_selector" options="{'model': 'model_name'}"
|
||||
invisible="activity_user_type != 'generic'"
|
||||
required="state == 'next_activity' and activity_user_type == 'generic'"/>
|
||||
<field name="activity_user_id"
|
||||
placeholder="Choose a user..."
|
||||
invisible="activity_user_type != 'specific'"
|
||||
required="state == 'next_activity' and activity_user_type == 'specific'"/>
|
||||
<field name="activity_note" class="oe-bordered-editor" placeholder="Add a description to your activity..."/>
|
||||
</group>
|
||||
</group>
|
||||
<!-- Add/Remove Followers -->
|
||||
<group invisible="state not in ['followers', 'remove_followers']">
|
||||
<group>
|
||||
<field name="followers_type"
|
||||
required="state in ['followers', 'remove_followers']"/>
|
||||
<field name="partner_ids" string="Followers to add" widget="many2many_tags"
|
||||
placeholder="Choose a contact..."
|
||||
invisible="state != 'followers' or followers_type != 'specific'"
|
||||
required="state == 'followers' and followers_type == 'specific'"/>
|
||||
<field name="partner_ids" string="Followers to remove" widget="many2many_tags"
|
||||
placeholder="Choose a contact..."
|
||||
invisible="state != 'remove_followers' or followers_type != 'specific'"
|
||||
required="state == 'remove_followers' and followers_type == 'specific'"/>
|
||||
<field name="followers_partner_field_name"
|
||||
widget="field_selector" options="{'model': 'model_name'}"
|
||||
invisible="followers_type != 'generic'"
|
||||
required="state in ['followers', 'remove_followers'] and followers_type == 'generic'"/>
|
||||
</group>
|
||||
</group>
|
||||
<!-- Send Email -->
|
||||
<group invisible="state != 'mail_post'">
|
||||
<group>
|
||||
<field name="template_id"
|
||||
placeholder="Choose a template..."
|
||||
required="state == 'mail_post'"
|
||||
context="{'default_model': model_name,
|
||||
'default_use_default_to': True}"/>
|
||||
<label for="mail_post_method"/>
|
||||
<div class="d-flex flex-column">
|
||||
<field name="mail_post_method" required="state == 'mail_post'"/>
|
||||
<div class="text-muted">
|
||||
<span invisible="mail_post_method != 'email'">
|
||||
The message will be sent as an email to the recipients of the
|
||||
template and will not appear in the messaging history.
|
||||
</span>
|
||||
<span invisible="mail_post_method != 'note'">
|
||||
The message will be posted as an internal note visible to internal
|
||||
users in the messaging history.
|
||||
</span>
|
||||
<span invisible="mail_post_method != 'comment'">
|
||||
The message will be posted as a message on the record,
|
||||
notifying all followers. It will appear in the messaging history.
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<field name="mail_post_autofollow" invisible="1"/>
|
||||
</group>
|
||||
</group>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
|
|
|||
13
odoo-bringout-oca-ocb-mail/mail/views/ir_cron_views.xml
Normal file
13
odoo-bringout-oca-ocb-mail/mail/views/ir_cron_views.xml
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<record id="ir_cron_view_form" model="ir.ui.view">
|
||||
<field name="name">ir.cron.view.form.inherit</field>
|
||||
<field name="model">ir.cron</field>
|
||||
<field name="inherit_id" ref="base.ir_cron_view_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='user_id']" position="attributes">
|
||||
<attribute name="widget">many2one_avatar_user</attribute>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
23
odoo-bringout-oca-ocb-mail/mail/views/ir_filters_views.xml
Normal file
23
odoo-bringout-oca-ocb-mail/mail/views/ir_filters_views.xml
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<record id="ir_filters_view_form" model="ir.ui.view">
|
||||
<field name="name">ir.filters.view.form.inherit</field>
|
||||
<field name="model">ir.filters</field>
|
||||
<field name="inherit_id" ref="base.ir_filters_view_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='user_ids']" position="attributes">
|
||||
<attribute name="widget">many2many_avatar_user</attribute>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
<record id="ir_filters_view_tree" model="ir.ui.view">
|
||||
<field name="name">ir.filters.view.tree.inherit</field>
|
||||
<field name="model">ir.filters</field>
|
||||
<field name="inherit_id" ref="base.ir_filters_view_tree"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='user_ids']" position="attributes">
|
||||
<attribute name="widget">many2many_avatar_user</attribute>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
<?xml version="1.0" ?>
|
||||
<odoo>
|
||||
<record id="ir_mail_server_view_form" model="ir.ui.view">
|
||||
<field name="name">ir.mail_server.view.form.inherit.mail</field>
|
||||
<field name="model">ir.mail_server</field>
|
||||
<field name="inherit_id" ref="base.ir_mail_server_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//label[@for='smtp_user']" position="attributes">
|
||||
<attribute name="invisible" add="owner_user_id" separator="or"/>
|
||||
</xpath>
|
||||
<xpath expr="//label[@for='smtp_user']" position="after">
|
||||
<label for="smtp_user" string="User email"
|
||||
invisible="smtp_authentication == 'certificate' or not owner_user_id"/>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='smtp_pass']" position="after">
|
||||
<field name="owner_user_id"
|
||||
placeholder="Restrict usage to a user"
|
||||
groups="base.group_no_one"
|
||||
widget="many2one_avatar_user"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
|
@ -6,13 +6,13 @@
|
|||
<field name="inherit_id" ref="base.view_model_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="transient" position="after">
|
||||
<field name="is_mail_thread" attrs="{'readonly': [('state','!=', 'manual')]}" groups="base.group_no_one"/>
|
||||
<field name="is_mail_activity" attrs="{'readonly': [('state','!=', 'manual')]}" groups="base.group_no_one"/>
|
||||
<field name="is_mail_blacklist" attrs="{'readonly': [('state','!=', 'manual')]}" groups="base.group_no_one"/>
|
||||
<field name="is_mail_thread" readonly="state != 'manual'" groups="base.group_no_one"/>
|
||||
<field name="is_mail_activity" readonly="state != 'manual'" groups="base.group_no_one"/>
|
||||
<field name="is_mail_blacklist" readonly="state != 'manual'" groups="base.group_no_one"/>
|
||||
</field>
|
||||
<xpath expr="//field[@name='field_id']//field[@name='copied']" position="after">
|
||||
<field name="state" invisible="1"/>
|
||||
<field name="tracking" attrs="{'readonly': [('state','!=', 'manual')]}"/>
|
||||
<field name="tracking" readonly="state != 'manual'"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
|
@ -35,7 +35,7 @@
|
|||
<field name="arch" type="xml">
|
||||
<field name="copied" position="after">
|
||||
<field name="state" invisible="1"/>
|
||||
<field name="tracking" attrs="{'invisible': [('ttype', '=', 'binary')], 'readonly': [('state','!=', 'manual')]}"/>
|
||||
<field name="tracking" invisible="ttype in ['binary', 'html']" readonly="state != 'manual'"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,45 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="mail_activity_plan_template_view_tree" model="ir.ui.view">
|
||||
<field name="name">mail.activity.plan.template.view.list</field>
|
||||
<field name="model">mail.activity.plan.template</field>
|
||||
<field name="arch" type="xml">
|
||||
<list string="Activities">
|
||||
<field name="activity_type_id"/>
|
||||
<field name="summary" placeholder="e.g. Discuss Proposal"/>
|
||||
<field name="responsible_type"/>
|
||||
<field name="delay_count"/>
|
||||
<field name="delay_unit"/>
|
||||
<field name="delay_from"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_activity_plan_template_view_form" model="ir.ui.view">
|
||||
<field name="name">mail.activity.plan.template.view.form</field>
|
||||
<field name="model">mail.activity.plan.template</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Activity">
|
||||
<field name="company_id" invisible="1"/>
|
||||
<field name="res_model" invisible="1"/>
|
||||
<sheet>
|
||||
<group>
|
||||
<field name="activity_type_id"/>
|
||||
<field name="summary" placeholder="e.g. Discuss Proposal"/>
|
||||
<field name="responsible_type"/>
|
||||
<field name="responsible_id" invisible="responsible_type != 'other'" required="responsible_type == 'other'"/>
|
||||
<label for="delay_count"/>
|
||||
<div>
|
||||
<field class="oe_inline pe-1 o_input_3ch" name="delay_count"/>
|
||||
<field class="oe_inline ps-1 pe-2" name="delay_unit"/>
|
||||
<field class="oe_inline" name="delay_from"/>
|
||||
</div>
|
||||
</group>
|
||||
<field name="note" nolabel="1" class="oe-bordered-editor" placeholder="e.g. Log a note" widget="html_mail"/>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,193 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="mail_activity_plan_view_search" model="ir.ui.view">
|
||||
<field name="name">mail.activity.plan.view.search</field>
|
||||
<field name="model">mail.activity.plan</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Plan">
|
||||
<field name="name"/>
|
||||
<separator/>
|
||||
<filter string="Archived" name="filter_inactive" domain="[('active', '=', False)]"/>
|
||||
<filter string="Model" name="group_by_model" domain="[]" context="{'group_by': 'res_model_id'}"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_activity_plan_view_tree" model="ir.ui.view">
|
||||
<field name="name">mail.activity.plan.view.list</field>
|
||||
<field name="model">mail.activity.plan</field>
|
||||
<field name="arch" type="xml">
|
||||
<list string="Planning" sample="1">
|
||||
<field name="name"/>
|
||||
<field name="res_model_id" optional="hide"/>
|
||||
<field name="steps_count"/>
|
||||
<field name="company_id" groups="base.group_multi_company" optional="hide"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_activity_plan_view_tree_detailed" model="ir.ui.view">
|
||||
<field name="name">mail.activity.plan.view.list.detailed</field>
|
||||
<field name="model">mail.activity.plan</field>
|
||||
<field name="inherit_id" ref="mail.mail_activity_plan_view_tree"/>
|
||||
<field name="mode">primary</field>
|
||||
<field name="priority">32</field>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='res_model_id']" position="attributes">
|
||||
<attribute name="optional">show</attribute>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_activity_plan_view_form" model="ir.ui.view">
|
||||
<field name="name">mail.activity.plan.view.form</field>
|
||||
<field name="model">mail.activity.plan</field>
|
||||
<field name="priority">20</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Planning">
|
||||
<field name="company_id" invisible="1"/>
|
||||
<field name="active" invisible="1"/>
|
||||
<sheet>
|
||||
<widget name="web_ribbon" title="Archived" bg_color="text-bg-danger" invisible="active"/>
|
||||
<div class="oe_title">
|
||||
<label for="name" string="Plan Name"/>
|
||||
<h1>
|
||||
<field name="name" placeholder="e.g. Onboarding" options="{'line_breaks': False}" widget="text"/>
|
||||
</h1>
|
||||
</div>
|
||||
<group name="group_plan_fields">
|
||||
<group>
|
||||
<field name="res_model"/>
|
||||
</group>
|
||||
<group name="company_id" groups="base.group_multi_company">
|
||||
<field name="company_id" domain="[('id', '=', allowed_company_ids)]" placeholder="Visible to all"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Activities To Create">
|
||||
<!-- Pass on the model to ensure the correct dynamic selection (in e.g. hr) on unsaved plans -->
|
||||
<field name="template_ids" nolabel="1" context="{'default_res_model': res_model}">
|
||||
<list>
|
||||
<field name="company_id" column_invisible="1"/>
|
||||
<field name="note" column_invisible="1"/>
|
||||
<field name="sequence" widget="handle"/>
|
||||
<field name="activity_type_id"
|
||||
options="{'no_quick_create': True}"/>
|
||||
<field name="summary" placeholder="e.g. Discuss Proposal"/>
|
||||
<field name="responsible_type"/>
|
||||
<field name="responsible_id" readonly="responsible_type != 'other'"
|
||||
widget="many2one_avatar_user"/>
|
||||
<field name="delay_count"/>
|
||||
<field name="delay_unit" string="Unit"/>
|
||||
<field name="delay_from"/>
|
||||
<field name="next_activity_ids"
|
||||
widget="many2many_tags"
|
||||
invisible="not next_activity_ids"
|
||||
options="{
|
||||
'no_quick_create': True,
|
||||
'edit_tags': True,
|
||||
}"
|
||||
optional="hide"
|
||||
/>
|
||||
</list>
|
||||
<kanban class="o_kanban_mobile">
|
||||
<field name="icon"/>
|
||||
<templates>
|
||||
<t t-name="card">
|
||||
<div class="fw-bold fs-5">
|
||||
<i t-if="record.icon.value"
|
||||
t-attf-class="fa #{record.icon.value} fa-fw "
|
||||
role="img" aria-label="Activity Type" title="Activity Type"/>
|
||||
<field name="activity_type_id"/>
|
||||
</div>
|
||||
<field name="summary"/>
|
||||
<div>
|
||||
<field name="delay_count"/> <field name="delay_unit"/>
|
||||
(<field name="delay_from"/>)
|
||||
</div>
|
||||
<field name="next_activity_ids" widget="many2many_tags" invisible="not next_activity_ids"/>
|
||||
<footer class="p-0">
|
||||
<field name="responsible_type"/>
|
||||
<field class="ms-auto" name="responsible_id" widget="many2one_avatar_user" readonly="1"/>
|
||||
</footer>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_activity_plan_view_kanban" model="ir.ui.view" >
|
||||
<field name="name">mail.activity.plan.view.kanban</field>
|
||||
<field name="model">mail.activity.plan</field>
|
||||
<field name="arch" type="xml">
|
||||
<kanban class="o_kanban_mobile">
|
||||
<templates>
|
||||
<t t-name="card">
|
||||
<field name="name" class="fw-bolder"/>
|
||||
<field name="res_model_id"/>
|
||||
<div>
|
||||
<i class="fa fa-cogs fa-fw me-2" role="img" aria-label="Steps count" title="Steps count"/>
|
||||
<field name="steps_count"/>
|
||||
</div>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_activity_plan_view_form_fixed_model" model="ir.ui.view">
|
||||
<field name="name">mail.activity.plan.view.form.fixed.model</field>
|
||||
<field name="model">mail.activity.plan</field>
|
||||
<field name="mode">primary</field>
|
||||
<field name="priority">10</field>
|
||||
<field name="inherit_id" ref="mail.mail_activity_plan_view_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//list" position="attributes">
|
||||
<attribute name="editable">bottom</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='res_model']" position="attributes">
|
||||
<attribute name="readonly">1</attribute>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_activity_plan_action" model="ir.actions.act_window">
|
||||
<field name="name">Activity Plans</field>
|
||||
<field name="res_model">mail.activity.plan</field>
|
||||
<field name="view_mode">list,kanban,form</field>
|
||||
<field name="search_view_id" ref="mail_activity_plan_view_search"/>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
Create an Activity Plan
|
||||
</p>
|
||||
<p>
|
||||
Activity plans are used to assign a list of activities in just a few clicks
|
||||
(e.g. "Onboarding", "Prospect Follow-up", "Project Milestone Meeting", ...)
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Force the detailed view as all the activity plans are displayed in the admin view. -->
|
||||
<record id="mail_activity_plan_view_tree_action" model="ir.actions.act_window.view">
|
||||
<field name="sequence">1</field>
|
||||
<field name="view_mode">list</field>
|
||||
<field name="view_id" ref="mail.mail_activity_plan_view_tree_detailed"/>
|
||||
<field name="act_window_id" ref="mail.mail_activity_plan_action"/>
|
||||
</record>
|
||||
|
||||
<!-- Force the admin view that allows to modify the target models of the plan. -->
|
||||
<record id="mail_activity_plan_view_form_action" model="ir.actions.act_window.view">
|
||||
<field name="sequence">2</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="view_id" ref="mail.mail_activity_plan_view_form"/>
|
||||
<field name="act_window_id" ref="mail.mail_activity_plan_action"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -6,35 +6,22 @@
|
|||
<field name="arch" type="xml">
|
||||
<form string="Activities">
|
||||
<sheet>
|
||||
<widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
|
||||
<widget name="web_ribbon" title="Archived" bg_color="text-bg-danger" invisible="active"/>
|
||||
<div class="oe_title">
|
||||
<label for="name" class="oe_edit_only"/>
|
||||
<h1><field name="name" placeholder="e.g. Schedule a meeting"/></h1>
|
||||
<h1><field name="name" placeholder="e.g. Schedule a meeting" options="{'line_breaks': False}" widget="text"/></h1>
|
||||
</div>
|
||||
<group>
|
||||
<group name="activity_details" string="Activity Settings">
|
||||
<field name="active" invisible="1"/>
|
||||
<field name="category"/>
|
||||
<field name="default_user_id" options="{'no_create': True}" domain="[('share', '=', False)]"/>
|
||||
<field name="res_model" groups="base.group_no_one"/>
|
||||
<field name="res_model" invisible="1"/>
|
||||
<field name="res_model_change" invisible="1"/>
|
||||
<field name="initial_res_model" invisible="1"/>
|
||||
<field name="default_user_id" options="{'no_create': True}" domain="[('share', '=', False)]"
|
||||
widget="many2one_avatar_user"/>
|
||||
<field name="res_model" invisible="context.get('default_res_model')"
|
||||
placeholder="Available everywhere"/>
|
||||
<field name="summary" placeholder="e.g. "Discuss proposal""/>
|
||||
<field name="icon" groups="base.group_no_one"/>
|
||||
<field name="decoration_type" groups="base.group_no_one"/>
|
||||
</group>
|
||||
<group name="activity_planning" string="Next Activity">
|
||||
<field name="chaining_type" attrs="{'invisible': [('category', '=', 'upload_file')]}"/>
|
||||
<field name="triggered_next_type_id" options="{'no_open': True}" context="{'default_res_model': res_model}"
|
||||
attrs="{'required': ['&', ('chaining_type', '=', 'trigger'), ('category', '!=', 'upload_file')],
|
||||
'invisible': ['&', ('chaining_type', '=', 'suggest'), ('category', '!=', 'upload_file')]}"/>
|
||||
<field name="suggested_next_type_ids" widget="many2many_tags" context="{'default_res_model': res_model}"
|
||||
attrs="{'invisible': ['|', ('chaining_type', '=', 'trigger'), ('category', '=', 'upload_file')]}"/>
|
||||
<field name="mail_template_ids" widget="many2many_tags"
|
||||
domain="[('model_id.model', '=', res_model)]"
|
||||
attrs="{'invisible': [('res_model', '=', False)]}"
|
||||
context="{'default_model': res_model}"/>
|
||||
<label for="delay_count"/>
|
||||
<div>
|
||||
<field class="oe_inline pe-1 o_input_3ch" name="delay_count"/>
|
||||
|
|
@ -42,10 +29,21 @@
|
|||
<field class="oe_inline" name="delay_from"/>
|
||||
</div>
|
||||
</group>
|
||||
<group name="activity_planning" string="Next Activity">
|
||||
<field name="chaining_type" invisible="category == 'upload_file'"/>
|
||||
<field name="triggered_next_type_id" options="{'no_open': True}" context="{'default_res_model': res_model}"
|
||||
invisible="chaining_type == 'suggest' and category != 'upload_file'"
|
||||
required="chaining_type == 'trigger' and category != 'upload_file'"/>
|
||||
<field name="suggested_next_type_ids" widget="many2many_tags" context="{'default_res_model': res_model}"
|
||||
invisible="chaining_type == 'trigger' or category == 'upload_file'"/>
|
||||
<field name="mail_template_ids" widget="many2many_tags"
|
||||
domain="[('model_id.model', '=', res_model)]"
|
||||
invisible="not res_model"
|
||||
context="{'default_model': res_model}"/>
|
||||
</group>
|
||||
</group>
|
||||
<label for="default_note" class="fw-bold"/>
|
||||
<field nolabel="1" name="default_note" placeholder="e.g. "Go over the offer and discuss details"" class="oe-bordered-editor"/>
|
||||
<p class="alert alert-info" role="alert" attrs="{'invisible': [('res_model_change', '=', False)]}">Modifying the model can have an impact on existing activities using this activity type, be careful.</p>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
|
|
@ -63,32 +61,67 @@
|
|||
</record>
|
||||
|
||||
<record id="mail_activity_type_view_tree" model="ir.ui.view">
|
||||
<field name="name">mail.activity.type.view.tree</field>
|
||||
<field name="name">mail.activity.type.view.list</field>
|
||||
<field name="model">mail.activity.type</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Activities" sample="1">
|
||||
<list string="Activities" sample="1">
|
||||
<field name="sequence" widget="handle"/>
|
||||
<field name="name"/>
|
||||
<field name="summary"/>
|
||||
<field name="delay_label" string="Planned in" class="text-end"/>
|
||||
<field name="delay_from" string="Type"/>
|
||||
<field name="res_model" groups="base.group_no_one"/>
|
||||
<field name="res_model" column_invisible="context.get('default_res_model')"/>
|
||||
<field name="icon" groups="base.group_no_one"/>
|
||||
</tree>
|
||||
<field name="triggered_next_type_id" optional="hide"
|
||||
string="Triggered Next"/>
|
||||
<field name="suggested_next_type_ids" optional="hide" widget="many2many_tags"
|
||||
string="Suggested Next"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_activity_type_view_kanban" model="ir.ui.view" >
|
||||
<field name="name">mail.activity.type.view.kanban</field>
|
||||
<field name="model">mail.activity.type</field>
|
||||
<field name="arch" type="xml">
|
||||
<kanban class="o_kanban_mobile">
|
||||
<field name="icon"/>
|
||||
<templates>
|
||||
<t t-name="card">
|
||||
<div class="fw-bold fs-5">
|
||||
<i t-if="record.icon.value" t-attf-class="fa #{record.icon.value} fa-fw"
|
||||
role="img" aria-label="Activity Type Name" title="Activity Type Name"/>
|
||||
<field name="name"/>
|
||||
</div>
|
||||
<field t-if="record.res_model.value" name="res_model"/>
|
||||
<div t-if="record.summary.raw_value">
|
||||
Default Summary: <field name="summary"/>
|
||||
</div>
|
||||
<footer>
|
||||
<field class="ms-auto" name="default_user_id"
|
||||
widget="many2one_avatar_user" readonly="1"/>
|
||||
</footer>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_activity_type_action" model="ir.actions.act_window">
|
||||
<field name="name">Activity Types</field>
|
||||
<field name="res_model">mail.activity.type</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="view_mode">list,kanban,form</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="mail_activity_action" model="ir.actions.act_window">
|
||||
<field name="name">Activities</field>
|
||||
<field name="name">Activity Overview</field>
|
||||
<field name="res_model">mail.activity</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
<!-- ensure pagination works even if _search removes records after fetching -->
|
||||
<field name="context">{
|
||||
'force_search_count': 1,
|
||||
}</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_activity_view_form_popup" model="ir.ui.view">
|
||||
|
|
@ -99,9 +132,13 @@
|
|||
<form string="Log an Activity" create="false">
|
||||
<sheet string="Activity">
|
||||
<div class="oe_button_box" name="button_box" invisible="1">
|
||||
<button name="action_open_document" string="Open Document"
|
||||
<button name="action_open_document"
|
||||
type="object" class="oe_link" icon="fa-file-text-o"
|
||||
attrs="{'invisible': ['|', ('res_model', '=', False), ('res_id', '=', 0)]}"/>
|
||||
invisible="not res_model or res_id == 0">
|
||||
<div class="o_field_widget o_stat_info">
|
||||
<span class="o_stat_text">Open Document</span>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
<group invisible="1">
|
||||
<field name="activity_category" invisible="1" />
|
||||
|
|
@ -112,38 +149,31 @@
|
|||
<field name="previous_activity_type_id"/>
|
||||
<field name="has_recommended_activities"/>
|
||||
</group>
|
||||
<group attrs="{'invisible': [('has_recommended_activities','=',False)]}">
|
||||
<group invisible="not has_recommended_activities">
|
||||
<field name="recommended_activity_type_id" widget="selection_badge"
|
||||
domain="[('previous_type_ids', '=', previous_activity_type_id)]"
|
||||
string="Recommended Activities"/>
|
||||
</group>
|
||||
|
||||
<group>
|
||||
<group>
|
||||
<field name="activity_type_id" required="1" options="{'no_create': True, 'no_open': True}"/>
|
||||
<field name="summary" placeholder="e.g. Discuss proposal"/>
|
||||
</group>
|
||||
<field name="activity_type_id" required="1" widget="selection_badge_icons" iconField="icon" nolabel="1"/>
|
||||
<field name="summary" placeholder="e.g. Discuss Proposal" class="fs-3 pb-2"/>
|
||||
<group>
|
||||
<field name="date_deadline"/>
|
||||
<field name="user_id"/>
|
||||
</group>
|
||||
<field name="user_id" widget="many2one_avatar_user"/>
|
||||
</group>
|
||||
<field name="note" class="oe-bordered-editor" placeholder="Log a note..."/>
|
||||
<field name="note" class="oe-bordered-editor embedded-editor-height-4" placeholder="Log a note..." widget="html_mail"/>
|
||||
<footer>
|
||||
<field name="id" invisible="1"/>
|
||||
<button id="mail_activity_schedule" string="Schedule" name="action_close_dialog" type="object" class="btn-primary"
|
||||
attrs="{'invisible': [('id', '!=', False)]}" data-hotkey="q"/>
|
||||
<button id="mail_activity_schedule" string="Schedule" close="1" name="action_close_dialog" type="object" class="btn-primary"
|
||||
invisible="id" data-hotkey="q"/>
|
||||
<button id="mail_activity_save" string="Save" name="action_close_dialog" type="object" class="btn-primary"
|
||||
attrs="{'invisible': [('id', '=', False)]}" data-hotkey="q"/>
|
||||
<button attrs="{'invisible': [('chaining_type', '=', 'trigger')]}" string="Mark as Done" name="action_done"
|
||||
invisible="not id" data-hotkey="q"/>
|
||||
<button invisible="chaining_type == 'trigger'" string="Mark Done" name="action_done"
|
||||
type="object" class="btn-secondary" data-hotkey="w"
|
||||
context="{'mail_activity_quick_update': True}"/>
|
||||
<button attrs="{'invisible': [('chaining_type', '=', 'trigger')]}" string="Done & Schedule Next" name="action_done_schedule_next"
|
||||
type="object" class="btn-secondary" data-hotkey="x"
|
||||
context="{'mail_activity_quick_update': True}"/>
|
||||
<button attrs="{'invisible': [('chaining_type', '=', 'suggest')]}" string="Done & Launch Next" name="action_done_schedule_next"
|
||||
type="object" class="btn-secondary" data-hotkey="x"
|
||||
context="{'mail_activity_quick_update': True}"/>
|
||||
<button string="Discard" class="btn-secondary" special="cancel" data-hotkey="z" />
|
||||
<button string="Discard" class="btn-secondary" special="cancel" data-hotkey="x" />
|
||||
</footer>
|
||||
</sheet>
|
||||
</form>
|
||||
|
|
@ -167,24 +197,72 @@
|
|||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_activity_view_form_without_record_access" model="ir.ui.view">
|
||||
<field name="name">mail.activity.view.form.without.record.access</field>
|
||||
<field name="model">mail.activity</field>
|
||||
<field name="priority">32</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Log an Activity" create="false" delete="false">
|
||||
<header>
|
||||
<button string="Mark Done" class="btn-primary"
|
||||
name="action_done_redirect_to_other" type="object"/>
|
||||
</header>
|
||||
<sheet string="Activity">
|
||||
<field name="display_name" invisible="1"/>
|
||||
<group>
|
||||
<field name="activity_type_id" required="1"
|
||||
widget="selection_badge_icons" iconField="icon" nolabel="1"/>
|
||||
<field name="summary" placeholder="e.g. Discuss proposal"/>
|
||||
<group>
|
||||
<field name="date_deadline"/>
|
||||
</group>
|
||||
</group>
|
||||
<field name="note" class="oe-bordered-editor embedded-editor-height-4" placeholder="Log a note..." widget="html_mail"/>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_activity_view_search" model="ir.ui.view">
|
||||
<field name="name">mail.activity.view.search</field>
|
||||
<field name="model">mail.activity</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Activity">
|
||||
<field name="res_model"/>
|
||||
<field name="summary"/>
|
||||
<field name="res_name" string="Name" filter_domain="[
|
||||
'|',
|
||||
('res_name', 'ilike', self),
|
||||
('summary', 'ilike', self),
|
||||
]"/>
|
||||
<field name="user_id"/>
|
||||
<field name="activity_type_id"/>
|
||||
<filter invisible="1" string="Late Activities" name="activities_overdue"
|
||||
domain="[('date_deadline', '<', context_today().strftime('%Y-%m-%d'))]"
|
||||
help="Show all records which has next action date is before today"/>
|
||||
<filter invisible="1" string="Today Activities" name="activities_today"
|
||||
domain="[('date_deadline', '=', context_today().strftime('%Y-%m-%d'))]"/>
|
||||
<filter invisible="1" string="Future Activities" name="activities_upcoming_all"
|
||||
domain="[('date_deadline', '>', context_today().strftime('%Y-%m-%d'))
|
||||
<filter name="filter_user_id_uid" string="My Activities" domain="[('user_id', '=', uid)]"/>
|
||||
<filter name="filter_user_id_no_user" string="Unassigned Activities" domain="[('user_id', '=', False)]"/>
|
||||
<separator/>
|
||||
<separator invisible="1"/>
|
||||
<filter string="Overdue" name="filter_date_deadline_past"
|
||||
domain="[('date_deadline', '<', 'today')]"
|
||||
help="Show all records whose next activity date is past"/>
|
||||
<filter string="Today" name="filter_date_deadline_today"
|
||||
domain="[('date_deadline', '=', 'today')]"/>
|
||||
<filter string="Tomorrow" name="filter_date_deadline_tomorrow"
|
||||
help="Show all records whose next action date is tomorrow"
|
||||
domain="[('date_deadline', '=', 'today +1d')]"/>
|
||||
<filter string="This week" name="filter_date_deadline_week"
|
||||
help="Show all records whose next action date is this week"
|
||||
domain="[
|
||||
('date_deadline', '>=', '=week_start'),
|
||||
('date_deadline', '<', '=week_start +1w')
|
||||
]"/>
|
||||
<group expand="0" string="Group By">
|
||||
<filter string="Future" name="filter_date_deadline_future"
|
||||
domain="[('date_deadline', '>', 'today')
|
||||
]"/>
|
||||
<separator/>
|
||||
<filter string="Done" name="filter_archived" domain="[('active', '=', False)]"/>
|
||||
<separator />
|
||||
<group>
|
||||
<filter string="Deadline" name="date_deadline" context="{'group_by': 'date_deadline'}"/>
|
||||
<filter string="Document Model" name="group_by_res_model_id" context="{'group_by': 'res_model_id'}"/>
|
||||
<filter string="Assigned To" name="group_by_user_id" context="{'group_by': 'user_id'}"/>
|
||||
<filter string="Created By" name="createdby" context="{'group_by': 'create_uid'}"/>
|
||||
<filter string="Activity Type" name="activittype" context="{'group_by': 'activity_type_id'}"/>
|
||||
</group>
|
||||
|
|
@ -193,24 +271,106 @@
|
|||
</record>
|
||||
|
||||
<record id="mail_activity_view_tree" model="ir.ui.view">
|
||||
<field name="name">mail.activity.view.tree</field>
|
||||
<field name="name">mail.activity.view.list</field>
|
||||
<field name="model">mail.activity</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Next Activities"
|
||||
decoration-danger="date_deadline < current_date"
|
||||
decoration-success="date_deadline == current_date"
|
||||
default_order="date_deadline" create="false">
|
||||
<field name="res_name"/>
|
||||
<list string="Next Activities"
|
||||
default_order="date_deadline" create="true">
|
||||
<header>
|
||||
<button name="action_done" type="object" string="Done" icon="fa-check"/>
|
||||
<button name="action_cancel" type="object" string="Cancel" icon="fa-times"/>
|
||||
<button name="action_reschedule_today" type="object" string="Today" icon="fa-arrow-down"/>
|
||||
<button name="action_reschedule_tomorrow" type="object" string="Tomorrow" icon="fa-calendar-plus-o"/>
|
||||
<button name="action_reschedule_nextweek" type="object" string="Next Week" icon="fa-calendar-o"/>
|
||||
</header>
|
||||
<field name="summary" string="Summary"/>
|
||||
<field name="activity_type_id"/>
|
||||
<field name="summary"/>
|
||||
<field name="date_deadline"/>
|
||||
</tree>
|
||||
<field name="user_id" widget="many2one_avatar_user"/>
|
||||
<field name="res_name" string="Linked to"/>
|
||||
<field name="date_deadline" widget="remaining_days"/>
|
||||
<field name="date_done" string="Done Date" optional="hide"/>
|
||||
<field name="feedback" optional="hide"/>
|
||||
<widget name="mail_activity_list_reschedule_dropdown"/>
|
||||
<button name="action_done" type="object" string="Done" icon="fa-check" invisible="active == False"/>
|
||||
<button name="unlink" type="object" string="Cancel" icon="fa-times" class="text-danger" invisible="active == False"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_activity_view_tree_without_record_access" model="ir.ui.view">
|
||||
<field name="name">mail.activity.view.list.without.record.access</field>
|
||||
<field name="model">mail.activity</field>
|
||||
<field name="inherit_id" ref="mail_activity_view_tree"/>
|
||||
<field name="mode">primary</field>
|
||||
<field name="priority">32</field>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//list" position="attributes">
|
||||
<attribute name="delete">0</attribute>
|
||||
<attribute name="edit">0</attribute>
|
||||
<attribute name="duplicate">0</attribute>
|
||||
<attribute name="js_class">archive_disabled_activity_list</attribute>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_activity_view_tree_open_target" model="ir.ui.view">
|
||||
<field name="name">mail.activity.view.list.open.target</field>
|
||||
<field name="model">mail.activity</field>
|
||||
<field name="inherit_id" ref="mail_activity_view_tree"/>
|
||||
<field name="mode">primary</field>
|
||||
<field name="priority">32</field>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//list" position="attributes">
|
||||
<attribute name="action">action_open_document</attribute>
|
||||
<attribute name="type">object</attribute>
|
||||
<attribute name="js_class">archive_disabled_activity_list</attribute>
|
||||
<attribute name="multi_edit">1</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//list//field[@name='activity_type_id']" position="attributes">
|
||||
<attribute name="domain">[('res_model', '=', False)]</attribute>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_activity_view_kanban_open_target" model="ir.ui.view">
|
||||
<field name="name">mail.activity.view.kanban.open.target</field>
|
||||
<field name="model">mail.activity</field>
|
||||
<field name="arch" type="xml">
|
||||
<kanban string="Activity" action="action_open_document" type="object" js_class="mail_activity_my_kanban">
|
||||
<templates>
|
||||
<field name="active" invisible="1"/>
|
||||
<field name="icon" invisible="1"/>
|
||||
<t t-name="card">
|
||||
<div class="d-flex justify-content-between">
|
||||
<span class="text-truncate" invisible="not res_name">
|
||||
<field name="res_name" class="fw-bold" />
|
||||
(<field class="text-muted" name="res_model_id" />)
|
||||
</span>
|
||||
<field name="summary" class="text-truncate" invisible="res_name"/>
|
||||
<span class="badge rounded-pill text-bg-300">
|
||||
<i t-if="record.icon" t-attf-class="fa {{record.icon.raw_value}} me-1"/>
|
||||
<field name="activity_type_id"/>
|
||||
</span>
|
||||
</div>
|
||||
<field class="text-truncate" name="summary" invisible="not res_name"/>
|
||||
<footer class="align-items-center">
|
||||
<field name="user_id" widget="many2one_avatar_user" />
|
||||
<field name="date_deadline" widget="remaining_days" class="ms-2"/>
|
||||
<button type="object" name="action_done" class="btn btn-link btn-sm ms-auto me-1" invisible="active == False">
|
||||
<i class="fa fa-check" /> Done
|
||||
</button>
|
||||
<button type="object" name="unlink" class="btn btn-link text-danger btn-sm">
|
||||
<i class="fa fa-times" /> Cancel
|
||||
</button>
|
||||
</footer>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>
|
||||
</field>
|
||||
</record>
|
||||
<record id="mail_activity_action_view_tree" model="ir.actions.act_window.view">
|
||||
<field name="sequence" eval="1"/>
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="view_mode">list</field>
|
||||
<field name="act_window_id" ref="mail.mail_activity_action"/>
|
||||
</record>
|
||||
<record id="mail_activity_action_view_form" model="ir.actions.act_window.view">
|
||||
|
|
@ -220,14 +380,42 @@
|
|||
<field name="act_window_id" ref="mail.mail_activity_action"/>
|
||||
</record>
|
||||
|
||||
<record id="mail_activity_without_access_action" model="ir.actions.act_window">
|
||||
<field name="name">Other activities</field>
|
||||
<field name="res_model">mail.activity</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
<field name="search_view_id" ref="mail.mail_activity_view_search"/>
|
||||
<field name="domain">['|', ('id', 'in', context.get('active_ids')), '&', ('res_model', '=', False), ('user_id', '=', uid)]</field>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
No activities.
|
||||
</p>
|
||||
</field>
|
||||
<field name="target">main</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_activity_action_without_access_view_tree" model="ir.actions.act_window.view">
|
||||
<field name="sequence">1</field>
|
||||
<field name="view_mode">list</field>
|
||||
<field name="view_id" ref="mail.mail_activity_view_tree_without_record_access"/>
|
||||
<field name="act_window_id" ref="mail.mail_activity_without_access_action"/>
|
||||
</record>
|
||||
|
||||
<record id="mail_activity_action_without_access_view_form" model="ir.actions.act_window.view">
|
||||
<field name="sequence">2</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="view_id" ref="mail.mail_activity_view_form_without_record_access"/>
|
||||
<field name="act_window_id" ref="mail.mail_activity_without_access_action"/>
|
||||
</record>
|
||||
|
||||
<record id="mail_activity_view_calendar" model="ir.ui.view">
|
||||
<field name="name">mail.activity.view.calendar</field>
|
||||
<field name="model">mail.activity</field>
|
||||
<field name="priority" eval="2"/>
|
||||
<field name="arch" type="xml">
|
||||
<calendar string="Activity" date_start="date_deadline" color="activity_type_id">
|
||||
<calendar string="Activity" date_start="date_deadline" color="activity_type_id" js_class="activity_calendar" create="0" mode="month">
|
||||
<field name="user_id" avatar_field="avatar_128"/>
|
||||
<field name="res_name"/>
|
||||
<field name="res_name" string="Name"/>
|
||||
<field name="date_deadline"/>
|
||||
<field name="summary"/>
|
||||
<field name="activity_type_id" filters="1" invisible="1"/>
|
||||
|
|
@ -235,4 +423,39 @@
|
|||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_activity_action_my" model="ir.actions.act_window">
|
||||
<field name="name">My Activities</field>
|
||||
<field name="res_model">mail.activity</field>
|
||||
<field name="view_mode">list,kanban,calendar</field>
|
||||
<field name="search_view_id" ref="mail.mail_activity_view_search"/>
|
||||
<!-- ensure pagination works even if _search removes records after fetching -->
|
||||
<field name="context">{
|
||||
'force_search_count': 1,
|
||||
'search_default_filter_user_id_uid': 1,
|
||||
'search_default_filter_date_deadline_past': 1,
|
||||
'search_default_filter_date_deadline_today': 1,
|
||||
}</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_activity_action_my_view_tree" model="ir.actions.act_window.view">
|
||||
<field name="sequence" eval="1"/>
|
||||
<field name="view_mode">list</field>
|
||||
<field name="act_window_id" ref="mail.mail_activity_action_my"/>
|
||||
<field name="view_id" ref="mail.mail_activity_view_tree_open_target"/>
|
||||
</record>
|
||||
|
||||
<record id="mail_activity_action_my_view_kanban" model="ir.actions.act_window.view">
|
||||
<field name="sequence" eval="1"/>
|
||||
<field name="view_mode">kanban</field>
|
||||
<field name="act_window_id" ref="mail.mail_activity_action_my"/>
|
||||
<field name="view_id" ref="mail.mail_activity_view_kanban_open_target"/>
|
||||
</record>
|
||||
|
||||
<record id="mail_activity_action_my_view_calendar" model="ir.actions.act_window.view">
|
||||
<field name="sequence" eval="1"/>
|
||||
<field name="view_mode">calendar</field>
|
||||
<field name="act_window_id" ref="mail.mail_activity_action_my"/>
|
||||
<field name="view_id" ref="mail.mail_activity_view_calendar"/>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,80 @@
|
|||
<?xml version="1.0"?>
|
||||
<odoo>
|
||||
|
||||
<record id="mail_alias_domain_view_form" model="ir.ui.view">
|
||||
<field name="name">mail.alias.domain.view.form</field>
|
||||
<field name="model">mail.alias.domain</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Alias Domain" duplicate="false">
|
||||
<sheet>
|
||||
<group>
|
||||
<group>
|
||||
<label for="name"/>
|
||||
<div>
|
||||
<span class="me-1 oe_inline">@</span>
|
||||
<field name="name" string="Domain"
|
||||
class="oe_inline"
|
||||
placeholder='e.g. "mycompany.com"'/>
|
||||
</div>
|
||||
<field name="company_ids" widget="many2many_tags"
|
||||
string="Used In"
|
||||
readonly="True"
|
||||
groups="base.group_multi_company"
|
||||
placeholder="Visible to all"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="bounce_alias" groups="base.group_no_one"
|
||||
placeholder='e.g. "bounce"'/>
|
||||
<field name="catchall_alias" groups="base.group_no_one"
|
||||
placeholder='e.g. "catchall"'/>
|
||||
<field name="default_from" groups="base.group_no_one"
|
||||
placeholder='e.g. "notifications"'/>
|
||||
</group>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_alias_domain_view_tree" model="ir.ui.view">
|
||||
<field name="name">mail.alias.domain.view.list</field>
|
||||
<field name="model">mail.alias.domain</field>
|
||||
<field name="arch" type="xml">
|
||||
<list string="Alias Domains" duplicate="false">
|
||||
<field name="sequence" widget="handle"/>
|
||||
<field name="name"/>
|
||||
<field name="bounce_alias"/>
|
||||
<field name="catchall_alias"/>
|
||||
<field name="default_from"/>
|
||||
<field name="company_ids" optional="hide"
|
||||
widget="many2many_tags"
|
||||
groups="base.group_multi_company"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_alias_domain_view_search" model="ir.ui.view">
|
||||
<field name="name">mail.alias.domain.view.search</field>
|
||||
<field name="model">mail.alias.domain</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Alias Domains">
|
||||
<field name="name"/>
|
||||
<field name="bounce_alias"/>
|
||||
<field name="catchall_alias"/>
|
||||
<field name="company_ids" groups="base.group_multi_company"/>
|
||||
<group>
|
||||
<filter string="Company" name="group_by_company_ids"
|
||||
domain="[]" context="{'group_by': 'company_ids'}"
|
||||
groups="base.group_multi_company"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_alias_domain_action" model="ir.actions.act_window">
|
||||
<field name="name">Alias Domains</field>
|
||||
<field name="res_model">mail.alias.domain</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
|
|
@ -3,74 +3,115 @@
|
|||
<data>
|
||||
|
||||
<!-- Alias Form View -->
|
||||
<record model="ir.ui.view" id="view_mail_alias_form">
|
||||
<field name="name">mail.alias.form</field>
|
||||
<record model="ir.ui.view" id="mail_alias_view_form">
|
||||
<field name="name">mail.alias.view.form</field>
|
||||
<field name="model">mail.alias</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Alias">
|
||||
<field name="alias_status" invisible="1"/>
|
||||
<div invisible="alias_status != 'invalid'"
|
||||
class="alert alert-danger text-center" role="alert">
|
||||
The last message received on this alias has caused an error.
|
||||
</div>
|
||||
<sheet>
|
||||
<div class="oe_button_box" name="button_box">
|
||||
<button name="open_document" string="Open Document"
|
||||
type="object" class="oe_link"
|
||||
attrs="{'invisible': ['|', ('alias_model_id', '=', False), ('alias_force_thread_id', '=', 0)]}"/>
|
||||
<button name="open_parent_document" string="Open Parent Document"
|
||||
type="object" class="oe_link" icon="fa-sitemap"
|
||||
attrs="{'invisible': ['|', ('alias_parent_model_id', '=', False), ('alias_parent_thread_id', '=', 0)]}"/>
|
||||
invisible="not alias_model_id or alias_force_thread_id == 0"/>
|
||||
<button name="open_parent_document"
|
||||
type="object" class="oe_link" icon="fa-sitemap"
|
||||
invisible="not alias_parent_model_id or alias_parent_thread_id == 0">
|
||||
<div class="o_field_widget o_stat_info">
|
||||
<span class="o_stat_text">Open Parent Document</span>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
<div class="d-flex">
|
||||
<h2 class="flex-grow-1" dir="ltr">
|
||||
<field name="alias_name" placeholder="alias" class="oe_inline"/>@
|
||||
<field name="alias_domain_id" class="oe_inline" placeholder="e.g. mycompany.com"
|
||||
options="{'no_create': True, 'no_open': True}"/>
|
||||
</h2>
|
||||
<field name="alias_status" widget="badge"
|
||||
decoration-success="alias_status == 'valid'"
|
||||
decoration-warning="alias_status == 'not_tested'"
|
||||
decoration-danger="alias_status == 'invalid'"/>
|
||||
</div>
|
||||
<h2 dir="ltr"><field name="alias_name" class="oe_inline"/>@<field name="alias_domain" class="oe_inline"/></h2>
|
||||
<group>
|
||||
<field name="alias_model_id"/>
|
||||
<field name="alias_force_thread_id"/>
|
||||
<field name="alias_defaults"/>
|
||||
<field name="alias_contact"/>
|
||||
<field name="alias_user_id"/>
|
||||
<field name="alias_incoming_local"/>
|
||||
<field name="alias_parent_model_id"/>
|
||||
<field name="alias_parent_thread_id"/>
|
||||
</group>
|
||||
<label for="alias_bounced_content" attrs="{'invisible':[('alias_contact', '=', 'everyone')]}"/>
|
||||
<field name="alias_bounced_content" attrs="{'invisible':[('alias_contact', '=', 'everyone')]}"/>
|
||||
<label for="alias_bounced_content" invisible="alias_contact == 'everyone'"/>
|
||||
<field name="alias_bounced_content" invisible="alias_contact == 'everyone'"/>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Alias List View -->
|
||||
<record model="ir.ui.view" id="view_mail_alias_tree">
|
||||
<field name="name">mail.alias.tree</field>
|
||||
<record model="ir.ui.view" id="mail_alias_view_tree">
|
||||
<field name="name">mail.alias.view.list</field>
|
||||
<field name="model">mail.alias</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Alias">
|
||||
<list string="Alias">
|
||||
<field name="alias_name"/>
|
||||
<field name="alias_domain_id"/>
|
||||
<field name="alias_model_id"/>
|
||||
<field name="alias_user_id"/>
|
||||
<field name="alias_defaults"/>
|
||||
<field name="alias_force_thread_id" optional="hide"/>
|
||||
<field name="alias_parent_model_id"/>
|
||||
<field name="alias_parent_thread_id" optional="hide"/>
|
||||
<field name="alias_defaults" optional="hide"/>
|
||||
<field name="alias_contact"/>
|
||||
</tree>
|
||||
<field name="alias_incoming_local" optional="hide"/>
|
||||
<field name="alias_status" widget="badge"
|
||||
decoration-success="alias_status == 'valid'"
|
||||
decoration-warning="alias_status == 'not_tested'"
|
||||
decoration-danger="alias_status == 'invalid'"/>
|
||||
<button name="open_document" type="object"
|
||||
string="Open Document" icon="fa-sitemap"
|
||||
invisible="not alias_model_id or alias_force_thread_id == 0"/>
|
||||
<button name="open_parent_document" type="object"
|
||||
string="Open Owner" icon="fa-sitemap"
|
||||
invisible="not alias_parent_model_id or alias_parent_thread_id == 0"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Alias Search View -->
|
||||
<record model="ir.ui.view" id="view_mail_alias_search">
|
||||
<field name="name">mail.alias.search</field>
|
||||
<record model="ir.ui.view" id="mail_alias_view_search">
|
||||
<field name="name">mail.alias.view.search</field>
|
||||
<field name="model">mail.alias</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Alias">
|
||||
<field name="alias_name"/>
|
||||
<field name="alias_domain_id"/>
|
||||
<field name="alias_model_id"/>
|
||||
<field name="create_uid"/>
|
||||
<field name="alias_force_thread_id"/>
|
||||
<field name="alias_parent_model_id"/>
|
||||
<field name="alias_parent_thread_id"/>
|
||||
<separator/>
|
||||
<filter string="Active" name="active" domain="[('alias_name', '!=', False)]"/>
|
||||
<group expand="0" string="Group By">
|
||||
<filter string="User" name="User" context="{'group_by':'alias_user_id'}"/>
|
||||
<filter string="Model" name="Model" context="{'group_by':'alias_model_id'}"/>
|
||||
<group>
|
||||
<filter string="Creator" name="groupby_create_uid"
|
||||
context="{'group_by': 'create_uid'}"/>
|
||||
<filter string="Alias Domain" name="groupby_alias_domain_id"
|
||||
context="{'group_by': 'alias_domain_id'}"/>
|
||||
<filter string="Document Model" name="groupby_alias_model_id"
|
||||
context="{'group_by': 'alias_model_id'}"/>
|
||||
<filter string="Container Model" name="groupby_alias_model_id"
|
||||
context="{'group_by': 'alias_parent_model_id'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_view_mail_alias" model="ir.actions.act_window">
|
||||
<record id="mail_alias_action" model="ir.actions.act_window">
|
||||
<field name="name">Aliases</field>
|
||||
<field name="res_model">mail.alias</field>
|
||||
<field name="context">{
|
||||
|
|
|
|||
|
|
@ -1,13 +1,13 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<record id="mail_blacklist_view_tree" model="ir.ui.view">
|
||||
<field name="name">mail.blacklist.view.tree</field>
|
||||
<field name="name">mail.blacklist.view.list</field>
|
||||
<field name="model">mail.blacklist</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Email Blacklist">
|
||||
<list string="Email Blacklist">
|
||||
<field name="create_date" string="Blacklist Date"/>
|
||||
<field name="email"/>
|
||||
</tree>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
|
@ -19,25 +19,18 @@
|
|||
<header>
|
||||
<button name="mail_action_blacklist_remove" string="Unblacklist"
|
||||
type="object" class="oe_highlight" context="{'default_email': email}"
|
||||
attrs="{'invisible': ['|', ('active', '=', False), ('email', '=', False)]}"/>
|
||||
invisible="not active or not email"/>
|
||||
<button name="action_add" string="Blacklist"
|
||||
type="object" class="oe_highlight"
|
||||
attrs="{'invisible': ['|', ('active', '=', True), ('email', '=', False)]}"/>
|
||||
invisible="active or not email"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
|
||||
<div class="badge rounded-pill text-bg-danger float-end fs-6 border-0" invisible="active">Archived</div>
|
||||
<group>
|
||||
<group>
|
||||
<field name="email"/>
|
||||
<field name="active" readonly="1"/>
|
||||
<br/>
|
||||
</group>
|
||||
<field name="email"/>
|
||||
</group>
|
||||
</sheet>
|
||||
<div class="oe_chatter">
|
||||
<field name="message_follower_ids" groups="base.group_user"/>
|
||||
<field name="message_ids"/>
|
||||
</div>
|
||||
<chatter/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,94 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
|
||||
<record id="mail_canned_response_view_search" model="ir.ui.view">
|
||||
<field name="name">mail.canned.response.view.search</field>
|
||||
<field name="model">mail.canned.response</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Canned Responses Search">
|
||||
<field name="source"/>
|
||||
<field name="substitution"/>
|
||||
<filter string="Private" name="filter_create_uid" domain="[('is_shared', '=', False)]"/>
|
||||
<filter string="Shared" name="filter_is_shared" domain="[('is_shared', '=', True)]"/>
|
||||
<group>
|
||||
<filter string="Authorized Groups" name="group_by_group_ids" context="{'group_by': 'group_ids'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_canned_response_view_tree" model="ir.ui.view">
|
||||
<field name="name">mail.canned.response.list</field>
|
||||
<field name="model">mail.canned.response</field>
|
||||
<field name="arch" type="xml">
|
||||
<list string="Canned responses" editable="bottom" default_order="is_shared" sample="1">
|
||||
<field name="source" placeholder="e.g. hello" widget="shortcut" readonly="not is_editable"/>
|
||||
<field name="substitution" placeholder="e.g. Hello, how may I help you?" readonly="not is_editable"/>
|
||||
<field name="create_uid" widget="many2one_avatar_user" optional="hide"/>
|
||||
<field name="group_ids" widget="many2many_tags" readonly="not is_editable" optional="hide"/>
|
||||
<field name="last_used" readonly="1" optional="hide"/>
|
||||
<field name="is_editable" column_invisible="True"/>
|
||||
<field name="is_shared" column_invisible="True"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_canned_response_view_form" model="ir.ui.view">
|
||||
<field name="name">mail.canned.response.form</field>
|
||||
<field name="model">mail.canned.response</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Canned response">
|
||||
<sheet>
|
||||
<group>
|
||||
<field name="source" widget="shortcut" readonly="not is_editable"/>
|
||||
<field name="substitution" placeholder="e.g. Hello, how may I help you?" readonly="not is_editable"/>
|
||||
<field name="group_ids" widget="many2many_tags" readonly="not is_editable"/>
|
||||
<field name="is_editable" invisible="True"/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_canned_response_view_kanban" model="ir.ui.view">
|
||||
<field name="name">mail.canned.response.kanban</field>
|
||||
<field name="model">mail.canned.response</field>
|
||||
<field name="arch" type="xml">
|
||||
<kanban class="o_kanban_mobile" sample="1">
|
||||
<templates>
|
||||
<t t-name="card">
|
||||
<div class="oe_kanban_global_click p-2 d-flex flex-column gap-1">
|
||||
<div class="fw-bold fs-5">
|
||||
<field name="source" widget="shortcut"/>
|
||||
</div>
|
||||
<div class="text-truncate" t-att-title="record.substitution.value">
|
||||
<field name="substitution"/>
|
||||
</div>
|
||||
<div class="pt-1">
|
||||
<field name="group_ids" widget="many2many_tags"/>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_canned_response_action" model="ir.actions.act_window">
|
||||
<field name="name">Canned Responses</field>
|
||||
<field name="res_model">mail.canned.response</field>
|
||||
<field name="view_mode">list,form,kanban</field>
|
||||
<field name="search_view_id" ref="mail_canned_response_view_search"/>
|
||||
<field name="context">{}</field>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
No canned response found. Let's create one!
|
||||
</p><p>
|
||||
Use canned responses to quickly insert prewritten messages with <i>::shortcut</i>. You can edit the text before sending.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<odoo><data>
|
||||
<!-- mail.channel.member -->
|
||||
<record id="mail_channel_member_view_tree" model="ir.ui.view">
|
||||
<field name="name">mail.channel.member.tree</field>
|
||||
<field name="model">mail.channel.member</field>
|
||||
<field name="priority">10</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Channels">
|
||||
<field name="display_name"/>
|
||||
<field name="channel_id"/>
|
||||
<field name="seen_message_id"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_channel_member_view_form" model="ir.ui.view">
|
||||
<field name="name">mail.channel.member.form</field>
|
||||
<field name="model">mail.channel.member</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Channel">
|
||||
<sheet>
|
||||
<group>
|
||||
<field name="partner_id"/>
|
||||
<field name="guest_id"/>
|
||||
<field name="channel_id"/>
|
||||
<field name="custom_channel_name"/>
|
||||
<field name="fetched_message_id"/>
|
||||
<field name="seen_message_id"/>
|
||||
<field name="message_unread_counter"/>
|
||||
<field name="fold_state"/>
|
||||
<field name="is_minimized"/>
|
||||
<field name="is_pinned"/>
|
||||
<field name="last_interest_dt"/>
|
||||
<field name="last_seen_dt"/>
|
||||
<field name="rtc_inviting_session_id"/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_channel_member_action" model="ir.actions.act_window">
|
||||
<field name="name">Channels/Member</field>
|
||||
<field name="res_model">mail.channel.member</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
|
||||
</data></odoo>
|
||||
|
|
@ -1,123 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<!-- mail.channel -->
|
||||
<record id="mail_channel_view_kanban" model="ir.ui.view">
|
||||
<field name="name">mail.channel.kanban</field>
|
||||
<field name="model">mail.channel</field>
|
||||
<field name="priority" eval="10"/>
|
||||
<field name="arch" type="xml">
|
||||
<kanban>
|
||||
<field name="id"/>
|
||||
<field name="description"/>
|
||||
<field name="is_member"/>
|
||||
<field name="group_ids"/>
|
||||
<templates>
|
||||
<t t-name="kanban-description">
|
||||
<div class="oe_group_description" t-if="record.description.raw_value">
|
||||
<field name="description"/>
|
||||
</div>
|
||||
</t>
|
||||
<t t-name="kanban-box">
|
||||
<div class="oe_module_vignette oe_kanban_global_click d-flex align-items-center">
|
||||
<img t-att-src="kanban_image('mail.channel', 'avatar_128', 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">
|
||||
<field name="description"/>
|
||||
</p>
|
||||
<button type="object" attrs="{'invisible':['|', ('is_member','=',True), ('group_ids', '!=', [])]}" class="btn btn-primary float-end" name="channel_join">Join</button>
|
||||
<button type="object" attrs="{'invisible':['|', ('is_member','=',False), ('group_ids', '!=', [])]}" class="btn btn-secondary float-end" name="action_unfollow">Leave</button>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_channel_view_form" model="ir.ui.view">
|
||||
<field name="name">mail.channel.form</field>
|
||||
<field name="model">mail.channel</field>
|
||||
<field name="priority" eval="10"/>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Mail Channel Form">
|
||||
<sheet>
|
||||
<div class="oe_button_box" name="button_box"/>
|
||||
<field name="avatar_128" invisible="1"/>
|
||||
<field name="image_128" widget="image" class="oe_avatar" options="{'size': [90, 90], 'preview_image':'avatar_128'}"/>
|
||||
<div class="oe_title">
|
||||
<label for="name" string="Group Name"/>
|
||||
<h1>
|
||||
#<field name="name" class="oe_inline" default_focus="1" placeholder="e.g. support" readonly="0"/>
|
||||
</h1>
|
||||
</div>
|
||||
<group class="o_label_nowrap">
|
||||
<field name="active" invisible="1"/>
|
||||
<field name="description" placeholder="Topics discussed in this group..."/>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Privacy" name="privacy">
|
||||
<group class="o_label_nowrap">
|
||||
<field name="group_public_id"
|
||||
attrs="{'invisible': [('channel_type', '!=', 'channel')]}"
|
||||
/>
|
||||
<field name="group_ids" widget="many2many_tags"
|
||||
attrs="{'invisible': [('channel_type', '!=', 'channel')]}"
|
||||
string="Auto Subscribe Groups"/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="Members" name="members">
|
||||
<field name="channel_type" invisible="1"/>
|
||||
<field name="channel_member_ids" mode="tree" context="{'active_test': False}" attrs="{'readonly': [('channel_type', '=', 'chat')]}">
|
||||
<tree string="Members" editable="bottom">
|
||||
<field name="partner_id" required="1" attrs="{'readonly': [('id', '!=', False)]}"/>
|
||||
<field name="partner_email" readonly="1"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
<page string="Integrations" invisible="1" name="mail_channel_integrations"></page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_channel_view_tree" model="ir.ui.view">
|
||||
<field name="name">mail.channel.tree</field>
|
||||
<field name="model">mail.channel</field>
|
||||
<field name="priority" eval="10"/>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Groups">
|
||||
<field name="name"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_channel_view_search" model="ir.ui.view">
|
||||
<field name="name">mail.channel.search</field>
|
||||
<field name="model">mail.channel</field>
|
||||
<field name="priority" eval="10"/>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Groups">
|
||||
<field name="name"/>
|
||||
<filter string="Archived" name="inactive" domain="[('active', '=', False)]"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_channel_action_view" model="ir.actions.act_window">
|
||||
<field name="name">Join a group</field>
|
||||
<field name="res_model">mail.channel</field>
|
||||
<field name="view_mode">kanban,tree,form</field>
|
||||
<field name="search_view_id" ref="mail_channel_view_search"/>
|
||||
</record>
|
||||
|
||||
<record id="action_discuss" model="ir.actions.client">
|
||||
<field name="name">Discuss</field>
|
||||
<field name="tag">mail.action_discuss</field>
|
||||
<field name="params" eval=""{ 'default_active_id': 'mail.box_inbox' }""/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -4,15 +4,15 @@
|
|||
|
||||
<!-- FOLLOWERS !-->
|
||||
<record model="ir.ui.view" id="view_followers_tree">
|
||||
<field name="name">mail.followers.tree</field>
|
||||
<field name="name">mail.followers.list</field>
|
||||
<field name="model">mail.followers</field>
|
||||
<field name="priority">10</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Followers">
|
||||
<list string="Followers">
|
||||
<field name="res_model"/>
|
||||
<field name="res_id"/>
|
||||
<field name="partner_id"/>
|
||||
</tree>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
|
@ -40,7 +40,7 @@
|
|||
<record id="action_view_followers" model="ir.actions.act_window">
|
||||
<field name="name">Followers</field>
|
||||
<field name="res_model">mail.followers</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
|
|
|
|||
|
|
@ -1,12 +1,12 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<record id="mail_gateway_allowed_view_tree" model="ir.ui.view">
|
||||
<field name="name">mail.gateway.allowed.view.tree</field>
|
||||
<field name="name">mail.gateway.allowed.view.list</field>
|
||||
<field name="model">mail.gateway.allowed</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Mail Gateway Allowed" editable="top">
|
||||
<list string="Mail Gateway Allowed" editable="top">
|
||||
<field name="email"/>
|
||||
</tree>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
|
@ -23,6 +23,6 @@
|
|||
<record id="mail_gateway_allowed_action" model="ir.actions.act_window">
|
||||
<field name="name">Mail Gateway Allowed</field>
|
||||
<field name="res_model">mail.gateway.allowed</field>
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="view_mode">list</field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
|
|
|||
|
|
@ -2,24 +2,46 @@
|
|||
<odoo>
|
||||
|
||||
<record id="mail_guest_view_tree" model="ir.ui.view">
|
||||
<field name="name">mail.guest.tree</field>
|
||||
<field name="name">mail.guest.list</field>
|
||||
<field name="model">mail.guest</field>
|
||||
<field name="priority">10</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Guests">
|
||||
<list string="Guests">
|
||||
<field name="id"/>
|
||||
<field name="name"/>
|
||||
<field name="country_id"/>
|
||||
<field name="lang"/>
|
||||
<field name="timezone"/>
|
||||
</tree>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_guest_view_form" model="ir.ui.view">
|
||||
<field name="name">mail.guest.form</field>
|
||||
<field name="model">mail.guest</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Guest">
|
||||
<sheet>
|
||||
<group>
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="country_id"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="lang"/>
|
||||
<field name="timezone"/>
|
||||
<field name="channel_ids" widget="many2many_tags"/>
|
||||
</group>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_guest_action" model="ir.actions.act_window">
|
||||
<field name="name">Guests</field>
|
||||
<field name="res_model">mail.guest</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
|
|
|
|||
|
|
@ -1,22 +1,25 @@
|
|||
<?xml version="1.0"?>
|
||||
<odoo>
|
||||
<record id="action_ice_servers" model="ir.actions.act_window">
|
||||
<field name="name">ICE servers</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="name">ICE Servers</field>
|
||||
<field name="res_model">mail.ice.server</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="view_mode">list,form,kanban</field>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">No ICE servers found. Let's create one!</p>
|
||||
<p>Use your own servers for calls to manage heavy traffic and ensure reliability if Twilio is unavailable.</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="view_ice_server_tree">
|
||||
<field name="name">mail.ice.server.tree</field>
|
||||
<field name="name">mail.ice.server.list</field>
|
||||
<field name="model">mail.ice.server</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree editable="bottom">
|
||||
<list editable="bottom" sample="1">
|
||||
<field colspan="1" name="server_type"/>
|
||||
<field name="uri"/>
|
||||
<field name="username"/>
|
||||
<field name="credential"/>
|
||||
</tree>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
|
@ -24,15 +27,13 @@
|
|||
<field name="name">mail.ice.server.form</field>
|
||||
<field name="model">mail.ice.server</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="ICE server">
|
||||
<form string="ICE Server Configuration">
|
||||
<sheet>
|
||||
<group>
|
||||
<label for="uri"/>
|
||||
<div class="oe_inline" name="URI" style="display: inline;">
|
||||
<field name="server_type" class="oe_inline"/><field name="uri" class="oe_inline"/>
|
||||
</div>
|
||||
<field name="server_type" class="oe_inline"/>
|
||||
<field name="uri" placeholder="stun:stun.google.com:19302 or turn:turn.example.com:3478"/>
|
||||
</group>
|
||||
<group>
|
||||
<group string="Authentication">
|
||||
<field name="username"/>
|
||||
<field name="credential"/>
|
||||
</group>
|
||||
|
|
@ -40,4 +41,62 @@
|
|||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="view_ice_server_kanban">
|
||||
<field name="name">mail.ice.server.kanban</field>
|
||||
<field name="model">mail.ice.server</field>
|
||||
<field name="arch" type="xml">
|
||||
<kanban class="o_kanban_mobile" sample="1">
|
||||
<templates>
|
||||
<t t-name="card">
|
||||
<div class="oe_kanban_global_click">
|
||||
<div class="oe_kanban_content p-2">
|
||||
<div class="d-flex align-items-center mb-2">
|
||||
<span class="fw-bold me-1">Type:</span>
|
||||
<span class="fw-bold">
|
||||
<field name="server_type"/>
|
||||
</span>
|
||||
</div>
|
||||
<div class="d-flex align-items-center mb-2">
|
||||
<span class="fw-bold me-1">URI:</span>
|
||||
<span class="text-primary fw-bold">
|
||||
<field name="uri"/>
|
||||
</span>
|
||||
</div>
|
||||
<t t-if="record.username.raw_value">
|
||||
<div class="d-flex align-items-center mb-2">
|
||||
<span class="fw-bold me-1">Username:</span>
|
||||
<field name="username"/>
|
||||
</div>
|
||||
</t>
|
||||
<t t-if="record.credential.raw_value">
|
||||
<div class="d-flex align-items-center">
|
||||
<span class="fw-bold me-1">Credential:</span>
|
||||
<field name="credential"/>
|
||||
</div>
|
||||
</t>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_ice_server_search" model="ir.ui.view" >
|
||||
<field name="name">mail.ice.server.search</field>
|
||||
<field name="model">mail.ice.server</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search ICE Servers">
|
||||
<field name="uri"/>
|
||||
<field name="username"/>
|
||||
<field name="credential"/>
|
||||
<filter string="STUN" name="stun" domain="[('server_type','=','stun')]"/>
|
||||
<filter string="TURN" name="turn" domain="[('server_type','=','turn')]"/>
|
||||
<group>
|
||||
<filter string="Server Type" name="group_by_server_type" context="{'group_by': 'server_type'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
|
|
|||
|
|
@ -1,25 +1,65 @@
|
|||
<?xml version="1.0"?>
|
||||
<odoo>
|
||||
|
||||
<record id="mail_link_preview_view_form" model="ir.ui.view">
|
||||
<field name="name">mail.link.preview.form</field>
|
||||
<field name="model">mail.link.preview</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Link Previews">
|
||||
<sheet>
|
||||
<group>
|
||||
<group>
|
||||
<field name="source_url"/>
|
||||
<field name="og_type"/>
|
||||
<field name="og_title"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="og_image"/>
|
||||
<field name="og_image" nolabel="1" widget="image_url" options="{'size': [150, 150]}" />
|
||||
<field name="og_mimetype"/>
|
||||
<field name="image_mimetype"/>
|
||||
<field name="create_date"/>
|
||||
</group>
|
||||
</group>
|
||||
<label for="og_description"/>
|
||||
<field name="og_description"/>
|
||||
<field name="message_link_preview_ids"/>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_link_preview_view_tree" model="ir.ui.view">
|
||||
<field name="name">mail.link.preview.tree</field>
|
||||
<field name="name">mail.link.preview.list</field>
|
||||
<field name="model">mail.link.preview</field>
|
||||
<field name="priority">10</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Link Previews">
|
||||
<list string="Link Previews">
|
||||
<field name="id"/>
|
||||
<field name="source_url"/>
|
||||
<field name="og_title"/>
|
||||
<field name="og_type"/>
|
||||
<field name="image_mimetype"/>
|
||||
</tree>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_link_preview_action" model="ir.actions.act_window">
|
||||
<field name="name">Link Previews</field>
|
||||
<field name="res_model">mail.link.preview</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
</record>
|
||||
|
||||
<record id="message_link_preview_list" model="ir.ui.view">
|
||||
<field name="name">mail.message.link.preview.list</field>
|
||||
<field name="model">mail.message.link.preview</field>
|
||||
<field name="priority">10</field>
|
||||
<field name="arch" type="xml">
|
||||
<list string="messages">
|
||||
<field name="author_id"/>
|
||||
<field name="is_hidden"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
|
|
|
|||
|
|
@ -8,32 +8,38 @@
|
|||
<form string="Email message" duplicate="0">
|
||||
<header>
|
||||
<field name="message_type" invisible="1"/>
|
||||
<button name="send" string="Send Now" type="object" class="oe_highlight" attrs="{'invisible': ['|', ('state', '!=', 'outgoing'), ('message_type', '=', 'user_notification')]}"/>
|
||||
<button name="mark_outgoing" string="Retry" type="object" states='exception,cancel'/>
|
||||
<button name="cancel" string="Cancel" type="object" states='outgoing'/>
|
||||
<button name="action_send_and_close" string="Send & Close" type="object" class="oe_highlight" invisible="state != 'outgoing' or message_type == 'user_notification'"/>
|
||||
<button name="mark_outgoing" string="Retry" type="object" invisible="state not in ('exception', 'cancel')"/>
|
||||
<button name="cancel" string="Cancel" type="object" invisible="state != 'outgoing'"/>
|
||||
<field name="state" widget="statusbar" statusbar_visible="outgoing,sent,received,exception,cancel"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<field name="model" invisible="1"/>
|
||||
<field name="res_id" invisible="1"/>
|
||||
<div class="oe_button_box" name="button_box">
|
||||
<button name="action_open_document" string="Open Document"
|
||||
<button name="action_open_document"
|
||||
type="object" class="oe_link" icon="fa-file-text-o"
|
||||
attrs="{'invisible': ['|', ('model', '=', False), ('res_id', '=', 0)]}"/>
|
||||
invisible="not model or res_id == 0">
|
||||
<div class="o_field_widget o_stat_info">
|
||||
<span class="o_stat_text">Open Document</span>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
<field name="mail_message_id_int" required="0" invisible="1"/>
|
||||
<label for="subject" class="oe_edit_only"/>
|
||||
<h2><field name="subject"/></h2>
|
||||
<div class="oe_title">
|
||||
<label for="subject" class="oe_edit_only"/>
|
||||
<h2><field name="subject"/></h2>
|
||||
</div>
|
||||
<div style="vertical-align: top;">
|
||||
by <field name="author_id" class="oe_inline" string="User"/> on <field name="date" readonly="1" class="oe_inline"/>
|
||||
<button name="%(action_email_compose_message_wizard)d" string="Reply" type="action" icon="fa-reply text-warning"
|
||||
context="{'default_composition_mode':'comment', 'default_parent_id': mail_message_id_int}" states='received,sent,exception,cancel'/>
|
||||
context="{'default_composition_mode':'comment', 'default_parent_id': mail_message_id_int}" invisible="state not in ('received', 'sent', 'exception', 'cancel')"/>
|
||||
</div>
|
||||
<group>
|
||||
<field name="email_from"/>
|
||||
<field name="email_to"/>
|
||||
<field name="recipient_ids" widget="many2many_tags"
|
||||
domain="[('type', '!=', 'private'), ('active', '=', True)]"/>
|
||||
domain="[('active', '=', True)]"/>
|
||||
<field name="email_cc"/>
|
||||
<field name="reply_to"/>
|
||||
<field name="scheduled_date" placeholder="YYYY-MM-DD HH:MM:SS"/>
|
||||
|
|
@ -41,14 +47,12 @@
|
|||
<notebook>
|
||||
<page string="Body" name="body">
|
||||
<field name="body_content"/>
|
||||
<field name="body_html" attrs="{'invisible': 1}"/>
|
||||
</page>
|
||||
<page string="Advanced" name="advanced" groups="base.group_no_one">
|
||||
<group>
|
||||
<group string="Status">
|
||||
<field name="auto_delete"
|
||||
attrs="{'invisible': [('state', '!=', 'outgoing'), ('state', '!=', 'exception')]}"/>
|
||||
<field name="to_delete" invisible="1"/>
|
||||
invisible="state != 'outgoing' and state != 'exception'"/>
|
||||
<field name="is_notification"/>
|
||||
<field name="message_type"/>
|
||||
<field name="mail_server_id"/>
|
||||
|
|
@ -65,14 +69,14 @@
|
|||
</page>
|
||||
<page string="Attachments" name="attachments">
|
||||
<div class="alert alert-warning" role="alert"
|
||||
attrs="{'invisible': [('restricted_attachment_count', '=', 0)]}">
|
||||
invisible="restricted_attachment_count == 0">
|
||||
You do not have access to <field name="restricted_attachment_count"/>
|
||||
attachment(s) of this email.
|
||||
</div>
|
||||
<field name="unrestricted_attachment_ids"
|
||||
domain="[('res_field','=', False)]"/>
|
||||
</page>
|
||||
<page string="Failure Reason" name="failure_reason" attrs="{'invisible': [('state', '!=', 'exception')]}">
|
||||
<page string="Failure Reason" name="failure_reason" invisible="state != 'exception'">
|
||||
<field name="failure_reason"/>
|
||||
</page>
|
||||
</notebook>
|
||||
|
|
@ -82,29 +86,28 @@
|
|||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="view_mail_tree">
|
||||
<field name="name">mail.mail.tree</field>
|
||||
<field name="name">mail.mail.list</field>
|
||||
<field name="model">mail.mail</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Emails">
|
||||
<list string="Emails">
|
||||
<header>
|
||||
<button name="action_retry" string="Retry" type="object"/>
|
||||
</header>
|
||||
<field name="date"/>
|
||||
<field name="subject"/>
|
||||
<field name="author_id" string="User"/>
|
||||
<field name="message_id" invisible="1"/>
|
||||
<field name="recipient_ids" invisible="1"/>
|
||||
<field name="model" invisible="1"/>
|
||||
<field name="res_id" invisible="1"/>
|
||||
<field name="email_from" invisible="1"/>
|
||||
<field name="message_type" invisible="1"/>
|
||||
<field name="message_id" column_invisible="True"/>
|
||||
<field name="recipient_ids" column_invisible="True"/>
|
||||
<field name="model" column_invisible="True"/>
|
||||
<field name="res_id" column_invisible="True"/>
|
||||
<field name="email_from" column_invisible="True"/>
|
||||
<field name="message_type" column_invisible="True"/>
|
||||
<field name="state" widget="badge" decoration-muted="state in ('sent', 'cancel')"
|
||||
decoration-info="state=='outgoing'" decoration-danger="state=='exception'"/>
|
||||
<field name="to_delete" invisible="1"/>
|
||||
<button name="send" string="Send Now" type="object" icon="fa-paper-plane" attrs="{'invisible': ['|', ('state', '!=', 'outgoing'), ('message_type', '=', 'user_notification')]}"/>
|
||||
<button name="mark_outgoing" string="Retry" type="object" icon="fa-repeat" states='exception,cancel'/>
|
||||
<button name="cancel" string="Cancel Email" type="object" icon="fa-times-circle" states='outgoing'/>
|
||||
</tree>
|
||||
<button name="send" string="Send Now" type="object" icon="fa-paper-plane" invisible="state != 'outgoing' or message_type == 'user_notification'"/>
|
||||
<button name="mark_outgoing" string="Retry" type="object" icon="fa-repeat" invisible="state not in ('exception', 'cancel')"/>
|
||||
<button name="cancel" string="Cancel Email" type="object" icon="fa-times-circle" invisible="state != 'outgoing'"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
|
@ -120,16 +123,21 @@
|
|||
<filter name="sent" string="Sent" domain="[('state','=','sent')]"/>
|
||||
<filter name="exception" string="Failed" domain="[('state','=','exception')]"/>
|
||||
<separator/>
|
||||
<filter name="type_email" string="Email" domain="[('message_type','=','email')]"/>
|
||||
<filter name="type_comment" string="Comment" domain="[('message_type','=','comment')]"/>
|
||||
<filter name="type_notification" string="Notification" domain="[('message_type','=','notification')]"/>
|
||||
<group expand="0" string="Extended Filters...">
|
||||
<filter name="filter_type_email_outgoing" string="Outgoing Email"
|
||||
domain="[('message_type','=','email_outgoing')]"/>
|
||||
<filter name="filter_type_email" string="Incoming Email"
|
||||
domain="[('message_type','=','email')]"/>
|
||||
<filter name="filter_type_comment" string="Comment"
|
||||
domain="[('message_type','=','comment')]"/>
|
||||
<filter name="filter_type_notification" string="Notification"
|
||||
domain="[('message_type','=','notification')]"/>
|
||||
<group>
|
||||
<field name="author_id"/>
|
||||
<field name="recipient_ids"/>
|
||||
<field name="model"/>
|
||||
<field name="res_id"/>
|
||||
</group>
|
||||
<group expand="0" string="Group By">
|
||||
<group>
|
||||
<filter string="Status" name="status" domain="[]" context="{'group_by':'state'}"/>
|
||||
<filter string="Author" name="author" context="{'group_by':'author_id'}"/>
|
||||
<filter string="Thread" name="thread" domain="[]" context="{'group_by':'message_id'}"/>
|
||||
|
|
@ -142,7 +150,7 @@
|
|||
<record id="action_view_mail_mail" model="ir.actions.act_window">
|
||||
<field name="name">Emails</field>
|
||||
<field name="res_model">mail.mail</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
<field name="context">{}</field>
|
||||
<field name="search_view_id" ref="view_mail_search"/>
|
||||
</record>
|
||||
|
|
|
|||
|
|
@ -3,10 +3,55 @@
|
|||
<menuitem name="Discuss"
|
||||
id="mail.menu_root_discuss"
|
||||
action="action_discuss"
|
||||
web_icon="mail,static/description/icon.svg"
|
||||
web_icon="mail,static/description/icon.png"
|
||||
groups="base.group_user"
|
||||
sequence="5"
|
||||
/>
|
||||
<menuitem
|
||||
id="mail.main_menu_discuss"
|
||||
name="Discuss"
|
||||
parent="mail.menu_root_discuss"
|
||||
action="action_discuss"
|
||||
sequence="1"
|
||||
/>
|
||||
<menuitem
|
||||
id="mail.menu_channel"
|
||||
name="Channels"
|
||||
parent="mail.menu_root_discuss"
|
||||
action="mail.discuss_channel_action"
|
||||
sequence="2"
|
||||
/>
|
||||
<menuitem
|
||||
id="mail.menu_configuration"
|
||||
name="Configuration"
|
||||
parent="mail.menu_root_discuss"
|
||||
sequence="3"
|
||||
/>
|
||||
<menuitem name="Notifications"
|
||||
id="mail.menu_notification_settings"
|
||||
parent="mail.menu_configuration"
|
||||
action="mail.discuss_notification_settings_action"
|
||||
sequence="1"
|
||||
/>
|
||||
<menuitem
|
||||
id="mail.menu_call_settings"
|
||||
name="Voice & Video"
|
||||
parent="mail.menu_configuration"
|
||||
action="mail.discuss_call_settings_action"
|
||||
sequence="5"
|
||||
/>
|
||||
<menuitem name="Canned Responses"
|
||||
id="mail.menu_canned_responses"
|
||||
parent="mail.menu_configuration"
|
||||
action="mail.mail_canned_response_action"
|
||||
sequence="15"
|
||||
/>
|
||||
<menuitem name="Roles"
|
||||
id="mail.menu_roles"
|
||||
parent="mail.menu_configuration"
|
||||
action="mail.res_role_action"
|
||||
sequence="25"
|
||||
/>
|
||||
|
||||
<record id="base.menu_email" model="ir.ui.menu">
|
||||
<field name="sequence">3</field>
|
||||
|
|
@ -18,6 +63,16 @@
|
|||
parent="base.menu_email"
|
||||
action="action_view_mail_mail"
|
||||
sequence="1"/>
|
||||
<menuitem id="mail_alias_menu"
|
||||
parent="base.menu_email"
|
||||
action="mail_alias_action"
|
||||
sequence="11"
|
||||
groups="base.group_no_one"/>
|
||||
<menuitem id="mail_alias_domain_menu"
|
||||
parent="base.menu_email"
|
||||
action="mail_alias_domain_action"
|
||||
sequence="12"
|
||||
groups="base.group_no_one"/>
|
||||
<menuitem name="Incoming Mail Servers"
|
||||
id="menu_action_fetchmail_server_tree"
|
||||
parent="base.menu_email"
|
||||
|
|
@ -28,21 +83,16 @@
|
|||
parent="base.menu_email"
|
||||
action="action_email_template_tree_all"
|
||||
sequence="10"/>
|
||||
<menuitem id="mail_alias_menu"
|
||||
parent="base.menu_email"
|
||||
action="action_view_mail_alias"
|
||||
sequence="11"
|
||||
groups="base.group_no_one"/>
|
||||
<menuitem id="mail_channel_menu_settings"
|
||||
<menuitem id="mail.discuss_channel_menu_settings"
|
||||
name="Channels"
|
||||
parent="base.menu_email"
|
||||
action="mail_channel_action_view"
|
||||
action="mail.discuss_channel_action_view"
|
||||
sequence="20"
|
||||
groups="base.group_no_one"/>
|
||||
<menuitem name="Channels/Partner"
|
||||
id="mail_channel_member_menu"
|
||||
<menuitem name="Channels/Members"
|
||||
id="mail.discuss_channel_member_menu"
|
||||
parent="base.menu_email"
|
||||
action="mail_channel_member_action"
|
||||
action="mail.discuss_channel_member_action"
|
||||
sequence="21"
|
||||
groups="base.group_no_one"/>
|
||||
<menuitem id="mail_gateway_allowed_menu"
|
||||
|
|
@ -78,19 +128,6 @@
|
|||
action="action_view_mail_tracking_value"
|
||||
sequence="5"/>
|
||||
|
||||
<menuitem
|
||||
id="menu_mail_activity_type"
|
||||
action="mail_activity_type_action"
|
||||
parent="mail.mail_menu_technical"
|
||||
sequence="10"
|
||||
/>
|
||||
<menuitem
|
||||
id="menu_mail_activities"
|
||||
action="mail_activity_action"
|
||||
parent="mail.mail_menu_technical"
|
||||
sequence="11"
|
||||
/>
|
||||
|
||||
<menuitem name="Notifications"
|
||||
id="mail_notification_menu"
|
||||
parent="mail.mail_menu_technical"
|
||||
|
|
@ -119,13 +156,13 @@
|
|||
action="mail_guest_action"
|
||||
parent="mail.mail_menu_technical"
|
||||
sequence="51"/>
|
||||
<menuitem id="mail_channel_rtc_session_menu"
|
||||
<menuitem id="mail.discuss_channel_rtc_session_menu"
|
||||
name="RTC sessions"
|
||||
action="mail_channel_rtc_session_action"
|
||||
action="mail.discuss_channel_rtc_session_action"
|
||||
parent="mail.mail_menu_technical"
|
||||
sequence="52"/>
|
||||
<menuitem id="mail_channel_ice_servers_menu"
|
||||
name="ICE servers"
|
||||
<menuitem id="mail.ice_servers_menu"
|
||||
name="ICE Servers"
|
||||
action="action_ice_servers"
|
||||
parent="mail.mail_menu_technical"
|
||||
sequence="53"/>
|
||||
|
|
@ -139,12 +176,37 @@
|
|||
action="mail_link_preview_action"
|
||||
parent="mail.mail_menu_technical"
|
||||
sequence="55"/>
|
||||
<menuitem id="discuss_gif_favorite_menu"
|
||||
name="GIF favorite"
|
||||
action="discuss_gif_favorite_action"
|
||||
parent="mail.mail_menu_technical"
|
||||
sequence="56"/>
|
||||
|
||||
<menuitem name="Activities"
|
||||
id="menu_mail_activities_section"
|
||||
parent="base.menu_custom"
|
||||
sequence="2" />
|
||||
<menuitem
|
||||
id="menu_mail_activities"
|
||||
action="mail_activity_action"
|
||||
parent="mail.menu_mail_activities_section"
|
||||
sequence="10"/>
|
||||
<menuitem
|
||||
id="menu_mail_activity_type"
|
||||
action="mail_activity_type_action"
|
||||
parent="mail.menu_mail_activities_section"
|
||||
sequence="20"/>
|
||||
<menuitem
|
||||
id="menu_mail_activity_plan"
|
||||
action="mail_activity_plan_action"
|
||||
parent="mail.menu_mail_activities_section"
|
||||
sequence="30"/>
|
||||
|
||||
<!--
|
||||
This menuitem will be activated by integrations modules (like github, twitter, ...). It
|
||||
is a hook to ease other modules to plug into mail.
|
||||
-->
|
||||
<record id="mail.mail_channel_integrations_menu" model="ir.ui.menu">
|
||||
<record id="mail.discuss_channel_integrations_menu" model="ir.ui.menu">
|
||||
<field name="name">Integrations</field>
|
||||
<field name="parent_id" ref="mail.menu_root_discuss"></field>
|
||||
<field name="active" eval="False"></field>
|
||||
|
|
|
|||
|
|
@ -1,25 +1,46 @@
|
|||
<?xml version="1.0"?>
|
||||
<odoo>
|
||||
|
||||
<record id="mail_message_reaction_view_form" model="ir.ui.view">
|
||||
<field name="name">mail.message.reaction.form</field>
|
||||
<field name="model">mail.message.reaction</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Reactions" create="0" edit="0">
|
||||
<sheet>
|
||||
<group>
|
||||
<group>
|
||||
<field name="message_id"/>
|
||||
<field name="content"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="partner_id"/>
|
||||
<field name="guest_id"/>
|
||||
</group>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_message_reaction_view_tree" model="ir.ui.view">
|
||||
<field name="name">mail.message.reaction.tree</field>
|
||||
<field name="name">mail.message.reaction.list</field>
|
||||
<field name="model">mail.message.reaction</field>
|
||||
<field name="priority">10</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Reactions">
|
||||
<list string="Reactions" create="0" edit="0">
|
||||
<field name="id"/>
|
||||
<field name="message_id"/>
|
||||
<field name="content"/>
|
||||
<field name="partner_id"/>
|
||||
<field name="guest_id"/>
|
||||
</tree>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_message_reaction_action" model="ir.actions.act_window">
|
||||
<field name="name">Message Reactions</field>
|
||||
<field name="res_model">mail.message.reaction</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
|
|
|
|||
|
|
@ -22,13 +22,13 @@
|
|||
</record>
|
||||
|
||||
<record id="mail_message_schedule_view_tree" model="ir.ui.view">
|
||||
<field name="name">mail.message.schedule.view.tree</field>
|
||||
<field name="name">mail.message.schedule.view.list</field>
|
||||
<field name="model">mail.message.schedule</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Emails">
|
||||
<list string="Emails">
|
||||
<field name="mail_message_id"/>
|
||||
<field name="scheduled_datetime"/>
|
||||
</tree>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
|
@ -45,7 +45,7 @@
|
|||
<record id="mail_message_schedule_action" model="ir.actions.act_window">
|
||||
<field name="name">Scheduled Messages</field>
|
||||
<field name="res_model">mail.message.schedule</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
<field name="context">{}</field>
|
||||
</record>
|
||||
|
||||
|
|
|
|||
|
|
@ -3,16 +3,16 @@
|
|||
<data>
|
||||
|
||||
<record model="ir.ui.view" id="view_message_subtype_tree">
|
||||
<field name="name">mail.message.subtype.tree</field>
|
||||
<field name="name">mail.message.subtype.list</field>
|
||||
<field name="model">mail.message.subtype</field>
|
||||
<field name="priority">10</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Subtype">
|
||||
<list string="Subtype">
|
||||
<field name="sequence" widget="handle"/>
|
||||
<field name="name"/>
|
||||
<field name="res_model"/>
|
||||
<field name="default"/>
|
||||
</tree>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
|
@ -43,10 +43,23 @@
|
|||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="mail_message_subtype_view_search">
|
||||
<field name="name">mail.message.subtype.view.search</field>
|
||||
<field name="model">mail.message.subtype</field>
|
||||
<field name="arch" type="xml">
|
||||
<search>
|
||||
<field name="name"/>
|
||||
<field name="res_model"/>
|
||||
<field name="description"/>
|
||||
<filter string="Default" name="filter_default" domain="[('default', '=', True)]"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.actions.act_window" id="action_view_message_subtype">
|
||||
<field name="name">Subtypes</field>
|
||||
<field name="res_model">mail.message.subtype</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
|
|
|
|||
|
|
@ -3,17 +3,17 @@
|
|||
<data>
|
||||
<!-- mail.message tree: short view !-->
|
||||
<record model="ir.ui.view" id="view_message_tree">
|
||||
<field name="name">mail.message.tree</field>
|
||||
<field name="name">mail.message.list</field>
|
||||
<field name="model">mail.message</field>
|
||||
<field name="priority">20</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Messages">
|
||||
<list string="Messages">
|
||||
<field name="date"/>
|
||||
<field name="subject"/>
|
||||
<field name="author_id"/>
|
||||
<field name="model"/>
|
||||
<field name="res_id"/>
|
||||
</tree>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
|
@ -26,9 +26,13 @@
|
|||
<form string="Message" duplicate="0">
|
||||
<sheet>
|
||||
<div class="oe_button_box" name="button_box">
|
||||
<button name="action_open_document" string="Open Document"
|
||||
<button name="action_open_document"
|
||||
type="object" class="oe_link" icon="fa-file-text-o"
|
||||
attrs="{'invisible': ['|', ('model', '=', False), ('res_id', '=', 0)]}"/>
|
||||
invisible="not model or res_id == 0">
|
||||
<div class="o_field_widget o_stat_info">
|
||||
<span class="o_stat_text">Open Document</span>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
|
|
@ -49,7 +53,7 @@
|
|||
</group>
|
||||
<notebook>
|
||||
<page string="Body" name="body">
|
||||
<field name="body" options="{'style-inline': true}"/>
|
||||
<field name="body" widget="html_mail"/>
|
||||
</page>
|
||||
<page string="Gateway" name="gateway">
|
||||
<group>
|
||||
|
|
@ -67,6 +71,8 @@
|
|||
<group>
|
||||
<group>
|
||||
<field name="partner_ids" widget="many2many_tags"/>
|
||||
<field name="incoming_email_to"/>
|
||||
<field name="incoming_email_cc"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="notified_partner_ids" widget="many2many_tags"/>
|
||||
|
|
@ -75,12 +81,12 @@
|
|||
</group>
|
||||
<group>
|
||||
<field name="notification_ids">
|
||||
<tree>
|
||||
<list>
|
||||
<field name="res_partner_id"/>
|
||||
<field name="is_read"/>
|
||||
<field name="notification_type"/>
|
||||
<field name="notification_status"/>
|
||||
</tree>
|
||||
</list>
|
||||
</field>
|
||||
</group>
|
||||
</page>
|
||||
|
|
@ -123,7 +129,7 @@
|
|||
<record id="action_view_mail_message" model="ir.actions.act_window">
|
||||
<field name="name">Messages</field>
|
||||
<field name="res_model">mail.message</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
<field name="search_view_id" ref="view_message_search"/>
|
||||
</record>
|
||||
|
||||
|
|
@ -135,63 +141,41 @@
|
|||
<field name="id"/>
|
||||
<field name="mimetype"/>
|
||||
<field name="type"/>
|
||||
<field name="create_uid"/>
|
||||
<field name="url"/>
|
||||
<field name="create_date"/>
|
||||
<field name="name"/>
|
||||
<templates>
|
||||
<t t-name="kanban-box">
|
||||
<div class="oe_kanban_global_area oe_kanban_global_click o_kanban_attachment">
|
||||
<div class="row">
|
||||
<div class="offset-10">
|
||||
<div class="o_dropdown_kanban dropdown" groups="base.group_user">
|
||||
<a role="button" class="dropdown-toggle o-no-caret btn" data-bs-toggle="dropdown" href="#" aria-label="Dropdown menu" title="Dropdown menu">
|
||||
<span class="fa fa-ellipsis-v"/>
|
||||
</a>
|
||||
<div class="dropdown-menu" role="menu">
|
||||
<a t-attf-href="/web/content/ir.attachment/#{record.id.raw_value}/datas?download=true" download="" class="dropdown-item">Download</a>
|
||||
<a t-if="widget.deletable" role="menuitem" type="delete" class="dropdown-item">Delete</a>
|
||||
</div>
|
||||
</div>
|
||||
<t t-name="menu">
|
||||
<a t-attf-href="/web/content/ir.attachment/#{record.id.raw_value}/datas?download=true" download="" class="dropdown-item">Download</a>
|
||||
<a t-if="widget.deletable" role="menuitem" type="delete" class="dropdown-item">Delete</a>
|
||||
</t>
|
||||
<t t-name="card" class="o_kanban_attachment flex-row">
|
||||
<aside class="o_kanban_image m-1">
|
||||
<div class="o_kanban_image_wrapper d-flex align-items-center justify-content-center">
|
||||
<t t-set="webimage" t-value="new RegExp('image.*(gif|jpeg|jpg|png|webp)').test(record.mimetype.value)"/>
|
||||
<div t-if="record.type.raw_value == 'url'" class="fa fa-link fa-3x text-muted" aria-label="Image is a link"/>
|
||||
<img t-elif="webimage" t-attf-src="/web/image/#{record.id.raw_value}" width="100" height="100" alt="Document" class="o_attachment_image"/>
|
||||
<div t-else="!webimage" class="o_image o_image_thumbnail" t-att-data-mimetype="record.mimetype.value"/>
|
||||
</div>
|
||||
</aside>
|
||||
<main class="ms-1">
|
||||
<div class="o_kanban_details_wrapper d-flex flex-column">
|
||||
<field name="name" class="text-truncate fw-bold fs-5"/>
|
||||
<div class="d-flex flex-grow-1 align-items-center">
|
||||
<t t-if="record.type.raw_value == 'url'">
|
||||
<i class="fa fa-globe" aria-label="Document url"/> <field name="url" widget="url"/>
|
||||
</t>
|
||||
</div>
|
||||
<div class="d-flex">
|
||||
<field name="create_date"/>
|
||||
<field name="create_uid" widget="many2one_avatar_user" class="ms-auto"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="o_kanban_image">
|
||||
<div class="o_kanban_image_wrapper">
|
||||
<t t-set="webimage" t-value="new RegExp('image.*(gif|jpeg|jpg|png)').test(record.mimetype.value)"/>
|
||||
<div t-if="record.type.raw_value == 'url'" class="o_url_image fa fa-link fa-3x text-muted" aria-label="Image is a link"/>
|
||||
<img t-elif="webimage" t-attf-src="/web/image/#{record.id.raw_value}" width="100" height="100" alt="Document" class="o_attachment_image"/>
|
||||
<div t-else="!webimage" class="o_image o_image_thumbnail" t-att-data-mimetype="record.mimetype.value"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="o_kanban_details">
|
||||
<div class="o_kanban_details_wrapper">
|
||||
<div t-att-title="record.name.raw_value" class="o_kanban_record_title">
|
||||
<field name="name" class="o_text_overflow"/>
|
||||
</div>
|
||||
<div class="o_kanban_record_body">
|
||||
<t t-if="record.type.raw_value == 'url'">
|
||||
<span class="o_document_url"><i class="fa fa-globe" aria-label="Document url"/> <field name="url" widget="url"/></span>
|
||||
</t>
|
||||
<samp t-else="" class="text-muted"> </samp>
|
||||
</div>
|
||||
<div class="o_kanban_record_bottom">
|
||||
<time class="oe_kanban_bottom_left">
|
||||
<field name="create_date" widget="date"/>
|
||||
</time>
|
||||
<div class="oe_kanban_bottom_right">
|
||||
<field name="create_uid" widget="many2one_avatar_user"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>
|
||||
</field>
|
||||
</record>
|
||||
<record id="base.action_attachment" model="ir.actions.act_window">
|
||||
<field name="view_mode">kanban,tree,form</field>
|
||||
<field name="view_mode">kanban,list,form</field>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
Attach a new document
|
||||
|
|
|
|||
|
|
@ -1,16 +1,16 @@
|
|||
<?xml version="1.0"?>
|
||||
<odoo><data>
|
||||
<record id="mail_notification_view_tree" model="ir.ui.view">
|
||||
<field name="name">mail.notification.view.tree</field>
|
||||
<field name="name">mail.notification.view.list</field>
|
||||
<field name="model">mail.notification</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Notifications">
|
||||
<list string="Notifications">
|
||||
<field name="mail_message_id"/>
|
||||
<field name="notification_type"/>
|
||||
<field name="res_partner_id"/>
|
||||
<field name="is_read"/>
|
||||
<field name="failure_type"/>
|
||||
</tree>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
|
@ -20,7 +20,7 @@
|
|||
<field name="arch" type="xml">
|
||||
<form string="Notification" duplicate="0">
|
||||
<header>
|
||||
<field name="notification_status" widget="statusbar"/>
|
||||
<field name="notification_status" widget="statusbar" statusbar_visible="ready,sent"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<group>
|
||||
|
|
@ -34,7 +34,7 @@
|
|||
<field name="is_read"/>
|
||||
<field name="read_date"/>
|
||||
<field name="failure_type"/>
|
||||
<field name="failure_reason"/>
|
||||
<field name="failure_reason" class="o_text_overflow"/>
|
||||
</group>
|
||||
</group>
|
||||
</sheet>
|
||||
|
|
@ -45,7 +45,7 @@
|
|||
<record id="mail_notification_action" model="ir.actions.act_window">
|
||||
<field name="name">Notifications</field>
|
||||
<field name="res_model">mail.notification</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
</record>
|
||||
|
||||
</data></odoo>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,40 @@
|
|||
<?xml version="1.0"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="mail_scheduled_message_view_form" model="ir.ui.view">
|
||||
<field name="name">mail.scheduled.message.view.form</field>
|
||||
<field name="model">mail.scheduled.message</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Scheduled Message">
|
||||
<sheet>
|
||||
<group>
|
||||
<field name="composition_comment_option" invisible="1"/>
|
||||
<label for="partner_ids" string="To" invisible="is_note"/>
|
||||
<div invisible="is_note" class="d-flex gap-3">
|
||||
<field name="partner_ids" widget="many2many_tags_email" class="w-auto flex-grow-1"
|
||||
placeholder="Add contacts to notify..."
|
||||
options="{'edit_tags': True}"
|
||||
context="{'force_email': True, 'show_email': True, 'form_view_ref': 'base.view_partner_simple_form'}"/>
|
||||
</div>
|
||||
<field name="subject" required="True"/>
|
||||
</group>
|
||||
<group col="1">
|
||||
<field name="body" widget="html_composer_message"
|
||||
force_save="1" nolabel="1"
|
||||
placeholder="Write your message here..."/>
|
||||
<field name="attachment_ids" widget="mail_composer_attachment_list" nolabel="1"/>
|
||||
</group>
|
||||
</sheet>
|
||||
<footer>
|
||||
<button string="Save" class="btn-primary" special="save" invisible="not scheduled_date" data-hotkey="S"/>
|
||||
<button string="Send Now" invisible="is_note" type="object" name="post_message" data-hotkey="q"/>
|
||||
<button string="Log Now" invisible="not is_note" type="object" name="post_message" data-hotkey="q"/>
|
||||
<button string="Discard" class="btn-secondary" special="cancel" data-hotkey="x"/>
|
||||
<field name="attachment_ids" widget="mail_composer_attachment_selector"/>
|
||||
<field name="scheduled_date" widget="datetime_scheduled_date"/>
|
||||
</footer>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -1,48 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
|
||||
<!-- mail.shortcode -->
|
||||
<record id="mail_shortcode_action" model="ir.actions.act_window">
|
||||
<field name="name">Chat Shortcode</field>
|
||||
<field name="res_model">mail.shortcode</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
Define a new chat shortcode
|
||||
</p><p>
|
||||
A shortcode is a keyboard shortcut. For instance, you type #gm and it will be transformed into "Good Morning".
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_shortcode_view_tree" model="ir.ui.view">
|
||||
<field name="name">mail.shortcode.tree</field>
|
||||
<field name="model">mail.shortcode</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Shortcodes">
|
||||
<field name="source"/>
|
||||
<field name="substitution"/>
|
||||
<field name="description"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_shortcode_view_form" model="ir.ui.view">
|
||||
<field name="name">mail.shortcode.form</field>
|
||||
<field name="model">mail.shortcode</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Shortcodes">
|
||||
<sheet>
|
||||
<group>
|
||||
<field name="source"/>
|
||||
<field name="substitution"/>
|
||||
<field name="description"/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -5,105 +5,119 @@
|
|||
<field name="name">email.template.form</field>
|
||||
<field name="model">mail.template</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Templates">
|
||||
<form string="Templates" class="o_mail_template_form_view">
|
||||
<header>
|
||||
<field name="ref_ir_act_window" invisible="1"/>
|
||||
<field name="template_fs" invisible="1"/>
|
||||
<field name="is_template_editor" invisible="1"/>
|
||||
<button string="Preview"
|
||||
name="action_open_mail_preview" type="object"
|
||||
class="btn-primary" target="new"/>
|
||||
<button string="Reset Template"
|
||||
name="%(mail_template_reset_action)d" type="action"
|
||||
groups="mail.group_mail_template_editor"
|
||||
attrs="{'invisible': [('template_fs', '=', False)]}"/>
|
||||
invisible="not template_fs"/>
|
||||
<t groups="base.group_no_one">
|
||||
<button string="Add Context Action"
|
||||
class="btn btn-secondary"
|
||||
name="create_action" type="object"
|
||||
groups="base.group_system"
|
||||
invisible="ref_ir_act_window"
|
||||
help="Display an option on related documents to open a composition wizard with this template"/>
|
||||
<button string="Remove Context Action"
|
||||
class="btn btn-secondary"
|
||||
name="unlink_action" type="object"
|
||||
invisible="not ref_ir_act_window"
|
||||
help="Remove the contextual action to use this template on related documents"/>
|
||||
</t>
|
||||
</header>
|
||||
<sheet>
|
||||
<div class="oe_button_box" name="button_box">
|
||||
<field name="ref_ir_act_window" invisible="1"/>
|
||||
<button class="oe_stat_button"
|
||||
groups="base.group_no_one"
|
||||
name="create_action" type="object"
|
||||
attrs="{'invisible':[('ref_ir_act_window','!=',False)]}" icon="fa-plus"
|
||||
help="Display an option on related documents to open a composition wizard with this template">
|
||||
<div class="o_field_widget o_stat_info">
|
||||
<span class="o_stat_text">Add</span>
|
||||
<span class="o_stat_text">Context Action</span>
|
||||
</div>
|
||||
</button>
|
||||
<button name="unlink_action" type="object"
|
||||
groups="base.group_no_one"
|
||||
class="oe_stat_button" icon="fa-minus"
|
||||
attrs="{'invisible':[('ref_ir_act_window','=',False)]}"
|
||||
help="Remove the contextual action to use this template on related documents" widget="statinfo">
|
||||
<div class="o_field_widget o_stat_info">
|
||||
<span class="o_stat_text">Remove</span>
|
||||
<span class="o_stat_text">Context Action</span>
|
||||
</div>
|
||||
</button>
|
||||
<button class="oe_stat_button" name="%(mail_template_preview_action)d" icon="fa-search-plus" string="Preview"
|
||||
type="action" target="new"/>
|
||||
</div>
|
||||
<div class="oe_title">
|
||||
<label for="name"/>
|
||||
<h1><field name="name" class="w-100"
|
||||
<h1><field name="name" class="w-100" string="Template Name"
|
||||
required="1" placeholder='e.g. "Welcome email"'/></h1>
|
||||
<group>
|
||||
<field name="model_id" placeholder="e.g. Contact" required="1" options="{'no_create': True}"/>
|
||||
<field name="subject" placeholder='e.g. "Welcome to MyCompany" or "Nice to meet you, {{ object.name }}"'/>
|
||||
<field name="model_id" groups="!base.group_no_one" invisible="context.get('default_model')" placeholder="e.g. Contact" required="1" options="{'no_create': True}"/>
|
||||
<field name="model_id" groups="base.group_no_one" placeholder="e.g. Contact" required="1" options="{'no_create': True}"/>
|
||||
<field name="subject" options="{'dynamic_placeholder': true}"
|
||||
placeholder='e.g. "Welcome to MyCompany" or "Nice to meet you, {{ object.name }}"'/>
|
||||
<field name="model" invisible="1"/>
|
||||
<field name="description"/>
|
||||
</group>
|
||||
</div>
|
||||
<notebook>
|
||||
<page string="Content" name="content">
|
||||
<page string="Body" name="content">
|
||||
<field name="can_write" invisible="1"/>
|
||||
<field name="body_html" widget="html" class="oe-bordered-editor"
|
||||
options="{'style-inline': true, 'codeview': true, 'dynamic_placeholder': true}"
|
||||
attrs="{'readonly': [('can_write', '=', False), ('id', '!=', False)]}"/>
|
||||
<field name="attachment_ids" widget="many2many_binary"/>
|
||||
<field name="body_html" widget="html_mail" class="oe-bordered-editor"
|
||||
placeholder="Write your message here..."
|
||||
options="{'codeview': true, 'dynamic_placeholder': true, 'allowCommandVideo': false}"
|
||||
readonly="not can_write and id"/>
|
||||
<div invisible="not can_write" class="fst-italic text-muted">Tip: Write /field to insert dynamic content!</div>
|
||||
</page>
|
||||
<page string="Email Configuration" name="email_configuration">
|
||||
<group>
|
||||
<field name="email_from"
|
||||
placeholder="Override author's email"/>
|
||||
<field name="use_default_to"/>
|
||||
<field name="email_to" attrs="{'invisible': [('use_default_to', '=', True)]}"
|
||||
placeholder="Comma-separated recipient addresses"/>
|
||||
<field name="partner_to" attrs="{'invisible': [('use_default_to', '=', True)]}"
|
||||
placeholder="Comma-separated ids of recipient partners"/>
|
||||
<field name="email_cc" attrs="{'invisible': [('use_default_to', '=', True)]}"
|
||||
placeholder="Comma-separated carbon copy recipients addresses"/>
|
||||
<field name="reply_to"
|
||||
placeholder="Email address to which replies will be redirected when sending emails in mass"/>
|
||||
<field name="scheduled_date" string="Scheduled Send Date"/>
|
||||
<page string="Settings" name="email_configuration" groups="base.group_no_one">
|
||||
<group col="2">
|
||||
<group>
|
||||
<separator string="Sender & Recipients"/>
|
||||
<field name="email_from" placeholder="Sender's email"/>
|
||||
<field name="use_default_to"/>
|
||||
<field name="email_to" invisible="use_default_to"
|
||||
placeholder="Comma-separated recipient addresses"/>
|
||||
<field name="partner_to" invisible="use_default_to"
|
||||
placeholder="Comma-separated ids of recipient partners"/>
|
||||
<field name="email_cc" invisible="use_default_to"
|
||||
placeholder="Comma-separated carbon copy of recipients addresses"/>
|
||||
<field name="reply_to" placeholder="Capture replies in the chatter"/>
|
||||
</group>
|
||||
<group>
|
||||
<separator string="Technical"/>
|
||||
<field name="lang" placeholder="Main partner's language" options="{'dynamic_placeholder': true}"/>
|
||||
<field name="has_mail_server" invisible="1"/>
|
||||
<field name="mail_server_id" invisible="not has_mail_server" placeholder="By order of server priority"/>
|
||||
<field name="auto_delete"/>
|
||||
<field name="scheduled_date" string="Scheduled Send Date" placeholder="Send Instantly" options="{'dynamic_placeholder': true}"/>
|
||||
</group>
|
||||
</group>
|
||||
</page>
|
||||
<page string="Settings" name="email_settings">
|
||||
<group>
|
||||
<field name="lang" placeholder="{{ object.partner_id.lang }}"/>
|
||||
<field name="mail_server_id"/>
|
||||
<field name="auto_delete"/>
|
||||
<field name="report_template" domain="[('model','=',model)]"/>
|
||||
<field name="report_name" attrs="{'invisible':[('report_template','=',False)]}"/>
|
||||
<page string="Options" name="email_settings">
|
||||
<group col="2">
|
||||
<group>
|
||||
<field name="has_dynamic_reports" invisible="1"/>
|
||||
<field name="attachment_ids" widget="many2many_binary"/>
|
||||
<field name="report_template_ids" widget="many2many_tags"
|
||||
domain="[('model','=',model)]"
|
||||
invisible="not has_dynamic_reports"
|
||||
options="{'no_create': True}"
|
||||
placeholder="None"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="user_id" widget="many2one_avatar_user"
|
||||
readonly="not is_template_editor"
|
||||
invisible="not is_template_editor"
|
||||
placeholder="Shared with all users"/>
|
||||
<field name="description" placeholder="Describe when this template should be used"/>
|
||||
</group>
|
||||
</group>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="email_template_tree">
|
||||
<field name="name">email.template.tree</field>
|
||||
<field name="name">email.template.list</field>
|
||||
<field name="model">mail.template</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Templates">
|
||||
<field name="mail_server_id" invisible="1"/>
|
||||
<list string="Templates">
|
||||
<field name="mail_server_id" column_invisible="True"/>
|
||||
<field name="name"/>
|
||||
<field name="model_id" groups="base.group_no_one"/>
|
||||
<field name="user_id" optional="show" widget="many2one_avatar_user"/>
|
||||
<field name="description"/>
|
||||
<field name="subject" optional="hidden"/>
|
||||
<field name="email_from" optional="hidden"/>
|
||||
<field name="email_to" optional="hidden"/>
|
||||
<field name="partner_to" optional="hidden"/>
|
||||
<field name="report_name" optional="hidden"/>
|
||||
</tree>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
|
@ -112,14 +126,16 @@
|
|||
<field name="model">mail.template</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Templates">
|
||||
<field name="name" filter_domain="['|', '|', '|',('name','ilike',self), ('report_name','ilike',self), ('subject','ilike',self), ('email_to','ilike',self)]" string="Templates"/>
|
||||
<field name="name" filter_domain="['|', '|', ('name','ilike',self), ('subject','ilike',self), ('email_to','ilike',self)]" string="Templates"/>
|
||||
<field name="lang"/>
|
||||
<field name="model" filter_domain="[('model', '=', raw_value)]"/>
|
||||
<field name="model_id"/>
|
||||
<filter name="my_templates" string="My Templates" domain="[('user_id', '=', uid)]"/>
|
||||
<filter name="base_templates" string="Base Templates" domain="[('template_category', '=', 'base_template')]"/>
|
||||
<filter name="custom_templates" string="Custom Templates" domain="[('template_category', '=', 'custom_template')]"/>
|
||||
<group expand="0" string="Group by...">
|
||||
<group>
|
||||
<filter string="SMTP Server" name="smtpserver" domain="[]" context="{'group_by':'mail_server_id'}"/>
|
||||
<filter string="Model" name="model" domain="[]" context="{'group_by':'model_id'}"/>
|
||||
<filter string="Model" name="group_by_model_id" domain="[]" context="{'group_by':'model_id'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
|
|
@ -128,7 +144,8 @@
|
|||
<record model="ir.actions.act_window" id="action_email_template_tree_all">
|
||||
<field name="name">Email Templates</field>
|
||||
<field name="res_model">mail.template</field>
|
||||
<field name="view_mode">form,tree</field>
|
||||
<field name="path">email-templates</field>
|
||||
<field name="view_mode">form,list</field>
|
||||
<field name="view_id" ref="email_template_tree" />
|
||||
<field name="search_view_id" ref="view_email_template_search"/>
|
||||
<field name="context">{'search_default_base_templates': 1}</field>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,33 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<template id="mail.public_layout">
|
||||
<t t-call="web.layout">
|
||||
<t t-set="html_data" t-value="{'style': 'height: 100%;'}"/>
|
||||
<t t-set="head">
|
||||
<t t-call-assets="web.assets_frontend" t-js="false"/>
|
||||
<title t-translation="off">
|
||||
<t t-if="additional_title"><t t-out="additional_title"/> | </t><t t-out="res_company.name"/>
|
||||
</title>
|
||||
</t>
|
||||
<t t-out="0"/>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
<template id="mail.message_document_unfollowed">
|
||||
<t t-call="mail.public_layout">
|
||||
<t t-set="additional_title">"<t t-out="name"/>" no longer followed</t>
|
||||
<div class="h-100 d-flex align-items-center justify-content-center">
|
||||
<div>
|
||||
<h1 t-out="model_name"/>
|
||||
<div class="alert alert-success text-center p-5" role="status">
|
||||
<strong>You are no longer following the document:</strong>
|
||||
<div class="pt-4">
|
||||
<a t-if="access_url" class="o_access_record_link" t-att-href="access_url" t-out="name"/>
|
||||
<i t-else="" t-out="name"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</template>
|
||||
</odoo>
|
||||
|
|
@ -3,12 +3,12 @@
|
|||
<data>
|
||||
|
||||
<record model="ir.ui.view" id="view_mail_tracking_value_tree">
|
||||
<field name="name">mail.tracking.value.tree</field>
|
||||
<field name="name">mail.tracking.value.list</field>
|
||||
<field name="model">mail.tracking.value</field>
|
||||
<field name="priority">12</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Tracking Value">
|
||||
<field name="field"/>
|
||||
<list string="Tracking Value">
|
||||
<field name="field_id"/>
|
||||
<field name="old_value_integer"/>
|
||||
<field name="old_value_float"/>
|
||||
<field name="old_value_char"/>
|
||||
|
|
@ -20,7 +20,7 @@
|
|||
<field name="new_value_text"/>
|
||||
<field name="new_value_datetime"/>
|
||||
<field name="mail_message_id"/>
|
||||
</tree>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
|
@ -31,10 +31,7 @@
|
|||
<form string="Tracking Value">
|
||||
<sheet>
|
||||
<group name="field_details" string="Field details">
|
||||
<field name="field"/>
|
||||
<field name="field_desc"/>
|
||||
<field name="field_type"/>
|
||||
<field name="tracking_sequence"/>
|
||||
<field name="field_id"/>
|
||||
</group>
|
||||
<group name="values">
|
||||
<group name="old_values" string="Old values">
|
||||
|
|
@ -63,7 +60,7 @@
|
|||
<record model="ir.actions.act_window" id="action_view_mail_tracking_value">
|
||||
<field name="name">Tracking Values</field>
|
||||
<field name="res_model">mail.tracking.value</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
16
odoo-bringout-oca-ocb-mail/mail/views/res_company_views.xml
Normal file
16
odoo-bringout-oca-ocb-mail/mail/views/res_company_views.xml
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<record id="res_company_view_form" model="ir.ui.view">
|
||||
<field name="name">res.company.view.form.inherit.mail</field>
|
||||
<field name="model">res.company</field>
|
||||
<field name="inherit_id" ref="base.view_company_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="parent_id" position="after">
|
||||
<field name="alias_domain_id"/>
|
||||
<field name="bounce_formatted" groups="base.group_no_one"/>
|
||||
<field name="catchall_formatted" groups="base.group_no_one"/>
|
||||
<field name="default_from_email" groups="base.group_no_one"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
|
@ -8,156 +8,124 @@
|
|||
<field name="inherit_id" ref="base_setup.res_config_settings_view_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<div id="emails" position='replace'>
|
||||
<h2>Discuss</h2>
|
||||
<div class="row mt16 o_settings_container" id="emails">
|
||||
<div class="col-12 col-lg-6 o_setting_box" id="activities_setting">
|
||||
<div class="o_setting_left_pane"/>
|
||||
<div class="o_setting_right_pane">
|
||||
<span class="o_form_label">Activities</span>
|
||||
<div class="text-muted">
|
||||
Configure your activity types
|
||||
</div>
|
||||
<div class="content-group">
|
||||
<div class="mt8">
|
||||
<button name="%(mail.mail_activity_type_action)d" string="Activity Types" type="action" class="oe_link" icon="fa-arrow-right"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-lg-6 o_setting_box"
|
||||
id="email_servers_setting"
|
||||
title="Using your own email server is required to send/receive emails in Community and Enterprise versions. Online users already benefit from a ready-to-use email server (@mycompany.odoo.com).">
|
||||
<div class="o_setting_left_pane">
|
||||
<field name="external_email_server_default"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="external_email_server_default"/>
|
||||
<a href="https://www.odoo.com/documentation/16.0/applications/general/email_communication/email_servers.html" title="Documentation" class="o_doc_link" target="_blank"></a>
|
||||
<div class="text-muted" id="external_email_server_default">
|
||||
Configure your own email servers
|
||||
</div>
|
||||
<div class="content-group mb-3" attrs="{'invisible': [('external_email_server_default', '=', False)]}">
|
||||
<div class="mt16" id="mail_alias_domain" dir="ltr">
|
||||
<label for="alias_domain" class="o_light_label"/>
|
||||
<span>@</span>
|
||||
<field name="alias_domain" placeholder='e.g. "mycompany.com"'/>
|
||||
</div>
|
||||
<block title="Emails" id="emails">
|
||||
<setting id="email_servers_setting" title="Using your own email server is required to send/receive emails in Community and Enterprise versions. Online users already benefit from a ready-to-use email server (@mycompany.odoo.com)." documentation="/applications/general/email_communication/email_servers.html" help="Configure your own email servers">
|
||||
<field name="external_email_server_default"/>
|
||||
<div class="content-group mb-3" invisible="not external_email_server_default">
|
||||
<div>
|
||||
<div class="mt8">
|
||||
<button type="action"
|
||||
name="%(action_email_server_tree)d"
|
||||
string="Incoming Email Servers" icon="fa-arrow-right" class="btn-link"/>
|
||||
string="Incoming Email Servers" icon="oi-arrow-right" class="btn-link"/>
|
||||
</div>
|
||||
<div class="mt8">
|
||||
<button type="action"
|
||||
name="%(base.action_ir_mail_server_list)d"
|
||||
string="Outgoing Email Servers" icon="fa-arrow-right" class="btn-link"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-3 d-flex" attrs="{'invisible': [('external_email_server_default', '=', False)]}">
|
||||
<field name="module_google_gmail"/>
|
||||
<div>
|
||||
<label string="Gmail Credentials" for="module_google_gmail"/>
|
||||
<a href="https://console.developers.google.com/" title="Get Gmail API credentials" class="o_doc_link" target="_blank"/>
|
||||
<div class="text-muted">
|
||||
Send and receive emails through your Gmail account.
|
||||
</div>
|
||||
<div class="content-group" attrs="{'invisible': [('module_google_gmail','=',False)]}" id="msg_module_google_gmail">
|
||||
<div class="mt16 text-warning"><strong>Save</strong> this page and come back here to set up the feature.</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-3 d-flex" attrs="{'invisible': [('external_email_server_default', '=', False)]}">
|
||||
<field name="module_microsoft_outlook"/>
|
||||
<div>
|
||||
<label string="Outlook Credentials" for="module_microsoft_outlook"/>
|
||||
<a href="https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-register-app"
|
||||
title="Get Outlook API credentials" class="o_doc_link" target="_blank"/>
|
||||
<div class="text-muted">
|
||||
Send and receive emails through your Outlook account.
|
||||
</div>
|
||||
<div class="content-group" id="msg_module_microsoft_outlook"
|
||||
attrs="{'invisible': [('module_microsoft_outlook','=',False)]}">
|
||||
<div class="mt16 text-warning">
|
||||
<strong>Save</strong> this page and come back here to set up the feature.
|
||||
</div>
|
||||
</div>
|
||||
string="Outgoing Email Servers" icon="oi-arrow-right" class="btn-link"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-lg-6 o_setting_box">
|
||||
<div class="o_setting_left_pane">
|
||||
<field name="use_twilio_rtc_servers"/>
|
||||
</setting>
|
||||
<setting id="email-alias-setting" string="Alias Domain"
|
||||
help="Use different domains for your mail aliases"
|
||||
company_dependent="1"
|
||||
documentation="/applications/general/email_communication/email_domain.html#be-spf-compliant">
|
||||
<span class="me-1">@</span>
|
||||
<field name="alias_domain_id" placeholder="e.g. mycompany.com"
|
||||
options="{'no_create_edit': True}"/>
|
||||
</setting>
|
||||
<setting string="Use a Gmail Server"
|
||||
help="Send and receive emails through your Gmail account."
|
||||
documentation="https://console.developers.google.com/"
|
||||
invisible="not external_email_server_default">
|
||||
<field name="module_google_gmail"/>
|
||||
<div class="content-group" invisible="not module_google_gmail" id="msg_module_google_gmail">
|
||||
<div class="mt16 text-warning"><strong>Save</strong> this page and come back here to set up the feature.</div>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="use_twilio_rtc_servers"/>
|
||||
<div class="text-muted col-md-12">
|
||||
Add your twilio credentials for ICE servers
|
||||
</div>
|
||||
<div class="content-group" attrs="{'invisible': [('use_twilio_rtc_servers', '=', False)]}">
|
||||
<div class="row mt16" id="mail_twilio_sid">
|
||||
<label for="twilio_account_sid" class="col-lg-3"/>
|
||||
<field name="twilio_account_sid" placeholder="e.g. ACd5543a0b450ar4c7t95f1b6e8a39t543"/>
|
||||
</div>
|
||||
<div class="row mt16" id="mail_twilio_auth_token">
|
||||
<label for="twilio_account_token" class="col-lg-3"/>
|
||||
<field name="twilio_account_token" placeholder="e.g. 65ea4f9e948b693N5156F350256bd152"/>
|
||||
</div>
|
||||
</setting>
|
||||
<setting id="email-outlook-setting" string="Use an Outlook Server"
|
||||
help="Send and receive emails through your Outlook account."
|
||||
documentation="https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-register-app"
|
||||
invisible="not external_email_server_default">
|
||||
<field name="module_microsoft_outlook"/>
|
||||
<div class="content-group" id="msg_module_microsoft_outlook"
|
||||
invisible="not module_microsoft_outlook">
|
||||
<div class="mt16 text-warning">
|
||||
<strong>Save</strong> this page and come back here to set up the feature.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-lg-6 o_setting_box">
|
||||
<div class="o_setting_right_pane">
|
||||
<span class="o_form_label">Custom ICE server list</span>
|
||||
<div class="row">
|
||||
<div class="text-muted col-md-12">
|
||||
Configure your ICE server list for webRTC
|
||||
</div>
|
||||
</div>
|
||||
<div class="content-group">
|
||||
<div class="row col-lg-4">
|
||||
<button type="action" name="%(mail.action_ice_servers)d" string="ICE Servers" icon="fa-arrow-right" class="btn-link"/>
|
||||
</div>
|
||||
</setting>
|
||||
<setting id="restrict_template_rendering_setting" help="Restrict mail templates edition and QWEB placeholders usage.">
|
||||
<field name="restrict_template_rendering"/>
|
||||
</setting>
|
||||
</block>
|
||||
<block title="Discuss" id="discuss">
|
||||
<setting id="activities_setting" string="Activities" help="Configure your activity types">
|
||||
<div class="content-group">
|
||||
<div class="mt8">
|
||||
<button name="%(mail.mail_activity_type_action)d" string="Activity Types" type="action" class="oe_link" icon="oi-arrow-right"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-lg-6 o_setting_box"
|
||||
id="restrict_template_rendering_setting">
|
||||
<div class="o_setting_left_pane">
|
||||
<field name="restrict_template_rendering"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="restrict_template_rendering"/>
|
||||
<div class="text-muted" id="restrict_template_rendering">
|
||||
Restrict mail templates edition and QWEB placeholders usage.
|
||||
</setting>
|
||||
<setting string="Custom ICE Server with Twilio"
|
||||
help="Set up your own server for small group calls using peer-to-peer connections"
|
||||
documentation="https://www.odoo.com/documentation/latest/applications/productivity/discuss/ice_servers.html">
|
||||
<field name="use_twilio_rtc_servers"/>
|
||||
<div class="content-group" invisible="not use_twilio_rtc_servers">
|
||||
<div class="row mt16" id="mail_twilio_sid">
|
||||
<label for="twilio_account_sid" class="col-lg-3"/>
|
||||
<field name="twilio_account_sid" string="Account SID" placeholder="e.g. ACd5543a0b450ar4c7t95f1b6e8a39t543"/>
|
||||
</div>
|
||||
<div class="row mt16" id="mail_twilio_auth_token">
|
||||
<label for="twilio_account_token" class="col-lg-3"/>
|
||||
<field name="twilio_account_token" string="Account Auth Token" placeholder="e.g. 65ea4f9e948b693N5156F350256bd152"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</setting>
|
||||
<setting string="Custom SFU Server" help="Set up your own server for large group calls by routing connections centrally">
|
||||
<field name="use_sfu_server"/>
|
||||
<div class="content-group" invisible="not use_sfu_server">
|
||||
<div class="row mt16">
|
||||
<label for="sfu_server_url" string="URL" class="col-lg-3"/>
|
||||
<field name="sfu_server_url"/>
|
||||
</div>
|
||||
<div class="row mt16">
|
||||
<label for="sfu_server_key" string="Key" class="col-lg-3"/>
|
||||
<field name="sfu_server_key"/>
|
||||
</div>
|
||||
</div>
|
||||
</setting>
|
||||
<setting string="Custom ICE Servers" help="Use your own servers for calls to manage heavy traffic and ensure reliability if Twilio is unavailable"
|
||||
documentation="https://www.odoo.com/documentation/latest/applications/productivity/discuss/ice_servers.html#define-a-list-of-custom-ice-servers">
|
||||
<div class="content-group">
|
||||
<button type="action" name="%(mail.action_ice_servers)d" string="Configure ICE Servers" icon="oi-arrow-right" class="btn-link"/>
|
||||
</div>
|
||||
</setting>
|
||||
<setting id="tenor_api_key" string="Tenor GIF API key" help="Add a Tenor GIF API key to enable GIFs support." documentation="https://developers.google.com/tenor/guides/quickstart#setup">
|
||||
<field name="tenor_api_key" placeholder="Paste your API key"/>
|
||||
</setting>
|
||||
<setting string="Message Translation" help="Google Translate Integration" id="message_translation_setting" documentation="https://cloud.google.com/translate/docs/setup">
|
||||
<field name="google_translate_api_key" placeholder="Paste your API key"/>
|
||||
</setting>
|
||||
</block>
|
||||
</div>
|
||||
<div id="companies_setting" position="inside">
|
||||
<br/>
|
||||
<div class="o_setting_right_pane" id="mail_templates_setting"
|
||||
groups="mail.group_mail_template_editor,base.group_system">
|
||||
<span class="o_form_label">Email Templates</span>
|
||||
<div class="text-muted">
|
||||
Customize the look and feel of automated emails
|
||||
</div>
|
||||
<setting id="document_layout_setting" position="after">
|
||||
<setting string="Email Templates" help="Customize the look and feel of automated emails" id="mail_templates_setting" groups="mail.group_mail_template_editor,base.group_system" company_dependent="1">
|
||||
<div class="w-50 row">
|
||||
<span class="d-block w-75 py-2">Header Color</span>
|
||||
<field name="primary_color" class="d-block w-25 p-0 m-0" widget="color"/>
|
||||
<span class="d-block w-75 py-2">Button Text</span>
|
||||
<field name="email_primary_color" class="d-block w-25 p-0 m-0" widget="color"/>
|
||||
</div>
|
||||
<div class="w-50 row mt-1">
|
||||
<span class="d-block w-75 py-2">Button Color</span>
|
||||
<field name="secondary_color" class="d-block w-25 p-0 m-0" widget="color"/>
|
||||
<field name="email_secondary_color" class="d-block w-25 p-0 m-0" widget="color"/>
|
||||
</div>
|
||||
<button name="open_email_layout" icon="fa-arrow-right"
|
||||
<button name="open_email_layout" icon="oi-arrow-right"
|
||||
type="object" string="Update Mail Layout"
|
||||
groups="base.group_no_one" class="btn-link"/>
|
||||
<br groups="base.group_no_one"/>
|
||||
<button name="open_mail_templates" icon="fa-arrow-right" type="object" string="Review All Templates" class="btn-link"/>
|
||||
</div>
|
||||
</div>
|
||||
<button name="open_mail_templates" icon="oi-arrow-right" type="object" string="Review All Templates" class="btn-link"/>
|
||||
</setting>
|
||||
</setting>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
|
|
|
|||
|
|
@ -7,23 +7,15 @@
|
|||
<field name="model">res.partner</field>
|
||||
<field name="inherit_id" ref="base.view_partner_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='email']" position="replace">
|
||||
<xpath expr="//field[@name='email']" position="before">
|
||||
<field name="is_blacklisted" invisible="1"/>
|
||||
<label for="email" class="oe_inline"/>
|
||||
<div class="o_row o_row_readonly">
|
||||
<button name="mail_action_blacklist_remove" class="fa fa-ban text-danger"
|
||||
title="This email is blacklisted for mass mailings. Click to unblacklist."
|
||||
type="object" context="{'default_email': email}" groups="base.group_user"
|
||||
attrs="{'invisible': [('is_blacklisted', '=', False)]}"/>
|
||||
<field name="email" widget="email" context="{'gravatar_image': True}" attrs="{'required': [('user_ids','!=', [])]}"/>
|
||||
</div>
|
||||
<button name="mail_action_blacklist_remove" class="fa fa-ban text-danger"
|
||||
title="This email is blacklisted for mass mailings. Click to unblacklist."
|
||||
type="object" context="{'default_email': email}" groups="base.group_user"
|
||||
invisible="not is_blacklisted"/>
|
||||
</xpath>
|
||||
<xpath expr="//sheet" position="after">
|
||||
<div class="oe_chatter">
|
||||
<field name="message_follower_ids"/>
|
||||
<field name="activity_ids"/>
|
||||
<field name="message_ids"/>
|
||||
</div>
|
||||
<chatter/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
|
@ -33,11 +25,8 @@
|
|||
<field name="model">res.partner</field>
|
||||
<field name="inherit_id" ref="base.res_partner_kanban_view"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="type" position="after">
|
||||
<field name="activity_state"/>
|
||||
</field>
|
||||
<xpath expr="//div[hasclass('oe_kanban_bottom_right')]" position="inside">
|
||||
<field name="activity_ids" widget="kanban_activity"/>
|
||||
<xpath expr="//footer" position="inside">
|
||||
<field name="activity_ids" widget="kanban_activity" class="ms-auto mt-auto"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
|
@ -48,20 +37,23 @@
|
|||
<field name="inherit_id" ref="base.view_res_partner_filter"/>
|
||||
<field name="arch" type="xml">
|
||||
<filter name="inactive" position="after">
|
||||
<filter invisible="1" string="My Activities" name="filter_activities_my"
|
||||
domain="[('activity_user_id', '=', uid)]"/>
|
||||
<separator invisible="1"/>
|
||||
<filter invisible="1" string="Late Activities" name="activities_overdue"
|
||||
domain="[('my_activity_date_deadline', '<', context_today().strftime('%Y-%m-%d'))]"
|
||||
help="Show all records which has next action date is before today"/>
|
||||
domain="[('my_activity_date_deadline', '<', 'today')]"
|
||||
help="Show all records whose next activity date is past"/>
|
||||
<filter invisible="1" string="Today Activities" name="activities_today"
|
||||
domain="[('my_activity_date_deadline', '=', context_today().strftime('%Y-%m-%d'))]"/>
|
||||
domain="[('my_activity_date_deadline', '=', 'today')]"/>
|
||||
<filter invisible="1" string="Future Activities" name="activities_upcoming_all"
|
||||
domain="[('my_activity_date_deadline', '>', context_today().strftime('%Y-%m-%d'))]"/>
|
||||
domain="[('my_activity_date_deadline', '>', 'today')]"/>
|
||||
<separator/>
|
||||
</filter>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="res_partner_view_tree_inherit_mail" model="ir.ui.view">
|
||||
<field name="name">res.partner.view.tree.inherit.mail</field>
|
||||
<field name="name">res.partner.view.list.inherit.mail</field>
|
||||
<field name="model">res.partner</field>
|
||||
<field name="inherit_id" ref="base.view_partner_tree"/>
|
||||
<field name="arch" type="xml">
|
||||
|
|
@ -79,10 +71,10 @@
|
|||
<field name="id"/>
|
||||
<templates>
|
||||
<div t-name="activity-box">
|
||||
<img t-att-src="activity_image('res.partner', 'avatar_128', record.id.raw_value)" role="img" t-att-title="record.id.value" t-att-alt="record.id.value"/>
|
||||
<div>
|
||||
<field name="name" display="full"/>
|
||||
<field name="parent_id" muted="1" display="full"/>
|
||||
<img t-att-src="activity_image('res.partner', 'avatar_128', record.id.raw_value)" role="img" t-att-title="record.name.value" t-att-alt="record.name.value"/>
|
||||
<div class="ms-2">
|
||||
<field name="name" display="full" class="o_text_block"/>
|
||||
<field name="parent_id" muted="1" display="full" class="o_text_block"/>
|
||||
</div>
|
||||
</div>
|
||||
</templates>
|
||||
|
|
@ -92,13 +84,13 @@
|
|||
|
||||
<!-- Add mail-defined activity view to standard action on partners to manage activities related to partner model -->
|
||||
<record id="base.action_partner_form" model="ir.actions.act_window">
|
||||
<field name="view_mode">kanban,tree,form,activity</field>
|
||||
<field name="view_mode">list,kanban,form,activity</field>
|
||||
</record>
|
||||
<record id="base.action_partner_customer_form" model="ir.actions.act_window">
|
||||
<field name="view_mode">kanban,tree,form,activity</field>
|
||||
<field name="view_mode">list,kanban,form,activity</field>
|
||||
</record>
|
||||
<record id="base.action_partner_supplier_form" model="ir.actions.act_window">
|
||||
<field name="view_mode">kanban,tree,form,activity</field>
|
||||
<field name="view_mode">list,kanban,form,activity</field>
|
||||
</record>
|
||||
|
||||
<!-- Replace the default mass-mailing wizard in base with the composition wizard -->
|
||||
|
|
@ -107,14 +99,14 @@
|
|||
<field name="res_model">mail.compose.message</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="target">new</field>
|
||||
<field name="context" eval="{
|
||||
<field name="context">{
|
||||
'default_composition_mode': 'mass_mail',
|
||||
'default_partner_to': '{{ object.id or \'\' }}',
|
||||
'default_use_template': False,
|
||||
'default_subtype_xmlid': 'mail.mt_comment',
|
||||
'default_reply_to_force_new': True,
|
||||
}"/>
|
||||
}</field>
|
||||
<field name="binding_model_id" ref="base.model_res_partner"/>
|
||||
<field name="binding_view_types">list</field>
|
||||
<field name="binding_view_types">list,kanban</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
|
|
|
|||
53
odoo-bringout-oca-ocb-mail/mail/views/res_role_views.xml
Normal file
53
odoo-bringout-oca-ocb-mail/mail/views/res_role_views.xml
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="res_role_view_search" model="ir.ui.view">
|
||||
<field name="name">res.role.view.search</field>
|
||||
<field name="model">res.role</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Roles Search">
|
||||
<field name="name" string="Role"/>
|
||||
<field name="user_ids"/>
|
||||
<filter string="My Roles" name="my_role_ids" domain="[('user_ids', '=', uid)]"/>
|
||||
<group>
|
||||
<filter string="Users" name="filter_user_ids" domain="[]" context="{'group_by': 'user_ids'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
<record id="res_role_view_tree" model="ir.ui.view">
|
||||
<field name="name">res.role.list</field>
|
||||
<field name="model">res.role</field>
|
||||
<field name="arch" type="xml">
|
||||
<list string="Role" editable="bottom" sample="1">
|
||||
<field name="name" string="Role"/>
|
||||
<field name="user_ids" widget="many2many_avatar_user"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
<record id="res_role_view_form" model="ir.ui.view">
|
||||
<field name="name">res.role.form</field>
|
||||
<field name="model">res.role</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Role">
|
||||
<sheet>
|
||||
<group>
|
||||
<field name="name" string="Role"/>
|
||||
<field name="user_ids" widget="many2many_avatar_user" options="{'no_create': True}"/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="res_role_action" model="ir.actions.act_window">
|
||||
<field name="name">Roles</field>
|
||||
<field name="res_model">res.role</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
<field name="search_view_id" ref="res_role_view_search"/>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">No roles found. Let's create one!</p>
|
||||
<p>Notify multiple people at once by @-mentioning roles in conversations.</p>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -2,15 +2,15 @@
|
|||
<odoo>
|
||||
|
||||
<record id="res_users_settings_view_tree" model="ir.ui.view">
|
||||
<field name="name">res.users.settings.tree</field>
|
||||
<field name="name">res.users.settings.list</field>
|
||||
<field name="model">res.users.settings</field>
|
||||
<field name="priority">10</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="User Settings">
|
||||
<list string="User Settings">
|
||||
<field name="id"/>
|
||||
<field name="user_id"/>
|
||||
<field name="use_push_to_talk"/>
|
||||
</tree>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
|
@ -21,7 +21,7 @@
|
|||
<form string="User Settings">
|
||||
<sheet>
|
||||
<div class="oe_title">
|
||||
<h1><field name="user_id" attrs="{'readonly': [('id', '!=', False)]}"/></h1>
|
||||
<h1><field name="user_id" readonly="id != False"/></h1>
|
||||
</div>
|
||||
<group name="discuss_user_settings">
|
||||
<group string="Discuss sidebar">
|
||||
|
|
@ -30,17 +30,17 @@
|
|||
</group>
|
||||
<group string="Voice">
|
||||
<field name="use_push_to_talk"/>
|
||||
<field name="push_to_talk_key" placeholder="e.g. true.true..f" attrs="{'invisible': [('use_push_to_talk', '=', False)]}"/>
|
||||
<field name="voice_active_duration" attrs="{'invisible': [('use_push_to_talk', '=', True)]}"/>
|
||||
<field name="push_to_talk_key" placeholder="e.g. true.true..f" invisible="not use_push_to_talk"/>
|
||||
<field name="voice_active_duration" invisible="use_push_to_talk"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook colspan="4">
|
||||
<page string="Volume per partner">
|
||||
<page string="Volume per partner" name="page_volume_per_partner">
|
||||
<field name="volume_settings_ids">
|
||||
<tree editable="bottom">
|
||||
<list editable="bottom">
|
||||
<field name="partner_id"/>
|
||||
<field name="volume"/>
|
||||
</tree>
|
||||
</list>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
|
|
@ -52,7 +52,7 @@
|
|||
<record id="res_users_settings_action" model="ir.actions.act_window">
|
||||
<field name="name">User Settings</field>
|
||||
<field name="res_model">res.users.settings</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,19 @@
|
|||
<?xml version="1.0"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="action_res_users_my_fullpage" model="ir.actions.act_window">
|
||||
<!-- Like action_res_users_my, but in full page -->
|
||||
<field name="name">Change My Preferences</field>
|
||||
<field name="res_model">res.users</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="path">my-preferences</field>
|
||||
</record>
|
||||
<record id="action_res_users_my_fullpage_view" model="ir.actions.act_window.view">
|
||||
<field eval="50" name="sequence"/>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="view_id" ref="base.view_users_form_simple_modif"/>
|
||||
<field name="act_window_id" ref="mail.action_res_users_my_fullpage"/>
|
||||
</record>
|
||||
|
||||
<!-- Update Preferences form !-->
|
||||
<record id="view_users_form_simple_modif_mail" model="ir.ui.view">
|
||||
|
|
@ -9,12 +22,27 @@
|
|||
<field name="inherit_id" ref="base.view_users_form_simple_modif"/>
|
||||
<field name="arch" type="xml">
|
||||
<data>
|
||||
<field name="email" position="before">
|
||||
<field name="notification_type" widget="radio" readonly="0"/>
|
||||
</field>
|
||||
<xpath expr="//field[@name='image_1920']" position="before">
|
||||
<widget name="notification_alert"/>
|
||||
<xpath expr="//group[@name='other_preferences']" position="inside">
|
||||
<field name="notification_type" widget="radio" readonly="0" options="{'horizontal': true}"/>
|
||||
<field name="outgoing_mail_server_id" invisible="1"/> <!-- Used by the mail_server_configurator_selection widget -->
|
||||
<span class="o_form_label fw-bold" invisible="not has_external_mail_server">Outgoing Mail Server</span>
|
||||
<field name="outgoing_mail_server_type"
|
||||
nolabel="1"
|
||||
string="Outgoing Mail Server"
|
||||
widget="mail_server_configurator_selection"
|
||||
invisible="not has_external_mail_server"/>
|
||||
</xpath>
|
||||
<field name="signature" position="attributes">
|
||||
<attribute name="widget">html_mail</attribute>
|
||||
</field>
|
||||
<group name="calendar_preferences" position="inside">
|
||||
<label for="out_of_office_from" string="Out-of-office" />
|
||||
<div class="o_row">
|
||||
<field name="out_of_office_from" widget="daterange" options="{'end_date_field': 'out_of_office_to', 'show_time': False}" placeholder="None planned"/>
|
||||
<field name="out_of_office_to" invisible="1"/> <!-- otherwise it is visible, smort -->
|
||||
</div>
|
||||
<field name="out_of_office_message" string="" options="{'height': 112}" class="border border-secondary w-100" placeholder="Your out-of-office message..."/>
|
||||
</group>
|
||||
</data>
|
||||
</field>
|
||||
</record>
|
||||
|
|
@ -26,10 +54,27 @@
|
|||
<field name="inherit_id" ref="base.view_users_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<data>
|
||||
<field name="signature" position="before">
|
||||
<field name="notification_type" widget="radio"
|
||||
attrs="{'invisible': [('share', '=', True)]}"/>
|
||||
<xpath expr="//group[@name='other_preferences']" position="inside">
|
||||
<field name="notification_type" widget="radio" invisible="share" options="{'horizontal': true}"/>
|
||||
<field name="outgoing_mail_server_id" invisible="1"/> <!-- Used by the mail_server_configurator_selection widget -->
|
||||
<span class="o_form_label fw-bold" invisible="not has_external_mail_server">Outgoing Mail Server</span>
|
||||
<field name="outgoing_mail_server_type"
|
||||
nolabel="1"
|
||||
string="Outgoing Mail Server"
|
||||
widget="mail_server_configurator_selection"
|
||||
invisible="not has_external_mail_server"/>
|
||||
</xpath>
|
||||
<field name="signature" position="attributes">
|
||||
<attribute name="widget">html_mail</attribute>
|
||||
</field>
|
||||
<group name="calendar_preferences" position="inside">
|
||||
<label for="out_of_office_from" string="Out-of-office" />
|
||||
<div class="o_row">
|
||||
<field name="out_of_office_from" widget="daterange" options="{'end_date_field': 'out_of_office_to', 'show_time': False}" placeholder="None planned"/>
|
||||
<field name="out_of_office_to" invisible="1"/> <!-- otherwise it is visible, smort -->
|
||||
</div>
|
||||
<field name="out_of_office_message" string="" options="{'height': 112}" class="border border-secondary w-100" placeholder="Your out-of-office message..."/>
|
||||
</group>
|
||||
</data>
|
||||
</field>
|
||||
</record>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue