181 lines
8.7 KiB
XML
181 lines
8.7 KiB
XML
<odoo>
|
|
<!-- ===================== 学习进展:动作(老师用,无限制) ===================== -->
|
|
<record id="action_yuthon_school_progress" model="ir.actions.act_window">
|
|
<field name="name">学习进展</field>
|
|
<field name="res_model">yuthon.school.progress</field>
|
|
<field name="view_mode">kanban,list,form</field>
|
|
</record>
|
|
|
|
<!-- ===================== 学习进展:统一入口(按角色动态路由) ===================== -->
|
|
<record id="action_yuthon_school_progress_router" model="ir.actions.server">
|
|
<field name="name">学习进展</field>
|
|
<field name="model_id" ref="model_yuthon_school_progress"/>
|
|
<field name="state">code</field>
|
|
<field name="code"><![CDATA[
|
|
# 老师 / 管理员 -> 查看全部学习进展
|
|
# 学生 -> 仅查看自己已发布课程的学习进展
|
|
if env.user.has_group('college.group_teacher') or env.user.has_group('base.group_system'):
|
|
action = env.ref('college.action_yuthon_school_progress').sudo().read()[0]
|
|
else:
|
|
action = env.ref('college.action_yuthon_school_progress_student').sudo().read()[0]
|
|
]]></field>
|
|
</record>
|
|
|
|
<!-- ===================== 学习进展:列表 ===================== -->
|
|
<record id="yuthon_school_progress_view_list" model="ir.ui.view">
|
|
<field name="name">yuthon.school.progress.list</field>
|
|
<field name="model">yuthon.school.progress</field>
|
|
<field name="arch" type="xml">
|
|
<list string="学习进展">
|
|
<field name="course_id"/>
|
|
<field name="student_id" groups="college.group_teacher"/>
|
|
<field name="teacher_id"/>
|
|
<field name="chapter_done"/>
|
|
<field name="chapter_total"/>
|
|
<field name="progress_rate"/>
|
|
<field name="status"/>
|
|
<field name="last_study_date"/>
|
|
<field name="score"/>
|
|
</list>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- ===================== 学习进展:表单(老师/管理员可编辑) ===================== -->
|
|
<record id="yuthon_school_progress_view_form" model="ir.ui.view">
|
|
<field name="name">yuthon.school.progress.form</field>
|
|
<field name="model">yuthon.school.progress</field>
|
|
<field name="groups_id" eval="[(4, ref('college.group_teacher')), (4, ref('base.group_system'))]"/>
|
|
<field name="arch" type="xml">
|
|
<form>
|
|
<sheet>
|
|
<group>
|
|
<field name="course_id"/>
|
|
<field name="student_id"/>
|
|
<field name="teacher_id"/>
|
|
</group>
|
|
<group>
|
|
<field name="chapter_done"/>
|
|
<field name="chapter_total"/>
|
|
<field name="progress_rate"/>
|
|
<field name="status"/>
|
|
<field name="last_study_date"/>
|
|
<field name="score"/>
|
|
</group>
|
|
<group>
|
|
<field name="note"/>
|
|
</group>
|
|
</sheet>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- ===================== 学习进展:表单(学生只读) ===================== -->
|
|
<record id="yuthon_school_progress_view_form_student" model="ir.ui.view">
|
|
<field name="name">yuthon.school.progress.form.student</field>
|
|
<field name="model">yuthon.school.progress</field>
|
|
<field name="priority">5</field>
|
|
<field name="groups_id" eval="[(4, ref('college.group_student'))]"/>
|
|
<field name="arch" type="xml">
|
|
<form edit="0" create="0" delete="0" duplicate="0">
|
|
<sheet>
|
|
<div class="oe_title">
|
|
<h1>
|
|
<field name="name" readonly="1"/>
|
|
</h1>
|
|
</div>
|
|
<group>
|
|
<group string="课程信息">
|
|
<field name="course_id" readonly="1"/>
|
|
<field name="teacher_id" readonly="1"/>
|
|
</group>
|
|
<group string="学习进度">
|
|
<field name="chapter_done" readonly="1"/>
|
|
<field name="chapter_total" readonly="1"/>
|
|
<field name="progress_rate" readonly="1"/>
|
|
<field name="status" readonly="1"/>
|
|
</group>
|
|
</group>
|
|
<group>
|
|
<group>
|
|
<field name="last_study_date" readonly="1"/>
|
|
<field name="score" readonly="1"/>
|
|
</group>
|
|
</group>
|
|
<group string="备注">
|
|
<field name="note" readonly="1" nolabel="1"/>
|
|
</group>
|
|
</sheet>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- ===================== 学习进展:搜索 ===================== -->
|
|
<record id="yuthon_school_progress_view_search" model="ir.ui.view">
|
|
<field name="name">yuthon.school.progress.search</field>
|
|
<field name="model">yuthon.school.progress</field>
|
|
<field name="arch" type="xml">
|
|
<search>
|
|
<field name="course_id" string="课程"/>
|
|
<field name="student_id" string="学员"/>
|
|
<field name="teacher_id" string="任课教师"/>
|
|
<filter name="not_started" string="未开始"
|
|
domain="[('status', '=', 'not_started')]"/>
|
|
<filter name="in_progress" string="进行中"
|
|
domain="[('status', '=', 'in_progress')]"/>
|
|
<filter name="completed" string="已完成"
|
|
domain="[('status', '=', 'completed')]"/>
|
|
<group expand="0" string="分组">
|
|
<filter name="group_course" string="课程"
|
|
context="{'group_by': 'course_id'}"/>
|
|
<filter name="group_status" string="状态"
|
|
context="{'group_by': 'status'}"/>
|
|
</group>
|
|
</search>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- ===================== 学习进展:看板 ===================== -->
|
|
<record id="yuthon_school_progress_view_kanban" model="ir.ui.view">
|
|
<field name="name">yuthon.school.progress.kanban</field>
|
|
<field name="model">yuthon.school.progress</field>
|
|
<field name="arch" type="xml">
|
|
<kanban default_group_by="status" class="o_kanban_mobile">
|
|
<field name="course_id"/>
|
|
<field name="student_id"/>
|
|
<field name="teacher_id"/>
|
|
<field name="progress_rate"/>
|
|
<field name="status"/>
|
|
<templates>
|
|
<t t-name="kanban-box">
|
|
<div class="oe_kanban_global_click" style="padding:12px 14px;">
|
|
<div class="o_kanban_record_headings">
|
|
<strong><field name="course_id"/></strong>
|
|
</div>
|
|
<div class="text-muted small mb-1" groups="college.group_teacher">
|
|
学员:<field name="student_id"/>
|
|
</div>
|
|
<div class="small mb-1">
|
|
章节:<field name="chapter_done"/> / <field name="chapter_total"/>
|
|
· 进度:<field name="progress_rate"/>% · 得分:<field name="score"/>
|
|
</div>
|
|
</div>
|
|
</t>
|
|
</templates>
|
|
</kanban>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- ===================== 学习进展:学生专用(仅看自己选课且已发布课程) ===================== -->
|
|
<!-- 注意:必须放在上方所有视图定义之后,否则加载时 ref() 找不到尚未注册的视图 xml_id -->
|
|
<record id="action_yuthon_school_progress_student" model="ir.actions.act_window">
|
|
<field name="name">学习进展</field>
|
|
<field name="res_model">yuthon.school.progress</field>
|
|
<field name="view_mode">kanban,list,form</field>
|
|
<field name="domain">['&', ('student_id.user_id', '=', uid), ('course_id.state', '=', 'published')]</field>
|
|
<field name="view_ids" eval="[(5, 0, 0),
|
|
(0, 0, {'view_mode': 'kanban', 'view_id': ref('yuthon_school_progress_view_kanban')}),
|
|
(0, 0, {'view_mode': 'list', 'view_id': ref('yuthon_school_progress_view_list')}),
|
|
(0, 0, {'view_mode': 'form', 'view_id': ref('yuthon_school_progress_view_form_student')})]"/>
|
|
</record>
|
|
</odoo>
|