基于项目的分做作业,关联项目列表需要增加“更换项目”的功能
This commit is contained in:
parent
b0559788db
commit
0b217b9998
|
@ -7,7 +7,7 @@ class StudentWorkController < ApplicationController
|
|||
require "base64"
|
||||
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,
|
||||
: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 :member_of_course, :only => [:new, :create, :show, :add_score, :praise_student_work]
|
||||
before_filter :author_of_work, :only => [:edit, :update, :destroy]
|
||||
|
@ -1138,6 +1138,26 @@ class StudentWorkController < ApplicationController
|
|||
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
|
||||
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="">
|
||||
<span class="f16 fontBlue">关联项目</span>
|
||||
<a href="javascript:void(0);" class="popClose" onclick="clickCanel();"></a>
|
||||
<%=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 %>
|
||||
<input type="text" name="project" placeholder="输入项目名称进行搜索" class="searchResourcePopup mb10" />
|
||||
<div class="cl"></div>
|
||||
<p id="no_search_result" class="c_red" style="width:220px;display: none">您当前尚未创建任何项目,请先创建项目再关联。</p>
|
||||
<ul id="search_project_list" class="maxHeight100"></ul>
|
||||
<p id="notes" class="c_red"></p>
|
||||
<div class="courseSendSubmit mt10"><a href="javascript:void(0);" class="sendSourceText" onclick="clickOK();">确定</a></div>
|
||||
<div class="courseSendCancel mt10"><a href="javascript:void(0);" class="sendSourceText" onclick="clickCanel();">取消</a></div>
|
||||
<div class="cl"></div>
|
||||
<% end %>
|
||||
<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 => 'student_work_project',:homework => @homework.id,:user_activity_id=>@user_activity_id,:hw_status =>@hw_status},: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 = '';
|
||||
|
@ -52,7 +57,7 @@
|
|||
$("#notes").html("请先选择一个项目");
|
||||
return false;
|
||||
} else {
|
||||
$("#student_work_relate_project").submit();
|
||||
$("#muban_popup_box").find('form').submit();
|
||||
}
|
||||
}
|
||||
</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)) %>
|
||||
<div class="syllabus_courses_list" style="cursor: default">
|
||||
<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>
|
||||
<% 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%>
|
||||
<% elsif project.status != 9 %>
|
||||
<a href="javascript:void(0)" class="new_project_title fl" title="私有项目不可访问"><%=project.name %></a>
|
||||
<% 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 %>
|
||||
</h3>
|
||||
<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 %>
|
||||
<%=link_to "<span class='fr grayTxt'>创建者:#{projectUser.try(:realname) != " " ? projectUser.lastname + projectUser.firstname : projectUser.try(:login)}</span>".html_safe, user_path(projectUser) %>
|
||||
<% if is_change %>
|
||||
<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>
|
||||
<div>
|
||||
|
@ -31,3 +35,15 @@
|
|||
</div>
|
||||
<% 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 %>
|
||||
<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(",") + ")" %>
|
||||
<% projects = Project.where("id in #{project_ids}") %>
|
||||
<% student_work_ids = @homework.student_works.has_committed.blank? ? "(-1)" : "(" + @homework.student_works.has_committed.map{|st| st.id}.join(",") + ")" %>
|
||||
<% 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}%>
|
||||
</div>
|
||||
<% end %>
|
||||
|
|
|
@ -1,5 +1,2 @@
|
|||
$('#ajax-modal').html('<%= escape_javascript(render :partial => 'student_work/relate_project') %>');
|
||||
showModal('ajax-modal', '320px');
|
||||
$('#ajax-modal').siblings().remove();
|
||||
$('#ajax-modal').parent().css("top","").css("left","");
|
||||
$('#ajax-modal').parent().addClass("groupPopUp");
|
||||
var htmlvalue = "<%= escape_javascript(render :partial => 'student_work/relate_project') %>";
|
||||
pop_box_new(htmlvalue, 400, 285);
|
|
@ -3,7 +3,7 @@
|
|||
<% else %>
|
||||
$("#search_project_list").html("");
|
||||
<% @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>";
|
||||
$("#search_project_list").append(link );
|
||||
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);
|
||||
<% end %>
|
||||
<% end %>
|
|
@ -335,6 +335,7 @@ RedmineApp::Application.routes.draw do
|
|||
collection do
|
||||
post 'add_score_reply'
|
||||
post 'student_work_project'
|
||||
post 'change_project'
|
||||
get 'new_student_work_project'
|
||||
get 'search_user_projects'
|
||||
get 'search_course_students'
|
||||
|
|
|
@ -316,6 +316,7 @@ h4{ font-size:14px;}/*color:#3b3b3b;*/
|
|||
.H60 {height:60px !important;}
|
||||
.H150{ height:150px;}
|
||||
.p10 {padding-left:10px; padding-right:10px;}
|
||||
.mw150 {max-width: 150px !important;}
|
||||
.mw220 {max-width: 220px !important;}
|
||||
.mw280 {max-width:280px !important;}
|
||||
.mw360 {max-width: 360px !important;}
|
||||
|
@ -324,6 +325,7 @@ h4{ font-size:14px;}/*color:#3b3b3b;*/
|
|||
.mh18 {max-height: 18px;}
|
||||
.max_h54 {max-height:54px; }
|
||||
.maxHeight100 {max-height:100px; overflow-x:hidden; overflow-y:auto;}
|
||||
.maxHeight200 {max-height:200px; overflow-x:hidden; overflow-y:auto;}
|
||||
|
||||
.W50{ width:50px;}
|
||||
.W120{ width:110px;}
|
||||
|
|
Loading…
Reference in New Issue