175 lines
7.9 KiB
XML
175 lines
7.9 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<odoo>
|
|
|
|
<!-- ============ 教材 ============ -->
|
|
|
|
<!-- List View -->
|
|
<record id="view_yuthon_school_textbook_list" model="ir.ui.view">
|
|
<field name="name">yuthon.school.textbook.list</field>
|
|
<field name="model">yuthon.school.textbook</field>
|
|
<field name="arch" type="xml">
|
|
<list string="教材" default_order="category_id, sequence">
|
|
<field name="sequence" widget="handle"/>
|
|
<field name="name"/>
|
|
<field name="category_id"/>
|
|
<field name="difficulty" widget="badge"
|
|
decoration-info="difficulty == 'beginner'"
|
|
decoration-warning="difficulty == 'intermediate'"
|
|
decoration-danger="difficulty == 'advanced'"/>
|
|
<field name="total_chapters"/>
|
|
<field name="total_videos"/>
|
|
<field name="total_hours"/>
|
|
<field name="state" widget="badge"
|
|
decoration-success="state == 'published'"
|
|
decoration-muted="state == 'draft'"/>
|
|
</list>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- Form View -->
|
|
<record id="view_yuthon_school_textbook_form" model="ir.ui.view">
|
|
<field name="name">yuthon.school.textbook.form</field>
|
|
<field name="model">yuthon.school.textbook</field>
|
|
<field name="arch" type="xml">
|
|
<form string="教材">
|
|
<header>
|
|
<button name="action_confirm" string="发布" type="object"
|
|
class="oe_highlight" invisible="state != 'draft'"/>
|
|
<button name="action_set_draft" string="退回草稿" type="object"
|
|
invisible="state != 'published'"/>
|
|
<field name="state" widget="statusbar"
|
|
statusbar_visible="draft,published"/>
|
|
</header>
|
|
<sheet>
|
|
<group>
|
|
<group>
|
|
<field name="name"/>
|
|
<field name="category_id"/>
|
|
<field name="difficulty" widget="radio"/>
|
|
<field name="sequence"/>
|
|
</group>
|
|
<group>
|
|
<field name="total_hours"/>
|
|
<field name="total_chapters"/>
|
|
<field name="total_videos"/>
|
|
<field name="active" invisible="1"/>
|
|
</group>
|
|
</group>
|
|
<group string="教材简介">
|
|
<field name="description" nolabel="1"
|
|
placeholder="教材的内容概要和适用人群..."/>
|
|
</group>
|
|
<notebook>
|
|
<page string="章节" name="chapter_page">
|
|
<field name="chapter_ids" nolabel="1">
|
|
<list editable="bottom">
|
|
<field name="sequence" widget="handle"/>
|
|
<field name="name"/>
|
|
<field name="hours"/>
|
|
<field name="video_count"/>
|
|
</list>
|
|
</field>
|
|
</page>
|
|
</notebook>
|
|
</sheet>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- Search View -->
|
|
<record id="view_yuthon_school_textbook_search" model="ir.ui.view">
|
|
<field name="name">yuthon.school.textbook.search</field>
|
|
<field name="model">yuthon.school.textbook</field>
|
|
<field name="arch" type="xml">
|
|
<search string="搜索教材">
|
|
<field name="name"/>
|
|
<field name="category_id"/>
|
|
<separator/>
|
|
<filter name="filter_beginner" string="入门"
|
|
domain="[('difficulty', '=', 'beginner')]"/>
|
|
<filter name="filter_intermediate" string="进阶"
|
|
domain="[('difficulty', '=', 'intermediate')]"/>
|
|
<filter name="filter_advanced" string="高级"
|
|
domain="[('difficulty', '=', 'advanced')]"/>
|
|
<separator/>
|
|
<filter name="filter_draft" string="草稿"
|
|
domain="[('state', '=', 'draft')]"/>
|
|
<filter name="filter_published" string="已发布"
|
|
domain="[('state', '=', 'published')]"/>
|
|
<separator/>
|
|
<group expand="0" string="分组">
|
|
<filter name="groupby_category" string="学习分类"
|
|
context="{'group_by': 'category_id'}"/>
|
|
<filter name="groupby_difficulty" string="难度"
|
|
context="{'group_by': 'difficulty'}"/>
|
|
</group>
|
|
</search>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- Action -->
|
|
<record id="action_yuthon_school_textbook" model="ir.actions.act_window">
|
|
<field name="name">教材管理</field>
|
|
<field name="res_model">yuthon.school.textbook</field>
|
|
<field name="view_mode">list,form</field>
|
|
<field name="search_view_id" ref="view_yuthon_school_textbook_search"/>
|
|
<field name="help" type="html">
|
|
<p class="o_view_nocontent_smiling_face">
|
|
创建第一本教材
|
|
</p>
|
|
<p>
|
|
教材是完整课程的载体,下设章节和视频,带学时统计
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- ============ 章节(独立表单视图,用于弹窗打开) ============ -->
|
|
|
|
<record id="view_yuthon_school_chapter_form" model="ir.ui.view">
|
|
<field name="name">yuthon.school.chapter.form</field>
|
|
<field name="model">yuthon.school.chapter</field>
|
|
<field name="arch" type="xml">
|
|
<form string="章节">
|
|
<sheet>
|
|
<group>
|
|
<group>
|
|
<field name="name"/>
|
|
<field name="textbook_id"/>
|
|
<field name="sequence"/>
|
|
<field name="hours"/>
|
|
</group>
|
|
<group>
|
|
<field name="video_count"/>
|
|
</group>
|
|
</group>
|
|
<group string="内容概述">
|
|
<field name="summary" nolabel="1"
|
|
placeholder="本章涵盖的内容概述..."/>
|
|
</group>
|
|
<group string="知识要点">
|
|
<field name="key_points" nolabel="1"
|
|
placeholder="本章需要掌握的关键知识点..."/>
|
|
</group>
|
|
<notebook>
|
|
<page string="视频" name="video_page">
|
|
<field name="video_ids" nolabel="1">
|
|
<list>
|
|
<field name="sequence" widget="handle"/>
|
|
<field name="name"/>
|
|
<field name="difficulty" widget="badge"
|
|
decoration-info="difficulty == 'beginner'"
|
|
decoration-warning="difficulty == 'intermediate'"
|
|
decoration-danger="difficulty == 'advanced'"/>
|
|
<field name="duration"/>
|
|
<field name="file_size_display"/>
|
|
</list>
|
|
</field>
|
|
</page>
|
|
</notebook>
|
|
</sheet>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
</odoo>
|