diff --git a/app/helpers/subjects_helper.rb b/app/helpers/subjects_helper.rb
index 72154b0a8..fb2246a50 100644
--- a/app/helpers/subjects_helper.rb
+++ b/app/helpers/subjects_helper.rb
@@ -1,12 +1,23 @@
module SubjectsHelper
# 实训路径的发布状态
- def publish_status subject, is_manager, user
+ def publish_status subject, is_manager
status = -1
if is_manager
status = 0 if subject.status == 0
status = 1 if subject.status == 1
- status = 2 if subject.status == 2 && user.admin?
+ status = 2 if subject.status == 2
+ end
+ status
+ end
+
+ # 实训路径的公开状态
+ def public_status subject, is_manager, user
+ status = -1
+ if is_manager
+ status = 0 if subject.public == 0
+ status = 1 if subject.public == 1
+ status = 2 if subject.public == 2 && user.admin?
end
status
end
diff --git a/app/views/subjects/show.json.jbuilder b/app/views/subjects/show.json.jbuilder
index 49ad55517..d25437f0a 100644
--- a/app/views/subjects/show.json.jbuilder
+++ b/app/views/subjects/show.json.jbuilder
@@ -6,7 +6,8 @@ json.subject_score @subject.all_score
json.member_count @subject.member_count
json.allow_delete (@subject.status != 2 && @is_creator) || @user.admin?
-json.publish_status publish_status(@subject, @is_manager, @user)
+json.publish_status publish_status(@subject, @is_manager)
+json.public_status public_status(@subject, @is_manager, @user)
json.allow_statistics @is_manager
json.allow_send @user.logged?
json.allow_visit @subject.status > 1 || @is_manager
diff --git a/public/react/src/modules/courses/coursesDetail/CoursesBanner.js b/public/react/src/modules/courses/coursesDetail/CoursesBanner.js
index c8715e1b8..99d5f7606 100644
--- a/public/react/src/modules/courses/coursesDetail/CoursesBanner.js
+++ b/public/react/src/modules/courses/coursesDetail/CoursesBanner.js
@@ -246,7 +246,7 @@ class CoursesBanner extends Component {
})
}else{
- s = "邀请码停用后,用户不能主动加入该课堂了";
+ s = "课堂邀请码停用后,用户不能主动加入该课堂了";
ss = "您是否确认停用?";
this.showActionPoll(i,s,ss)
}
diff --git a/public/react/src/modules/courses/members/CourseGroupList.js b/public/react/src/modules/courses/members/CourseGroupList.js
index afec12fa9..597357a9f 100644
--- a/public/react/src/modules/courses/members/CourseGroupList.js
+++ b/public/react/src/modules/courses/members/CourseGroupList.js
@@ -133,7 +133,12 @@ function CourseGroupList(props) {
modalsType={DownloadType}
/>
+ 分班列表
+ {props.history.push(`/courses/${courseId}/course_groups/0`)}}>未分班
+
+ }
searchValue={ searchValue }
onInputSearchChange={onInputSearchChange}
allowClearonChange={onInputSearchChange}
@@ -211,12 +216,12 @@ function CourseGroupList(props) {
onPressEnter={onPressEnter}
>
- {!!none_group_member_count &&
{props.history.push(`/courses/${courseId}/course_groups/0`)}}>
+ {/* {!!none_group_member_count &&
{props.history.push(`/courses/${courseId}/course_groups/0`)}}>
未分班:
{none_group_member_count}个学生
查看
-
}
+
} */}
{course_groups && !!course_groups.length ?
diff --git a/public/react/src/modules/courses/members/CourseGroupListTable.js b/public/react/src/modules/courses/members/CourseGroupListTable.js
index 5551faee3..d0ccbd73a 100644
--- a/public/react/src/modules/courses/members/CourseGroupListTable.js
+++ b/public/react/src/modules/courses/members/CourseGroupListTable.js
@@ -1,11 +1,11 @@
import React, { useState, useEffect } from 'react'
-import { Input,Checkbox,Table, Pagination, Modal,Menu ,Spin, Tooltip , Badge, Popconfirm } from "antd";
+import { Input,Checkbox,Table, Pagination, Modal,Menu ,Spin, Tooltip , Badge, Popconfirm, Result } from "antd";
import axios from 'axios'
import { WordsBtn, trigger, on, off, getUrl, downloadFile , sortDirections } from 'educoder'
import ClipboardJS from 'clipboard'
-
+import './studentsList.css';
/**
角色数组, CREATOR: 创建者, PROFESSOR: 教师, ASSISTANT_PROFESSOR: 助教, STUDENT: 学生
course_members_count: 0
@@ -103,10 +103,30 @@ function CourseGroupListTable(props) {
dataIndex: 'invite_code',
key: 'invite_code',
align:'center',
- width:"10%",
+ width:"21%",
className:"color-grey-6",
render: (invite_code, record, index) => {
- return invite_code
+ return
+ {invite_code}
+ {
+ record.edit_auth ?
+ changeInviteCode(record.id,record.invite_code_halt)} className={record.invite_code_halt ?"codeBtnStyle codeBtn_green ml10":"codeBtnStyle codeBtn_blue ml10"}>
+ {record.invite_code_halt ?"启用":"停用"}
+
+ :""
+ }
+ {isAdmin && !record.invite_code_halt &&
+
+ 成员可以通过邀请码主动加入分班
+ 点击复制邀请码
+
+ }>
+ 复制
+
+ }
+
}
} : {
title: '你当前所在分班',
@@ -127,22 +147,12 @@ function CourseGroupListTable(props) {
dataIndex: 'setting',
key: 'setting',
align:'center',
- width:"25%",
+ width:"14%",
className:"color-grey-6",
render: (none, record, index) => {
return
{!isCourseEnd && isAdmin && onDelete(record)} style={'grey'}>删除分班}
- {isAdmin &&
-
- 成员可以通过邀请码主动加入分班
- 点击复制邀请码
-
- }>
- 复制邀请码
-
- }
+
{isStudent && addToDir(record)} style={''}>加入分班}
onGoDetail(record)} style={''}>查看
@@ -209,6 +219,32 @@ function CourseGroupListTable(props) {
function onGoDetail(record) {
props.history.push(`/courses/${courseId}/course_groups/${record.id}`)
}
+ // 停用和启用邀请码
+ function changeInviteCode(id,flag){
+ if(flag){
+ changeInviteCodeFunc(id,flag);
+ }else{
+ props.confirm({
+ content:"分班邀请码停用后,用户不能主动加入该分班了",
+ subContent:'您是否确认停用?',
+ onOk:() => {
+ changeInviteCodeFunc(id,flag)
+ }
+ })
+ }
+ }
+
+ function changeInviteCodeFunc(id,flag){
+ const url= `/course_groups/${id}/set_invite_code_halt.json`;
+ axios.post(url).then(result=>{
+ if(result){
+ props.showNotification(`邀请码${flag?"启用":"停用"}成功!`);
+ props.onOperationSuccess && props.onOperationSuccess();
+ }
+ }).catch(error=>{
+ console.log(error);
+ })
+ }
const isAdmin = props.isAdmin();
const isSuperAdmin = props.isSuperAdmin();
const isStudent = props.isStudent()
diff --git a/public/react/src/modules/courses/members/studentsList.css b/public/react/src/modules/courses/members/studentsList.css
index b2a41c7e6..bd7b88ed1 100644
--- a/public/react/src/modules/courses/members/studentsList.css
+++ b/public/react/src/modules/courses/members/studentsList.css
@@ -5,4 +5,47 @@
.E9F8FF{
background-color: #E9F8FF;
+}
+
+.codeBtnStyle{
+ height: 18px;
+ line-height: 18px;
+ padding:0px 5px;
+ cursor: pointer;
+ font-size: 12px;
+ border-radius: 2px;
+}
+.codeBtn_yellow{
+ border:1px solid #FF6B06;
+ color: #FF6B06!important;
+}
+.codeBtn_green{
+ border:1px solid #00BA38;
+ color: #00BA38!important;
+}
+
+.codeBtn_blue{
+ border:1px solid #4CACFF;
+ color: #4CACFF!important;
+}
+
+.course_publicNav{
+ display: flex;
+}
+.course_publicNav li{
+ position: relative;
+ margin-right: 30px;
+ cursor: pointer;
+}
+.course_publicNav li.active{
+ color: #4CACFF
+}
+.course_publicNav li.active::after{
+ position: absolute;
+ width: 100%;
+ height: 2px;
+ content: '';
+ left: 0px;
+ bottom: -33px;
+ background: #4CACFF;
}
\ No newline at end of file
diff --git a/public/react/src/modules/courses/members/studentsList.js b/public/react/src/modules/courses/members/studentsList.js
index aff19d041..af83d0a49 100644
--- a/public/react/src/modules/courses/members/studentsList.js
+++ b/public/react/src/modules/courses/members/studentsList.js
@@ -741,12 +741,22 @@ class studentsList extends Component{
-
-
- { this.props.history.push(`/courses/${courseId}/course_groups`)}}
- style={{color: '#212121', verticalAlign: 'initial', marginRight: '14px' }}
- >
- {course_group_name || '未分班'}
+ {
+ course_group_name ?
+
+
+ { this.props.history.push(`/courses/${courseId}/course_groups`)}}
+ style={{color: '#212121', verticalAlign: 'initial', marginRight: '14px' }}
+ >
+ {course_group_name}
+
+ :
+
+ - { this.props.history.push(`/courses/${courseId}/course_groups`)}}>分班列表
+ - 未分班
+
+ }
+
{isAdmin && invite_code &&
邀请码: