基于项目的分做作业,关联项目列表需要增加“更换项目”的功能
This commit is contained in:
parent
b0559788db
commit
0b217b9998
|
@ -7,7 +7,7 @@ class StudentWorkController < ApplicationController
|
||||||
require "base64"
|
require "base64"
|
||||||
before_filter :find_homework, :only => [:new, :index, :create, :student_work_absence_penalty, :absence_penalty_list, :evaluation_list, :program_test,:program_test_ex,
|
before_filter :find_homework, :only => [:new, :index, :create, :student_work_absence_penalty, :absence_penalty_list, :evaluation_list, :program_test,:program_test_ex,
|
||||||
:set_score_rule,:forbidden_anonymous_comment,:delete_work,:new_student_work_project,:student_work_project,:cancel_relate_project,
|
:set_score_rule,:forbidden_anonymous_comment,:delete_work,:new_student_work_project,:student_work_project,:cancel_relate_project,
|
||||||
:search_course_students,:work_canrepeat,:add_group_member]
|
:search_course_students,:work_canrepeat,:add_group_member,:change_project]
|
||||||
before_filter :find_work, :only => [:edit, :update, :show, :destroy, :add_score, :praise_student_work,:retry_work,:revise_attachment]
|
before_filter :find_work, :only => [:edit, :update, :show, :destroy, :add_score, :praise_student_work,:retry_work,:revise_attachment]
|
||||||
before_filter :member_of_course, :only => [:new, :create, :show, :add_score, :praise_student_work]
|
before_filter :member_of_course, :only => [:new, :create, :show, :add_score, :praise_student_work]
|
||||||
before_filter :author_of_work, :only => [:edit, :update, :destroy]
|
before_filter :author_of_work, :only => [:edit, :update, :destroy]
|
||||||
|
@ -1138,6 +1138,26 @@ class StudentWorkController < ApplicationController
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# 作品更换关联项目
|
||||||
|
def change_project
|
||||||
|
work = @homework.student_works.has_committed.where("user_id = #{User.current.id}").first
|
||||||
|
project = Project.find params[:projectName].to_i
|
||||||
|
if work && project
|
||||||
|
relate_user_ids = work.student_work_projects.map{|pro| pro.user_id}
|
||||||
|
member_ids = project.members.map{|mem| mem.user_id}
|
||||||
|
if (relate_user_ids & member_ids) == relate_user_ids
|
||||||
|
work.student_work_projects.update_all(:project_id => params[:projectName].to_i)
|
||||||
|
student_works = @homework.student_works.where("user_id in #{'(' + relate_user_ids.join(',') + ')'}")
|
||||||
|
student_works.update_all(:project_id => params[:projectName].to_i)
|
||||||
|
else
|
||||||
|
@remain_user_ids = relate_user_ids - (relate_user_ids & member_ids)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
respond_to do |format|
|
||||||
|
format.js
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
#查找课程的学生
|
#查找课程的学生
|
||||||
def search_course_students
|
def search_course_students
|
||||||
name = ""
|
name = ""
|
||||||
|
|
|
@ -0,0 +1,64 @@
|
||||||
|
<div id="muban_popup_box" style="width:400px;">
|
||||||
|
<div class="muban_popup_top">
|
||||||
|
<h3 class="fl">更换项目</h3>
|
||||||
|
<a href="javascript:void(0);" class="muban_icons_close fr"></a>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</div>
|
||||||
|
<div class="muban_popup_con clear ml30 mr30 mt10">
|
||||||
|
<%= form_for('new_form',:url =>{:controller => 'student_work',:action => 'change_project',:homework => @homework.id},:method => "post", :remote => true) do |f|%>
|
||||||
|
<input type="text" name="project" placeholder="输入项目名称进行搜索" class="searchResourcePopup mb10" />
|
||||||
|
<div class="cl"></div>
|
||||||
|
<p id="no_search_result" class="c_red f14" style="width:320px;display: none">您当前尚未创建任何项目,请先创建项目再关联。</p>
|
||||||
|
<ul id="search_project_list" class="maxHeight200"></ul>
|
||||||
|
<p id="notes" class="c_red"></p>
|
||||||
|
<a href="javascript:void(0);" class="sy_btn_blue fr" onclick="clickOK();">确定</a>
|
||||||
|
<a href="javascript:void(0);" class="sy_btn_grey fr mr5" onclick="clickCanel();">取消</a>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">
|
||||||
|
var lastSearchCondition = '';
|
||||||
|
var count = 0;
|
||||||
|
function search_pros(e){
|
||||||
|
if($(e.target).val().trim() == lastSearchCondition && lastSearchCondition != '')
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
lastSearchCondition = $(e.target).val().trim();
|
||||||
|
$.ajax({
|
||||||
|
url: '<%= url_for(:controller => 'student_work', :action => 'search_user_projects') %>'+'?name='+ e.target.value,
|
||||||
|
type:'get'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function throttle(method,context,e){
|
||||||
|
clearTimeout(method.tId);
|
||||||
|
method.tId=setTimeout(function(){
|
||||||
|
method.call(context,e);
|
||||||
|
},500);
|
||||||
|
}
|
||||||
|
|
||||||
|
//查询项目
|
||||||
|
$("input[name='project']").on('input', function (e) {
|
||||||
|
throttle(search_pros,window,e);
|
||||||
|
});
|
||||||
|
|
||||||
|
$(document).ready(function(){
|
||||||
|
$.ajax({
|
||||||
|
url: '<%= url_for(:controller => 'student_work', :action => 'search_user_projects') %>'+'?first=1',
|
||||||
|
type:'get'
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
function clickOK() {
|
||||||
|
var radio = $("input[name='projectName']:checked");
|
||||||
|
if(radio.length < 1) {
|
||||||
|
$("#notes").html("请先选择一个项目");
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
$("#muban_popup_box").find('form').submit();
|
||||||
|
hideModal();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
|
@ -1,16 +1,21 @@
|
||||||
<div id="popbox02" style="">
|
<div id="muban_popup_box" style="width:400px;">
|
||||||
<span class="f16 fontBlue">关联项目</span>
|
<div class="muban_popup_top">
|
||||||
<a href="javascript:void(0);" class="popClose" onclick="clickCanel();"></a>
|
<h3 class="fl">关联项目</h3>
|
||||||
<%=form_tag url_for(:controller=>'student_work',:action=>'student_work_project',:homework=>@homework.id,:user_activity_id=>@user_activity_id,:hw_status =>@hw_status),:id =>'student_work_relate_project',:class=>'resourcesSearchBox',:remote => true do %>
|
<a href="javascript:void(0);" class="muban_icons_close fr"></a>
|
||||||
<input type="text" name="project" placeholder="输入项目名称进行搜索" class="searchResourcePopup mb10" />
|
<div class="cl"></div>
|
||||||
<div class="cl"></div>
|
</div>
|
||||||
<p id="no_search_result" class="c_red" style="width:220px;display: none">您当前尚未创建任何项目,请先创建项目再关联。</p>
|
<div class="muban_popup_con clear ml30 mr30 mt10">
|
||||||
<ul id="search_project_list" class="maxHeight100"></ul>
|
<%= form_for('new_form',:url =>{:controller => 'student_work',:action => 'student_work_project',:homework => @homework.id,:user_activity_id=>@user_activity_id,:hw_status =>@hw_status},:method => "post", :remote => true) do |f|%>
|
||||||
<p id="notes" class="c_red"></p>
|
<input type="text" name="project" placeholder="输入项目名称进行搜索" class="searchResourcePopup mb10" />
|
||||||
<div class="courseSendSubmit mt10"><a href="javascript:void(0);" class="sendSourceText" onclick="clickOK();">确定</a></div>
|
<div class="cl"></div>
|
||||||
<div class="courseSendCancel mt10"><a href="javascript:void(0);" class="sendSourceText" onclick="clickCanel();">取消</a></div>
|
<p id="no_search_result" class="c_red f14" style="width:320px;display: none">您当前尚未创建任何项目,请先创建项目再关联。</p>
|
||||||
<div class="cl"></div>
|
<ul id="search_project_list" class="maxHeight200"></ul>
|
||||||
<% end %>
|
<p id="notes" class="c_red"></p>
|
||||||
|
<a href="javascript:void(0);" class="sy_btn_blue fr" onclick="clickOK();">确定</a>
|
||||||
|
<a href="javascript:void(0);" class="sy_btn_grey fr mr5" onclick="clickCanel();">取消</a>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var lastSearchCondition = '';
|
var lastSearchCondition = '';
|
||||||
|
@ -52,7 +57,7 @@
|
||||||
$("#notes").html("请先选择一个项目");
|
$("#notes").html("请先选择一个项目");
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
$("#student_work_relate_project").submit();
|
$("#muban_popup_box").find('form').submit();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
|
@ -3,18 +3,22 @@
|
||||||
<% allow_visit = project.status != 9 && (project.is_public || User.current.member_of?(project) || User.current.admin? || User.current.allowed_to?(:as_teacher, @homework.course)) %>
|
<% allow_visit = project.status != 9 && (project.is_public || User.current.member_of?(project) || User.current.admin? || User.current.allowed_to?(:as_teacher, @homework.course)) %>
|
||||||
<div class="syllabus_courses_list" style="cursor: default">
|
<div class="syllabus_courses_list" style="cursor: default">
|
||||||
<div class="sy_courses_open">
|
<div class="sy_courses_open">
|
||||||
|
<% projectUser = User.where("id=?",project.user_id).first %>
|
||||||
|
<% is_change = project.status == 9 && projectUser == User.current && @homework.student_works.has_committed.where("user_id = #{User.current.id}").count == 1 %>
|
||||||
<h3>
|
<h3>
|
||||||
<% if allow_visit %>
|
<% if allow_visit %>
|
||||||
<%= link_to "#{project.name}", project_path(project.id,:host=>Setting.host_name), :target => '_blank', :class => "new_project_title fl",:id => "show_project_#{project.id}", :title => (project.is_public? ? "公开项目:":"私有项目:") + project.name%>
|
<%= link_to "#{project.name}", project_path(project.id,:host=>Setting.host_name), :target => '_blank', :class => "new_project_title fl",:id => "show_project_#{project.id}", :title => (project.is_public? ? "公开项目:":"私有项目:") + project.name%>
|
||||||
<% elsif project.status != 9 %>
|
<% elsif project.status != 9 %>
|
||||||
<a href="javascript:void(0)" class="new_project_title fl" title="私有项目不可访问"><%=project.name %></a>
|
<a href="javascript:void(0)" class="new_project_title fl" title="私有项目不可访问"><%=project.name %></a>
|
||||||
<% else %>
|
<% else %>
|
||||||
<a href="javascript:void(0)" class="new_project_title fl" title="项目已删除"><%=project.name %></a>
|
<a href="javascript:void(0)" onclick="alert_notice_box();" class="new_project_title fl <%= is_change ? 'mw380' : '' %>" title="项目已删除"><%=project.name %></a>
|
||||||
<% end %>
|
<% end %>
|
||||||
</h3>
|
</h3>
|
||||||
<span class="<%= project.is_public? ? 'syllabus_class_open' : 'syllabus_class_private' %> fl ml10 mt3 syllabus_class_property"><%= project.is_public? ? '公开' : '私有' %></span>
|
<span class="<%= project.is_public? ? 'syllabus_class_open' : 'syllabus_class_private' %> fl ml10 mt3 syllabus_class_property"><%= project.is_public? ? '公开' : '私有' %></span>
|
||||||
<% projectUser = User.where("id=?",project.user_id).first %>
|
<% if is_change %>
|
||||||
<%=link_to "<span class='fr grayTxt'>创建者:#{projectUser.try(:realname) != " " ? projectUser.lastname + projectUser.firstname : projectUser.try(:login)}</span>".html_safe, user_path(projectUser) %>
|
<a href="javascript:void(0)" onclick="alert_change_project();" class="btn_grey_mid mt-5 ml10 fr">更换项目</a>
|
||||||
|
<% end %>
|
||||||
|
<%=link_to "<span class='fr grayTxt hidden mw150'>创建者:#{projectUser.show_name}</span>".html_safe, user_path(projectUser), :title => "#{projectUser.show_name}" %>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
|
@ -30,4 +34,16 @@
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div><!--syllabus_courses_box end-->
|
</div><!--syllabus_courses_box end-->
|
||||||
|
<script>
|
||||||
|
function alert_notice_box(){
|
||||||
|
var htmlvalue = '<div id="muban_popup_box" style="width:300px;"><div class="muban_popup_top"><h3 class="fl">提示</h3><a href="javascript:void(0);" class="muban_icons_close fr"></a></div>'+
|
||||||
|
'<div class="clear mt15"><p class="text_c f14">项目已删除,链接无效</p><div class="cl"></div>'+
|
||||||
|
'<a href="javascript:void(0);" class="fr sy_btn_blue mt10" style="margin-right: 119px;" onclick="hideModal();">确 定</a></div></div>';
|
||||||
|
pop_box_new(htmlvalue, 300, 140);
|
||||||
|
}
|
||||||
|
function alert_change_project(){
|
||||||
|
var htmlvalue = "<%= escape_javascript(render :partial => 'student_work/change_project') %>";
|
||||||
|
pop_box_new(htmlvalue, 400, 285);
|
||||||
|
}
|
||||||
|
</script>
|
|
@ -0,0 +1,17 @@
|
||||||
|
<% if @remain_user_ids %>
|
||||||
|
<% str = "" %>
|
||||||
|
<% @remain_user_ids.each do |user_id| %>
|
||||||
|
<% user = User.find user_id %>
|
||||||
|
<% if str == "" %>
|
||||||
|
<% str += user.show_name.to_s + "(" + user.login.to_s + ")" %>
|
||||||
|
<% else %>
|
||||||
|
<% str += "、" + user.show_name.to_s + "(" + user.login.to_s + ")" %>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
|
var htmlvalue = '<div id="muban_popup_box" style="width:350px;"><div class="muban_popup_top"><h3 class="fl">提示</h3><a href="javascript:void(0);" class="muban_icons_close fr"></a></div>'+
|
||||||
|
'<div class="clear mt15"><p class="text_c f14">以下组员还不是项目成员,请先前往项目添加成员</p><p class="text_c f14"><%=str %></p><div class="cl"></div>'+
|
||||||
|
'<a href="javascript:void(0);" class="fr sy_btn_blue mt10" style="margin-right: 144px;" onclick="hideModal();">确 定</a></div></div>';
|
||||||
|
pop_box_new(htmlvalue, 350, 140);
|
||||||
|
<% else %>
|
||||||
|
window.location.href = "<%=student_work_index_url(:homework => @homework.id, :tab => 3) %>";
|
||||||
|
<% end %>
|
|
@ -186,8 +186,10 @@
|
||||||
|
|
||||||
<% if @homework.homework_type == 3 && @homework.homework_detail_group.base_on_project == 1 %>
|
<% if @homework.homework_type == 3 && @homework.homework_detail_group.base_on_project == 1 %>
|
||||||
<div class="undis" id="student_work_con3">
|
<div class="undis" id="student_work_con3">
|
||||||
<% project_ids = @homework.student_work_projects.blank? ? "(-1)" : "(" + @homework.student_work_projects.map{|pro| pro.project_id}.join(",") + ")" %>
|
<% student_work_ids = @homework.student_works.has_committed.blank? ? "(-1)" : "(" + @homework.student_works.has_committed.map{|st| st.id}.join(",") + ")" %>
|
||||||
<% projects = Project.where("id in #{project_ids}") %>
|
<% student_work_projects = @homework.student_work_projects.where("student_work_id in #{student_work_ids} or student_work_id is null") %>
|
||||||
|
<% project_ids = student_work_projects.blank? ? "(-1)" : "(" + student_work_projects.map{|pro| pro.project_id}.join(",") + ")" %>
|
||||||
|
<% projects = Project.where("id in #{project_ids}").order("updated_on desc") %>
|
||||||
<%= render :partial => "student_work/relate_projects", :locals => {:projects => projects}%>
|
<%= render :partial => "student_work/relate_projects", :locals => {:projects => projects}%>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
|
@ -1,5 +1,2 @@
|
||||||
$('#ajax-modal').html('<%= escape_javascript(render :partial => 'student_work/relate_project') %>');
|
var htmlvalue = "<%= escape_javascript(render :partial => 'student_work/relate_project') %>";
|
||||||
showModal('ajax-modal', '320px');
|
pop_box_new(htmlvalue, 400, 285);
|
||||||
$('#ajax-modal').siblings().remove();
|
|
||||||
$('#ajax-modal').parent().css("top","").css("left","");
|
|
||||||
$('#ajax-modal').parent().addClass("groupPopUp");
|
|
|
@ -3,7 +3,7 @@
|
||||||
<% else %>
|
<% else %>
|
||||||
$("#search_project_list").html("");
|
$("#search_project_list").html("");
|
||||||
<% @project_ids.each do |project|%>
|
<% @project_ids.each do |project|%>
|
||||||
link = "<li><label><input type='radio' class='courseSendCheckbox' name='projectName' value='<%=project.id%>'/><span class='sendCourseName'> <%=project.name %> </span></label></li>";
|
link = "<li><input type='radio' class='courseSendCheckbox fl' name='projectName' value='<%=project.id%>'/><a href='<%=project_path(project) %>' target='_blank' class='hidden fl' style='padding-top: 8px; max-width: 300px;'> <%=project.name %> </a><div class='cl'></div></li>";
|
||||||
$("#search_project_list").append(link );
|
$("#search_project_list").append(link);
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
|
@ -335,6 +335,7 @@ RedmineApp::Application.routes.draw do
|
||||||
collection do
|
collection do
|
||||||
post 'add_score_reply'
|
post 'add_score_reply'
|
||||||
post 'student_work_project'
|
post 'student_work_project'
|
||||||
|
post 'change_project'
|
||||||
get 'new_student_work_project'
|
get 'new_student_work_project'
|
||||||
get 'search_user_projects'
|
get 'search_user_projects'
|
||||||
get 'search_course_students'
|
get 'search_course_students'
|
||||||
|
|
|
@ -316,6 +316,7 @@ h4{ font-size:14px;}/*color:#3b3b3b;*/
|
||||||
.H60 {height:60px !important;}
|
.H60 {height:60px !important;}
|
||||||
.H150{ height:150px;}
|
.H150{ height:150px;}
|
||||||
.p10 {padding-left:10px; padding-right:10px;}
|
.p10 {padding-left:10px; padding-right:10px;}
|
||||||
|
.mw150 {max-width: 150px !important;}
|
||||||
.mw220 {max-width: 220px !important;}
|
.mw220 {max-width: 220px !important;}
|
||||||
.mw280 {max-width:280px !important;}
|
.mw280 {max-width:280px !important;}
|
||||||
.mw360 {max-width: 360px !important;}
|
.mw360 {max-width: 360px !important;}
|
||||||
|
@ -324,6 +325,7 @@ h4{ font-size:14px;}/*color:#3b3b3b;*/
|
||||||
.mh18 {max-height: 18px;}
|
.mh18 {max-height: 18px;}
|
||||||
.max_h54 {max-height:54px; }
|
.max_h54 {max-height:54px; }
|
||||||
.maxHeight100 {max-height:100px; overflow-x:hidden; overflow-y:auto;}
|
.maxHeight100 {max-height:100px; overflow-x:hidden; overflow-y:auto;}
|
||||||
|
.maxHeight200 {max-height:200px; overflow-x:hidden; overflow-y:auto;}
|
||||||
|
|
||||||
.W50{ width:50px;}
|
.W50{ width:50px;}
|
||||||
.W120{ width:110px;}
|
.W120{ width:110px;}
|
||||||
|
|
Loading…
Reference in New Issue