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

dev_auth
杨树林 6 years ago
commit b9be6b1dc5

@ -20,10 +20,14 @@ class Admins::CompetitionSettingsController < Admins::BaseController
end end
def basic_form_params def basic_form_params
params.permit(:identifier, :name, :sub_title, :sponsor_schools, :region_schools, :start_time, :end_time, :mode, :identifier, :bonus, :awards_count, :description, :course_id, :teach_start_time, :teach_end_time) params.permit(:identifier, :name, :sub_title, :start_time, :end_time, :mode,
:identifier, :bonus, :awards_count, :description, :course_id, :teach_start_time,
:teach_end_time, sponsor_schools: [], region_schools: [])
end end
def nav_form_params def nav_form_params
params.permit(:enroll_end_time, competition_staffs: %i[category minimum maximum mutiple_limited], navbar: %i[module_type name hidden position url]) params.permit(:enroll_end_time,
competition_staffs: %i[category minimum maximum mutiple_limited],
navbar: %i[module_type name hidden position url])
end end
end end

@ -35,16 +35,18 @@ class Admins::CompetitionBasicSettingService < ApplicationService
end end
# 主办方设置 # 主办方设置
new_school_ids = (params[:sponsor_schools] || []) - competition.sponsor_schools.pluck(:school_id) params[:sponsor_schools] = Array.wrap(params[:sponsor_schools]).map(&:to_i)
delete_school_ids = competition.sponsor_schools.pluck(:school_id) - (params[:sponsor_schools] || []) new_school_ids = params[:sponsor_schools] - competition.sponsor_schools.pluck(:school_id)
delete_school_ids = competition.sponsor_schools.pluck(:school_id) - params[:sponsor_schools]
new_school_ids.each do |school_id| new_school_ids.each do |school_id|
CompetitionSchool.create!(competition_id: competition.id, school_id: school_id, source: 'sponsor') CompetitionSchool.create!(competition_id: competition.id, school_id: school_id, source: 'sponsor')
end end
competition.sponsor_schools.where(school_id: delete_school_ids).destroy_all competition.sponsor_schools.where(school_id: delete_school_ids).destroy_all
# 开放范围设置 # 开放范围设置
new_region_school_ids = (params[:region_schools] || []) - competition.region_schools.pluck(:school_id) params[:region_schools] = Array.wrap(params[:region_schools]).map(&:to_i)
delete_region_school_ids = competition.region_schools.pluck(:school_id) - (params[:region_schools] || []) new_region_school_ids = params[:region_schools] - competition.region_schools.pluck(:school_id)
delete_region_school_ids = competition.region_schools.pluck(:school_id) - params[:region_schools]
new_region_school_ids.each do |school_id| new_region_school_ids.each do |school_id|
CompetitionSchool.create!(competition_id: competition.id, school_id: school_id, source: 'region') CompetitionSchool.create!(competition_id: competition.id, school_id: school_id, source: 'region')
end end

@ -32,6 +32,6 @@ class Competitions::JoinTeamService < ApplicationService
raise Error, '该战队队员人数已满' if !is_teacher && team.members.count == competition.member_staff.maximum raise Error, '该战队队员人数已满' if !is_teacher && team.members.count == competition.member_staff.maximum
role = is_teacher ? 3 : 2 role = is_teacher ? 3 : 2
team.team_members.create!(competition_id: competition.id, user_id: user, role: role, is_teacher: is_teacher) team.team_members.create!(competition_id: competition.id, user_id: user.id, role: role, is_teacher: is_teacher)
end end
end end

@ -98,7 +98,8 @@
主办方 主办方
</div> </div>
<div class="col-5 text-left sponsorPanel"> <div class="col-5 text-left sponsorPanel">
<%= select_tag :sponsor_schools, options_for_select([], @competition.sponsor_schools), class: 'form-control sponsor-select' %> <% sponsor_data = @competition.sponsor_schools.map { |s| [s.school.name, s.school.id] } %>
<%= select_tag :sponsor_schools, options_for_select(sponsor_data, @competition.sponsor_schools.map(&:school_id)), class: 'form-control sponsor-select', multiple: true %>
</div> </div>
</div> </div>
@ -107,7 +108,8 @@
开放范围 开放范围
</div> </div>
<div class="col-5 text-left sponsorPanel"> <div class="col-5 text-left sponsorPanel">
<%= select_tag :region_schools, options_for_select([], @competition.region_schools), class: 'form-control allow-school-select' %> <% region_data = @competition.region_schools.map { |s| [s.school.name, s.school.id] } %>
<%= select_tag :region_schools, options_for_select(region_data, @competition.region_schools.map(&:school_id)), class: 'form-control allow-school-select', multiple: true %>
</div> </div>
</div> </div>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 169 KiB

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

@ -174,10 +174,10 @@ class CompetitionsIndex extends Component{
} }
> >
<List.Item.Meta <List.Item.Meta
title={<div className={item.competition_status==="ended"?"endedfont":item.competition_status==="nearly_published"? title={<div className={item.competition_status==="ended"?"competitionstitlesshou":item.competition_status==="nearly_published"?
this.props.current_user&&this.props.current_user.admin===true?"competitionstitlesshou":this.props.current_user&&this.props.current_user.business===true?"competitionstitlesshou":"endedfont":"competitionstitlesshou"}> this.props.current_user&&this.props.current_user.admin===true?"competitionstitlesshou":this.props.current_user&&this.props.current_user.business===true?"competitionstitlesshou":"endedfont":"competitionstitlesshou"}>
<span className={"competitionstitles"} <span className={"competitionstitles"}
onClick={()=>this.setcompetitonurl(item.competition_status==="ended"?null:item.competition_status==="nearly_published"? this.props.current_user&&this.props.current_user.business===true?`/newcompetitions/${item.identifier}/common_header`:this.props.current_user&&this.props.current_user.admin===true?`/newcompetitions/${item.identifier}/common_header`:null:item.competition_status==="progressing"?`/newcompetitions/${item.identifier}/common_header`:null)} onClick={()=>this.setcompetitonurl(item.competition_status==="ended"?`/newcompetitions/${item.identifier}/common_header`:item.competition_status==="nearly_published"? this.props.current_user&&this.props.current_user.business===true?`/newcompetitions/${item.identifier}/common_header`:this.props.current_user&&this.props.current_user.admin===true?`/newcompetitions/${item.identifier}/common_header`:null:item.competition_status==="progressing"?`/newcompetitions/${item.identifier}/common_header`:null)}
>{item.name}</span><span>{item.sub_title===null?"":<Tag className="competitionsrelative" color="#87d068">{ >{item.name}</span><span>{item.sub_title===null?"":<Tag className="competitionsrelative" color="#87d068">{
item.sub_title item.sub_title
}</Tag>}</span> }</Tag>}</span>

@ -164,7 +164,7 @@
.CompetitionMenu{ .CompetitionMenu{
width: 145px; width: 145px;
background: transparent; background: #fff;
border: 1px solid rgba(239,239,239,1); border: 1px solid rgba(239,239,239,1);
padding-top: 20px; padding-top: 20px;
padding-bottom: 40px !important; padding-bottom: 40px !important;
@ -337,3 +337,15 @@
.relative{position: relative;} .relative{position: relative;}
.relative:hover .CompetitionsListzhezhao{ display: block;} .relative:hover .CompetitionsListzhezhao{ display: block;}
.image_urlbox{
width: 705px;
height: 400px;
}
.CompetitionContents{
background: #fff;
padding: 40px;
box-shadow: 3px 2px 12px 2px rgba(0,0,0,0.05);
border: 1px solid rgba(239,239,239,1);
}

@ -144,7 +144,11 @@ class CompetitionCommon extends Component{
console.log(error) console.log(error)
}) })
}else{ }else{
this.props.history.replace(module_url); if(module_url.substring(0,7)=='http://'||module_url.substring(0,8)=='https://') {
window.location.href= module_url
}else{
window.location.href="https://"+module_url;
}
return return
} }
@ -228,7 +232,7 @@ class CompetitionCommon extends Component{
<img className={"Commonimg"} <img className={"Commonimg"}
src={data.competition_status==="ended"?getImageUrl(`images/educoder/competitions/groups1.png`):data.competition_status==="nearly_published"?getImageUrl(`images/educoder/competitions/groups2.png`):data.competition_status==="progressing"?getImageUrl(`images/educoder/competitions/groups3.png`):""} /> src={data.competition_status==="ended"?getImageUrl(`images/educoder/competitions/groups1.png`):data.competition_status==="nearly_published"?getImageUrl(`images/educoder/competitions/groups2.png`):data.competition_status==="progressing"?getImageUrl(`images/educoder/competitions/groups3.png`):""} />
<Col span={15}> <Col span={15}>
<img src={getImageUrl(bannerdata&&bannerdata.image_url)}/> <img className={"image_urlbox"} src={getImageUrl(`images/educoder/competitions/mainbanner.jpg`)}/>
</Col> </Col>
<Col className={"CompetitionCommonbannerfont mt50"} span={9}> <Col className={"CompetitionCommonbannerfont mt50"} span={9}>
@ -303,17 +307,20 @@ class CompetitionCommon extends Component{
<Sider> <Sider>
<Menu mode="inline" className="CompetitionMenu" defaultSelectedKeys={['1']} onClick={(e)=>this.getrightdatas(e)}> <Menu mode="inline" className="CompetitionMenu" defaultSelectedKeys={['1']} onClick={(e)=>this.getrightdatas(e)}>
{data&&data.competition_modules.map((item,key)=>{ {data&&data.competition_modules.map((item,key)=>{
if(item.module_type!="enroll"){
return( return(
<Menu.Item key={item.position}> <Menu.Item key={item.position}>
{item.has_url===false?<span {/*{item.has_url===false?<span*/}
// onClick={()=>this.getrightdata(item.id,item.module_type,item.module_url,item.has_url)} {/*// onClick={()=>this.getrightdata(item.id,item.module_type,item.module_url,item.has_url)}*/}
>{item.name}</span>:<a {/*>{item.name}</span>:<a*/}
// target="_blank" {/*// target="_blank"*/}
href={item.module_url} {/*href={item.module_url}*/}
// onClick={()=>this.getrightdata(item.id,item.module_type)} {/*// onClick={()=>this.getrightdata(item.id,item.module_type)}*/}
>{item.name}</a>} {/*>{item.name}</a>}*/}
<a>{item.name}</a>
</Menu.Item> </Menu.Item>
) )
}
})} })}
</Menu> </Menu>
</Sider> </Sider>

@ -29,7 +29,7 @@ class CompetitionContents extends Component{
{this.props.current_user&&this.props.current_user.admin===true||this.props.current_user&&this.props.current_user.business===true?this.props.Competitionedittype===false?<Button className={"fr"} type="primary" ghost onClick={()=>this.props.Competitionedit()}> {this.props.current_user&&this.props.current_user.admin===true||this.props.current_user&&this.props.current_user.business===true?this.props.Competitionedittype===false?<Button className={"fr"} type="primary" ghost onClick={()=>this.props.Competitionedit()}>
编辑 编辑
</Button>:"":""} </Button>:"":""}
<div className={this.props.current_user&&this.props.current_user.admin===true||this.props.current_user&&this.props.current_user.business===true?"mt50 mb100":"mb100"}> <div className={this.props.current_user&&this.props.current_user.admin===true||this.props.current_user&&this.props.current_user.business===true?"mt50 mb100 CompetitionContents":"mb100 CompetitionContents"}>
<Content className={"markdown-body"} dangerouslySetInnerHTML={{__html: markdownToHTML(mdContentdata===undefined?"":mdContentdata.md_content===undefined?"":mdContentdata.md_content).replace(/▁/g, "▁▁▁")}}> <Content className={"markdown-body"} dangerouslySetInnerHTML={{__html: markdownToHTML(mdContentdata===undefined?"":mdContentdata.md_content===undefined?"":mdContentdata.md_content).replace(/▁/g, "▁▁▁")}}>
</Content> </Content>

@ -38,7 +38,10 @@ class CompetitionContents extends Component{
title: 'userimg', title: 'userimg',
dataIndex: 'userimg', dataIndex: 'userimg',
key: 'userimg', key: 'userimg',
render: text => <img className={"Competitionuserimg"} src={getImageUrl("images/avatars/User/60969?t=1569488691")}/>, render: (text, record) =>(
<a href={`/users/${record.user_login}`} className="color-dark">
<img className={"Competitionuserimg"} src={getImageUrl(record.userimg)}/>
</a>),
}, },
{ {
title: 'username', title: 'username',

Loading…
Cancel
Save