266 lines
13 KiB
XML
266 lines
13 KiB
XML
<odoo>
|
|
<!-- ===================== 作业布置 ===================== -->
|
|
<record id="action_yuthon_school_assignment" model="ir.actions.act_window">
|
|
<field name="name">作业布置</field>
|
|
<field name="res_model">yuthon.school.assignment</field>
|
|
<field name="view_mode">list,form</field>
|
|
<field name="context">{'search_default_my_assignments': 1}</field>
|
|
</record>
|
|
|
|
<record id="yuthon_school_assignment_view_list" model="ir.ui.view">
|
|
<field name="name">yuthon.school.assignment.list</field>
|
|
<field name="model">yuthon.school.assignment</field>
|
|
<field name="arch" type="xml">
|
|
<list string="作业">
|
|
<header>
|
|
<button name="action_publish_batch" type="object" string="批量发布"
|
|
class="btn-primary" groups="college.group_teacher"/>
|
|
</header>
|
|
<field name="name"/>
|
|
<field name="course_id"/>
|
|
<field name="teacher_id"/>
|
|
<field name="due_date"/>
|
|
<field name="submission_count"/>
|
|
<field name="state"/>
|
|
</list>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="yuthon_school_assignment_view_form" model="ir.ui.view">
|
|
<field name="name">yuthon.school.assignment.form</field>
|
|
<field name="model">yuthon.school.assignment</field>
|
|
<field name="arch" type="xml">
|
|
<form>
|
|
<header>
|
|
<button name="action_publish" type="object" string="发布"
|
|
class="btn-primary"
|
|
invisible="state != 'draft'"/>
|
|
<field name="state" widget="statusbar"
|
|
statusbar_visible="draft,published,closed"/>
|
|
</header>
|
|
<sheet>
|
|
<div class="oe_title">
|
|
<h1>
|
|
<field name="name" placeholder="请输入作业标题"/>
|
|
</h1>
|
|
</div>
|
|
<group>
|
|
<group>
|
|
<field name="course_id"/>
|
|
<field name="teacher_id" readonly="1"/>
|
|
<field name="due_date"/>
|
|
</group>
|
|
<group>
|
|
<field name="attachment" filename="attachment_filename"/>
|
|
<field name="attachment_filename" invisible="1"/>
|
|
</group>
|
|
</group>
|
|
<notebook>
|
|
<page string="作业说明">
|
|
<field name="description"/>
|
|
</page>
|
|
<page string="提交记录">
|
|
<field name="submission_ids" readonly="1">
|
|
<list>
|
|
<field name="student_id"/>
|
|
<field name="submit_time"/>
|
|
<field name="score"/>
|
|
<field name="state"/>
|
|
</list>
|
|
</field>
|
|
</page>
|
|
</notebook>
|
|
</sheet>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="yuthon_school_assignment_view_search" model="ir.ui.view">
|
|
<field name="name">yuthon.school.assignment.search</field>
|
|
<field name="model">yuthon.school.assignment</field>
|
|
<field name="arch" type="xml">
|
|
<search>
|
|
<field name="name" string="作业标题"
|
|
filter_domain="[('name', 'ilike', self)]"/>
|
|
<field name="course_id" string="课程"/>
|
|
<field name="teacher_id" string="布置教师"/>
|
|
<filter name="my_assignments" string="我布置的"
|
|
domain="[('teacher_id', '=', uid)]"/>
|
|
<filter name="published" string="已发布"
|
|
domain="[('state', '=', 'published')]"/>
|
|
<group expand="0" string="分组">
|
|
<filter name="group_course" string="课程"
|
|
context="{'group_by': 'course_id'}"/>
|
|
<filter name="group_state" string="状态"
|
|
context="{'group_by': 'state'}"/>
|
|
</group>
|
|
</search>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- ===================== 提交与批改(老师端) ===================== -->
|
|
<record id="action_yuthon_school_assignment_submission" model="ir.actions.act_window">
|
|
<field name="name">提交与批改</field>
|
|
<field name="res_model">yuthon.school.assignment.submission</field>
|
|
<field name="view_mode">list,form</field>
|
|
<field name="context">{'search_default_group_state': 1}</field>
|
|
</record>
|
|
|
|
<!-- ===================== 作业提交(学生端) ===================== -->
|
|
<record id="action_yuthon_school_my_submission" model="ir.actions.act_window">
|
|
<field name="name">作业提交</field>
|
|
<field name="res_model">yuthon.school.assignment.submission</field>
|
|
<field name="view_mode">kanban,list,form</field>
|
|
<field name="domain">['&', ('student_id.user_id', '=', uid), ('assignment_id.course_id.state', '=', 'published')]</field>
|
|
<field name="context">{'search_default_my_submissions': 1}</field>
|
|
</record>
|
|
|
|
<record id="yuthon_school_assignment_submission_view_list" model="ir.ui.view">
|
|
<field name="name">yuthon.school.assignment.submission.list</field>
|
|
<field name="model">yuthon.school.assignment.submission</field>
|
|
<field name="arch" type="xml">
|
|
<list string="作业提交" multi_edit="1">
|
|
<header>
|
|
<button name="action_open_batch_wizard"
|
|
type="object" string="批量批改"
|
|
class="btn-primary"
|
|
groups="college.group_teacher"/>
|
|
<button name="action_download_attachments"
|
|
type="object" string="批量下载附件"
|
|
class="btn-secondary"
|
|
groups="college.group_teacher"/>
|
|
</header>
|
|
<field name="assignment_id"/>
|
|
<field name="student_id" string="姓名" groups="college.group_teacher"/>
|
|
<field name="score"/>
|
|
<field name="state"/>
|
|
<field name="submit_time"/>
|
|
<field name="due_date"/>
|
|
</list>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="yuthon_school_assignment_submission_view_kanban" model="ir.ui.view">
|
|
<field name="name">yuthon.school.assignment.submission.kanban</field>
|
|
<field name="model">yuthon.school.assignment.submission</field>
|
|
<field name="arch" type="xml">
|
|
<kanban default_group_by="state"
|
|
default_order="due_date desc, id"
|
|
class="college-course-kanban college-kanban-homework o_kanban_mobile">
|
|
<field name="assignment_id"/>
|
|
<field name="student_id"/>
|
|
<field name="score"/>
|
|
<field name="state"/>
|
|
<field name="due_date"/>
|
|
<field name="submit_time"/>
|
|
<templates>
|
|
<t t-name="kanban-box">
|
|
<div class="oe_kanban_global_click college-kanban-card"
|
|
style="padding:0; border-radius:8px; overflow:hidden;">
|
|
<!-- 顶帽:珊瑚渐变 + 得分 -->
|
|
<div style="background:linear-gradient(135deg,#F56565,#F6AD55); padding:10px 14px; display:flex; align-items:center; justify-content:space-between;">
|
|
<div class="college-kanban-title" style="color:#fff; font-size:13px; max-width:70%; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;">
|
|
<field name="assignment_id"/>
|
|
</div>
|
|
<span class="college-kanban-badge college-kanban-badge-score">
|
|
<field name="score"/> 分
|
|
</span>
|
|
</div>
|
|
<!-- 主体 -->
|
|
<div class="college-kanban-body" style="padding:10px 14px;">
|
|
<div class="college-kanban-meta small mb-2" groups="college.group_teacher">
|
|
<i class="fa fa-user text-muted"/> <field name="student_id"/>
|
|
</div>
|
|
<div class="mb-2" style="display:flex; gap:6px; flex-wrap:wrap;">
|
|
<span class="college-kanban-badge college-kanban-badge-state">
|
|
<field name="state"/>
|
|
</span>
|
|
</div>
|
|
<div class="college-kanban-meta small text-muted" style="line-height:1.5;">
|
|
<div><i class="fa fa-calendar-check-o"/> 截止:<field name="due_date"/></div>
|
|
<t t-if="record.submit_time.raw_value">
|
|
<div><i class="fa fa-clock-o"/> 提交:<field name="submit_time"/></div>
|
|
</t>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</t>
|
|
</templates>
|
|
</kanban>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="yuthon_school_assignment_submission_view_form" model="ir.ui.view">
|
|
<field name="name">yuthon.school.assignment.submission.form</field>
|
|
<field name="model">yuthon.school.assignment.submission</field>
|
|
<field name="arch" type="xml">
|
|
<form>
|
|
<header>
|
|
<button name="action_submit" type="object" string="提交"
|
|
class="btn-primary"
|
|
invisible="state != 'pending'"/>
|
|
<field name="state" widget="statusbar"
|
|
statusbar_visible="pending,submitted,graded"/>
|
|
</header>
|
|
<sheet>
|
|
<field name="name" invisible="1"/>
|
|
<group>
|
|
<field name="assignment_id" readonly="state in ('submitted', 'graded')"/>
|
|
<field name="student_id" invisible="1"/>
|
|
<field name="teacher_id" invisible="1"/>
|
|
</group>
|
|
<group string="老师布置的附件">
|
|
<field name="assignment_attachment"
|
|
filename="assignment_attachment_filename"
|
|
readonly="1"
|
|
string="附件"/>
|
|
<field name="assignment_attachment_filename" invisible="1"/>
|
|
</group>
|
|
<group>
|
|
<field name="due_date" readonly="1"/>
|
|
<field name="submit_time" readonly="1"/>
|
|
</group>
|
|
<group groups="college.group_teacher">
|
|
<field name="score"/>
|
|
</group>
|
|
<group>
|
|
<field name="content" readonly="state in ('submitted', 'graded')"/>
|
|
</group>
|
|
<group>
|
|
<field name="attachment" filename="attachment_filename" readonly="state in ('submitted', 'graded')"/>
|
|
<field name="attachment_filename" invisible="1"/>
|
|
</group>
|
|
<group groups="college.group_teacher">
|
|
<field name="feedback"/>
|
|
</group>
|
|
</sheet>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="yuthon_school_assignment_submission_view_search" model="ir.ui.view">
|
|
<field name="name">yuthon.school.assignment.submission.search</field>
|
|
<field name="model">yuthon.school.assignment.submission</field>
|
|
<field name="arch" type="xml">
|
|
<search>
|
|
<field name="assignment_id" string="作业"/>
|
|
<field name="student_id" string="学员"/>
|
|
<filter name="my_submissions" string="我的提交"
|
|
domain="[('student_id.user_id', '=', uid)]"/>
|
|
<filter name="pending" string="待提交"
|
|
domain="[('state', '=', 'pending')]"/>
|
|
<filter name="submitted" string="待批改"
|
|
domain="[('state', '=', 'submitted')]"/>
|
|
<filter name="graded" string="已批改"
|
|
domain="[('state', '=', 'graded')]"/>
|
|
<group expand="0" string="分组">
|
|
<filter name="group_assignment" string="作业"
|
|
context="{'group_by': 'assignment_id'}"/>
|
|
<filter name="group_state" string="状态"
|
|
context="{'group_by': 'state'}"/>
|
|
</group>
|
|
</search>
|
|
</field>
|
|
</record>
|
|
</odoo>
|