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 @@ +
+
+

更换项目

+ +
+
+
+ <%= form_for('new_form',:url =>{:controller => 'student_work',:action => 'change_project',:homework => @homework.id},:method => "post", :remote => true) do |f|%> + +
+ + +

+ 确定 + 取消 +
+ <% end %> +
+
+ \ 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 %> +
+
+

关联项目

+ +
+
+
+ <%= 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|%> + +
+ +
    +

    + 确定 + 取消 +
    + <% 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 "".html_safe, user_path(projectUser), :title => "#{projectUser.show_name}" %>
    @@ -30,4 +34,16 @@
    <% 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 = '

    提示

    '+ + '

    以下组员还不是项目成员,请先前往项目添加成员

    <%=str %>

    '+ + '确  定
    '; +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 = "
  • "; - $("#search_project_list").append(link ); + link = "
  • "; + $("#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;}