204 lines
10 KiB
XML
204 lines
10 KiB
XML
<odoo>
|
|
<!-- ===================== 章节:老师编辑表单(默认) ===================== -->
|
|
<record id="yuthon_school_course_chapter_form_view" model="ir.ui.view">
|
|
<field name="name">yuthon.school.course.chapter.form.view</field>
|
|
<field name="model">yuthon.school.course.chapter</field>
|
|
<field name="priority">30</field>
|
|
<field name="groups_id" eval="[(4, ref('college.group_teacher')), (4, ref('base.group_system'))]"/>
|
|
<field name="arch" type="xml">
|
|
<form>
|
|
<group>
|
|
<field name="name"/>
|
|
<field name="course_id" readonly="1"/>
|
|
<field name="sequence" invisible="1"/>
|
|
</group>
|
|
<group>
|
|
<field name="description" widget="html" string="章节说明"/>
|
|
<field name="notes" widget="html" string="随堂笔记"/>
|
|
</group>
|
|
<group>
|
|
<field name="video_file" filename="video_filename"/>
|
|
<field name="video_filename" invisible="1"/>
|
|
<field name="video_filename_display" invisible="1"/>
|
|
</group>
|
|
<field name="attachment_ids" string="章节资料">
|
|
<list editable="bottom">
|
|
<field name="name" string="文件名"/>
|
|
<field name="file" filename="name"/>
|
|
</list>
|
|
</field>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- ===================== 章节:学生学习表单(弹窗播放视频/下载附件) ===================== -->
|
|
<record id="yuthon_school_course_chapter_study_form" model="ir.ui.view">
|
|
<field name="name">yuthon.school.course.chapter.study.form</field>
|
|
<field name="model">yuthon.school.course.chapter</field>
|
|
<field name="priority">20</field>
|
|
<field name="groups_id" eval="[(4, ref('college.group_student')), (4, ref('base.group_system'))]"/>
|
|
<field name="arch" type="xml">
|
|
<form>
|
|
<header>
|
|
<button name="action_toggle_complete" type="object"
|
|
string="标记已学完" class="btn-primary"
|
|
invisible="is_done_for_me"/>
|
|
<button name="action_toggle_complete" type="object"
|
|
string="取消完成" class="btn-secondary"
|
|
invisible="not is_done_for_me"/>
|
|
<field name="is_done_for_me" invisible="1"/>
|
|
</header>
|
|
<sheet>
|
|
<h2><field name="name" readonly="1"/></h2>
|
|
<div class="text-muted mb-3">
|
|
所属课程:<field name="course_id" readonly="1"/>
|
|
</div>
|
|
<group>
|
|
<field name="description" widget="html" readonly="1"/>
|
|
</group>
|
|
<!-- 有视频时直接播放 -->
|
|
<field name="video_embed_html" widget="html" readonly="1"
|
|
invisible="not video_file"/>
|
|
<!-- 没有视频但有附件时,只显示附件 -->
|
|
<separator string="章节资料" invisible="not attachment_ids"/>
|
|
<field name="attachment_ids" readonly="1"
|
|
invisible="not attachment_ids">
|
|
<list editable="bottom" create="0" delete="0">
|
|
<field name="name" string="文件名" readonly="1"/>
|
|
<field name="download_link_html" widget="html"
|
|
nolabel="1"/>
|
|
</list>
|
|
</field>
|
|
</sheet>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- ===================== 课程学习:学生专用表单(仅学生可见,避免覆盖老师默认表单) ===================== -->
|
|
<record id="yuthon_school_course_study_form" model="ir.ui.view">
|
|
<field name="name">yuthon.school.course.study.form</field>
|
|
<field name="model">yuthon.school.course</field>
|
|
<field name="priority">10</field>
|
|
<field name="groups_id" eval="[(4, ref('college.group_student'))]"/>
|
|
<field name="arch" type="xml">
|
|
<form>
|
|
<header>
|
|
<field name="name" readonly="1"/>
|
|
<field name="chapter_count" readonly="1" string="章节数"/>
|
|
</header>
|
|
<sheet>
|
|
<div class="text-muted mb-3">
|
|
任课教师:<field name="teacher_id" readonly="1"/>
|
|
· 课时:<field name="hours" readonly="1"/>
|
|
</div>
|
|
<group>
|
|
<field name="introduction" widget="html" readonly="1"/>
|
|
</group>
|
|
<separator string="课程章节(点击「去学习」观看视频与资料)"/>
|
|
<field name="chapter_ids" readonly="1">
|
|
<list>
|
|
<field name="name"/>
|
|
<button name="action_open_study" type="object"
|
|
string="去学习" class="btn-primary"
|
|
icon="fa-play"/>
|
|
</list>
|
|
</field>
|
|
</sheet>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- ===================== 学生「课程学习」入口动作 ===================== -->
|
|
<record id="action_yuthon_school_course_study" model="ir.actions.act_window">
|
|
<field name="name">课程学习</field>
|
|
<field name="res_model">yuthon.school.course</field>
|
|
<field name="view_mode">kanban,list,form</field>
|
|
<field name="domain">[('student_ids.user_id', '=', uid), ('state', '=', 'published')]</field>
|
|
<field name="view_ids" eval="[(5, 0, 0),
|
|
(0, 0, {'view_mode': 'kanban', 'view_id': ref('yuthon_school_course_view_kanban_study')}),
|
|
(0, 0, {'view_mode': 'list', 'view_id': ref('yuthon_school_course_view_list')}),
|
|
(0, 0, {'view_mode': 'form', 'view_id': ref('yuthon_school_course_study_form')})]"/>
|
|
<field name="target">current</field>
|
|
</record>
|
|
|
|
<!-- ===================== 学生「我的课程」入口(用老师完整表单 + 只看自己的课程) ===================== -->
|
|
<record id="action_yuthon_school_my_course_student" model="ir.actions.act_window">
|
|
<field name="name">我的课程</field>
|
|
<field name="res_model">yuthon.school.course</field>
|
|
<field name="view_mode">kanban,list,form</field>
|
|
<field name="domain">[('student_ids.user_id', '=', uid), ('state', '=', 'published')]</field>
|
|
<field name="view_ids" eval="[(5, 0, 0),
|
|
(0, 0, {'view_mode': 'kanban', 'view_id': ref('yuthon_school_course_view_kanban_student')}),
|
|
(0, 0, {'view_mode': 'list', 'view_id': ref('yuthon_school_course_view_list')}),
|
|
(0, 0, {'view_mode': 'form', 'view_id': ref('yuthon_school_course_view_form_student')})]"/>
|
|
<field name="target">current</field>
|
|
</record>
|
|
|
|
<!-- ===================== 随堂笔记:列表(按课程分组) ===================== -->
|
|
<record id="yuthon_school_course_chapter_notes_list" model="ir.ui.view">
|
|
<field name="name">yuthon.school.course.chapter.notes.list</field>
|
|
<field name="model">yuthon.school.course.chapter</field>
|
|
<field name="priority">40</field>
|
|
<field name="groups_id" eval="[(4, ref('college.group_teacher')), (4, ref('college.group_student')), (4, ref('base.group_system'))]"/>
|
|
<field name="arch" type="xml">
|
|
<list>
|
|
<field name="course_id"/>
|
|
<field name="name"/>
|
|
<field name="sequence"/>
|
|
</list>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- ===================== 随堂笔记:编辑表单 ===================== -->
|
|
<record id="yuthon_school_course_chapter_notes_form" model="ir.ui.view">
|
|
<field name="name">yuthon.school.course.chapter.notes.form</field>
|
|
<field name="model">yuthon.school.course.chapter</field>
|
|
<field name="priority">40</field>
|
|
<field name="groups_id" eval="[(4, ref('college.group_teacher')), (4, ref('college.group_student')), (4, ref('base.group_system'))]"/>
|
|
<field name="arch" type="xml">
|
|
<form>
|
|
<sheet>
|
|
<h2><field name="name" readonly="1"/></h2>
|
|
<div class="text-muted mb-3">
|
|
所属课程:<field name="course_id" readonly="1"/>
|
|
</div>
|
|
<group>
|
|
<field name="notes" widget="html" groups="college.group_teacher,base.group_system"/>
|
|
<field name="notes" widget="html" readonly="1" groups="college.group_student"/>
|
|
</group>
|
|
</sheet>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- ===================== 随堂笔记:搜索视图(按课程分组) ===================== -->
|
|
<record id="yuthon_school_course_chapter_notes_search" model="ir.ui.view">
|
|
<field name="name">yuthon.school.course.chapter.notes.search</field>
|
|
<field name="model">yuthon.school.course.chapter</field>
|
|
<field name="priority">40</field>
|
|
<field name="groups_id" eval="[(4, ref('college.group_teacher')), (4, ref('college.group_student')), (4, ref('base.group_system'))]"/>
|
|
<field name="arch" type="xml">
|
|
<search>
|
|
<field name="course_id"/>
|
|
<field name="name"/>
|
|
<filter name="group_by_course" string="按课程分组" context="{'group_by': 'course_id'}"/>
|
|
</search>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- ===================== 随堂笔记:动作 ===================== -->
|
|
<record id="action_yuthon_school_class_notes" model="ir.actions.act_window">
|
|
<field name="name">随堂笔记</field>
|
|
<field name="res_model">yuthon.school.course.chapter</field>
|
|
<field name="view_mode">list,form</field>
|
|
<field name="domain">['|', ('course_id.teacher_id', '=', uid), ('course_id.student_ids.user_id', '=', uid)]</field>
|
|
<field name="context">{'search_default_group_by_course': 1}</field>
|
|
<field name="view_ids" eval="[(5, 0, 0),
|
|
(0, 0, {'view_mode': 'list', 'view_id': ref('yuthon_school_course_chapter_notes_list')}),
|
|
(0, 0, {'view_mode': 'form', 'view_id': ref('yuthon_school_course_chapter_notes_form')})]"/>
|
|
<field name="search_view_id" ref="yuthon_school_course_chapter_notes_search"/>
|
|
<field name="target">current</field>
|
|
</record>
|
|
|
|
</odoo>
|