diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index 3ad63a948..6b3097d43 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -178,22 +178,19 @@ class CoursesController < ApplicationController def searchmembers @subPage_title = l :label_student_list - @render_file = 'member_list' - @canShowCode = isCourseTeacher(User.current.id,@course) && params[:role] != '1' - @is_remote = true + @canShowCode = User.current.allowed_to?(:as_teacher,@course) && params[:role] != '1' + # @is_remote = true @score_sort_by = "desc" q = "#{params[:name].strip}" - #(redirect_to stores_url, :notice => l(:label_sumbit_empty);return) if params[:name].blank? if params[:incourse] - @results = searchmember_by_name(student_homework_score(0,0,0,"desc"), q) - + results = searchmember_by_name(student_homework_score(0,0,0,"desc"), q) elsif params[:ingroup] @group = CourseGroup.find(params[:search_group_id]) - @results = searchmember_by_name(student_homework_score(@group.id,0,0,"desc"), q) + results = searchmember_by_name(student_homework_score(@group.id,0,0,"desc"), q) end @is_remote = true - @result_count = @results.count - @results = paginateHelper @results, 10 + @result_count = results.count + @results = paginateHelper results, 10 @search_name = q end @@ -298,7 +295,7 @@ class CoursesController < ApplicationController @render_file = 'member_list' @score_sort_by = "desc" - @canShowCode = isCourseTeacher(User.current.id,@course) && params[:role] != '1' + @canShowCode = User.current.allowed_to?(:as_teacher,@course) && params[:role] != '1' @role = params[:role].nil? ? '2':params[:role] @is_remote = true @course_groups = @course.course_groups if @course.course_groups @@ -311,8 +308,8 @@ class CoursesController < ApplicationController when '2' @subPage_title = l :label_student_list page = params[:page].nil? ? 0 : (params['page'].to_i - 1) - # @all_members = student_homework_score(0,page, 10,"desc") - @all_members = @course.members + @all_members = student_homework_score(0,page, 10,"desc") + # @all_members = @course.members @members = paginateHelper_for_members @all_members, 10 end respond_to do |format| @@ -798,38 +795,38 @@ class CoursesController < ApplicationController if groupid == 0 if nums == 0 sql_select = "SELECT members.*, SUM(homework_attaches.score) as score FROM members, homework_attaches - WHERE members.course_id = #{@course.id} AND members.user_id in (SELECT students_for_courses.student_id FROM students_for_courses WHERE course_id = #{@course.id}) AND members.user_id = homework_attaches.user_id -AND homework_attaches.bid_id in (SELECT bid_id FROM homework_for_courses WHERE course_id = #{@course.id}) GROUP BY members.user_id -UNION all -SELECT members.*, 0 as score FROM members,homework_attaches,students_for_courses WHERE members.course_id = #{@course.id} AND -students_for_courses.course_id = #{@course.id} and members.user_id = students_for_courses.student_id AND -members.user_id NOT IN (SELECT homework_attaches.user_id FROM homework_attaches WHERE homework_attaches.bid_id in (SELECT bid_id FROM homework_for_courses WHERE course_id = #{@course.id} ) -) -GROUP BY members.user_id ORDER BY score #{score_sort_by}" + WHERE members.course_id = #{@course.id} AND members.user_id in (SELECT students_for_courses.student_id FROM students_for_courses WHERE course_id = #{@course.id}) AND members.user_id = homework_attaches.user_id + AND homework_attaches.bid_id in (SELECT bid_id FROM homework_for_courses WHERE course_id = #{@course.id}) GROUP BY members.user_id + UNION all + SELECT members.*, 0 as score FROM members,homework_attaches,students_for_courses WHERE members.course_id = #{@course.id} AND + students_for_courses.course_id = #{@course.id} and members.user_id = students_for_courses.student_id AND + members.user_id NOT IN (SELECT homework_attaches.user_id FROM homework_attaches WHERE homework_attaches.bid_id in (SELECT bid_id FROM homework_for_courses WHERE course_id = #{@course.id} ) + ) + GROUP BY members.user_id ORDER BY score #{score_sort_by}" else sql_select = "SELECT members.*, SUM(homework_attaches.score) as score FROM members, homework_attaches - WHERE members.course_id = #{@course.id} AND members.user_id in (SELECT students_for_courses.student_id FROM students_for_courses WHERE course_id = #{@course.id}) AND members.user_id = homework_attaches.user_id -AND homework_attaches.bid_id in (SELECT bid_id FROM homework_for_courses WHERE course_id = #{@course.id}) GROUP BY members.user_id -UNION all -SELECT members.*, 0 as score FROM members,homework_attaches,students_for_courses WHERE members.course_id = #{@course.id} AND -students_for_courses.course_id = #{@course.id} and members.user_id = students_for_courses.student_id AND -members.user_id NOT IN (SELECT homework_attaches.user_id FROM homework_attaches WHERE homework_attaches.bid_id in (SELECT bid_id FROM homework_for_courses WHERE course_id = #{@course.id} ) -) -GROUP BY members.user_id ORDER BY score #{score_sort_by} limit #{start_from}, #{nums}" + WHERE members.course_id = #{@course.id} AND members.user_id in (SELECT students_for_courses.student_id FROM students_for_courses WHERE course_id = #{@course.id}) AND members.user_id = homework_attaches.user_id + AND homework_attaches.bid_id in (SELECT bid_id FROM homework_for_courses WHERE course_id = #{@course.id}) GROUP BY members.user_id + UNION all + SELECT members.*, 0 as score FROM members,homework_attaches,students_for_courses WHERE members.course_id = #{@course.id} AND + students_for_courses.course_id = #{@course.id} and members.user_id = students_for_courses.student_id AND + members.user_id NOT IN (SELECT homework_attaches.user_id FROM homework_attaches WHERE homework_attaches.bid_id in (SELECT bid_id FROM homework_for_courses WHERE course_id = #{@course.id} ) + ) + GROUP BY members.user_id ORDER BY score #{score_sort_by} limit #{start_from}, #{nums}" end else sql_select = "SELECT members.*, SUM(homework_attaches.score) as score FROM members, homework_attaches - WHERE members.course_id = #{@course.id} AND members.user_id in (SELECT students_for_courses.student_id FROM students_for_courses WHERE course_id = #{@course.id}) AND members.user_id = homework_attaches.user_id - and members.course_group_id = #{groupid} AND homework_attaches.bid_id in (SELECT bid_id FROM homework_for_courses WHERE course_id = #{@course.id}) - GROUP BY members.user_id -UNION all -SELECT members.*, 0 as score FROM members,homework_attaches,students_for_courses WHERE members.course_id = #{@course.id} -and members.course_group_id = #{groupid} AND -students_for_courses.course_id = #{@course.id} and members.user_id = students_for_courses.student_id AND -members.user_id NOT IN (SELECT homework_attaches.user_id FROM homework_attaches WHERE homework_attaches.bid_id in (SELECT bid_id FROM homework_for_courses WHERE course_id = #{@course.id} ) -) -GROUP BY members.user_id ORDER BY score #{score_sort_by}" + WHERE members.course_id = #{@course.id} AND members.user_id in (SELECT students_for_courses.student_id FROM students_for_courses WHERE course_id = #{@course.id}) AND members.user_id = homework_attaches.user_id + and members.course_group_id = #{groupid} AND homework_attaches.bid_id in (SELECT bid_id FROM homework_for_courses WHERE course_id = #{@course.id}) + GROUP BY members.user_id + UNION all + SELECT members.*, 0 as score FROM members,homework_attaches,students_for_courses WHERE members.course_id = #{@course.id} + and members.course_group_id = #{groupid} AND + students_for_courses.course_id = #{@course.id} and members.user_id = students_for_courses.student_id AND + members.user_id NOT IN (SELECT homework_attaches.user_id FROM homework_attaches WHERE homework_attaches.bid_id in (SELECT bid_id FROM homework_for_courses WHERE course_id = #{@course.id} ) + ) + GROUP BY members.user_id ORDER BY score #{score_sort_by}" end sql = ActiveRecord::Base.connection() homework_scores = Member.find_by_sql(sql_select) diff --git a/app/views/courses/_course_student.html.erb b/app/views/courses/_course_student.html.erb index 92ca7b983..e95e1d901 100644 --- a/app/views/courses/_course_student.html.erb +++ b/app/views/courses/_course_student.html.erb @@ -1,173 +1,26 @@
+
- + <%= render :partial => 'new_groups_name', :locals => {:course_groups => @course_groups} %>
-
- -
-
- 学生 - - 4.2 - 2014-11-27 -
-
-
- 学生 - - 4.2 - 2014-11-27 -
-
-
- 学生 - - 4.2 - 2014-11-27 -
-
-
- 学生 - - 4.2 - 2014-11-27 -
-
-
- 学生 - - 4.2 - 2014-11-27 -
-
-
- 学生 - - 4.2 - 2014-11-27 -
-
-
- 学生 - - 4.2 - 2014-11-27 -
-
-
- 学生 - - 4.2 - 2014-11-27 -
-
-
- 学生 - - 4.2 - 2014-11-27 -
-
-
- 学生 - - 4.2 - 2014-11-27 -
-
+ +
+ <%= render :partial => 'new_member_list', :locals => {:members => members} %>
- -
\ No newline at end of file diff --git a/app/views/courses/_member_list.html.erb b/app/views/courses/_member_list.html.erb index 9112a945d..bf88ce340 100644 --- a/app/views/courses/_member_list.html.erb +++ b/app/views/courses/_member_list.html.erb @@ -1,9 +1,7 @@ -
+
<% if User.current.logged? && User.current.member_of_course?(@course) && @group %> - <% if !@canShowCode %> - <%= join_in_course_group(@course.course_groups,@group, User.current) %> - <% end %> + <%= join_in_course_group(@course.course_groups,@group, User.current) unless @canShowCode %> <%= l(:label_current_group)%>:  <%= @group.name %> diff --git a/app/views/courses/_new_groups_name.html.erb b/app/views/courses/_new_groups_name.html.erb new file mode 100644 index 000000000..5de5b0b11 --- /dev/null +++ b/app/views/courses/_new_groups_name.html.erb @@ -0,0 +1,52 @@ +
    +
  • 分班:
  • +
  • + <%= link_to l(:label_all), searchgroupmembers_course_path(@course,:group_id => 0), :onclick => "checkclass('group_name_0')", method: 'get', remote: true%> +
  • + + <% unless course_groups.nil? %> + <% course_groups.each do |group| %> + <% group_name = " #{ group.name}( #{group.members.count.to_s}人)".html_safe %> +
  • + <%= link_to group_name, searchgroupmembers_course_path(@course,:group_id => group.id), method: 'get', remote: true,:onclick => "checkclass('group_name_#{group.id}')"%> + <% if @canShowCode%> + <%= link_to '', deletegroup_course_path(:group_id => group.id), :method => 'delete', :remote => true, + :data => {confirm: l(:label_delete_group)}, + :class => 'f_1', + :style => "width: 11px;height: 16px;margin-top:3px;margin-left:5px;background: url(/images/pic_del.gif) no-repeat 0 0;" + %> + <% else%> + + 删除班级 + + <% end %> + + 编辑班级 + +
  • + +
  • + <%= form_tag(updategroupname_course_path(@course,:group_id => group.id), method: 'get', remote:true, update: 'group_name') do %> + + <% end %> +
  • + <% end %> + <% end %> + + <% if @canShowCode %> +
  • + +添加分班 +
  • +
  • + +
  • + <% end %> +
\ No newline at end of file diff --git a/app/views/courses/_new_member_list.html.erb b/app/views/courses/_new_member_list.html.erb new file mode 100644 index 000000000..8fb399037 --- /dev/null +++ b/app/views/courses/_new_member_list.html.erb @@ -0,0 +1,74 @@ + +
+ <% if User.current.logged? && User.current.member_of_course?(@course) && @group %> + <%= join_in_course_group(@course.course_groups,@group, User.current) unless @canShowCode %> + + <%= l(:label_current_group)%>:  + <%= @group.name %> + + <% end %> +
+
+ +<% if members.any? %> + <% if @result_count %> +

+ <%= l(:label_search_member_count) %> + <%= @result_count %> + <%= l(:label_member_people) %> +

+
+ <% end %> + +
+ +
+ + <% members.each do |member| %> +
+ + <%= member.user.nil? ? '' : (image_tag(url_to_avatar(member.user), :width => 32, :height => 32)) %> + +
    + <% if @canShowCode %> +
  • + <% if member.user.show_name == ''%> + <%= link_to("#{l(:label_bidding_user_studentname)}:#{member.user.name}".html_safe,user_path(member.user)) %> + <% else%> + <%= link_to("#{l(:label_bidding_user_studentname)}:#{member.user.show_name}".html_safe,user_path(member.user)) %> + <%end%> +
  • + <% else %> +
  • <%= link_to("#{l(:label_bidding_user_studentname)}:#{member.user.name}".html_safe, user_path(member.user)) %>
  • + <% end %> +
    + <% unless member.user.user_extensions.student_id == ''%> +
  • <%= link_to("#{l(:label_bidding_user_studentcode)}:#{member.user.user_extensions.student_id}".html_safe,user_path(member.user)) %>
  • + <% end%> +
+ <%= link_to format("%0.2f",member.score.nil? ? 0 : member.score.to_s), { + :action => 'show_member_score', + :member_id => member.id, + :remote => true}, + :class => 'ml258 c_red' %> + <%= format_date(member.created_on)%> + <%= call_hook(:view_projects_settings_members_table_row, { :course => @course, :member => member}) %> +
+
+ <% end; reset_cycle %> +
+ +
    + <%= pagination_links_full @obj_pages, @obj_count, :per_page_links => false, :remote => @is_remote, :flag => true%> +
+<% else%> +

+ <%= l(:label_no_data) %> +

+<% end%> + diff --git a/app/views/courses/member.html.erb b/app/views/courses/member.html.erb index e5a87da11..ce336373b 100644 --- a/app/views/courses/member.html.erb +++ b/app/views/courses/member.html.erb @@ -1,49 +1,3 @@ - -

<%= @subPage_title%>

diff --git a/app/views/courses/searchmembers.js.erb b/app/views/courses/searchmembers.js.erb index efe47a9c0..1d3c0ad21 100644 --- a/app/views/courses/searchmembers.js.erb +++ b/app/views/courses/searchmembers.js.erb @@ -1,4 +1,4 @@ /** * Created by Administrator on 2014/12/2. */ -$("#member_content").html("<%= escape_javascript( render :partial => @render_file, :locals => {:members => @results})%>"); \ No newline at end of file +$("#member_content").html("<%= escape_javascript( render :partial => 'new_member_list', :locals => {:members => @results})%>"); \ No newline at end of file diff --git a/public/javascripts/course.js b/public/javascripts/course.js index 9bc784e70..3c296699b 100644 --- a/public/javascripts/course.js +++ b/public/javascripts/course.js @@ -1,3 +1,50 @@ +/////////////////////////////////////////////////////////////// +function check_groupname(course_id) { + var $group_name = $('#group_name'); + $.get( + '<%=valid_ajax_course_path%>', + { valid: "name", + value: document.getElementById('group_name').value, + course_id: course_id }, + function (data) { + if (!data.valid) { + alert(data.message); + } + }); +} + +function validate_groupname(value1) { + if(value1.length > 20) { + alert('<%= l(:label_limit_groupname) %>'); + } +} + +function checkclass(value) { + for(var i = 0; i < document.getElementsByName("check_group_name").length; i++) { + if(document.getElementsByName("check_group_name")[i].id == value) { + document.getElementById(value).className = "selected"; + } + else { + document.getElementsByName("check_group_name")[i].className = "classbox"; + } + } +} +function validate_groupname_null(value1) { + value1 = value1.trim(); + if(value1.length == 0 ) { + alert('<%= l(:label_limit_groupname_null) %>'); + } +} +function validate_update(name) { + value1 = document.getElementById(name).value; + validate_groupname(value1); + +} +function validate_add_group() { + check_groupname(); +} +/////////////////////////////////////////////////////////////// + //验证搜索时输入名字 function regexName(content) {