diff --git a/app/controllers/student_work_controller.rb b/app/controllers/student_work_controller.rb
index d11259f15..dd471811b 100644
--- a/app/controllers/student_work_controller.rb
+++ b/app/controllers/student_work_controller.rb
@@ -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 = ""
diff --git a/app/views/student_work/_change_project.html.erb b/app/views/student_work/_change_project.html.erb
new file mode 100644
index 000000000..d433157a0
--- /dev/null
+++ b/app/views/student_work/_change_project.html.erb
@@ -0,0 +1,64 @@
+
+
\ No newline at end of file
diff --git a/app/views/student_work/_relate_project.html.erb b/app/views/student_work/_relate_project.html.erb
index 24eac58ef..771301aee 100644
--- a/app/views/student_work/_relate_project.html.erb
+++ b/app/views/student_work/_relate_project.html.erb
@@ -1,16 +1,21 @@
-
-
关联项目
-
- <%=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 %>
-
-
-
您当前尚未创建任何项目,请先创建项目再关联。
-
-
-
-
-
- <% end %>
+
\ No newline at end of file
diff --git a/app/views/student_work/_relate_projects.html.erb b/app/views/student_work/_relate_projects.html.erb
index c6a372a47..8a1382386 100644
--- a/app/views/student_work/_relate_projects.html.erb
+++ b/app/views/student_work/_relate_projects.html.erb
@@ -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)) %>
+ <% 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 %>
<% 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 %>
<%=project.name %>
<% else %>
- <%=project.name %>
+ <%=project.name %>
<% end %>
<%= project.is_public? ? '公开' : '私有' %>
- <% projectUser = User.where("id=?",project.user_id).first %>
- <%=link_to "
创建者:#{projectUser.try(:realname) != " " ? projectUser.lastname + projectUser.firstname : projectUser.try(:login)} ".html_safe, user_path(projectUser) %>
+ <% if is_change %>
+
更换项目
+ <% end %>
+ <%=link_to "
创建者:#{projectUser.show_name} ".html_safe, user_path(projectUser), :title => "#{projectUser.show_name}" %>
<% end %>
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/app/views/student_work/change_project.js.erb b/app/views/student_work/change_project.js.erb
new file mode 100644
index 000000000..96e80db30
--- /dev/null
+++ b/app/views/student_work/change_project.js.erb
@@ -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 = '';
+pop_box_new(htmlvalue, 350, 140);
+<% else %>
+ window.location.href = "<%=student_work_index_url(:homework => @homework.id, :tab => 3) %>";
+<% end %>
\ No newline at end of file
diff --git a/app/views/student_work/index.html.erb b/app/views/student_work/index.html.erb
index a88a41d97..c14e28f4d 100644
--- a/app/views/student_work/index.html.erb
+++ b/app/views/student_work/index.html.erb
@@ -186,8 +186,10 @@
<% if @homework.homework_type == 3 && @homework.homework_detail_group.base_on_project == 1 %>
- <% 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}%>
<% end %>
diff --git a/app/views/student_work/new_student_work_project.js.erb b/app/views/student_work/new_student_work_project.js.erb
index 51df45f13..83ef3d89a 100644
--- a/app/views/student_work/new_student_work_project.js.erb
+++ b/app/views/student_work/new_student_work_project.js.erb
@@ -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");
\ No newline at end of file
+var htmlvalue = "<%= escape_javascript(render :partial => 'student_work/relate_project') %>";
+pop_box_new(htmlvalue, 400, 285);
\ No newline at end of file
diff --git a/app/views/student_work/search_user_projects.js.erb b/app/views/student_work/search_user_projects.js.erb
index 7751821a5..2fc8b0ee4 100644
--- a/app/views/student_work/search_user_projects.js.erb
+++ b/app/views/student_work/search_user_projects.js.erb
@@ -3,7 +3,7 @@
<% else %>
$("#search_project_list").html("");
<% @project_ids.each do |project|%>
- link = " <%=project.name %> ";
- $("#search_project_list").append(link );
+ link = " <%=project.name %>
";
+ $("#search_project_list").append(link);
<% end %>
<% end %>
\ No newline at end of file
diff --git a/config/routes.rb b/config/routes.rb
index 026e65846..b916b12d5 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -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'
diff --git a/public/stylesheets/css/common.css b/public/stylesheets/css/common.css
index 4998fb966..71cd2a69e 100644
--- a/public/stylesheets/css/common.css
+++ b/public/stylesheets/css/common.css
@@ -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;}