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
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? ||
(current_user.certification_teacher? && @bank.is_public)
end

@ -1,7 +1,7 @@
#encoding: UTF-8
class ExerciseBanksController < ApplicationController
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 :commit_shixun_present, only: [:commit_shixun]

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

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

@ -1,6 +1,6 @@
class TaskBanksController < ApplicationController
before_action :require_login
before_action :find_bank
before_action :find_bank, :bank_visit_auth
before_action :bank_visit_auth
before_action :bank_admin, only: [:update]
@ -35,7 +35,7 @@ class TaskBanksController < ApplicationController
def gtask_bank_params
tip_exception("name参数不能为空") if params[:gtask_bank][:name].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("min_num参数不能为空") if params[:gtask_bank][:min_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!
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
render_forbidden unless User.current.admin? || User.current.is_teacher?
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 开发期多个身份切换
let debugType =""
if (isDev) {
const _search = window.location.search;
let parsed = {};
if (_search) {
parsed = queryString.parse(_search);
}
debugType = window.location.search.indexOf('debug=t') != -1 ? 'teacher' :
window.location.search.indexOf('debug=s') != -1 ? 'student' :
window.location.search.indexOf('debug=a') != -1 ? 'admin' : parsed.debug || 'admin'
}
// if (isDev) {
// const _search = window.location.search;
// let parsed = {};
// if (_search) {
// parsed = queryString.parse(_search);
// }
// debugType = window.location.search.indexOf('debug=t') != -1 ? 'teacher' :
// window.location.search.indexOf('debug=s') != -1 ? 'student' :
// window.location.search.indexOf('debug=a') != -1 ? 'admin' : parsed.debug || 'admin'
// }
window._debugType = debugType;
export function initAxiosInterceptors(props) {

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

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

@ -49,7 +49,7 @@ class single extends Component{
<Radio className="df lineh-25 setRadioStyle" value={item.choice_id}>
<span className="fl mr3 lineh-25">{prefix}</span>
<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>
</Radio>
</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 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">
{
pollDetail && pollDetail.question_types.q_counts > 0 &&
<span>合计{pollDetail.question_types.q_counts}</span>
pollDetail && pollDetail.question_types && pollDetail.question_types.q_counts > 0 &&
<span>合计{pollDetail.question_types && pollDetail.question_types.q_counts}</span>
}
{
pollDetail && pollDetail.question_types.q_singles > 0 &&
@ -44,7 +44,7 @@ class PollDetailTabThirdInfo extends Component{
</p>
{
pollDetail && pollDetail.questions.map((item,key)=>{
pollDetail && pollDetail.questions && pollDetail.questions.map((item,key)=>{
return(
<div className="previewList">
<p className="pl30 pr30 pt30 pb15 font-16 clearfix">

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

@ -82,8 +82,10 @@ class InfosTopics extends Component{
user_id=this.props.match.params&&this.props.match.params.username;
}
if(user_id!=undefined){
console.log(user_id)
if(user_id===undefined){
user_id=this.props.match.params&&this.props.match.params.username;
}
let {per_page}=this.state;
let url=`/users/${user_id}/question_banks.json`;
@ -107,7 +109,7 @@ class InfosTopics extends Component{
isSpin:false
})
});
}
}
searchCategory=(type)=>{

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

@ -18,7 +18,7 @@ class NewGtaskForms extends Component{
initValue = (data) => {
if (data.isEdit) {
const contentFileList = data.attachments.map(item => {
return {
id: item.id,
@ -47,10 +47,8 @@ class NewGtaskForms extends Component{
});
})
} else { // new
}
}
// 输入title
@ -109,19 +107,19 @@ class NewGtaskForms extends Component{
}
handleSubmit = () => {
debugger
let {contentFileList,min_num,max_num,base_on_project}=this.state;
let {data}=this.props;
let task_type=data.task_type
let topicId=this.props.topicId
this.props.form.validateFieldsAndScroll((err, values) => {
this.props.form.validateFields((err, values) => {
const mdContnet = this.contentMdRef.current.getValue().trim();
values.description = mdContnet;
if (!err) {
if (this.state.isEdit) {
let url="/task_banks/"+topicId+".json";
axios.put(url, {
gtask_bank: {
@ -143,10 +141,6 @@ class NewGtaskForms extends Component{
console.log(error)
})
} else {
}
} else {
$("html").animate({ scrollTop: $('html').scrollTop() - 100 })
}
@ -222,7 +216,7 @@ class NewGtaskForms extends Component{
`
}
</style>
<Form className="courseForm">
<Form className="courseForm" onClick={this.handleSubmit} >
<div className={"ant-row ant-form-item AboutInputForm newAboutInputForm "}>
<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>
@ -342,7 +336,7 @@ class NewGtaskForms extends Component{
<Form.Item>
<div className="clearfix mt30 mb30">
{/* 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>
</div>
</Form.Item>

Loading…
Cancel
Save