Files
odoo_source/addons/project/views/project_project_views.xml
T
Julien Carion (juca) eaacaf122d [IMP] web, *: Add autoresize hooks
This commit adds two autoresize hooks for text inputs and textareas to
make it adapt their size (width for text inputs, height for textareas)
depending on their content.
The commit therefore solves the issue of several form view task titles
being restricted to 1 line while it can be annoying if the title is too
long. The autoresizeTextarea feature was moved from TextField to the
autoresizeTextarea hook and the autoresizeInput feature was moved from
the AutoresizeInput mail component to the autoresizeInput hook.
The TextField component has a new option for disabling linebreaks.

task-3138826

closes odoo/odoo#117355

Related: odoo/enterprise#39493
Signed-off-by: Géry Debongnie <ged@odoo.com>
2023-04-25 14:07:15 +02:00

688 lines
45 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="action_send_mail_project_project" model="ir.actions.act_window">
<field name="name">Send Email</field>
<field name="res_model">mail.compose.message</field>
<field name="view_mode">form</field>
<field name="target">new</field>
<field name="context" eval="{
'default_composition_mode': 'mass_mail',
}"/>
<field name="binding_model_id" ref="project.model_project_project"/>
<field name="binding_view_types">list</field>
</record>
<record id="edit_project" model="ir.ui.view">
<field name="name">project.project.form</field>
<field name="model">project.project</field>
<field name="arch" type="xml">
<form string="Project" class="o_form_project_project" js_class="project_form">
<field name="company_id" invisible="1"/>
<field name="analytic_account_id" invisible="1"/>
<header>
<button name="%(project.project_share_wizard_action)d" string="Share Read-only" type="action" class="oe_highlight" groups="project.group_project_manager"
attrs="{'invisible': [('privacy_visibility', '!=', 'portal')]}" context="{'default_access_mode': 'read'}" data-hotkey="r"/>
<button name="%(project.project_share_wizard_action)d" string="Share Editable" type="action" class="oe_highlight" groups="project.group_project_manager"
attrs="{'invisible': [('privacy_visibility', '!=', 'portal')]}" context="{'default_access_mode': 'edit'}" data-hotkey="e"/>
<field name="stage_id" widget="statusbar" options="{'clickable': '1', 'fold_field': 'fold'}" groups="project.group_project_stages"/>
</header>
<sheet string="Project">
<div class="oe_button_box" name="button_box" groups="base.group_user">
<button class="oe_stat_button" name="project_update_all_action" type="object" groups="project.group_project_manager">
<div>
<field name="last_update_color" invisible="1"/>
<field name="last_update_status" readonly="1" widget="status_with_color" status_label="Project Status"/>
</div>
</button>
<button class="oe_stat_button o_project_not_clickable" disabled="disabled" groups="!project.group_project_manager">
<div>
<field name="last_update_color" invisible="1"/>
<field name="last_update_status" readonly="1" widget="status_with_color" status_label="Project Status"/>
</div>
</button>
<button class="oe_stat_button" name="%(project.project_collaborator_action)d" type="action" icon="fa-users" groups="project.group_project_manager" attrs="{'invisible':[('privacy_visibility', '!=', 'portal')]}">
<div class="o_field_widget o_stat_info">
<span class="o_stat_value">
<field name="collaborator_count" nolabel="1"/>
</span>
<span class="o_stat_text">
Collaborators
</span>
</div>
</button>
</div>
<widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<div class="oe_title">
<h1 class="d-flex flex-row">
<field name="is_favorite" nolabel="1" widget="boolean_favorite" class="me-2"/>
<field name="name" options="{'line_breaks': False}" widget="text" class="o_text_overflow" placeholder="e.g. Office Party"/>
</h1>
</div>
<group>
<group>
<field name="label_tasks" string="Name of the Tasks" placeholder="e.g. Tasks"/>
<field name="partner_id" widget="res_partner_many2one"/>
<field name="tag_ids" widget="many2many_tags" options="{'color_field': 'color'}"/>
<field name="company_id" groups="base.group_multi_company"/>
</group>
<group>
<field name="active" invisible="1"/>
<field name="user_id" string="Project Manager" widget="many2one_avatar_user" attrs="{'readonly':[('active','=',False)]}" domain="[('share', '=', False)]" options="{'no_quick_create': True}"/>
<label for="date_start" string="Planned Date"/>
<div name="dates" class="o_row">
<field name="date_start" widget="daterange" options='{"related_end_date": "date"}'/>
<i class="fa fa-long-arrow-right mx-2 oe_edit_only" aria-label="Arrow icon" title="Arrow"/>
<i class="fa fa-long-arrow-right mx-2 oe_read_only" aria-label="Arrow icon" title="Arrow" attrs="{'invisible': [('date_start', '=', False), ('date', '=', False)]}"/>
<field name="date" widget="daterange" options='{"related_start_date": "date_start"}'/>
</div>
</group>
</group>
<notebook>
<page name="description" string="Description">
<field name="description" options="{'resizable': false}" placeholder="Project description..."/>
</page>
<page name="settings" string="Settings">
<group>
<group>
<field name="analytic_account_id" domain="['|', ('company_id', '=', company_id), ('company_id', '=', False)]" context="{'default_partner_id': partner_id}" groups="analytic.group_analytic_accounting"/>
<field name="privacy_visibility" widget="radio"/>
<span colspan="2" class="text-muted o_row ps-1" attrs="{'invisible':[('access_instruction_message', '=', '')]}">
<i class="fa fa-lightbulb-o"/>&amp;nbsp;<field class="d-inline" name="access_instruction_message" nolabel="1"/>
</span>
<span colspan="2" class="text-muted o_row ps-1" attrs="{'invisible':[('privacy_visibility_warning', '=', '')]}">
<i class="fa fa-warning"/>&amp;nbsp;<field class="d-inline" name="privacy_visibility_warning" nolabel="1"/>
</span>
</group>
<group>
<div name="alias_def" colspan="2" class="pb-2" attrs="{'invisible': [('alias_domain', '=', False)]}">
<!-- Always display the whole alias in edit mode. It depends in read only -->
<field name="alias_enabled" invisible="1"/>
<label for="alias_name" class="fw-bold o_form_label" string="Create tasks by sending an email to"/>
<field name="alias_value" class="oe_read_only d-inline" readonly="1" widget="email" attrs="{'invisible': [('alias_name', '=', False)]}" />
<span class="oe_edit_only o_row">
<field name="alias_name" class="oe_inline"/>@<field name="alias_domain" class="oe_inline" readonly="1"/>
</span>
</div>
<!-- the alias contact must appear when the user start typing and it must disappear
when the string is deleted. -->
<field name="alias_contact" class="oe_inline" string="Accept Emails From"
attrs="{'invisible': ['|', ('alias_name', '=', ''), ('alias_name', '=', False)]}"/>
</group>
<group name="extra_settings">
</group>
</group>
<group>
<group name="group_tasks_managment" string="Tasks Management" col="1" class="row mt16 o_settings_container" groups="project.group_project_task_dependencies,project.group_project_milestone,project.group_project_recurring_tasks">
<div>
<setting id="recurring_tasks_setting" help="Auto-generate tasks for regular activities" groups="project.group_project_recurring_tasks">
<field name="allow_recurring_tasks"/>
</setting>
<setting id="task_dependencies_setting" help="Determine the order in which to perform tasks" groups="project.group_project_task_dependencies">
<field name="allow_task_dependencies"/>
</setting>
<setting id="project_milestone_setting" help="Track major progress points that must be reached to achieve success" groups="project.group_project_milestone">
<field name="allow_milestones"/>
</setting>
</div>
</group>
<group name="group_time_managment" string="Time Management" invisible="1" col="1" class="row mt16 o_settings_container"/>
<group name="group_documents_analytics" string="Analytics" col="1" class="row mt16 o_settings_container" attrs="{'invisible': [('allow_rating', '=', False)]}">
<div>
<field name="allow_rating" invisible="1"/>
<setting name="analytic_div" help="Get customer feedback" groups="project.group_project_rating">
<field name="rating_active"/>
<div class="mt16" attrs="{'invisible':[('rating_active','==',False)]}">
<field name="rating_status" widget="radio" />
<div attrs="{'required': [('rating_status','=','periodic')], 'invisible': [('rating_status','!=','periodic')]}">
<label for="rating_status_period"/>
<field name="rating_status_period"/>
</div>
<div class="content-group">
<div class="mt8">
<button name="%(project.open_task_type_form_domain)d" context="{'project_id':id}" icon="fa-arrow-right" type="action" string="Set a Rating Email Template on Stages" class="btn-link"/>
</div>
</div>
</div>
</setting>
</div>
</group>
</group>
</page>
</notebook>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids" options="{'post_refresh':True}" help="Follow this project to automatically track the events associated to tasks and issues of this project." groups="base.group_user"/>
<field name="activity_ids"/>
<field name="message_ids"/>
</div>
</form>
</field>
</record>
<record id="view_project_project_filter" model="ir.ui.view">
<field name="name">project.project.select</field>
<field name="model">project.project</field>
<field name="arch" type="xml">
<search string="Search Project">
<field name="name" string="Project"/>
<field name="tag_ids"/>
<field name="user_id" string="Project Manager"/>
<field name="stage_id" groups="project.group_project_stages"/>
<field name="partner_id" string="Customer" filter_domain="[('partner_id', 'child_of', self)]"/>
<filter string="My Projects" name="own_projects" domain="[('user_id', '=', uid)]"/>
<filter string="My Favorites" name="my_projects" domain="[('favorite_user_ids', 'in', uid)]"/>
<filter string="Unassigned" name="unassigned_projects" domain="[('user_id', '=', False)]"/>
<separator/>
<filter string="Late Milestones" name="late_milestones" domain="[('is_milestone_exceeded', '=', True)]" groups="project.group_project_milestone"/>
<separator/>
<filter string="Start Date" name="start_date" date="date_start"/>
<filter string="End Date" name="end_date" date="date"/>
<separator/>
<filter string="Archived" name="inactive" domain="[('active', '=', False)]"/>
<separator/>
<filter invisible="1" string="Late Activities" name="activities_overdue"
domain="[('my_activity_date_deadline', '&lt;', 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="[('my_activity_date_deadline', '=', context_today().strftime('%Y-%m-%d'))]"/>
<filter invisible="1" string="Future Activities" name="activities_upcoming_all"
domain="[('my_activity_date_deadline', '&gt;', context_today().strftime('%Y-%m-%d'))]"/>
<group expand="0" string="Group By">
<filter string="Project Manager" name="Manager" context="{'group_by': 'user_id'}"/>
<filter string="Stage" name="groupby_stage" context="{'group_by': 'stage_id'}" groups="project.group_project_stages"/>
<filter string="Status" name="status" context="{'group_by': 'last_update_status'}"/>
<filter string="Customer" name="Partner" context="{'group_by': 'partner_id'}"/>
<filter string="Company" name="company" context="{'group_by': 'company_id'}" groups="base.group_multi_company"/>
</group>
</search>
</field>
</record>
<record id="view_project" model="ir.ui.view">
<field name="name">project.project.tree</field>
<field name="model">project.project</field>
<field name="arch" type="xml">
<tree decoration-muted="active == False" string="Projects" multi_edit="1" sample="1" default_order="is_favorite desc, sequence, name, id">
<field name="sequence" invisible="1"/>
<field name="message_needaction" invisible="1"/>
<field name="active" invisible="1"/>
<field name="is_favorite" string="Favorite" nolabel="1" widget="boolean_favorite" optional="hide"/>
<field name="display_name" string="Name" class="fw-bold"/>
<field name="partner_id" optional="show" string="Customer"/>
<field name="company_id" optional="show" groups="base.group_multi_company" options="{'no_create': True, 'no_open': True}"/>
<field name="company_id" invisible="1"/>
<field name="date_start" string="Start Date" widget="daterange" options="{'related_end_date': 'date'}" optional="hide"/>
<field name="date" string="End Date" widget="daterange" options="{'related_start_date': 'date_start'}" optional="hide"/>
<field name="user_id" optional="show" string="Project Manager" widget="many2one_avatar_user" options="{'no_open':True, 'no_create': True, 'no_create_edit': True}"/>
<field name="last_update_color" invisible="1"/>
<field name="tag_ids" widget="many2many_tags" options="{'color_field': 'color'}" optional="hide"/>
<field name="last_update_status" string="Status" nolabel="1" optional="show" widget="status_with_color" options="{'hide_label': True}"/>
<field name="stage_id" options="{'no_open': True}" optional="show"/>
<button string="View Tasks" name="action_view_tasks" type="object"/>
</tree>
</field>
</record>
<record id="project_list_view_group_stage" model="ir.ui.view">
<field name="name">project.project.tree.group.stage</field>
<field name="model">project.project</field>
<field name="inherit_id" ref="view_project"/>
<field name="mode">primary</field>
<field name="arch" type="xml">
<tree position="attributes">
<attribute name="default_group_by">stage_id</attribute>
</tree>
</field>
</record>
<record id="view_project_config" model="ir.ui.view">
<field name="name">project.project.tree.config</field>
<field name="model">project.project</field>
<field name="inherit_id" ref="project.view_project"/>
<field name="mode">primary</field>
<field name="arch" type="xml">
<tree position="attributes">
<attribute name="default_order">sequence, name, id</attribute>
</tree>
<field name="sequence" position="attributes">
<attribute name="invisible">0</attribute>
<attribute name="widget">handle</attribute>
</field>
</field>
</record>
<record id="view_project_config_group_stage" model="ir.ui.view">
<field name="name">project.project.tree.config.group.stage</field>
<field name="model">project.project</field>
<field name="inherit_id" ref="view_project_config"/>
<field name="mode">primary</field>
<field name="arch" type="xml">
<tree position="attributes">
<attribute name="default_group_by">stage_id</attribute>
</tree>
</field>
</record>
<record id="quick_create_project_form" model="ir.ui.view">
<field name="name">project.form.quick_create</field>
<field name="model">project.project</field>
<field name="priority">1000</field>
<field name="arch" type="xml">
<form class="o_form_project_project">
<group>
<field name="name" string="Project Title" placeholder="e.g. Office Party"/>
</group>
</form>
</field>
</record>
<record id="project_view_kanban" model="ir.ui.view">
<field name="name">project.project.kanban</field>
<field name="model">project.project</field>
<field name="arch" type="xml">
<kanban class="o_kanban_mobile">
<field name="user_id" string="Project Manager"/>
<templates>
<t t-name="kanban-box">
<div t-attf-class="oe_kanban_content oe_kanban_global_click o_kanban_get_form">
<div class="row">
<div class="col-12">
<strong><field name="name" string="Project Name"/></strong>
</div>
</div>
<div class="row">
<div class="col-8">
<field name="partner_id" string="Contact"/>
</div>
<div class="col-4">
<div class="oe_kanban_bottom_right float-end">
<field name="user_id" widget="many2one_avatar_user"/>
</div>
</div>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<record id="project_project_view_form_simplified" model="ir.ui.view">
<field name="name">project.project.view.form.simplified</field>
<field name="model">project.project</field>
<field name="arch" type="xml">
<form string="Project">
<div class="oe_title mb-lg-3 mb-md-2">
<label for="name" string="Name"/>
<h1>
<field name="name" class="o_project_name" placeholder="e.g. Office Party"/>
</h1>
</div>
<field name="user_id" invisible="1"/>
<div class="row o_settings_container"/>
<div name="alias_def" class="mt-4" colspan="2" attrs="{'invisible': [('alias_domain', '=', False)]}">
<label for="alias_name" string="Create tasks by sending an email to"/>
<field name="alias_enabled" invisible="1"/>
<span>
<field name="alias_name" placeholder="e.g. office-party"/>@<field name="alias_domain"/>
</span>
</div>
</form>
</field>
</record>
<record id="project_project_view_form_simplified_footer" model="ir.ui.view">
<field name="name">project.project.view.form.simplified</field>
<field name="model">project.project</field>
<field name="inherit_id" ref="project.project_project_view_form_simplified"/>
<field name="mode">primary</field>
<field name="arch" type="xml">
<xpath expr="//div[@name='alias_def']" position="after">
<footer>
<button string="Create project" name="action_view_tasks" type="object" class="btn-primary o_open_tasks" data-hotkey="q"/>
<button string="Discard" class="btn-secondary" special="cancel" data-hotkey="z"/>
</footer>
</xpath>
</field>
</record>
<record id="open_create_project" model="ir.actions.act_window">
<field name="name">Create a Project</field>
<field name="res_model">project.project</field>
<field name="view_mode">form</field>
<field name="view_id" ref="project_project_view_form_simplified_footer"/>
<field name="target">new</field>
<field name="context">{"default_allow_billable": 1}</field>
</record>
<record model="ir.ui.view" id="view_project_kanban">
<field name="name">project.project.kanban</field>
<field name="model">project.project</field>
<field name="arch" type="xml">
<kanban
class="o_kanban_dashboard o_project_kanban o_emphasize_colors"
js_class="project_project_kanban"
on_create="project.open_create_project"
action="action_view_tasks" type="object"
quick_create_view="project.quick_create_project_form"
sample="1"
default_order="is_favorite desc, sequence, name, id"
>
<field name="display_name"/>
<field name="partner_id"/>
<field name="color"/>
<field name="task_count"/>
<field name="milestone_count_reached"/>
<field name="milestone_count"/>
<field name="allow_milestones"/>
<field name="label_tasks"/>
<field name="alias_id"/>
<field name="alias_name"/>
<field name="alias_domain"/>
<field name="is_favorite"/>
<field name="rating_count" />
<field name="rating_avg"/>
<field name="rating_status"/>
<field name="rating_active" />
<field name="analytic_account_id"/>
<field name="date"/>
<field name="privacy_visibility"/>
<field name="last_update_color"/>
<field name="last_update_status"/>
<field name="tag_ids"/>
<progressbar field="last_update_status" colors='{"on_track": "success", "at_risk": "warning", "off_track": "danger", "on_hold": "info", "done": "purple"}'/>
<field name="sequence" widget="handle"/>
<templates>
<t t-name="kanban-menu" groups="base.group_user">
<div class="container">
<div class="row">
<div class="col-6 o_kanban_card_manage_section o_kanban_manage_view">
<div role="menuitem" class="o_kanban_card_manage_title">
<span>View</span>
</div>
<div role="menuitem">
<a name="action_view_tasks" type="object">Tasks</a>
</div>
<div role="menuitem" groups="project.group_project_milestone" t-if="record.allow_milestones.raw_value">
<a name="action_get_list_view" type="object">Milestones</a>
</div>
</div>
<div class="col-6 o_kanban_card_manage_section o_kanban_manage_reporting">
<div role="menuitem" class="o_kanban_card_manage_title" groups="project.group_project_user">
<span>Reporting</span>
</div>
<div role="menuitem" groups="project.group_project_user">
<a name="action_view_tasks_analysis" type="object">Tasks Analysis</a>
</div>
<div role="menuitem" name="project_burndown_menu" groups="project.group_project_user">
<a name="action_project_task_burndown_chart_report" type="object">Burndown Chart</a>
</div>
</div>
</div>
<div class="o_kanban_card_manage_settings row">
<div role="menuitem" aria-haspopup="true" class="col-6" groups="project.group_project_manager">
<ul class="oe_kanban_colorpicker" data-field="color" role="popup"/>
</div>
<div role="menuitem" class="col-6" groups="project.group_project_manager">
<a t-if="record.privacy_visibility.raw_value == 'portal'" class="dropdown-item" role="menuitem" name="%(project.project_share_wizard_action)d" type="action">Share</a>
<a class="dropdown-item" role="menuitem" type="edit">Settings</a>
</div>
<div class="o_kanban_card_manage_section o_kanban_manage_view col-12 row ps-0" groups="!project.group_project_manager">
<div role="menuitem" class="w-100">
<a class="dropdown-item mx-0" role="menuitem" type="open">View</a>
</div>
</div>
</div>
</div>
</t>
<t t-name="kanban-box">
<div t-attf-class="#{kanban_color(record.color.raw_value)} oe_kanban_global_click o_has_icon oe_kanban_content oe_kanban_card">
<div class="o_project_kanban_main ">
<div class="o_kanban_card_content mw-100">
<div class="o_kanban_primary_left">
<div class="o_primary">
<span class="o_text_overflow" t-att-title="record.display_name.value"><t t-esc="record.display_name.value"/></span>
<span class="o_text_overflow text-muted" t-if="record.partner_id.value">
<span class="fa fa-user me-2" aria-label="Partner" title="Partner"></span><t t-esc="record.partner_id.value"/>
</span>
<div t-if="record.date.raw_value or record.date_start.raw_value" class="text-muted o_row">
<span class="fa fa-clock-o me-2" title="Dates"></span><field name="date_start"/>
<i t-if="record.date.raw_value and record.date_start.raw_value" class="fa fa-long-arrow-right mx-2 oe_read_only" aria-label="Arrow icon" title="Arrow"/>
<field name="date"/>
</div>
<div t-if="record.alias_name.value and record.alias_domain.value" class="text-muted text-truncate" t-att-title="record.alias_id.value">
<span class="fa fa-envelope-o me-2" aria-label="Domain Alias" title="Domain Alias"></span><t t-esc="record.alias_id.value"/>
</div>
<div t-if="record.rating_active.raw_value and record.rating_count.raw_value &gt; 0" class="text-muted" groups="project.group_project_rating">
<b class="me-1">
<span style="font-weight:bold;" class="fa mt4 fa-smile-o text-success" t-if="record.rating_avg.raw_value &gt;= 3.66" title="Average Rating: Satisfied" role="img" aria-label="Happy face"/>
<span style="font-weight:bold;" class="fa mt4 fa-meh-o text-warning" t-elif="record.rating_avg.raw_value &gt;= 2.33" title="Average Rating: Okay" role="img" aria-label="Neutral face"/>
<span style="font-weight:bold;" class="fa mt4 fa-frown-o text-danger" t-else="" title="Average Rating: Dissatisfied" role="img" aria-label="Sad face"/>
</b>
<field name="rating_avg_percentage" widget="percentage"/>
</div>
<field name="tag_ids" widget="many2many_tags" options="{'color_field': 'color'}"/>
</div>
</div>
</div>
<span>
<field name="is_favorite" widget="boolean_favorite" nolabel="1" force_save="1" />
</span>
</div>
<div class="o_kanban_record_bottom mt-3">
<div class="oe_kanban_bottom_left">
<div class="o_project_kanban_boxes d-flex align-items-baseline">
<a class="o_project_kanban_box" name="action_view_tasks" type="object">
<div>
<span class="o_value"><t t-esc="record.task_count.value"/></span>
<span class="o_label ms-1"><t t-esc="record.label_tasks.value"/></span>
</div>
</a>
<a groups='project.group_project_milestone' t-if="record.allow_milestones and record.allow_milestones.raw_value and record.milestone_count.value &gt; 0"
class="o_kanban_inline_block text-muted small"
name="action_get_list_view"
type="object"
t-attf-title="#{record.milestone_count_reached.value} Milestones reached out of #{record.milestone_count.value}"
>
<span class="fa fa-flag me-1"/>
<t t-out="record.milestone_count_reached.value"/>/<t t-out="record.milestone_count.value"/>
</a>
</div>
<field name="activity_ids" widget="kanban_activity"/>
</div>
<div class="oe_kanban_bottom_right">
<field name="user_id" widget="many2one_avatar_user" domain="[('share', '=', False)]" style="padding-right: 4px;"/>
<field t-if="record.last_update_status.value &amp;&amp; widget.editable" name="last_update_status" widget="project_state_selection"/>
<span t-if="record.last_update_status.value &amp;&amp; !widget.editable" t-att-class="'o_status_bubble mx-0 o_color_bubble_' + record.last_update_color.value" t-att-title="record.last_update_status.value"></span>
</div>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<record id="project_kanban_view_group_stage" model="ir.ui.view">
<field name="name">project.project.kanban.group.stage</field>
<field name="model">project.project</field>
<field name="mode">primary</field>
<field name="inherit_id" ref="view_project_kanban"/>
<field name="arch" type="xml">
<xpath expr="//kanban" position="attributes">
<attribute name="default_group_by">stage_id</attribute>
</xpath>
</field>
</record>
<record id="view_project_config_kanban" model="ir.ui.view">
<field name="name">project.kanban.inherit.config.project</field>
<field name="model">project.project</field>
<field name="mode">primary</field>
<field name="inherit_id" ref="view_project_kanban"/>
<field name="arch" type="xml">
<xpath expr="//kanban" position="attributes">
<attribute name="action"></attribute>
<attribute name="default_order">sequence, name, id</attribute>
</xpath>
</field>
</record>
<record id="view_project_config_kanban_group_stage" model="ir.ui.view">
<field name="name">project.kanban.inherit.config.project.group.stage</field>
<field name="model">project.project</field>
<field name="mode">primary</field>
<field name="inherit_id" ref="view_project_config_kanban"/>
<field name="arch" type="xml">
<xpath expr="//kanban" position="attributes">
<attribute name="default_group_by">stage_id</attribute>
</xpath>
</field>
</record>
<record id="view_project_calendar" model="ir.ui.view">
<field name="name">project.project.calendar</field>
<field name="model">project.project</field>
<field name="arch" type="xml">
<calendar
date_start="date_start"
date_stop="date"
string="Projects"
mode="month"
scales="month,year"
event_open_popup="true"
quick_add="false"
color="color">
<field name="partner_id" attrs="{'invisible': [('partner_id', '=', False)]}"/>
<field name="user_id" widget="many2one_avatar_user" attrs="{'invisible': [('user_id', '=', False)]}"/>
<field name="is_favorite" widget="boolean_favorite" nolabel="1" string="Favorite"/>
<field name="stage_id" groups="project.group_project_stages"/>
<field name="last_update_color" invisible="1"/>
<field name="last_update_status" string="Status" widget="status_with_color"/>
<field name="tag_ids" widget="many2many_tags" options="{'color_field': 'color'}" attrs="{'invisible': [('tag_ids', '=', [])]}"/>
</calendar>
</field>
</record>
<!-- Please update both act_window when modifying one (open_view_project_all or open_view_project_all_group_stage) as one or the other is used in the menu menu_project -->
<record id="open_view_project_all" model="ir.actions.act_window">
<field name="name">Projects</field>
<field name="res_model">project.project</field>
<field name="domain">[]</field>
<field name="view_mode">kanban,tree,form</field>
<field name="view_id" ref="view_project_kanban"/>
<field name="search_view_id" ref="view_project_project_filter"/>
<field name="target">main</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
No projects found. Let's create one!
</p>
<p>
Create projects to organize your tasks. Define a different workflow for each project.
</p>
</field>
</record>
<!-- Please update both act_window when modifying one (open_view_project_all or open_view_project_all_group_stage) as one or the other is used in the menu menu_project -->
<record id="open_view_project_all_group_stage" model="ir.actions.act_window">
<field name="name">Projects</field>
<field name="res_model">project.project</field>
<field name="context">{}</field>
<field name="domain">[]</field>
<field name="view_mode">kanban,tree,form,calendar,activity</field>
<field name="view_id" ref="view_project_kanban"/>
<field name="search_view_id" ref="view_project_project_filter"/>
<field name="target">main</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
No projects found. Let's create one!
</p>
<p>
Projects contain tasks on the same topic, and each has its own dashboard.
</p>
</field>
</record>
<record id="open_view_project_all_group_stage_kanban_view" model="ir.actions.act_window.view">
<field name="sequence" eval="10"/>
<field name="view_mode">kanban</field>
<field name="act_window_id" ref="open_view_project_all_group_stage"/>
<field name="view_id" ref="project_kanban_view_group_stage"/>
</record>
<record id="open_view_project_all_group_stage_tree_view" model="ir.actions.act_window.view">
<field name="sequence" eval="20"/>
<field name="view_mode">tree</field>
<field name="act_window_id" ref="open_view_project_all_group_stage"/>
<field name="view_id" ref="project_list_view_group_stage"/>
</record>
<!-- Please update both act_window when modifying one (open_view_project_all_config or open_view_project_all_config_group_stage) as one or the other is used in the menu menu_project_config -->
<record id="open_view_project_all_config" model="ir.actions.act_window">
<field name="name">Projects</field>
<field name="res_model">project.project</field>
<field name="domain">[]</field>
<field name="view_mode">tree,kanban,form</field>
<field name="view_ids" eval="[(5, 0, 0),
(0, 0, {'view_mode': 'tree', 'view_id': ref('view_project_config')}),
(0, 0, {'view_mode': 'kanban', 'view_id': ref('view_project_config_kanban')})]"/>
<field name="search_view_id" ref="view_project_project_filter"/>
<field name="context">{}</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
No projects found. Let's create one!
</p>
<p>
Create projects to organize your tasks and define a different workflow for each project.
</p>
</field>
</record>
<!-- Please update both act_window when modifying one (open_view_project_all_config or open_view_project_all_config_group_stage) as one or the other is used in the menu menu_project_config -->
<record id="open_view_project_all_config_group_stage" model="ir.actions.act_window">
<field name="name">Projects</field>
<field name="res_model">project.project</field>
<field name="domain">[]</field>
<field name="view_mode">tree,kanban,form,calendar,activity</field>
<field name="search_view_id" ref="view_project_project_filter"/>
<field name="context">{}</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
No projects found. Let's create one!
</p>
<p>
Projects contain tasks on the same topic, and each has its own dashboard.
</p>
</field>
</record>
<record id="open_view_project_all_config_group_stage_tree_action_view" model="ir.actions.act_window.view">
<field name="sequence" eval="10"/>
<field name="view_mode">tree</field>
<field name="act_window_id" ref="project.open_view_project_all_config_group_stage"/>
<field name="view_id" ref="view_project_config_group_stage"/>
</record>
<record id="open_view_project_all_config_group_stage_kanban_action_view" model="ir.actions.act_window.view">
<field name="sequence" eval="20"/>
<field name="view_mode">kanban</field>
<field name="act_window_id" ref="project.open_view_project_all_config_group_stage"/>
<field name="view_id" ref="view_project_config_kanban_group_stage"/>
</record>
<record id="project_view_kanban_inherit_project" model="ir.ui.view">
<field name="name">project.kanban.inherit.project</field>
<field name="model">project.project</field>
<field name="inherit_id" ref="project.view_project_kanban"/>
<field name="priority">200</field>
<field name="arch" type="xml">
<xpath expr="/kanban" position="inside">
<field name="id"/>
</xpath>
<xpath expr="//div[hasclass('o_kanban_manage_view')]" position="inside">
<div role="menuitem" groups="project.group_project_user">
<a name="project_update_all_action" type="object" t-attf-context="{'active_id': #{record.id.raw_value} }">Project Updates</a>
</div>
</xpath>
</field>
</record>
</odoo>