Make Issues kanban view looks more like Tasks kanban view, with tags at the top and priority field (stars) next to the message icon, on the left
341 lines
18 KiB
XML
341 lines
18 KiB
XML
<?xml version="1.0"?>
|
|
<openerp>
|
|
<data>
|
|
|
|
<record model="ir.ui.view" id="project_issue_form_view">
|
|
<field name="name">Project Issue Tracker Form</field>
|
|
<field name="model">project.issue</field>
|
|
<field name="arch" type="xml">
|
|
<form string="Issue">
|
|
<header>
|
|
<field name="stage_id" widget="statusbar" clickable="True"
|
|
options="{'fold_field': 'fold'}"/>
|
|
</header>
|
|
<sheet string="Issue">
|
|
<div class="row">
|
|
<h1 class="col-xs-11">
|
|
<field name="name" class="oe_inline" placeholder="Issue Summary..."/>
|
|
</h1>
|
|
<div class="col-xs-1 text-right">
|
|
<field name="kanban_state" class="oe_inline" widget="kanban_state_selection"
|
|
options='{
|
|
"states_legend_field": "stage_id",
|
|
"states_legend": {"normal": "legend_normal", "blocked": "legend_blocked", "done": "legend_done"}}'/>
|
|
</div>
|
|
</div>
|
|
<label for="tag_ids" class="oe_edit_only"/>
|
|
<field name="tag_ids" widget="many2many_tags"/>
|
|
<group>
|
|
<group>
|
|
<field name="user_id"
|
|
context="{'default_groups_ref': ['base.group_user', 'base.group_partner_manager', 'project.group_project_user']}"/>
|
|
<field name="priority" groups="base.group_user" widget="priority"/>
|
|
</group>
|
|
<group>
|
|
<field name="partner_id" on_change="onchange_partner_id(partner_id)"/>
|
|
<field name="email_from"/>
|
|
<label for="project_id"/>
|
|
<div name="project">
|
|
<field name="project_id" on_change="on_change_project(project_id)" class="oe_inline" context="{'default_use_issues':1}"/>
|
|
</div>
|
|
<label for="task_id" groups="base.group_no_one"/>
|
|
<div groups="base.group_no_one">
|
|
<field name="task_id" on_change="onchange_task_id(task_id)" class="oe_inline" context="{'default_project_id':project_id}"/>
|
|
</div>
|
|
</group>
|
|
</group>
|
|
<notebook>
|
|
<page string="Description">
|
|
<field name="description" placeholder="Add an internal note..." groups="base.group_user"/>
|
|
</page>
|
|
<page string="Extra Info" name="extra_info" groups="project.group_project_manager,project.group_project_user">
|
|
<group>
|
|
<group>
|
|
<field name="id"/>
|
|
<field name="day_open"/>
|
|
<field name="day_close"/>
|
|
<field name="working_hours_open" widget="float_time"/>
|
|
<field name="working_hours_close" widget="float_time"/>
|
|
<field name="inactivity_days"/>
|
|
<field name="days_since_creation"/>
|
|
</group>
|
|
<group groups="base.group_no_one">
|
|
<field name="active"/>
|
|
</group>
|
|
</group>
|
|
</page>
|
|
</notebook>
|
|
</sheet>
|
|
<div class="oe_chatter">
|
|
<field name="message_follower_ids" widget="mail_followers" groups="base.group_user"/>
|
|
<field name="message_ids" widget="mail_thread"/>
|
|
</div>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<record model="ir.ui.view" id="project_issue_tree_view">
|
|
<field name="name">Project Issue Tracker Tree</field>
|
|
<field name="model">project.issue</field>
|
|
<field name="arch" type="xml">
|
|
<tree string="Issue Tracker Tree" decoration-bf="message_unread==True">
|
|
<field name="message_unread" invisible="1"/>
|
|
<field name="id"/>
|
|
<field name="name"/>
|
|
<field name="partner_id"/>
|
|
<field name="project_id"/>
|
|
<field name="priority" string="Priority" groups="base.group_user"/>
|
|
<field name="create_date"/>
|
|
<field name="user_id"/>
|
|
<field name="stage_id" widget="selection" readonly="1"/>
|
|
<field name="tag_ids" invisible="1"/>
|
|
<field name="task_id" invisible="1"/>
|
|
</tree>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="view_project_issue_filter" model="ir.ui.view">
|
|
<field name="name">Project Issue Tracker Search</field>
|
|
<field name="model">project.issue</field>
|
|
<field name="arch" type="xml">
|
|
<search string="Issue Tracker Search">
|
|
<field name="name" string="Issue" filter_domain="['|', '|', '|', ('partner_id','child_of',self), ('description','ilike',self),('email_from','ilike',self),('name','ilike',self)]"/>
|
|
<field name="id"/>
|
|
<field name="partner_id" operator="child_of"/>
|
|
<field name="user_id"/>
|
|
<field name="project_id"/>
|
|
<field name="tag_ids"/>
|
|
<field name="stage_id" domain="[]"/>
|
|
<filter string="My Issues" domain="[('user_id','=',uid)]"/>
|
|
<filter string="Unassigned" name="unassigned" domain="[('user_id', '=', False)]"/>
|
|
<separator/>
|
|
<filter string="New" name="draft" domain="[('stage_id.sequence', '=', 1)]"/>
|
|
<separator/>
|
|
<filter string="New Mail" name="message_unread" domain="[('message_unread','=',True)]"/>
|
|
<group expand="0" string="Group By" >
|
|
<filter string="Assigned to" name="Responsible" context="{'group_by':'user_id'}" />
|
|
<filter string="Project" name="project" context="{'group_by':'project_id'}" />
|
|
<filter string="Task" context="{'group_by':'task_id'}"/>
|
|
<filter string="Priority" context="{'group_by':'priority'}" />
|
|
<filter string="Stage" context="{'group_by':'stage_id'}"/>
|
|
<filter string="Company" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
|
|
<separator/>
|
|
<filter string="Create Day" context="{'group_by':'create_date:day'}" help="Create Date"/>
|
|
<filter string="Last Message" name="group_message_last_post" context="{'group_by':'message_last_post:week'}"/>
|
|
</group>
|
|
</search>
|
|
</field>
|
|
</record>
|
|
|
|
<record model="ir.ui.view" id="project_issue_calendar_view">
|
|
<field name="name">Project Issue Tracker Calendar</field>
|
|
<field name="model">project.issue</field>
|
|
<field name="priority" eval="2"/>
|
|
<field name="arch" type="xml">
|
|
<calendar string="Issues" date_start="date" color="user_id" date_delay="duration">
|
|
<field name="name"/>
|
|
<field name="partner_id"/>
|
|
</calendar>
|
|
</field>
|
|
</record>
|
|
|
|
|
|
<!-- Project Issue Karban View-->
|
|
|
|
<record model="ir.ui.view" id="project_issue_kanban_view">
|
|
<field name="name">Project Issue Kanban</field>
|
|
<field name="model">project.issue</field>
|
|
<field name="arch" type="xml">
|
|
<kanban default_group_by="stage_id" class="o_kanban_small_column">
|
|
<field name="stage_id" options='{"group_by_tooltip": {"description": "Description", "legend_priority": "Use of stars"}}'/>
|
|
<field name="color"/>
|
|
<field name="user_email"/>
|
|
<field name="user_id"/>
|
|
<field name="date_deadline"/>
|
|
<field name="message_unread_counter"/>
|
|
<templates>
|
|
<t t-name="kanban-tooltip">
|
|
<ul class="oe_kanban_tooltip">
|
|
<li><b>Project:</b> <field name="project_id"/></li>
|
|
<li><b>Category:</b> <field name="tag_ids"/></li>
|
|
</ul>
|
|
</t>
|
|
<t t-name="kanban-box">
|
|
<div t-attf-class="oe_kanban_color_#{kanban_getcolor(record.color.raw_value)} oe_kanban_card oe_kanban_global_click oe_semantic_html_override">
|
|
<div class="o_dropdown_kanban dropdown" groups="base.group_user">
|
|
|
|
<a class="dropdown-toggle btn" data-toggle="dropdown" href="#" >
|
|
<span class="fa fa-bars fa-lg"/>
|
|
</a>
|
|
<ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
|
|
<t t-if="widget.editable"><li><a type="edit">Edit Issue</a></li></t>
|
|
<t t-if="widget.deletable"><li><a type="delete">Delete</a></li></t>
|
|
<li><ul class="oe_kanban_colorpicker" data-field="color"/></li>
|
|
</ul>
|
|
</div>
|
|
<div class="oe_kanban_content" tooltip="kanban-tooltip">
|
|
<field name="tag_ids"/>
|
|
<div>
|
|
<b><field name="name"/></b> <br/>
|
|
<field name="partner_id"/> <br/>
|
|
</div>
|
|
<div class="oe_kanban_bottom_left">
|
|
<field name="priority" widget="priority"/>
|
|
<t t-if="record.message_unread_counter.raw_value">
|
|
<span class='oe_kanban_mail_new' title='Unread Messages'><i class='fa fa-comments'/><t t-raw="record.message_unread_counter.raw_value"/></span>
|
|
</t>
|
|
</div>
|
|
<div class="oe_kanban_bottom_right">
|
|
<img t-att-src="kanban_image('res.users', 'image_small', record.user_id.raw_value)" t-att-title="record.user_id.value" width="24" height="24" class="oe_kanban_avatar pull-right"/>
|
|
<div class="pull-left" groups="base.group_user">
|
|
<field name="kanban_state" widget="kanban_state_selection"
|
|
options='{"states_legend": {"normal": "legend_normal", "blocked": "legend_blocked", "done": "legend_done"}}'/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="oe_clear"></div>
|
|
</div>
|
|
</t>
|
|
</templates>
|
|
</kanban>
|
|
</field>
|
|
</record>
|
|
|
|
<record model="ir.ui.view" id="project_issue_pivot_view">
|
|
<field name="name">Project Issue Tracker Pivot</field>
|
|
<field name="model">project.issue</field>
|
|
<field name="arch" type="xml">
|
|
<pivot string="Project Issues">
|
|
<field name="project_id" type="row"/>
|
|
<field name="stage_id" type="col"/>
|
|
</pivot>
|
|
</field>
|
|
</record>
|
|
|
|
<record model="ir.ui.view" id="project_issue_graph_view">
|
|
<field name="name">Project Issue Tracker Graph</field>
|
|
<field name="model">project.issue</field>
|
|
<field name="arch" type="xml">
|
|
<graph string="Project Issues" type="bar">
|
|
<field name="project_id" type="row"/>
|
|
<field name="create_date" interval="month" type="col"/>
|
|
</graph>
|
|
</field>
|
|
</record>
|
|
|
|
|
|
<!-- Feature Requests -->
|
|
<record model="ir.ui.view" id="project_feature_tree_view">
|
|
<field name="name">Project Issue- Feature Tracker Tree</field>
|
|
<field name="model">project.issue</field>
|
|
<field name="arch" type="xml">
|
|
<tree string="Feature Tracker Tree" decoration-bf="message_unread==True">
|
|
<field name="id"/>
|
|
<field name="message_unread" invisible="1"/>
|
|
<field name="name" string="Feature description"/>
|
|
<field name="partner_id"/>
|
|
<field name="priority" string="Priority"/>
|
|
<field name="user_id"/>
|
|
<field name="stage_id" widget="selection" readonly="1"/>
|
|
</tree>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="act_project_project_2_project_issue_all" model="ir.actions.act_window">
|
|
<field name="res_model">project.issue</field>
|
|
<field name="view_type">form</field>
|
|
<field name="name">Issues</field>
|
|
<field name="view_mode">kanban,tree,form,calendar,graph,pivot</field>
|
|
<field name="context">{
|
|
'search_default_project_id': [active_id],
|
|
'default_project_id': active_id,
|
|
}
|
|
</field>
|
|
<field name="help" type="html">
|
|
<p>
|
|
The Odoo issues tacker allows you to efficiently manage things
|
|
like internal requests, software development bugs, customer
|
|
complaints, project troubles, material breakdowns, etc.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- Project -->
|
|
<record id="view_project_form_inherited" model="ir.ui.view">
|
|
<field name="name">project.project.form.inherited</field>
|
|
<field name="model">project.project</field>
|
|
<field name="inherit_id" ref="project.edit_project"/>
|
|
<field name="arch" type="xml">
|
|
<xpath expr='//div[@name="options_active"]' position="attributes">
|
|
<attribute name="invisible">0</attribute>
|
|
</xpath>
|
|
<xpath expr='//div[@name="options_active"]' position='inside'>
|
|
<div>
|
|
<field name="use_issues" class="oe_inline" string="Use Issues"
|
|
on_change="on_change_use_tasks_or_issues(use_tasks, use_issues)"/>
|
|
<label for="use_issues" class="oe_inline"/>
|
|
<span attrs="{'invisible':[('use_issues', '=', False)]}">as</span>
|
|
<field name="label_issues" class="oe_inline oe_input_align" attrs="{'invisible': [('use_issues', '=', False)]}"/>
|
|
</div>
|
|
</xpath>
|
|
<div name="button_box" position="inside">
|
|
<button class="oe_stat_button" type="action" attrs="{'invisible':[('use_issues','=', False)]}"
|
|
name="%(act_project_project_2_project_issue_all)d" icon="fa-bug">
|
|
<field string="Issues" name="issue_count" widget="statinfo" options="{'label_field': 'label_issues'}"/>
|
|
</button>
|
|
</div>
|
|
<xpath expr='//field[@name="use_tasks"]' position="attributes">
|
|
<attribute name="attrs">{'on_change': 'on_change_use_tasks_or_issues(use_tasks, use_issues)'}</attribute>
|
|
</xpath>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="analytic_account_inherited_issue_form" model="ir.ui.view">
|
|
<field name="name">account.analytic.account.issue.form.inherit</field>
|
|
<field name="model">account.analytic.account</field>
|
|
<field name="inherit_id" ref="project.analytic_account_inherited_form"/>
|
|
<field eval="18" name="priority"/>
|
|
<field name="arch" type="xml">
|
|
<xpath expr='//div[@name="project"]' position='inside'>
|
|
<field name="use_issues"/>
|
|
<label for="use_issues"/>
|
|
</xpath>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="action_view_issues" model="ir.actions.act_window">
|
|
<field name="res_model">project.issue</field>
|
|
<field name="view_type">form</field>
|
|
<field name="name">Issues</field>
|
|
<field name="view_mode">kanban,tree,form,calendar,graph</field>
|
|
<field name="help" type="html">
|
|
<p>
|
|
The Odoo issues tacker allows you to efficiently manage things
|
|
like internal requests, software development bugs, customer
|
|
complaints, project troubles, material breakdowns, etc.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- res.partner -->
|
|
<record model="ir.ui.view" id="res_partner_issues_button_view">
|
|
<field name="name">res.partner.issues.button.view</field>
|
|
<field name="model">res.partner</field>
|
|
<field name="inherit_id" ref="base.view_partner_form" />
|
|
<field name="priority" eval="50"/>
|
|
<field name="groups_id" eval="[(4, ref('project.group_project_user'))]"/>
|
|
<field name="arch" type="xml">
|
|
<div name="button_box" position="inside">
|
|
<button class="oe_stat_button" type="action" name="%(action_view_issues)d"
|
|
context="{'search_default_partner_id': active_id, 'default_partner_id': active_id}"
|
|
attrs="{'invisible': [('customer', '=', False)]}"
|
|
icon="fa-bug">
|
|
<field string="Issues" name="issue_count" widget="statinfo"/>
|
|
</button>
|
|
</div>
|
|
</field>
|
|
</record>
|
|
|
|
</data>
|
|
</openerp>
|