如何在 Odoo 11 的日历视图中显示自己的看板卡?
How to display your own kanban card in calendar view in Odoo 11?
我正在尝试自定义calendar.event
模型的日历视图,其代码是:
<record id="view_calendar_event_calendar" model="ir.ui.view">
<field name="name">calendar.event.calendar</field>
<field name="model">calendar.event</field>
<field name="priority" eval="2"/>
<field name="arch" type="xml">
<calendar string="Meetings" date_start="start" date_stop="stop" date_delay="duration" all_day="allday"
display="[name]" color="color_partner_id" attendee="partner_ids" avatar_model="res.partner"
use_contacts="True" event_open_popup="%(calendar.view_calendar_event_form_popup)s">
<field name="name"/>
<field name="user_id"/>
<field name="color_partner_id"/>
<field name="partner_ids"/>
</calendar>
</field>
</record>
我想显示一些新字段并使背景颜色取决于名为 color_confirmed
的新字段。完美的方法是将日历视图中显示的看板替换为自定义的看板。 Odoo 文档 (https://www.odoo.com/documentation/11.0/reference/views.html#calendar) 说明如下:
templates
defines the QWeb template calendar-box. Cards definition may be split into multiple templates for clarity which will be rendered once for each record.
The kanban view uses mostly-standard javascript qweb and provides the following context variables:
...
我正在尝试使用 templates 属性,但我不知道如何使用,而且我无法在我下载的所有可用模块中找到示例。我的尝试之一:
<record id="view_calendar_event_calendar" model="ir.ui.view">
<field name="name">calendar.event.calendar</field>
<field name="model">calendar.event</field>
<field name="inherit_id" ref="calendar.view_calendar_event_calendar"/>
<field name="arch" type="xml">
<xpath expr="//calendar[1]" position="replace">
<calendar string="Meetings" date_start="start" date_stop="stop" date_delay="duration"
all_day="allday" display="[color_confirmed]" color="color_confirmed" attendee="partner_ids"
avatar_model="res.partner" use_contacts="False" event_open_popup="%(calendar.view_calendar_event_form_popup)s" mode="month">
<field name="name"/>
<templates>
<t t-name="calendar-box">
<div class="oe_kanban_global_click">
<div class="oe_kanban_details">
<strong class="oe_partner_heading"><field name="name"/></strong>
<ul>
<li>TEST ITEM 1</li>
<li>TEST ITEM 2</li>
</ul>
</div>
</div>
</t>
</templates>
</calendar>
</xpath>
</field>
</record>
不出所料,它抛出了一个 JS 错误。我尝试了几种方法,但我在这样一个任务上浪费了很多时间。有谁知道这是如何工作的? (或实现我的目的的更好方法)。
js错误应该是因为日历定义中的avatar_model
、use_contacts
和attendee
。因为日历不接受这些值。
如果您删除这些字段并添加您的代码,效果会很好。我在这里渲染了你的 calendar-box
模板
如果我遗漏了什么,请告诉我。
我正在尝试自定义calendar.event
模型的日历视图,其代码是:
<record id="view_calendar_event_calendar" model="ir.ui.view">
<field name="name">calendar.event.calendar</field>
<field name="model">calendar.event</field>
<field name="priority" eval="2"/>
<field name="arch" type="xml">
<calendar string="Meetings" date_start="start" date_stop="stop" date_delay="duration" all_day="allday"
display="[name]" color="color_partner_id" attendee="partner_ids" avatar_model="res.partner"
use_contacts="True" event_open_popup="%(calendar.view_calendar_event_form_popup)s">
<field name="name"/>
<field name="user_id"/>
<field name="color_partner_id"/>
<field name="partner_ids"/>
</calendar>
</field>
</record>
我想显示一些新字段并使背景颜色取决于名为 color_confirmed
的新字段。完美的方法是将日历视图中显示的看板替换为自定义的看板。 Odoo 文档 (https://www.odoo.com/documentation/11.0/reference/views.html#calendar) 说明如下:
templates
defines the QWeb template calendar-box. Cards definition may be split into multiple templates for clarity which will be rendered once for each record.
The kanban view uses mostly-standard javascript qweb and provides the following context variables:
...
我正在尝试使用 templates 属性,但我不知道如何使用,而且我无法在我下载的所有可用模块中找到示例。我的尝试之一:
<record id="view_calendar_event_calendar" model="ir.ui.view">
<field name="name">calendar.event.calendar</field>
<field name="model">calendar.event</field>
<field name="inherit_id" ref="calendar.view_calendar_event_calendar"/>
<field name="arch" type="xml">
<xpath expr="//calendar[1]" position="replace">
<calendar string="Meetings" date_start="start" date_stop="stop" date_delay="duration"
all_day="allday" display="[color_confirmed]" color="color_confirmed" attendee="partner_ids"
avatar_model="res.partner" use_contacts="False" event_open_popup="%(calendar.view_calendar_event_form_popup)s" mode="month">
<field name="name"/>
<templates>
<t t-name="calendar-box">
<div class="oe_kanban_global_click">
<div class="oe_kanban_details">
<strong class="oe_partner_heading"><field name="name"/></strong>
<ul>
<li>TEST ITEM 1</li>
<li>TEST ITEM 2</li>
</ul>
</div>
</div>
</t>
</templates>
</calendar>
</xpath>
</field>
</record>
不出所料,它抛出了一个 JS 错误。我尝试了几种方法,但我在这样一个任务上浪费了很多时间。有谁知道这是如何工作的? (或实现我的目的的更好方法)。
js错误应该是因为日历定义中的avatar_model
、use_contacts
和attendee
。因为日历不接受这些值。
如果您删除这些字段并添加您的代码,效果会很好。我在这里渲染了你的 calendar-box
模板
如果我遗漏了什么,请告诉我。