dev_forum
cxt 5 years ago
commit 5631047dd6

@ -82,8 +82,8 @@ class SubjectsController < ApplicationController
@is_creator = current_user.creator_of_subject?(@subject)
# 合作团队
@members = @subject.subject_members.includes(:user)
shixun_ids = @subject.shixuns.published.pluck(:id)
challenge_ids = Challenge.where(shixun_id: shixun_ids).pluck(:id)
@shixuns = @subject.shixuns.published.pluck(:id)
challenge_ids = Challenge.where(shixun_id: @shixuns).pluck(:id)
# 实训路径中的所有实训标签
@tags = ChallengeTag.where(challenge_id: challenge_ids).pluck(:name).uniq
# 用户获取的实训标签

@ -1,10 +1,10 @@
module SubjectsHelper
# 实训路径的发布状态
def publish_status subject, is_manager, user
def publish_status subject, is_manager, user, shixuns
status = -1
if is_manager
status = 0 if subject.status == 0 && subject.shixuns_count > 0
status = 0 if subject.status == 0 && shixuns.count > 0
status = 1 if subject.status == 1
status = 2 if subject.status == 2 && user.admin?
end

@ -7,7 +7,7 @@ json.group_list do
end
end
# 未分班展示情况放在最后
if @course_groups.count != (@page -1)*@limit.to_i && @course_groups.count < @limit.to_i
if @course_groups.count != (@page.to_i - 1)*@limit.to_i && @course_groups.count < @limit.to_i
ungroup_work_count = homework_ungroup_works_count(@homework, @ungroup_user_ids)
if ungroup_work_count > 0
json.ungroup_list do

@ -6,7 +6,7 @@ json.subject_score @subject.all_score
json.member_count @subject.member_count
json.allow_delete @is_creator && (@subject.status != 2 || @user.admin?)
json.publish_status publish_status(@subject, @is_creator, @user)
json.publish_status publish_status(@subject, @is_creator, @user, @shixuns)
json.allow_statistics @user.manager_of_subject?(@subject)
json.allow_send @user.logged?
json.allow_visit @user.manager_of_subject?(@subject) || @user.admin? || @subject.status > 1

@ -301,8 +301,8 @@ module.exports = {
},
warnings: false,
compress: {
drop_debugger: false,
drop_console: false
drop_debugger: true,
drop_console: true
}
}
}),

@ -6,6 +6,9 @@ export function isImageExtension(fileName) {
export function markdownToHTML(oldContent, selector) {
window.$('#md_div').html('')
// markdown to html
try {
var markdwonParser = window.editormd.markdownToHTML("md_div", {
markdown: oldContent,
emoji: true,
@ -15,6 +18,11 @@ export function markdownToHTML(oldContent, selector) {
flowChart: true, // 默认不解析
sequenceDiagram: true // 默认不解析
});
} catch(e) {
console.error(e)
}
const content = window.$('#md_div').html()
if (selector) {
window.$(selector).html(content)

@ -18,7 +18,7 @@ const ListPageIndex = Loadable({
//课堂首页
const CoursesHome = Loadable({
loader: () => import('./coursesHome/coursesHome'),
loader: () => import('./coursesHome/CoursesHome'),
loading:Loading,
})

@ -1,6 +1,6 @@
import React, { Component } from 'react';
import {getImageUrl} from 'educoder';
import CoursesHomeCard from "./coursesHomeCard.js"
import CoursesHomeCard from "./CoursesHomeCard.js"
import axios from 'axios';
import {Input,Tooltip} from 'antd';
import UpgradeModals from '../../modals/UpgradeModals';
@ -10,7 +10,7 @@ import '@icedesign/base/lib/pagination/style.js';
const Search = Input.Search;
class coursesHome extends Component{
class CoursesHome extends Component{
constructor(props) {
super(props)
this.state = {
@ -160,7 +160,7 @@ class coursesHome extends Component{
)
}
}
export default coursesHome;
export default CoursesHome;
// {/*<Pagination showQuickJumper current={page} pageSize={16} total={coursesHomelist.courses_count} onChange={this.onChange} />*/}

@ -4,7 +4,7 @@ import { BrowserRouter as Router, Route, Link } from "react-router-dom";
import {Tooltip,Spin,Alert} from 'antd';
import ShowSpin from '../../../common/ShowSpin';
class coursesHomeCard extends Component{
class CoursesHomeCard extends Component{
constructor(props) {
super(props)
}
@ -134,5 +134,5 @@ class coursesHomeCard extends Component{
)
}
}
export default coursesHomeCard;
export default CoursesHomeCard;

@ -29,12 +29,14 @@ class ShixunModal extends Component{
axios.get(url).then((result)=>{
if(result.status===200){
if(result.data.message===undefined){
this.setState({
shixunmodallist:result.data,
hometypepvisible:false,
newshixunmodallist:result.data.shixun_list,
})
}
}
}).catch((error)=>{
console.log(error);
})
@ -59,18 +61,18 @@ class ShixunModal extends Component{
}
}).then((result)=>{
if(result.status===200){
let shixun_list=result.data.shixun_list;
for(var i=0; i<shixun_list.length;i++){
if(result.data.message===undefined){
let shixun_list = result.data.shixun_list;
for (var i = 0; i < shixun_list.length; i++) {
newshixunmodallists.push(shixun_list[i])
}
this.setState({
shixunmodallist:result.data,
newshixunmodallist:newshixunmodallists,
hometypepvisible:false
shixunmodallist: result.data,
newshixunmodallist: newshixunmodallists,
hometypepvisible: false
})
}
}
}).catch((error)=>{

@ -1203,14 +1203,14 @@ class GraduationTaskssettinglist extends Component{
{taskslistdata.search_assistants&&taskslistdata.search_assistants.course_group_info.length!=0?<li className="clearfix">
<span className="fl mr10 color-grey-8">分班情况</span>
<CheckboxGroup value={course_group} onChange={(e)=>this.groupgroup(e,taskslistdata.search_assistants&&taskslistdata.search_assistants.course_group_info.length)} style={{width: '1000px', paddingTop: '4px'}}>
<span className="fl mr25">
<a id="graduation_comment_no_limit" className={course_group===null||course_group===undefined?"pl10 pr10 check_on":"pl10 pr10 "} onClick={()=>this.groupgroup([])}>不限</a>
</span>
<CheckboxGroup value={course_group} onChange={(e)=>this.groupgroup(e,taskslistdata.search_assistants&&taskslistdata.search_assistants.course_group_info.length)} style={{ paddingTop: '4px'}}>
{taskslistdata.search_assistants&&taskslistdata.search_assistants.course_group_info.map((item,key)=>{
return(
<span key={key}>
<span key={key} className={"mt10"}>
<Checkbox value={item.course_group_id} key={item.course_group_id} className="fl ">{item.group_group_name}
<span>({item.count})</span>
</Checkbox>

@ -2490,7 +2490,7 @@ class Listofworksstudentone extends Component {
<div className="mh650 edu-back-white">
<div className="edu-tab-con-box clearfix edu-txt-center">
<img className="edu-nodata-img mb20" src={getImageUrl("images/educoder/nodata.png")}/>
<p className="edu-nodata-p mb30">没有数据可以显示.</p>
<p className="edu-nodata-p mb30">没有数据可以显示</p>
</div>
</div>
@ -2702,7 +2702,7 @@ class Listofworksstudentone extends Component {
<div className="edu-tab-con-box clearfix edu-txt-center">
<img className="edu-nodata-img mb20"
src={getImageUrl("images/educoder/nodata.png")}/>
<p className="edu-nodata-p mb30">没有数据可以显示,,</p>
<p className="edu-nodata-p mb30">没有数据可以显示</p>
</div>
</div>
@ -2892,7 +2892,7 @@ class Listofworksstudentone extends Component {
<div className="edu-tab-con-box clearfix edu-txt-center">
<img className="edu-nodata-img mb20"
src={getImageUrl("images/educoder/nodata.png")}/>
<p className="edu-nodata-p mb30">没有数据可以显示..</p>
<p className="edu-nodata-p mb30">没有数据可以显示</p>
</div>
</div>

@ -59,15 +59,15 @@ class ShixunHomeworkPage extends Component {
// console.log(teacherdata);
this.setState({
jobsettingsdatapage: jobsettingsdata,
teacherdatapage: teacherdata,
code_review: teacherdata.code_review,
view_report: teacherdata.view_report,
jobsettingsdatapage: jobsettingsdata.data.message!==undefined?undefined:jobsettingsdata,
teacherdatapage: teacherdata.message!==undefined?undefined:teacherdata,
code_review: teacherdata.code_review!==undefined?teacherdata.code_review :false,
view_report: teacherdata.view_report!==undefined? teacherdata.view_report:false,
})
}
componentDidMount() {
console.log("父组件加载框");
// console.log("父组件加载框");
const query = this.props.location.search;
const type = query.split('?tab=');
// let sum = []
@ -116,7 +116,9 @@ class ShixunHomeworkPage extends Component {
let {tab, teacherdatapage, jobsettingsdatapage} = this.state;
const isAdmin = this.props.isAdmin();
// console.log(119)
// console.log(jobsettingsdatapage);
// console.log(teacherdatapage);
return (
<div className="newMain clearfix ">
<div className={"educontent mb20"} style={{width: "1200px"}}>

@ -1,6 +1,7 @@
import React,{ Component } from "react";
import { Modal,Checkbox,notification} from "antd";
import axios from 'axios';
import {getImageUrl} from 'educoder';
class ShixunWorkModal extends Component{
constructor(props){
@ -251,6 +252,18 @@ class ShixunWorkModal extends Component{
</ul>
{course_groups===undefined?"":
group_list===undefined||JSON.stringify(group_list)==="[]"
?
<div id="forum_list" className="forum_table">
<div className=" edu-back-white">
<div className="edu-tab-con-box clearfix edu-txt-center">
<img className="edu-nodata-img mb20" src={getImageUrl("images/educoder/nodata.png")}/>
<p className="edu-nodata-p mb30">没有数据可以显示</p>
</div>
</div>
</div>
:
<ul className="upload_select_box fl clearfix mt10 mb10" tyle={{"overflow-y":"auto"}}id="search_not_members_list"
onScroll={this.contentViewScroll}
>
@ -258,7 +271,9 @@ class ShixunWorkModal extends Component{
<Checkbox.Group style={{ width: '100%' }} onChange={this.shixunhomeworkedit} value={group_ids}>
{
group_list===undefined?"":
group_list===undefined||JSON.stringify(group_list)==="[]"?
""
:
group_list&&group_list.length===0?"":group_list.map((item,key)=>{
return(
<div className="clearfix edu-txt-center lineh-40 bor-bottom-greyE" key={key}>

@ -317,15 +317,18 @@ class LoginDialog extends Component {
});
}
handleDialogClose = () => {
if(this.props.match===undefined){
window.location.href="/";
}else if(this.props.match.path==="/"){
// if(this.props.match===undefined){
// window.location.href="/";
// }else if(this.props.match.path==="/"){
// this.setState({
// isRender: false
// })
// }else{
// window.location.href="/";
// }
this.setState({
isRender: false
})
}else{
window.location.href="/";
}
}
loginEDU=()=>{

@ -2,6 +2,7 @@ import React,{ Component } from "react";
import { Modal,Radio,Input,Tooltip,Checkbox,Select, Row,Col } from "antd";
import axios from 'axios';
import { SnackbarHOC } from 'educoder';
import moment from 'moment';
import Modals from '../../modals/Modals';
const Option = Select.Option;
const CheckboxGroup = Checkbox.Group;
@ -148,14 +149,16 @@ class sendPanel extends Component{
destroyOnClose={true}
>
<div className="newupload_conbox">
<div className="mb20" onMouseLeave={this.closeList}>
<div className="mb20"
// onMouseLeave={this.closeList}
>
<Select
placeholder="请选择您要发送的课堂"
style={{"width":"100%"}}
onSelect={this.selectCloseList}
onMouseEnter={this.openList}
// onMouseEnter={this.openList}
defaultOpen={false}
open={openSearch}
// open={openSearch}
optionLabelProp="name"
>
{
@ -164,7 +167,9 @@ class sendPanel extends Component{
<Option key={item.course_id} id={key} name={item.course_name}>
<Row>
<Col className="fl with70 task-hide">{item.course_name}</Col>
<Col className="fl color-grey-9 with30 edu-txt-center">{item.created_at}</Col>
<Col className="fl color-grey-9 with30 edu-txt-center">
{moment( item.created_at ).format('YYYY-MM-DD HH:mm')}
</Col>
</Row>
</Option>
)

@ -534,10 +534,10 @@ submittojoinclass=(value)=>{
<div className="newHeader" id="nHeader" >
<LoginDialog
{...this.state}
{...this.props}
/>
{/*<LoginDialog*/}
{/*{...this.state}*/}
{/*{...this.props}*/}
{/*/>*/}
<div className="educontent clearfix">
{/*<%= link_to image_tag("/images/educoder/logo.png", alt:"高校智能化教学与实训平台", className:"logoimg"), home_path %>*/}
@ -738,6 +738,7 @@ submittojoinclass=(value)=>{
<li className="clearfix mb10">
<label className="panel-form-label fl">项目邀请码</label>
<Input type="text" className="input-60-40 fl" name="invite_code"
style={{width: '275px'}}
placeholder="请输入5位课堂邀请码或6位分班邀请码" value={tojoinclasstitle} onInput={this.inputjoinclassvalue}/>
</li>

@ -597,7 +597,7 @@ class TPMBanner extends Component {
</ul>
<div className="pr fl" id="commentsStar">
<div className={"color-grey-c mb11"} style={{color: "#Fff",textAlign: "center"}}>学员评分</div>
<div className="rateYo">
<Rating value={star_info[0]} disabled allowHalf/>
</div>

@ -236,9 +236,7 @@ class Newshixuns extends Component {
let newshixunUrl = `/shixuns/new.json`;
axios.get(newshixunUrl).then((response) => {
if (response.status === 200) {
if (response.data.status === 403 || response.data.status === 401 || response.data.status === 500) {
} else {
if (response.data.message===undefined) {
this.setState({
newshixunlist: response.data
});

@ -470,11 +470,10 @@ class Challenges extends Component {
</span>
</div>
<div className="clearfix pl28">
<span className="task-colspan">{item.passed_count}&nbsp;人完成挑战</span>
<span className="task-colspan"><span className={"color-orange"}>{item.passed_count}</span>&nbsp;</span>
<span
className="task-colspan">{item.playing_count}&nbsp;人正在挑战</span>
<span className="task-colspan"><span
className="colspan-grey">经验值&nbsp;{item.score}</span></span>
className="task-colspan"><span className={"color-orange"}>{item.playing_count}</span>&nbsp;</span>
<span className="task-colspan"><span>完成挑战可获得经验值&nbsp;<span className={"color-orange"}>{item.score}</span></span></span>
{/*判断比较复杂 有排第一不能是灰色按钮*/}

@ -85,7 +85,9 @@ a:active{text-decoration:none;}
height: 39px !important;
}
#commentsStar{
margin-top:33px;
margin-top: -7px;
width: 90px;
}
.startbtnModal .ant-modal-content{
background: transparent;

Loading…
Cancel
Save