Merge branch 'dev_aliyun' of https://bdgit.educoder.net/Hjqreturn/educoder into dev_aliyun

dev_hss
hjm 6 years ago
commit 0a5565fefe

@ -47,7 +47,7 @@ class ApplicationController < ActionController::Base
# 题库的访问权限 # 题库的访问权限
def bank_visit_auth def bank_visit_auth
tip_exception("未通过职业认证") if current_user.is_teacher? && !current_user.certification_teacher? && !current_user.admin? && @bank.user_id != current_user.id && @bank.is_public tip_exception(-2,"未通过职业认证") if current_user.is_teacher? && !current_user.certification_teacher? && !current_user.admin? && @bank.user_id != current_user.id && @bank.is_public
tip_exception(403, "无权限") unless @bank.user_id == current_user.id || current_user.admin? || tip_exception(403, "无权限") unless @bank.user_id == current_user.id || current_user.admin? ||
(current_user.certification_teacher? && @bank.is_public) (current_user.certification_teacher? && @bank.is_public)
end end

@ -1,7 +1,7 @@
#encoding: UTF-8 #encoding: UTF-8
class ExerciseBanksController < ApplicationController class ExerciseBanksController < ApplicationController
before_action :require_login before_action :require_login
before_action :find_bank, except: [:choose_shixun] before_action :find_bank, :bank_visit_auth, except: [:choose_shixun]
before_action :bank_admin, only: [:update] before_action :bank_admin, only: [:update]
before_action :commit_shixun_present, only: [:commit_shixun] before_action :commit_shixun_present, only: [:commit_shixun]

@ -1,6 +1,6 @@
class GtopicBanksController < ApplicationController class GtopicBanksController < ApplicationController
before_action :require_login before_action :require_login
before_action :find_bank before_action :find_bank, :bank_visit_auth
before_action :bank_admin, only: [:edit, :update] before_action :bank_admin, only: [:edit, :update]
def show def show

@ -1,6 +1,6 @@
class HomeworkBanksController < ApplicationController class HomeworkBanksController < ApplicationController
before_action :require_login before_action :require_login
before_action :find_bank before_action :find_bank, :bank_visit_auth
before_action :bank_params, only: [:update] before_action :bank_params, only: [:update]
before_action :bank_admin, only: [:update, :destroy, :set_public] before_action :bank_admin, only: [:update, :destroy, :set_public]

@ -1,6 +1,6 @@
class TaskBanksController < ApplicationController class TaskBanksController < ApplicationController
before_action :require_login before_action :require_login
before_action :find_bank before_action :find_bank, :bank_visit_auth
before_action :bank_visit_auth before_action :bank_visit_auth
before_action :bank_admin, only: [:update] before_action :bank_admin, only: [:update]
@ -35,7 +35,7 @@ class TaskBanksController < ApplicationController
def gtask_bank_params def gtask_bank_params
tip_exception("name参数不能为空") if params[:gtask_bank][:name].blank? tip_exception("name参数不能为空") if params[:gtask_bank][:name].blank?
tip_exception("description参数不能为空") if params[:gtask_bank][:description].blank? tip_exception("description参数不能为空") if params[:gtask_bank][:description].blank?
if @bank.homework_type == 3 if @bank.task_type == 2
tip_exception("base_on_project参数不能为空") if params[:gtask_bank][:base_on_project].nil? tip_exception("base_on_project参数不能为空") if params[:gtask_bank][:base_on_project].nil?
tip_exception("min_num参数不能为空") if params[:gtask_bank][:min_num].blank? tip_exception("min_num参数不能为空") if params[:gtask_bank][:min_num].blank?
tip_exception("max_num参数不能为空") if params[:gtask_bank][:max_num].blank? tip_exception("max_num参数不能为空") if params[:gtask_bank][:max_num].blank?

@ -65,7 +65,7 @@ class Users::QuestionBanksController < Users::BaseController
def check_user_permission! def check_user_permission!
if params[:type] == 'publicly' if params[:type] == 'publicly'
render_error("未通过职业认证") unless User.current.admin? || User.current.certification_teacher? normal_status(-2,"未通过职业认证") unless User.current.admin? || User.current.certification_teacher?
else else
render_forbidden unless User.current.admin? || User.current.is_teacher? render_forbidden unless User.current.admin? || User.current.is_teacher?
end end

@ -0,0 +1,5 @@
class GtopicBankIsPublic < ActiveRecord::Migration[5.2]
def change
GtopicBank.where(is_public: nil).update_all(is_public: 0)
end
end

@ -21,16 +21,16 @@ let hashTimeout
// TODO 开发期多个身份切换 // TODO 开发期多个身份切换
let debugType ="" let debugType =""
if (isDev) { // if (isDev) {
const _search = window.location.search; // const _search = window.location.search;
let parsed = {}; // let parsed = {};
if (_search) { // if (_search) {
parsed = queryString.parse(_search); // parsed = queryString.parse(_search);
} // }
debugType = window.location.search.indexOf('debug=t') != -1 ? 'teacher' : // debugType = window.location.search.indexOf('debug=t') != -1 ? 'teacher' :
window.location.search.indexOf('debug=s') != -1 ? 'student' : // window.location.search.indexOf('debug=s') != -1 ? 'student' :
window.location.search.indexOf('debug=a') != -1 ? 'admin' : parsed.debug || 'admin' // window.location.search.indexOf('debug=a') != -1 ? 'admin' : parsed.debug || 'admin'
} // }
window._debugType = debugType; window._debugType = debugType;
export function initAxiosInterceptors(props) { export function initAxiosInterceptors(props) {

@ -1221,7 +1221,7 @@ samp {
} }
/* 毕设任务 */ /* 毕设任务 */
.graduationTaskMenu a{ .graduationTaskMenu>a{
display: block; display: block;
position: relative; position: relative;
line-height: 72px; line-height: 72px;
@ -1229,7 +1229,7 @@ samp {
margin-right: 30px; margin-right: 30px;
float: left; float: left;
} }
.graduationTaskMenu a.active:after{ .graduationTaskMenu>a.active:after{
position: absolute; position: absolute;
left: 0px; left: 0px;
height: 2px; height: 2px;
@ -1239,7 +1239,7 @@ samp {
bottom: 0px; bottom: 0px;
font-weight:400; font-weight:400;
} }
.graduationTaskMenu a.active{ .graduationTaskMenu>a.active{
color: #4CACFF!important; color: #4CACFF!important;
} }

@ -548,7 +548,7 @@ class ExerciseReviewAndAnswer extends Component{
} }
.setRadioStyle .ant-radio,.setRadioStyle .ant-checkbox{ .setRadioStyle .ant-radio,.setRadioStyle .ant-checkbox{
height:16px; height:16px;
margin-top:4px; margin-top:5px;
} }
.standardAnswer.editormd-html-preview,.answerStyle.editormd-html-preview{ .standardAnswer.editormd-html-preview,.answerStyle.editormd-html-preview{
width:100%!important width:100%!important

@ -49,7 +49,7 @@ class single extends Component{
<Radio className="df lineh-25 setRadioStyle" value={item.choice_id}> <Radio className="df lineh-25 setRadioStyle" value={item.choice_id}>
<span className="fl mr3 lineh-25">{prefix}</span> <span className="fl mr3 lineh-25">{prefix}</span>
<MarkdownToHtml content={item.choice_text} selector={'single_' + (this.props.index + 1) + (key + 1)} <MarkdownToHtml content={item.choice_text} selector={'single_' + (this.props.index + 1) + (key + 1)}
className="flex1" style={{display:"inline-block", 'margin-top': '-1px'}} className="flex1" style={{display:"inline-block"}}
></MarkdownToHtml> ></MarkdownToHtml>
</Radio> </Radio>
</p> </p>

@ -21,11 +21,11 @@ class PollDetailTabThirdInfo extends Component{
<p style={{whiteSpace:"pre-wrap"}} className="color-grey-3 padding20-30">{ pollDetail.poll.polls_description }</p> <p style={{whiteSpace:"pre-wrap"}} className="color-grey-3 padding20-30">{ pollDetail.poll.polls_description }</p>
} }
<p className="padding20-30 clearfix edu-txt-left" style={{background:"#fafafa"}}> <p className="padding20-30 clearfix edu-txt-left" style={{background:"#fafafa"}}>
{ pollDetail && pollDetail.question_types.q_counts===0 ? "" : { !pollDetail || !pollDetail.question_types || pollDetail.question_types.q_counts===0 ? "" :
<span className="color-grey-3"> <span className="color-grey-3">
{ {
pollDetail && pollDetail.question_types.q_counts > 0 && pollDetail && pollDetail.question_types && pollDetail.question_types.q_counts > 0 &&
<span>合计{pollDetail.question_types.q_counts}</span> <span>合计{pollDetail.question_types && pollDetail.question_types.q_counts}</span>
} }
{ {
pollDetail && pollDetail.question_types.q_singles > 0 && pollDetail && pollDetail.question_types.q_singles > 0 &&
@ -44,7 +44,7 @@ class PollDetailTabThirdInfo extends Component{
</p> </p>
{ {
pollDetail && pollDetail.questions.map((item,key)=>{ pollDetail && pollDetail.questions && pollDetail.questions.map((item,key)=>{
return( return(
<div className="previewList"> <div className="previewList">
<p className="pl30 pr30 pt30 pb15 font-16 clearfix"> <p className="pl30 pr30 pt30 pb15 font-16 clearfix">

@ -76,7 +76,7 @@
width: 100%; width: 100%;
} }
.squareCard .squareImg img:hover{ .squareCard .squareImg img:hover{
transform: scale(1.2); transform: scale(1.05);
} }
/* card info */ /* card info */

@ -70,20 +70,22 @@ class InfosTopics extends Component{
// }else{ // }else{
// //
// } // }
this.setState({ this.setState({
isSpin:true isSpin:true
}) })
let types=this.props.match.params.topicstype; let types=this.props.match.params.topicstype;
let user_id=""; let user_id="";
if(types==="publicly"){
user_id=this.props.current_user&&this.props.current_user.login;
}else{
user_id=this.props.match.params&&this.props.match.params.username;
}
if(types==="publicly"){
user_id=this.props.current_user&&this.props.current_user.login;
}else{
user_id=this.props.match.params&&this.props.match.params.username;
}
if(user_id!=undefined){ if(user_id===undefined){
console.log(user_id) user_id=this.props.match.params&&this.props.match.params.username;
}
let {per_page}=this.state; let {per_page}=this.state;
let url=`/users/${user_id}/question_banks.json`; let url=`/users/${user_id}/question_banks.json`;
@ -107,7 +109,7 @@ class InfosTopics extends Component{
isSpin:false isSpin:false
}) })
}); });
}
} }
searchCategory=(type)=>{ searchCategory=(type)=>{

@ -78,10 +78,10 @@ class BanksIndex extends Component{
} }
componentDidMount = () =>{ componentDidMount = () =>{
let pathname = this.props.location.pathname; // let pathname = this.props.location.pathname;
this.setState({ // this.setState({
publicly:pathname.indexOf("/publicly") > -1 // publicly:pathname.indexOf("/publicly") > -1
}) // })
} }
@ -92,16 +92,16 @@ class BanksIndex extends Component{
} }
componentDidUpdate(prevProps) { componentDidUpdate(prevProps) {
if(prevProps.current_user!=this.props.current_user){ // if(prevProps.current_user!=this.props.current_user){
let { publicly }=this.state; // let { publicly }=this.state;
if( this.props.checkIfLogin()) { // if( this.props.checkIfLogin()) {
if (this.props.current_user && this.props.current_user.professional_certification == false && publicly){ // if (this.props.current_user && this.props.current_user.professional_certification == false && publicly){
this.props.history.push(`/topicbank/${this.props.current_user.login}/publicly`); // this.props.history.push(`/topicbank/${this.props.current_user.login}/publicly`);
} // }
} else { // } else {
this.props.showLoginDialog() // this.props.showLoginDialog()
} // }
} // }
// let { publicly }=this.state; // let { publicly }=this.state;
// if(this.props.current_user && this.props.current_user.professional_certification == false && publicly){ // if(this.props.current_user && this.props.current_user.professional_certification == false && publicly){
// if( this.props.checkIfLogin()) { // if( this.props.checkIfLogin()) {

@ -18,7 +18,7 @@ class NewGtaskForms extends Component{
initValue = (data) => { initValue = (data) => {
if (data.isEdit) {
const contentFileList = data.attachments.map(item => { const contentFileList = data.attachments.map(item => {
return { return {
id: item.id, id: item.id,
@ -47,9 +47,7 @@ class NewGtaskForms extends Component{
}); });
}) })
} else { // new
}
} }
@ -109,19 +107,19 @@ class NewGtaskForms extends Component{
} }
handleSubmit = () => { handleSubmit = () => {
debugger
let {contentFileList,min_num,max_num,base_on_project}=this.state; let {contentFileList,min_num,max_num,base_on_project}=this.state;
let {data}=this.props; let {data}=this.props;
let task_type=data.task_type let task_type=data.task_type
let topicId=this.props.topicId let topicId=this.props.topicId
this.props.form.validateFieldsAndScroll((err, values) => { this.props.form.validateFields((err, values) => {
const mdContnet = this.contentMdRef.current.getValue().trim(); const mdContnet = this.contentMdRef.current.getValue().trim();
values.description = mdContnet; values.description = mdContnet;
if (!err) { if (!err) {
if (this.state.isEdit) {
let url="/task_banks/"+topicId+".json"; let url="/task_banks/"+topicId+".json";
axios.put(url, { axios.put(url, {
gtask_bank: { gtask_bank: {
@ -143,10 +141,6 @@ class NewGtaskForms extends Component{
console.log(error) console.log(error)
}) })
} else {
}
} else { } else {
$("html").animate({ scrollTop: $('html').scrollTop() - 100 }) $("html").animate({ scrollTop: $('html').scrollTop() - 100 })
} }
@ -222,7 +216,7 @@ class NewGtaskForms extends Component{
` `
} }
</style> </style>
<Form className="courseForm"> <Form className="courseForm" onClick={this.handleSubmit} >
<div className={"ant-row ant-form-item AboutInputForm newAboutInputForm "}> <div className={"ant-row ant-form-item AboutInputForm newAboutInputForm "}>
<div className="ant-col ant-form-item-label margin0"> <div className="ant-col ant-form-item-label margin0">
<label htmlFor="coursesNew_course" className="ant-form-item-required ">类型</label> <span className={"tasktypes"}>{this.props.data&&this.props.data.task_type===1?"":this.props.data&&this.props.data.task_type===2?"":""}</span> <label htmlFor="coursesNew_course" className="ant-form-item-required ">类型</label> <span className={"tasktypes"}>{this.props.data&&this.props.data.task_type===1?"":this.props.data&&this.props.data.task_type===2?"":""}</span>
@ -342,7 +336,7 @@ class NewGtaskForms extends Component{
<Form.Item> <Form.Item>
<div className="clearfix mt30 mb30"> <div className="clearfix mt30 mb30">
{/* htmlType="submit" */} {/* htmlType="submit" */}
<Button type="primary" onClick={this.handleSubmit} className="defalutSubmitbtn fl mr20">提交</Button> <Button type="primary" htmlType="submit" className="defalutSubmitbtn fl mr20">提交</Button>
<a className="defalutCancelbtn fl" onClick={() => this.props.onCancel()}>取消</ a> <a className="defalutCancelbtn fl" onClick={() => this.props.onCancel()}>取消</ a>
</div> </div>
</Form.Item> </Form.Item>

Loading…
Cancel
Save