Merge branch 'dev_cs' into dev_daiao

Conflicts:
	app/views/challenges/_content_list.html.erb
	app/views/challenges/_edit_task_pass.html.erb
	app/views/challenges/_task_pass_form.html.erb
This commit is contained in:
daiao 2017-07-26 18:54:13 +08:00
commit 6d4be8bbd9
24 changed files with 348 additions and 245 deletions

View File

@ -5,14 +5,15 @@ class StagesController < ApplicationController
include ApplicationHelper
def create
if params[:stage_name] && params[:shixun_id]
if params[:stage_name]
stage = Stage.new
stage.name = params[:stage_name]
stage.description = params[:stage_des]
stage.subject_id = @subject.id
stage.user_id = User.current.id
stage.position = @subject.stages.count + 1
ActiveRecord::Base.transaction do
if stage.save
if stage.save && params[:shixun_id]
begin
params[:shixun_id].each do |shixun_id|
shixun = Shixun.find shixun_id
@ -34,10 +35,11 @@ class StagesController < ApplicationController
end
def update
if params[:stage_name] && params[:shixun_id]
if params[:stage_name]
@stage.name = params[:stage_name]
@stage.description = params[:stage_des]
ActiveRecord::Base.transaction do
if @stage.save
if @stage.save && params[:shixun_id]
begin
@stage.stage_shixuns.destroy_all
params[:shixun_id].each do |shixun_id|

View File

@ -3,7 +3,7 @@ class SubjectsController < ApplicationController
layout 'base_subject'
before_filter :require_login
before_filter :check_authentication
before_filter :find_subject, :except => [:index, :create_subject, :new_subject, :append_to_stage]
before_filter :find_subject, :except => [:index, :new, :create, :create_subject, :new_subject, :append_to_stage]
include ApplicationHelper
@ -30,6 +30,26 @@ class SubjectsController < ApplicationController
@stages = @subject.stages
end
def new
@subject = Subject.new
render :layout => "base_edu"
end
def create
if params[:subject]
subject = Subject.create(:name => params[:subject][:name], :description => params[:subject][:description], :user_id => User.current.id, :visits => 0, :status => 0)
end
redirect_to subject_path(subject)
end
def update_attr
if params[:name]
@subject.update_attributes(:name => params[:name])
elsif params[:description]
@subject.update_attributes(:description => params[:description])
end
end
def new_subject
if Course.where(:tea_id => User.current.id).count > 0
@status = 1
@ -53,8 +73,9 @@ class SubjectsController < ApplicationController
end
def choose_subject_shixun
course_list = @subject.course_list
@shixuns = Shixun.where(:user_id => User.current.id, :status => [0, 1, 2], :id => course_list.shixun_major_courses.map(&:shixun_id))
#course_list = @subject.course_list
@shixuns = User.current.shixuns.where(:status => [0, 1, 2]).reorder("created_at desc")
#@shixuns = Shixun.where(:user_id => User.current.id, :status => [0, 1, 2], :id => course_list.shixun_major_courses.map(&:shixun_id))
@shixuns_count = @shixuns.count
@limit = 8
@shixuns_pages = Paginator.new @shixuns_count, @limit, params['page'] || 1
@ -72,10 +93,14 @@ class SubjectsController < ApplicationController
if apply && apply.status == 0
@status = 0
else
ApplyAction.create(:container_type => "ApplySubject", :container_id => @subject.id, :user_id => User.current.id, :status => 0)
notes = User.current.show_name.to_s + " 申请发布课程实训:<a href='#{subject_path(@subject)}'>#{@subject.name}</a>"
JournalsForMessage.create(:jour_id => 1, :jour_type => 'Principal', :user_id => User.current.id, :notes => notes, :private => 1, :reply_id => 0)
@status = 1
if Shixun.where(:id => @subject.stage_shixuns.map(&:shixun_id), :status => [0, 1]).count > 0
@status = 2
else
ApplyAction.create(:container_type => "ApplySubject", :container_id => @subject.id, :user_id => User.current.id, :status => 0)
notes = User.current.show_name.to_s + " 申请发布课程实训:<a href='#{subject_path(@subject)}'>#{@subject.name}</a>"
JournalsForMessage.create(:jour_id => 1, :jour_type => 'Principal', :user_id => User.current.id, :notes => notes, :private => 1, :reply_id => 0)
@status = 1
end
end
end
@ -83,8 +108,8 @@ class SubjectsController < ApplicationController
apply = ApplyAction.where(:container_type => "ApplySubject", :container_id => @subject.id).order("created_at desc").first
if apply && apply.status == 0
apply.update_attributes(:status => 3)
@subject.update_column('status', 0)
end
@subject.update_attributes(:status => 0)
redirect_to subject_path(@subject)
end

View File

@ -230,6 +230,18 @@ module ApplicationHelper
end
end
# TPI状态 :已通关、未通关、未开启
def my_shixun_status shixun, user
status = ""
myshixun = Myshixun.where(:shixun_id => shixun.id, :user_id => user.id).first
if myshixun.nil?
status = "未开启"
else
status = myshixun.status == 1 ? "已通关" : "未通关"
end
status
end
# 定义实训相关方法
def sum_final_score
Game.find_by_sql("SELECT sum(final_score) as total_score FROM `games` where user_id=#{User.current.id}").first.try(:total_score)
@ -1918,23 +1930,23 @@ module ApplicationHelper
elsif @welcome
title << "创新源于实践"
elsif @course
title << (@course.name.nil? ? "实训课堂" : @course.name)
title << (@course.name.nil? ? "在线课堂" : @course.name)
elsif params[:controller] == "homework_bank"
title << ("题库")
elsif params[:controller] == "courses" && params[:action] == "index"
title << ("实训课堂")
title << ("在线课堂")
elsif @contest
title << (@contest.name.nil? ? "创新源于实践" : @contest.name)
elsif @shixun
title << (@shixun.name.nil? ? "实训分类" : @shixun.name)
title << (@shixun.name.nil? ? "全部实训" : @shixun.name)
elsif @my_shixun
title << ("我的实训")
elsif params[:controller] == "shixuns" && params[:action] == "index"
title << ("实训分类")
title << ("全部实训")
elsif @subject
title << (@subject.name.nil? ? "课程实训" : @subject.name)
title << (@subject.name.nil? ? "实训套件" : @subject.name)
elsif params[:controller] == "subjects" && params[:action] == "index"
title << ("课程实训")
title << ("实训套件")
elsif @organization
title << (@organization.name.nil? ? "创新源于实践" : @organization.name)
elsif @forum || params[:controller] == "forums"
@ -1945,7 +1957,7 @@ module ApplicationHelper
if !@project_community.blank? || !@user_projectlist.blank?
title << "项目"
elsif !@course_community.blank? || !@user_courselist.blank?
title << "实训课堂"
title << "在线课堂"
elsif !@contest_community.blank?
title << @contest_community
elsif !@manage_issues.blank?
@ -1960,7 +1972,7 @@ module ApplicationHelper
title << @user.show_name
end
elsif @syllabus
title << (@syllabus.title.nil? ? "实训课堂" : @syllabus.title)
title << (@syllabus.title.nil? ? "在线课堂" : @syllabus.title)
else
title << (User.current.id == 2 ? "未登录" : User.current.try(:realname))
end

View File

@ -13,7 +13,12 @@
<div class="panel-list shixun-panel-list">
<% @challenges.each_with_index do |challenge, index| -%>
<div class="clearfix shixun-panel-inner" id="shixun_index_<%= index %>">
<h4 class="fl panel-inner-title"><i class="fa fa-dot-circle-o font-18 color-green mr10"></i><span class="color-black mr10">第<%= challenge.position %>关</span>
<h4 class="fl panel-inner-title">
<!--<span class="panel-inner-icon mr10 fl mt5"><i class="fa fa-code font-16 color_white"></i></span>
<span class="panel-inner-icon mr10 fl mt5"><i class="fa fa-th-list color_white"></i></span>
<span class="panel-inner-icon mr10 fl mt5"><img src="/images/bigdata/singel.png" style="margin-bottom: 3px"></span>-->
<i class="fa fa-dot-circle-o font-18 color-green mr10"></i>
<span class="color-black mr10">第<%= challenge.position %>关</span>
<%#= link_to challenge.subject, shixun_challenge_path(@shixun.id, challenge), :target => "_blank" %>
<% if User.current.manager_of_shixun?(@shixun) %>
<%= link_to challenge.subject, shixun_challenge_path(@shixun, challenge), :target => "_blank" %>

View File

@ -27,14 +27,14 @@
<% end %>
</ul>
</div>
<div class="right fl">
<div class="right fl user_bg_shadow bc-white">
<div class="banner clearfix mb20 font-16 user_bg_shadow">
<span class="span1 fl ">成员列表</span>
<span class="span2 fr">
<%= link_to '返回', course_path(@course), :class => 'font-14 color-grey' %>
</span>
</div>
<div class="person user_bg_shadow pb5">
<div class="person pb5">
<!--------------学生--------------->
<div class="student">
<p class="clearfix pl20 pr20 color-grey">
@ -44,39 +44,44 @@
<span class="fr right mt10" style=" height: 36px; line-height:36px;width:205px; margin-top:11px;"><input class="mr15 pl5 color-grey" style="width:160px;" type="text" value="<%= @search %>" id="all_student_list_search" placeholder="输入姓名、学号进行搜索"/><i class="fa fa-search font-16 mt8 mr10 color-grey" onclick="submit_member_all_student_list_search('<%= @course.id %>');"></i></span>
</p>
<!--------------全部学生-------------------->
<ul class="all pl20 pr20 color-grey">
<li class="clearfix">
<span class="span1">序号</span>
<span class="span2">姓名</span>
<span>用户ID</span>
<span>学号</span>
<span>分班</span>
<span class="span6">操作</span>
</li>
<table class="edu-pop-table color-grey edu-txt-center table-pa5 " style="border:none;" cellspacing="0" cellpadding="0" >
<thead>
<tr>
<th>序号</th>
<th>姓名</th>
<th>用户ID</th>
<th>学号</th>
<th>分班</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<% unless @members.blank? %>
<% @members.each_with_index do |member, index| %>
<% user = member.user %>
<li class="clearfix" id="setting_member_<%= member.id %>">
<span class="span1"><%= index + 1 + (@page - 1) * 20 %></span>
<span class="span2"><%= link_to user.show_real_name, user_path(user), :target => '_blank' %></span>
<span><%= user.login %></span>
<span><%= user.user_extensions ? user.user_extensions.student_id : '' %></span>
<span><%= member.course_group_id == 0 ? '未分班' : member.course_group.name %></span>
<span class="span6">
<tr id="setting_member_<%= member.id %>">
<td><%= index + 1 + (@page - 1) * 20 %></td>
<td><%= link_to user.show_real_name, user_path(user), :class => 'edu-txt-w140 task-hide mt5', :target => '_blank' %></td>
<td><span class="edu-txt-w140 task-hide mt5"><%= user.login %></span></td>
<td><span class="edu-txt-w140 task-hide mt5"><%= user.user_extensions ? user.user_extensions.student_id : '' %></span></td>
<td><%= member.course_group_id == 0 ? '未分班' : member.course_group.name %></td>
<td>
<% if user == User.current %>
<a href="javascript:void(0);" class="delete" onclick="delete_confirm_box_3('<%=join_path(:object_id => @course.id) %>', '确定退出班级吗?')">删除</a>
<a href="javascript:void(0);" class="span5 delete" onclick="delete_confirm_box_3('<%=join_path(:object_id => @course.id) %>', '确定退出班级吗?')">删除</a>
<% else %>
--
<% end %>
</span>
</li>
</td>
</tr>
<% end %>
<% end %>
</ul>
</tbody>
</table>
</div>
<div class="cl"></div>
<div class="fr pages_right_min mt10">
<div class="fr pages_right_min mt10 mb10">
<ul>
<%= pagination_links_full @member_pages, @member_count, :per_page_links => false, :remote => @is_remote, :flag => true, :is_new => true%>
</ul>

View File

@ -31,14 +31,14 @@
<% end %>
</ul>
</div>
<div class="right fl">
<div class="banner clearfix mb20 font-16 user_bg_shadow">
<div class="right fl user_bg_shadow bc-white">
<div class="banner clearfix mb20 font-16">
<span class="span1 fl ">成员列表</span>
<span class="span2 fr">
<%= link_to '返回', course_path(@course), :class => 'font-14 color-grey' %>
</span>
</div>
<div class="person user_bg_shadow pb5">
<div class="person pb5">
<!--------------学生--------------->
<div class="student">
<p class="clearfix pl20 pr20 color-grey">
@ -48,41 +48,41 @@
<span class="fr right mt10"><input class="pr15 pl5 color-grey" type="text" value="<%= @search %>" id="has_group_student_list_search" placeholder="输入姓名、学号进行搜索"/><i class="fa fa-search font-16 mt8 mr10" onclick="submit_member_has_group_student_search('<%= @course.id %>', '<%= @group.id %>');"></i></span>
</p>
<!------------------已分班学生--------------------->
<ul class="oldstudent pl20 pr20 color-grey">
<li class="clearfix">
<span class="span1">序号</span>
<span class="span2">姓名</span>
<span>用户ID</span>
<span>学号</span>
<span class="span6">操作</span>
</li>
<table class="edu-pop-table color-grey edu-txt-center table-pa5 " style="border:none;" cellspacing="0" cellpadding="0" >
<thead>
<tr>
<th>序号</th>
<th>姓名</th>
<th>用户ID</th>
<th>学号</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<% unless @members.blank? %>
<% @members.each_with_index do |member, index| %>
<% user = member.user %>
<li class="clearfix" id="setting_member_<%= member.id %>">
<span class="span1 open-select">
<%= index + 1 + (@page -1) * 20 %>
</span>
<span class="span2"><%= link_to user.show_real_name, user_path(user), :target => '_blank' %></span>
<span><%= user.login %></span>
<span><%= user.user_extensions ? user.user_extensions.student_id : '' %></span>
<span class="span6">
<tr id="setting_member_<%= member.id %>">
<td><%= index + 1 + (@page -1) * 20 %></td>
<td><%= link_to user.show_real_name, user_path(user), :target => '_blank', :class => 'edu-txt-w140 task-hide mt5' %></td>
<td><span class="edu-txt-w140 task-hide mt5"><%= user.login %></span></td>
<td><span class="edu-txt-w140 task-hide mt5"><%= user.user_extensions ? user.user_extensions.student_id : '' %></span></td>
<td>
<% if user == User.current %>
<a href="javascript:void(0);" class="delete" onclick="delete_confirm_box('<%=unjoin_group_courses_path(:member => member.id, :group_id => @group.id) %>', '确定要移除吗?<br/>移除后,需要重新选分班。')">移除</a>
<a href="javascript:void(0);" class="span5 delete" onclick="delete_confirm_box('<%=unjoin_group_courses_path(:member => member.id, :group_id => @group.id) %>', '确定要移除吗?<br/>移除后,需要重新选分班。')">移除</a>
<% else %>
--
<% end %>
</span>
</li>
</td>
</tr>
<% end %>
<% end %>
</ul>
</tbody>
</table>
</div>
<div class="cl"></div>
<div class="fr pages_right_min mt10">
<div class="fr pages_right_min mt10 mb10">
<ul>
<%= pagination_links_full @member_pages, @member_count, :per_page_links => false, :remote => @is_remote, :flag => true, :is_new => true%>
</ul>

View File

@ -27,14 +27,14 @@
<% end %>
</ul>
</div>
<div class="right fl">
<div class="right fl user_bg_shadow bc-white">
<div class="banner clearfix mb20 font-16 user_bg_shadow">
<span class="span1 fl ">成员列表</span>
<span class="span2 fr">
<%= link_to '返回', course_path(@course), :class => 'font-14 color-grey' %>
</span>
</div>
<div class="person user_bg_shadow pb5">
<div class="person pb5">
<!--------------学生--------------->
<div class="student">
<p class="clearfix pl20 pr20 color-grey">
@ -44,41 +44,44 @@
<span class="fr right mt10"><input class="pr15 pl5 color-grey" type="text" value="<%= @search %>" id="no_group_student_list_search" placeholder="输入姓名、学号进行搜索"/><i class="fa fa-search font-16 mt8 mr10" onclick="submit_member_no_group_student_search('<%= @course.id %>');" style="color:#666;cursor: pointer"></i></span>
</p>
<!--------------学生-------------------->
<ul class="newstudent pl20 pr20 color-grey">
<li class="clearfix">
<span class="span1">序号</span>
<span class="span2">姓名</span>
<span>用户ID</span>
<span>学号</span>
<span class="span6">操作</span>
</li>
<table class="edu-pop-table color-grey edu-txt-center table-pa5 " style="border:none;" cellspacing="0" cellpadding="0" >
<thead>
<tr>
<th>序号</th>
<th>姓名</th>
<th>用户ID</th>
<th>学号</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<% unless @members.blank? %>
<% @members.each_with_index do |member, index| %>
<% user = member.user %>
<li class="clearfix" id="setting_member_<%= member.id %>">
<span class="span1"><%= index + 1 + (@page - 1) * 20 %></span>
<span class="span2"><%= link_to user.show_real_name, user_path(user), :target => '_blank' %></span>
<span><%= user.login %></span>
<span><%= user.user_extensions ? user.user_extensions.student_id : '' %></span>
<span class="span6">
<tr id="setting_member_<%= member.id %>">
<td><%= index + 1 + (@page -1) * 20 %></td>
<td><%= link_to user.show_real_name, user_path(user), :target => '_blank', :class => 'edu-txt-w140 task-hide mt5' %></td>
<td><span class="edu-txt-w140 task-hide mt5"><%= user.login %></span></td>
<td><span class="edu-txt-w140 task-hide mt5"><%= user.user_extensions ? user.user_extensions.student_id : '' %></span></td>
<td>
<% if user == User.current %>
<a href="javascript:void(0);" class="delete" onclick="delete_confirm_box_3('<%= join_path(:object_id => @course.id) %>', '确定退出班级吗?')">删除</a>
<a href="javascript:void(0);" class="span5 delete" onclick="delete_confirm_box_3('<%= join_path(:object_id => @course.id) %>', '确定退出班级吗?')">删除</a>
<% if @course.choose_group_allow %>
<a href="javascript:void(0);" class="delete" onclick="student_choose_group('<%= @course.id %>', '<%= member.id %>')">加入分班</a>
<a href="javascript:void(0);" class="span5 delete" onclick="student_choose_group('<%= @course.id %>', '<%= member.id %>')">加入分班</a>
<% end %>
<% else %>
--
<% end %>
</span>
</li>
</td>
</tr>
<% end %>
<% end %>
</ul>
</tbody>
</table>
</div>
<div class="cl"></div>
<div class="fr pages_right_min mt10">
<div class="fr pages_right_min mt10 mb10">
<ul>
<%= pagination_links_full @member_pages, @member_count, :per_page_links => false, :remote => @is_remote, :flag => true, :is_new => true%>
</ul>

View File

@ -35,27 +35,33 @@
<div class="person">
<!-------------教师----------------->
<div class="teacher">
<p>
<span class="span1" style="text-indent:10px;">序号</span>
<span class="pl20">姓名</span>
<span>用户ID</span>
<span class="span5 mr20">角色</span>
</p>
<ul class="pl20 pr20 color-grey">
<% @members.each_with_index do |member, index| %>
<% user = member.user %>
<li class="clearfix" id="setting_member_<%= member.id %>">
<span class="span1"><%= index + 1 + (@page-1) * 20 %></span>
<%= link_to user.show_real_name, user_path(user), :class => '', :target => '_blank' %>
<span><%= user.login %></span>
<span><%= zh_course_role(h member.roles.where("name != 'Student'").first.name) %></span>
</li>
<table class="edu-pop-table color-grey edu-txt-center table-pa5" style="border:none;" cellspacing="0" cellpadding="0" >
<thead>
<tr>
<th>序号</th>
<th>姓名</th>
<th>用户ID</th>
<th>角色</th>
</tr>
</thead>
<tbody>
<% @members.each_with_index do |teacher, index| %>
<% user = teacher.user %>
<tr id="setting_member_<%= teacher.id %>">
<td><%= index + 1 + (@page-1) * 20 %></td>
<td>
<%= link_to user.show_real_name, user_path(user), :target => '_blank', :class => 'edu-txt-w140 task-hide mt5' %>
</td>
<td><span class="edu-txt-w140 task-hide mt5"><%= user.try(:login) %></span></td>
<td><%= zh_course_role(h teacher.roles.where("name != 'Student'").first.name) %></td>
</tr>
<% end %>
</ul>
</tbody>
</table>
</div>
<div class="cl"></div>
<div class="fr pages_right_min mt10">
<div class="fr pages_right_min mt10 mb10">
<ul>
<%= pagination_links_full @member_pages, @member_count, :per_page_links => false, :remote => @is_remote, :flag => true, :is_new => true%>
</ul>

View File

@ -31,7 +31,7 @@
<div class="input-holder">
<input type="hidden" name="select" id="input_select_val" value="<%= @select %>">
<input type="hidden" name="is_end" id="input_select_text" value="<%= @is_end %>">
<input type="text" class="search-input" name="search" placeholder="输入课关键字进行搜索" />
<input type="text" class="search-input" name="search" placeholder="输入课堂名称的关键字进行搜索" />
<button class="search-icon" onclick="searchToggle(this, event);"><i class="fa fa-search font-16 mt5"></i></button>
</div>
<span class="close" onclick="searchToggle(this, event);"><i class="fa fa-times font-16 mt5"></i></span>

View File

@ -78,7 +78,7 @@
</tbody>
</table>
</div>
<div class="fr pages_right_min mt10">
<div class="fr pages_right_min mt10 mb10">
<ul>
<%= pagination_links_full @member_pages, @member_count, :per_page_links => false, :remote => @is_remote, :flag => true, :is_new => true%>
</ul>

View File

@ -7,7 +7,7 @@
<% else %>
<% @discusses.each do |dis| %>
<div class="comments_item_content comment_item_bottom clearfix mt5" onmouseover="$('#discuss_opr_<%= dis.id %>').show();$('#child_discuss_opr_<%= dis.id %>').show();" onmouseout="$('#discuss_opr_<%= dis.id %>').hide();$('#child_discuss_opr_<%= dis.id %>').hide();">
<%= link_to image_tag(url_to_avatar(dis.user), :alt => "头像"), user_path(dis.user), :target => '_blank' %>
<%= link_to image_tag(url_to_avatar(dis.user), :alt => "头像", :width => 60, :height => 60), user_path(dis.user), :target => '_blank' %>
<div class="fr comment_item_one">
<p class="clearfix pl8">
<%= link_to dis.user.show_name, user_path(dis.user), :class => "fl link-color-grey" %>

View File

@ -10,12 +10,12 @@
<div class="stage-entry clearfix">
<li class="clearfix ml10 mr10">
<label class="fl"><span class="color-orange mr5">*</span>名称:</label>
<input class="stage-name fl" name="stage_name" style="background: none;" maxlength="100" placeholder="请输入阶段名称,最多100个字符,如基础知识、第1章等" size="100" type="text">
<input class="stage-name fl" value="<%= @stage.name %>" name="stage_name" style="background: none;" maxlength="100" placeholder="请输入阶段名称,最多100个字符,如基础知识、第1章等" size="100" type="text">
<p class="color-red clearfix" style="height: 20px;width: 90%;margin-left: 55px"><span id="stage_name_notice" style="display: none;"><i class="fa fa-exclamation-circle color-red mr5"></i>阶段名称不能为空</span></p>
</li>
<li class="clearfix ml10 mb15">
<label class="fl">&nbsp;&nbsp;&nbsp;描述:</label>
<textarea placeholder="请输入阶段描述最多200个字符" class="bewrite task-height-100"></textarea>
<textarea name="stage_des" placeholder="请输入阶段描述最多200个字符" class="bewrite task-height-100"><%= @stage.description %></textarea>
</li>
<li class="clearfix" style="width: 90%;padding-left: 65px">
<%= link_to '+选择实训', choose_subject_shixun_subject_path(@subject), :remote => true, :class => 'add-sx' %>

View File

@ -7,9 +7,11 @@
<p class="task-popup-text-center font-16">
<% if @status == 0 %>
已发布过申请,请等待管理员审核
<% else %>
<% elsif @status == 1 %>
发布申请已提交,请等待管理员的审核<br/>
<span class="font-12 color-grey"> • 我们将在1-2个工作日内完成审核</span>
<% elsif @status == 2 %>
项目实训全部发布后,才能申请发布
<% end %>
</p>
</div>

View File

@ -7,13 +7,15 @@
<%= @subject.user.show_name %>
</p>
<div class="clearfix">
<p class="fl font-24 color_white subject-main-name"><%= @subject.name %><i class="fa fa-pencil mt15 ml10 color_white delete font-18"></i></p>
<% if @subject.status > 1 %>
<ul class="last-all-count fr" style="display: none;">
<li><i class="fa fa-tasks mr5 color_white" title="实训"></i><span class="color-orange"><%= @subject.stage_shixuns.count %></span></li>
<li><i class="fa fa-users mr5 color_white" title="实训阶段"></i><span class="color-orange"><%= @subject.subject_challenges %></span></li>
<li><i class="fa fa-viacoin mr5 color_white" title="实训总积分"></i><span class="color-orange"><%= @subject.subject_score %></span></li>
<p class="fl font-24 color_white subject-main-name"><%= @subject.name %></p>
<% if User.current.manager_of_subject?(@subject) && @subject.status == 0 %>
<i class="fa fa-pencil mt15 ml10 color_white edit_subject_name fl font-18"></i>
<% end %>
<% if !User.current.manager_of_subject?(@subject) || @subject.status > 1 %>
<ul class="last-all-count fr">
<li class="fl mr30"><i class="fa fa-gamepad color_white" title="实训"></i><span class="ml5 color_white"><%= @subject.stage_shixuns.count %></span></li>
<li class="fl mr30"><i class="fa fa-tasks color_white" title="实训阶段"></i><span class="ml5 color_white"><%= @subject.subject_challenges %></span></li>
<li class="fl mr30"><i class="fa fa-viacoin color_white" title="实训总积分"></i><span class="ml5 color_white"><%= @subject.subject_score %></span></li>
</ul>
<% elsif @subject.status == 0 && @subject.stages.count > 0 && User.current.manager_of_subject?(@subject) %>
<%= link_to '申请发布', publish_subject_path(@subject), :class => "course-btn fr", :remote => true %>
@ -26,16 +28,38 @@
<script>
//编辑套件名称
$(".delete").on("click",function(){
$(".edit_subject_name").on("click",function(){
$(".subject-main-name").attr("contenteditable","true");
$(".subject-main-name").focus();
})
getC($(".subject-main-name"));
});
$(".subject-main-name").on("keydown",function(ev){
if(ev.keyCode==13 || ev.keyCode==108){
$(".subject-main-name").attr("contenteditable","false");
}
})
});
$(".subject-main-name").on("blur",function(){
$(".subject-main-name").attr("contenteditable","false");
})
if($(".subject-main-name").html().trim() == ""){
$(".subject-main-name").html("<%= @subject.name %>");
} else{
$.post(
'<%= update_attr_subject_path(@subject) %>',
{ name: $(".subject-main-name").html().trim() },
function (data) {
}
);
}
});
function getC(that){
if(document.all){
that.range=document.selection.createRange();
that.range.select();
that.range.moveStart("character",-1);
}else{
that.range=window.getSelection().getRangeAt(0);
that.range.setStart(that.range.startContainer,that.html().length);
}
}
</script>

View File

@ -3,7 +3,7 @@
<div class="task-index-head mt20 mb20">
<div class="header-color">
<h2 class="fl task-inde-head-title">实训套件</h2>
<%= link_to "<span class='font-22'>+</span>&nbsp;创建套件".html_safe, new_subject_subjects_path, :remote => true, :class => "fr color_white font-20" %>
<%= link_to "<span class='font-22'>+</span>&nbsp;创建套件".html_safe, new_subject_path(), :class => "fr color_white font-20" %>
<div class="cl"></div>
</div>
<ul class="task-index-head-info clearfix">

View File

@ -0,0 +1,29 @@
<div class="active-class ">
<p style="line-height: 42px;">
<i class="fa fa-map-marker mr5 color-grey"></i>
<%= link_to User.current.show_name, user_path(User.current) %> &gt; <%= link_to "实训套件", subjects_path() %>
&gt; <span>新建</span>
</p>
<div class="edu-con-top user_bg_shadow">
<span class="ml15 color-grey font-16">新建实训套件</span>
</div>
<div class="edu-bg createmain mb20 pt30 user_bg_shadow">
<%= labelled_form_for @subject do |f| %>
<li class="clearfix pt20">
<label class="panel-form-label label fl"><span class="color-orange">*</span>&nbsp;名称</label>
<input type="text" name="subject[name]" id="new_subject_name" class="task task-height-40 panel-box-sizing task-form-70 fl color-grey ml20" maxlength="100" placeholder="例如Python程序设计-从入门到精通">
<div class="cl"></div>
<span class="color-orange ml20 fl none" style="margin-left: 12%;" id="new_subject_name_notice"><i class="fa fa-exclamation-circle mr5" ></i>请输入名称</span>
</li>
<li class="clearfix pt20">
<label class="panel-form-label label fl">简介</label>
<textarea name="subject[description]" class="task task-height-220 panel-box-sizing task-form-70 fl color-grey ml20"></textarea>
</li>
<li class="clearfix pt20 pb20">
<label class="panel-form-label label fl">&nbsp;</label>
<%= link_to "取消", subjects_path(), :class => "task-btn fl mr10 ml20" %>
<a href="javascript:void(0);" onclick="submit_new_subject();" class="task-btn task-btn-blue fl">保存</a>
</li>
<% end %>
</div>
</div>

View File

@ -1,2 +1,7 @@
var htmlvalue = "<%= escape_javascript(render :partial => 'subjects/publish_notice')%>";
pop_box_new(htmlvalue,563,406);
pop_box_new(htmlvalue,563,406);
<% if @status == 2 %>
<% Shixun.where(:id => @subject.stage_shixuns.map(&:shixun_id), :status => [0, 1]).each do |shixun| %>
$("#stage_shixun_<%= shixun.id %>").find(".fa-exclamation-circle").parent().show();
<% end %>
<% end %>

View File

@ -1,117 +1,94 @@
<!--简介-->
<div class="mb20 produce-content">
<p class="clearfix"><span class="fl font-bd font-18">简介</span><i class="fa fa-pencil fr mt10 mr5 color-grey edit-produce"></i></p>
<p style="line-height: 1.5;" class="subject-produce" id="subject-produce">本课程适合没有基础、或者初学C++的同学进行学习,本课程适合没有基础、或者初学C++的同学进行学习,本课程适合没有基础、或者初学C++的同学进行学习,本课程适合没有基础、或者初学C++的同学进行学习</p>
</div>
<% if !@subject.description.blank? || (User.current.manager_of_subject?(@subject) && @subject.status == 0) %>
<div class="mb20 produce-content">
<p class="clearfix">
<span class="fl font-bd font-18">简介</span>
<% if User.current.manager_of_subject?(@subject) && @subject.status == 0 %>
<i class="fa fa-pencil fr mt10 mr5 color-grey edit-produce"></i>
<% end %>
</p>
<textarea readonly class="mt15 color-grey subject-produce <%= @subject.description.blank? ? 'color-light-grey' : '' %>" id="subject-produce" placeholder="暂未填写"><%= @subject.description %></textarea>
</div>
<% end %>
<script>
//编辑套件简介
$(".edit-produce").on("click",function(){
$(".subject-produce").attr("contenteditable","true");
$(".subject-produce").removeAttr("readonly");
$("#subject-produce").focus();
})
$(".subject-produce").on("keydown",function(ev){
if(ev.keyCode==13 || ev.keyCode==108){
$(".subject-preduce").attr("contenteditable","false");
autoTextarea(document.getElementById("subject-produce"),0,150);
});
$(".subject-produce").on("blur",function(){
$(".subject-produce").removeAttr("readonly");
$.post(
'<%= update_attr_subject_path(@subject) %>',
{ description: $("#subject-produce").val().trim() },
function (data) {
}
);
if($("#subject-produce").html().trim() == ""){
$("#subject-produce").addClass("color-light-grey");
} else{
$("#subject-produce").removeClass("color-light-grey");
}
})
$(".subject-produce").on("blur",function(){
$(".subject-produce").attr("contenteditable","false");
})
function getC(that){
if(document.all){
that.range=document.selection.createRange();
that.range.select();
that.range.moveStart("character",-1);
}else{
that.range=window.getSelection().getRangeAt(0);
that.range.setStart(that.range.startContainer,that.html().length);
}
}
</script>
<!--新版阶段列表-->
<div class="lesson-saved-list mb20">
<div class="lesson-saved-list-item user_bg_shadow pt10 pb10 mb20">
<p class="clearfix"><i class="font-20 fa fa-dot-circle-o ml15 mr15 color-orange"></i><span class="font-16 font-bd">第1章&nbsp;基础入门</span><i class="fa fa-pencil fr mt10 mr10 color-grey delete"></i><i class="fa fa-trash fr mt10 mr10 color-grey edit"></i></p>
<p class="ml50 color-grey pr20">程序是对数据的处理,一般程序可以分解为:“数据输入”程序是对数据的处理,一般程序可以分解为:“数据输入”程序是对数据的处理,一般程序可以分解为:“数据输入”程序是对数据的处理,一般程序可以分解为:“数据输入”</p>
<div class="clearfix pt5 pb5 stage-info-line">
<li class="fl li-width50"><i class="fa fa-gamepad color-light-green mr20 font-20"></i><span class="font-bd color-dark-grey">剩下的人去哪儿啦?</span></li>
<li class="fl li-width10"><i class="fa fa-tasks color-light-green font-16 mr5"></i><span class="color-dark-grey">1</span></li>
<li class="fl li-width20 color-light-green"><span class="mr5">1200</span>经验值</li>
<li class="fl li-width20"><i class="fa fa-check-circle color-light-green font-18 mr5" title="已通关"></i><i class="fa fa-pause-circle color-orange font-18 mr5" title="未通关"></i><i class="fa fa-play-circle color-grey font-18 mr5" title="未开启"></i></li>
<!--<li class="fl li-width20"><span class="color-light-green">已发布</span><span class="color-grey">编辑中</span><span class="color-orange">待审核</span><i class="fa fa-exclamation-circle color-red ml5 mr5"></i></li>-->
</div>
<div class="clearfix pt5 pb5 stage-info-line">
<li class="fl li-width50"><i class="fa fa-gamepad color-light-green mr20 font-20"></i><span class="font-bd color-dark-grey">剩下的人去哪儿啦?</span></li>
<li class="fl li-width10"><i class="fa fa-tasks color-light-green font-16 mr5"></i><span class="color-dark-grey">1</span></li>
<li class="fl li-width20 color-light-green"><span class="mr5">1200</span>经验值</li>
<li class="fl li-width20"><span class="color-light-green">已发布</span><span class="color-grey">编辑中</span><span class="color-orange">待审核</span><i class="fa fa-exclamation-circle color-red ml5 mr5"></i></li>
</div>
<div class="clearfix pt5 pb5 stage-info-line">
<li class="fl li-width50"><i class="fa fa-gamepad color-light-green mr20 font-20"></i><span class="font-bd color-dark-grey">剩下的人去哪儿啦?</span></li>
<li class="fl li-width10"><i class="fa fa-tasks color-light-green font-16 mr5"></i><span class="color-dark-grey">1</span></li>
<li class="fl li-width20 color-light-green"><span class="mr5">1200</span>经验值</li>
<li class="fl li-width20"><span class="color-light-green">已发布</span><span class="color-grey">编辑中</span><span class="color-orange">待审核</span><i class="fa fa-exclamation-circle color-red ml5 mr5"></i></li>
</div>
</div>
<div class="lesson-saved-list-item user_bg_shadow pt10 pb10 mb20">
<p class="clearfix"><i class="font-20 fa fa-dot-circle-o ml15 mr15 color-orange"></i><span class="font-16 font-bd">第1章&nbsp;基础入门</span><i class="fa fa-pencil fr mt10 mr10 color-grey delete"></i><i class="fa fa-trash fr mt10 mr10 color-grey edit"></i></p>
<p class="ml50 color-grey pr20">程序是对数据的处理,一般程序可以分解为:“数据输入”</p>
<div class="clearfix pt5 pb5 stage-info-line">
<li class="fl li-width50"><i class="fa fa-gamepad color-light-green mr20 font-20"></i><span class="font-bd color-dark-grey">剩下的人去哪儿啦?</span></li>
<li class="fl li-width10"><i class="fa fa-tasks color-light-green font-16 mr5"></i><span class="color-dark-grey">1</span></li>
<li class="fl li-width20 color-light-green"><span class="mr5">1200</span>经验值</li>
<li class="fl li-width20"><span class="color-light-green">已发布</span><span class="color-grey">编辑中</span><span class="color-orange">待审核</span><i class="fa fa-exclamation-circle color-red ml5 mr5"></i></li>
</div>
<div class="clearfix pt5 pb5 stage-info-line">
<li class="fl li-width50"><i class="fa fa-gamepad color-light-green mr20 font-20"></i><span class="font-bd color-dark-grey">剩下的人去哪儿啦?</span></li>
<li class="fl li-width10"><i class="fa fa-tasks color-light-green font-16 mr5"></i><span class="color-dark-grey">1</span></li>
<li class="fl li-width20 color-light-green"><span class="mr5">1200</span>经验值</li>
<li class="fl li-width20"><span class="color-light-green">已发布</span><span class="color-grey">编辑中</span><span class="color-orange">待审核</span><i class="fa fa-exclamation-circle color-red ml5 mr5"></i></li>
</div>
<div class="clearfix pt5 pb5 stage-info-line">
<li class="fl li-width50"><i class="fa fa-gamepad color-light-green mr20 font-20"></i><span class="font-bd color-dark-grey">剩下的人去哪儿啦?</span></li>
<li class="fl li-width10"><i class="fa fa-tasks color-light-green font-16 mr5"></i><span class="color-dark-grey">1</span></li>
<li class="fl li-width20 color-light-green"><span class="mr5">1200</span>经验值</li>
<li class="fl li-width20"><span class="color-light-green">已发布</span><span class="color-grey">编辑中</span><span class="color-orange">待审核</span><i class="fa fa-exclamation-circle color-red ml5 mr5"></i></li>
</div>
</div>
</div>
<div class="lesson-saved-list">
<% @stages.each do |stage| %>
<div class="lesson-saved-list-stage" id="stage_div_<%= stage.id %>">
<div class="saved-title clearfix">
<li class="fl"><i class="fa fa-dot-circle-o color-orange mr5 font-16"></i><span class="font-16 font-bd"><%= stage.name %></span></li>
<% if @subject.status == 0 && User.current.manager_of_subject?(@subject) %>
<li class="fr">
<a class="task-btn color_white bc-grey del-editstage" onclick="delete_confirm_box_2('<%= stage_path(stage) %>', '确定要删除该阶段吗?');">删除</a>
<a class="course-bth-blue color_white" onclick="edit_stage(<%= stage.id %>)">编辑</a>
</li>
<% end %>
</div>
<div class="task-index-list clearfix mb20">
<% stage.stage_shixuns.each_with_index do |stage_shixun, index| %>
<% shixun = stage_shixun.shixun %>
<div class="task-index-list-box-all fl pr">
<div class="task-array"><%= index + 1 %></div>
<div class="task-index-list-box-top xy_box" style="cursor: pointer;" onclick="shixun_link('<%= shixun.identifier %>')">
<p class="task-index-list-title two_lines_show">
<a href="javascript:void(0);"><%= shixun.name %></a>
</p>
<div class=" clearfix task-index-list-user task_yx_bo">
<a href="javascript:void(0);"><%= image_tag(url_to_avatar(shixun.owner), :width =>"60", :height => "60", :class => "panel-warp-img mr10 fl", :alt=>"头像") %></a>
<span class="task-index-name task-hide fl"><%= shixun.owner.try(:show_name) %></span>
</div>
<div class="cl"></div>
<span class="mt10 mb10"><%= shixun.language %></span>
<p class="xy_level"><%= shixun.shixun_trainee %></p>
<div class="lesson-saved-list-item user_bg_shadow pt20 mb20" id="stage_div_<%= stage.id %>">
<p class="clearfix">
<i class="font-20 fa fa-dot-circle-o ml20 color-orange"></i>
<span class="font-16 font-bd"><%= stage.name %></span>
<% if @subject.status == 0 && User.current.manager_of_subject?(@subject) %>
<a href="javascript:void(0);" onclick="edit_stage(<%= stage.id %>)"><i class="fa fa-pencil fr mt10 mr20 color-grey delete"></i></a>
<a href="javascript:void(0);" onclick="delete_confirm_box_2('<%= stage_path(stage) %>', '确定要删除该阶段吗?');"><i class="fa fa-trash fr mt10 mr10 color-grey edit"></i></a>
<% end %>
</p>
<p class="ml20 color-grey pr20 mt10 mb10"><%= stage.description %></p>
<% stage.stage_shixuns.each_with_index do |stage_shixun, index| %>
<% shixun = stage_shixun.shixun %>
<div class="clearfix pt10 pb10 pl20 stage-info-line" id="stage_shixun_<%= shixun.id %>" style="cursor: pointer;" onclick="shixun_link('<%= shixun.identifier %>')">
<li class="fl li-width50">
<i class="fa fa-gamepad color-light-green font-20"></i>
<span class="font-bd color-dark-grey"><%= shixun.name %></span>
</li>
<li class="fl li-width10">
<i class="fa fa-tasks color-light-green font-16 mr5"></i>
<span class="color-dark-grey"><%= shixun.challenges.count %></span>
</li>
<li class="fl li-width20">
<i class="fa fa-viacoin color-light-green mr5"></i><span class="mr5"><%= shixun.shixun_score %></span></li>
<li class="fl li-width20">
<% if @subject.status == 0 && User.current.manager_of_subject?(@subject) %>
<span class="fl <%= shixun.shixun_status == '编辑中' ? 'color-grey' : (shixun.shixun_status == '审核中' ? 'color-orange' : (shixun.shixun_status == '已发布' ? 'color-light-green' : 'color-light-grey')) %>"><%= shixun.shixun_status %></span>
<span class="fl none ml10"><i class="fa fa-exclamation-circle color-red ml5 mr5"></i></span>
<% else %>
<% case my_shixun_status(shixun, User.current) %>
<% when '已通关' %>
<i class="fa fa-check-circle color-light-green font-18 mr5" title="已通关"></i>
<% when '未通关' %>
<i class="fa fa-pause-circle color-orange font-18 mr5" title="未通关"></i>
<% when '未开启' %>
<i class="fa fa-play-circle color-grey font-18 mr5" title="未开启"></i>
<% end %>
<% end %>
</li>
</div>
<ul class="task-index-list-box-bottom clearfix">
<li><i class="fa fa-tasks mr5 color-light-green" title="实训任务"></i><span><%= shixun.challenges.count %></span></li>
<li><i class="fa fa-users mr5 color-light-green" title="已开启实训"></i><span><%= shixun.myshixuns.count %></span></li>
<li><i class="fa fa-viacoin mr5 color-light-green" title="实训总积分"></i><span><%= shixun.shixun_score %></span></li>
</ul>
</div>
<% end %>
</div>
</div>
<% end %>
</div>
<% end %>
</div>
<% if @subject.status == 0 && User.current.manager_of_subject?(@subject) %>
<div class="lesson-edit-content mb20">
<% if @stages.count == 0 %>
@ -132,7 +109,7 @@
</li>
<li class="clearfix ml10 mb15">
<label class="fl">&nbsp;&nbsp;&nbsp;描述:</label>
<textarea placeholder="请输入阶段描述最多200个字符" class="bewrite task-height-100"></textarea>
<textarea name="stage_des" placeholder="请输入阶段描述最多200个字符" class="bewrite task-height-100"></textarea>
</li>
<li class="clearfix" style="width: 90%;padding-left: 65px">
<%= link_to '+选择实训', choose_subject_shixun_subject_path(@subject), :remote => true, :class => 'add-sx' %>
@ -209,7 +186,7 @@
edithtml+="</li>";
edithtml+="<li class=\"clearfix ml10 mb15\">";
edithtml+="<label class=\"fl\">&nbsp;&nbsp;&nbsp;描述:</label>";
edithtml+="<textarea placeholder=\"请输入阶段描述最多200个字符\" class=\"bewrite task-height-100\"></textarea></li>";
edithtml+="<textarea placeholder=\"请输入阶段描述最多200个字符\" name=\"stage_des\" class=\"bewrite task-height-100\"></textarea></li>";
edithtml+="<li class=\"clearfix\" style=\"width: 90%;padding-left: 65px\">";
edithtml+='<%= link_to '+选择实训', choose_subject_shixun_subject_path(@subject), :remote => true, :class => 'add-sx' %>';
edithtml+="<p class=\"color-orange\" style=\"height: 25px;\">";
@ -248,12 +225,12 @@
} else{
$("#stage_name_notice").hide();
}
if($("input[name='shixun_id[]']").length == 0){
status = false;
$("#sx_none_notice").show();
} else{
$("#sx_none_notice").hide();
}
// if($("input[name='shixun_id[]']").length == 0){
// status = false;
// $("#sx_none_notice").show();
// } else{
// $("#sx_none_notice").hide();
// }
if(status && flag){
flag = false;
$("#new_stage_form").submit();

View File

@ -37,6 +37,7 @@ RedmineApp::Application.routes.draw do
get 'choose_subject_shixun'
get 'publish'
get 'cancel_publish'
post 'update_attr'
end
collection do

Binary file not shown.

After

Width:  |  Height:  |  Size: 991 B

View File

@ -991,4 +991,13 @@ function destroy_all_hb(url){
}else{
$("#choose_homework_bank_to_send_notice_h").html("请先选择题目").show();
}
}
function submit_new_subject(){
if($("#new_subject_name").val().trim() == ""){
$("#new_subject_name_notice").show();
} else{
$("#new_subject_name_notice").hide();
$("#new_subject").submit();
}
}

View File

@ -279,8 +279,6 @@ em{font-style:normal;}
.stud-class-set .people .right .person {background:#fff;min-height:600px;}
.stud-class-set .people .right .person .teacher ul li{width:100%;height:50px;line-height:50px;border-bottom:1px dashed #ddd;}
.stud-class-set .people .right .person .teacher p{width:100%;height:50px;line-height:50px;border-bottom:1px dashed #ddd;}
.stud-class-set .people .right .person .teacher span{width:120px;display:inline-block;text-align:center;padding-right:91px;}
.stud-class-set .people .right .person .teacher a{width:120px;display:inline-block;text-align:center;padding-right:91px;}
.stud-class-set .people .right .person .teacher .span1{text-align:left;padding:0;}
.stud-class-set .people .right .person .teacher .span5{padding:0;}
.stud-class-set .people .right .person .student{min-height:600px;}

View File

@ -24,16 +24,16 @@
/*-----------新版新建实训------------*/
.produce-content:hover i{color:#29bd8b!important;}
.subject-main-name{outline: none}
.subject-produce{outline: none;}
.stage-info-line{padding-left: 50px}
.subject-main-name{outline: none;background: none;border: none;width: auto;height: 45px}
.subject-produce{outline: none;line-height: 1.5;width: 100%;border: none;background: none;height: 30px;}
.stage-info-line:hover{background-color:rgba(142,212,254,0.3)}
.lesson-saved-list-item:hover{box-shadow: 0 0 8px 0 rgba(0,0,0,.2);}
.lesson-saved-list-item{border:1px solid #EEEEEE}
.lesson-saved-list-item:hover .edit{color:#29bd8b!important;}
.lesson-saved-list-item:hover .delete{color:#29bd8b!important;}
li.li-width50{width: 50%;text-align: left}
li.li-width20{width: 20%;text-align: left}
li.li-width10{width: 10%;text-align: left}
.lesson-saved-list-item{background-color: #FFFFFF}
/*------课程实训首页---------*/
.course_tip_box{width: 460px;padding: 10px;background-color: #FFFFFF;}
@ -70,8 +70,7 @@ li.li-width10{width: 10%;text-align: left}
.allback{background-color:#FFFFFF}
.last-all-count{width: 20%;text-align: right;}
.last-all-count li{float: left;width: 33.3%;}
.last-all-count{text-align: right;}
.course-option{width: 570px;padding: 10px;background-color: #FFFFFF;}
.magic-radio + label:before, .magic-checkbox + label:before{top: 11px;left: 5px;}

View File

@ -64,6 +64,7 @@ a.rightbar-pause{ color:#29bd8b; font-size: 18px; margin-right:15px; margin-top:
.content-submitbox{ width:120px; margin: 15px auto; height:135px;}
.panel-inner{ background:#EFF2F7; margin:15px; padding:15px;}
.panel-inner-title{ font-size: 14px; color: #666; max-width:85%; line-height:30px;word-wrap: break-word; margin-bottom: 10px}
.panel-inner-icon{width: 22px;height: 22px;line-height: 22px;border-radius: 50%;background: #29bd8b;display: block;text-align: center}
.panel-footer{ min-width:1000px; height: 210px!important;}
/* 弹框 */
.task-popup-text-center{ text-align: center; color: #666;}