diff --git a/app/controllers/account_controller.rb b/app/controllers/account_controller.rb index ad6d568a5..6c95294d7 100644 --- a/app/controllers/account_controller.rb +++ b/app/controllers/account_controller.rb @@ -202,7 +202,16 @@ class AccountController < ApplicationController def email_valid end + def resendmail + user = User.find(params[:user]) if params[:user] + token = Token.new(:user => user, :action => "register") + if token.save + Mailer.register(token).deliver + else + yield if block_given? + end + end private def authenticate_user diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index 63b8294e7..12852c63d 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -23,7 +23,7 @@ class CoursesController < ApplicationController before_filter :require_login, :only => [:join, :unjoin] #before_filter :allow_join, :only => [:join] - + @@result = nil def join if User.current.logged? course = Course.find_by_id params[:object_id] @@ -296,6 +296,7 @@ class CoursesController < ApplicationController else @results = searchStudent(@course) end + @@result = @results @members = searchStudent(@course) @membercount = @members.count @results = paginateHelper @results @@ -308,6 +309,7 @@ class CoursesController < ApplicationController @members = searchStudent(@course) @membercount = @members.count @results = searchStudent_by_group(group, @course) + @@result = @results @results = paginateHelper @results end def member @@ -326,13 +328,14 @@ class CoursesController < ApplicationController when '2' @subPage_title = l :label_student_list - @members = searchStudent(@course) - @membercount = @members.count + @members = searchStudent_sort(@course, 'desc') + @membercount = @members.count else @subPage_title = '' @members = @course.member_principals.includes(:roles, :principal).all.sort end + @@result = @members @members = paginateHelper @members render :layout => 'base_courses' else @@ -340,6 +343,21 @@ class CoursesController < ApplicationController end end + + def member_score_sort + @teachers= searchTeacherAndAssistant(@course) + @canShowCode = isCourseTeacher(User.current.id,@course) && params[:role] != '1' + @role = params[:role] + @course_groups = @course.course_groups if @course.course_groups + @show_serch = params[:role] == '2' + @subPage_title = l :label_student_list + @render_file = 'member_list' + unless @@result.nil? + @results = @@result.reverse + @@result = @results + end + @results = paginateHelper @results + end # 显示每个学生的作业评分详情 def show_member_score @member_score = Member.find(params[:member_id]) if params[:member_id] diff --git a/app/helpers/courses_helper.rb b/app/helpers/courses_helper.rb index 6f0265132..ec3b9aad6 100644 --- a/app/helpers/courses_helper.rb +++ b/app/helpers/courses_helper.rb @@ -164,6 +164,18 @@ module CoursesHelper members end def searchStudent project + #searchPeopleByRoles(project, StudentRoles) + members = [] + + project.members.each do |m| + if m && m.user && m.user.allowed_to?(:as_student,project) + members << m + + end + end + members + end + def searchStudent_sort project, sort_by #searchPeopleByRoles(project, StudentRoles) members = [] @@ -173,20 +185,14 @@ module CoursesHelper end end - members - end - def search_student_and_score project - #searchPeopleByRoles(project, StudentRoles) - members = [] - scores = [] - project.members.each do |m| - if m && m.user && m.user.allowed_to?(:as_student,project) - members << m - - end + members.sort!{ |mem1, mem2| mem1.student_homework_score[1].to_f <=> mem2.student_homework_score[1].to_f} + if sort_by == "desc" + members.reverse! end members end + + def searchStudent_by_name project, name #searchPeopleByRoles(project, StudentRoles) members = [] diff --git a/app/views/account/email_valid.html.erb b/app/views/account/email_valid.html.erb index c77c0294e..e6bc2a2db 100644 --- a/app/views/account/email_valid.html.erb +++ b/app/views/account/email_valid.html.erb @@ -4,7 +4,7 @@ 注册帐号 @@ -32,7 +32,9 @@ border: none; padding: 10px 16px; - line-height: 1.33;" target="_blank">立即查收邮件

+ line-height: 1.33;" target="_blank">立即查收邮件 +     <%= link_to l(:label_mail_resend), { :controller => 'account', :action => 'resendmail',:user => @user}, :remote => true, :method => 'get' %> +

diff --git a/app/views/bids/_homework_form.html.erb b/app/views/bids/_homework_form.html.erb index ffe0fc1b9..e2fa117a9 100644 --- a/app/views/bids/_homework_form.html.erb +++ b/app/views/bids/_homework_form.html.erb @@ -22,7 +22,7 @@ <%= error_messages_for 'bid' %>

- <%= f.text_field :name, :required => true, :size => 60, :style => "width:490px;", :maxlength => Bid::NAME_LENGTH_LIMIT, :onblur => "regexName();" %> + <%= f.text_field :name, :required => true, :size => 60, :style => "width:490px;", :maxlength => Bid::NAME_LENGTH_LIMIT, :onkeyup => "regexName();" %>

@@ -48,7 +48,7 @@

- <%= f.text_field :evaluation_num, :required => true, :size => 60, :style => "width:150px;", :onblur => "regexEvaluationNum();" , :maxlength => 4%> + <%= f.text_field :evaluation_num, :required => true, :size => 60, :style => "width:150px;", :onkeyup => "regexEvaluationNum();" , :maxlength => 4%> 即每份作业被允许匿评的人数

diff --git a/app/views/contestnotifications/_form.html.erb b/app/views/contestnotifications/_form.html.erb index f3861f034..dc651501b 100644 --- a/app/views/contestnotifications/_form.html.erb +++ b/app/views/contestnotifications/_form.html.erb @@ -60,7 +60,7 @@ :size => 60, :maxlength => 60, :style => "width:488px;", - :onblur => "regexTitle();" + :onkeyup => "regexTitle();" %>

@@ -71,7 +71,7 @@ :rows => 11, :class => 'wiki-edit', :style => "width:490px;", - :onblur => "regexDescription();" + :onkeyup => "regexDescription();" %>

diff --git a/app/views/contests/_new_softapplication.html.erb b/app/views/contests/_new_softapplication.html.erb index 35eea6147..5849132ae 100644 --- a/app/views/contests/_new_softapplication.html.erb +++ b/app/views/contests/_new_softapplication.html.erb @@ -121,7 +121,7 @@ :required => true, :size => 60, :style => "width:320px;", - :onblur => "regexName();" + :onkeyup => "regexName();" %> (<%= l(:label_workname_lengthlimit) %>) @@ -143,7 +143,7 @@ :required => true, :size => 60, :rows => 3, - :onblur => 'regexDescription();', + :onkeyup => 'regexDescription();', :style => "width:320px; " %> (<%= l(:label_work_description_lengthlimit) %>) @@ -162,7 +162,7 @@ :required => true, :size => 60, :style => "width:320px;", - :onblur => 'regexDevelopers();' + :onkeyup => 'regexDevelopers();' %> diff --git a/app/views/contests/index.html.erb b/app/views/contests/index.html.erb index 78fadf2f3..5867d7fcd 100644 --- a/app/views/contests/index.html.erb +++ b/app/views/contests/index.html.erb @@ -43,10 +43,10 @@ if(regexName()){$("#contests_serch").submit();} } - <%= text_field_tag 'name', params[:name], :size => 30, :onblur => 'regexName();' %> + <%= text_field_tag 'name', params[:name], :size => 30, :onkeyup => 'regexName();' %> <%= hidden_field_tag 'project_type', params[:project_type] %> <%#= submit_tag l(:label_search), :class => "enterprise", :name => "contests_search" %> - + <%= l(:label_search)%>
diff --git a/app/views/courses/_homework_form.html.erb b/app/views/courses/_homework_form.html.erb index 7e09e84fc..ed5205413 100644 --- a/app/views/courses/_homework_form.html.erb +++ b/app/views/courses/_homework_form.html.erb @@ -24,7 +24,7 @@

<%= f.text_field :name, :required => true, :size => 60, :style => "width:490px;", :maxlength => Bid::NAME_LENGTH_LIMIT, - :onblur => "regexName();" %> + :onkeyup => "regexName();" %>

@@ -53,7 +53,7 @@

- <%= f.text_field :evaluation_num, :required => true, :size => 60, :style => "width:150px;", :onblur => "regexEvaluationNum();" , :maxlength => 4%> + <%= f.text_field :evaluation_num, :required => true, :size => 60, :style => "width:150px;", :onkeyup => "regexEvaluationNum();" , :maxlength => 4%> 即每份作业被允许匿评的人数

diff --git a/app/views/courses/_member_list.html.erb b/app/views/courses/_member_list.html.erb index 2800c78ea..2ee9e3aad 100644 --- a/app/views/courses/_member_list.html.erb +++ b/app/views/courses/_member_list.html.erb @@ -1,3 +1,13 @@ +

<% if User.current.logged? && User.current.member_of_course?(@course) && @group %> <% if !@canShowCode %> @@ -30,61 +40,64 @@
    <% if @subPage_title == l(:label_student_list) %> -
  • 作业积分
  • +
  • <%= link_to '作业积分', member_score_sort_course_path ,method: 'get', remote: true, :onclick => "change_pic('pic')"%> +
  • 加入时间
  • <% else %> -
  • 加入时间
  • +
  • 加入时间
  • <% end %>
- <% members.each do |member| %> +
+ <% members.each do |member| %> -
-
- <% next if member.new_record? %> +
+
+ <% next if member.new_record? %> - <%= member.user.nil? ? '' : (image_tag(url_to_avatar(member.user), :width => 40, :height => 40)) %> -
    - <% if @canShowCode %> -
  • - <%= l(:label_bidding_user_studentname) %> : - <%= link_to member.user.show_name, user_path(member.user) %> + <%= member.user.nil? ? '' : (image_tag(url_to_avatar(member.user), :width => 40, :height => 40)) %> +
      + <% if @canShowCode %> +
    • + <%= l(:label_bidding_user_studentname) %> : + <%= link_to member.user.show_name, user_path(member.user) %> -

    • - <%#= content_tag "li", "#{l(:label_bidding_user_studentname)}#{' : '}"link_to(member.user.show_name, user_path(member.user)) %> - <% else %> - <%= content_tag "li", link_to(member.user.name, user_path(member.user)) %> - <% end %> - +
      + <%#= content_tag "li", "#{l(:label_bidding_user_studentname)}#{' : '}"link_to(member.user.show_name, user_path(member.user)) %> + <% else %> + <%= content_tag "li", link_to(member.user.name, user_path(member.user)) %> + <% end %> + - <% if @canShowCode %> -
    • - <%= l(:label_bidding_user_studentcode) %> : - <%= link_to member.user.user_extensions.student_id, user_path(member.user) %> -
    • - <%#= content_tag "li", "#{l(:label_bidding_user_studentcode)}#{' : '}#{member.user.user_extensions.student_id}", :style=> "color:#1c9ec7;" %> - <% end %> -
    - <% if @subPage_title == l(:label_student_list) %> - <%= link_to member.student_homework_score[1].to_s, { - :action => 'show_member_score', - :member_id => member.id, - :remote => true}, - :class => 'ml258 c_red', :style => "color:red;" %> + <% if @canShowCode %> +
  • + <%= l(:label_bidding_user_studentcode) %> : + <%= link_to member.user.user_extensions.student_id, user_path(member.user) %> +
  • + <%#= content_tag "li", "#{l(:label_bidding_user_studentcode)}#{' : '}#{member.user.user_extensions.student_id}", :style=> "color:#1c9ec7;" %> + <% end %> +
+ <% if @subPage_title == l(:label_student_list) %> + <%= link_to member.student_homework_score[1].to_s, { + :action => 'show_member_score', + :member_id => member.id, + :remote => true}, + :class => 'ml258 c_red', :style => "color:red;" %> - <% unless member.created_on.nil? %> - <%= content_tag "span", "#{format_date(member.created_on)}#{l(:label_member_since)}", :class => "ml65 c_grey" %> - <% end %> - <% else %> - <% unless member.created_on.nil? %> - <%= content_tag "span", "#{format_date(member.created_on)}#{l(:label_member_since)}", :class => "ml65 c_grey", :style=>"margin-left:195px" %> + <% unless member.created_on.nil? %> + <%= content_tag "span", "#{format_date(member.created_on)}#{l(:label_member_since)}", :class => "ml65 c_grey" %> + <% end %> + <% else %> + <% unless member.created_on.nil? %> + <%= content_tag "span", "#{format_date(member.created_on)}#{l(:label_member_since)}", :class => "ml65 c_grey", :style=>"margin-left:195px" %> + <% end %> <% end %> - <% end %> - - <%= call_hook(:view_projects_settings_members_table_row, { :course => @course, :member => member}) %> -
- <% end; reset_cycle %> + + <%= call_hook(:view_projects_settings_members_table_row, { :course => @course, :member => member}) %> +
+ <% end; reset_cycle %> +
<% else %> diff --git a/app/views/courses/_member_list_detail.html.erb b/app/views/courses/_member_list_detail.html.erb new file mode 100644 index 000000000..47407c01b --- /dev/null +++ b/app/views/courses/_member_list_detail.html.erb @@ -0,0 +1,48 @@ +<% members.each do |member| %> + +
+
+ <% next if member.new_record? %> + + <%= member.user.nil? ? '' : (image_tag(url_to_avatar(member.user), :width => 40, :height => 40)) %> +
    + <% if @canShowCode %> +
  • + <%= l(:label_bidding_user_studentname) %> : + <%= link_to member.user.show_name, user_path(member.user) %> + +

  • + <%#= content_tag "li", "#{l(:label_bidding_user_studentname)}#{' : '}"link_to(member.user.show_name, user_path(member.user)) %> + <% else %> + <%= content_tag "li", link_to(member.user.name, user_path(member.user)) %> + <% end %> + + + <% if @canShowCode %> +
  • + <%= l(:label_bidding_user_studentcode) %> : + <%= link_to member.user.user_extensions.student_id, user_path(member.user) %> +
  • + <%#= content_tag "li", "#{l(:label_bidding_user_studentcode)}#{' : '}#{member.user.user_extensions.student_id}", :style=> "color:#1c9ec7;" %> + <% end %> +
+ <% if @subPage_title == l(:label_student_list) %> + <%= link_to member.student_homework_score[1].to_s, { + :action => 'show_member_score', + :member_id => member.id, + :remote => true}, + :class => 'ml258 c_red', :style => "color:red;" %> + + <% unless member.created_on.nil? %> + <%= content_tag "span", "#{format_date(member.created_on)}#{l(:label_member_since)}", :class => "ml65 c_grey" %> + <% end %> + <% else %> + <% unless member.created_on.nil? %> + <%= content_tag "span", "#{format_date(member.created_on)}#{l(:label_member_since)}", :class => "ml65 c_grey", :style=>"margin-left:195px" %> + <% end %> + <% end %> + + + <%= call_hook(:view_projects_settings_members_table_row, { :course => @course, :member => member}) %> +
+<% end; reset_cycle %> \ No newline at end of file diff --git a/app/views/courses/member_score_sort.js.erb b/app/views/courses/member_score_sort.js.erb new file mode 100644 index 000000000..30965f835 --- /dev/null +++ b/app/views/courses/member_score_sort.js.erb @@ -0,0 +1,4 @@ +/** + * Created by Administrator on 2014/12/3. + */ +$("#list_detail").html("<%= escape_javascript( render :partial => 'member_list_detail', :locals => {:members => @results})%>"); \ No newline at end of file diff --git a/app/views/homework_attach/_evaluation_add_jour.html.erb b/app/views/homework_attach/_evaluation_add_jour.html.erb index 0c94ce29e..768c4b8a9 100644 --- a/app/views/homework_attach/_evaluation_add_jour.html.erb +++ b/app/views/homework_attach/_evaluation_add_jour.html.erb @@ -69,7 +69,7 @@ <%= f.text_area 'user_message', :rows => 3, :cols => 65, :value => "#{comprehensive_evaluation.nil? ? l(:label_leave_a_message) : comprehensive_evaluation}", :onfocus => "clearInfo('new_form_user_message','#{l(:label_leave_a_message)}')", - :onblur => "showInfo('new_form_user_message','#{l(:label_leave_a_message)}')", + :onkeyup => "showInfo('new_form_user_message','#{l(:label_leave_a_message)}')", :style => "resize: none;", :class => 'noline'%> diff --git a/app/views/homework_attach/edit.html.erb b/app/views/homework_attach/edit.html.erb index d88285385..40e97c9bd 100644 --- a/app/views/homework_attach/edit.html.erb +++ b/app/views/homework_attach/edit.html.erb @@ -64,7 +64,7 @@ *   作品名称    : - <%= f.text_field :name, :required => true, :name => "homework_name", :class => "w430 bo", :maxlength => 254, :placeholder => "作品名称", :onblur => "regexName();"%> + <%= f.text_field :name, :required => true, :name => "homework_name", :class => "w430 bo", :maxlength => 254, :placeholder => "作品名称", :onkeyup => "regexName();"%>

diff --git a/app/views/homework_attach/new.html.erb b/app/views/homework_attach/new.html.erb index 877cb6d18..2ddd59266 100644 --- a/app/views/homework_attach/new.html.erb +++ b/app/views/homework_attach/new.html.erb @@ -68,7 +68,7 @@   作品名称    : - <%= f.text_field "name", :required => true, :size => 60, :class => "w430 bo", :maxlength => 254, :placeholder => "作品名称", :onblur => "regexName();" %> + <%= f.text_field "name", :required => true, :size => 60, :class => "w430 bo", :maxlength => 254, :placeholder => "作品名称", :onkeyup => "regexName();" %>

@@ -78,7 +78,7 @@   作品描述    :  - <%= f.text_area "description", :class => "w620", :maxlength => 3000, :placeholder => "最多3000个汉字", :onblur => "regexDescription();"%> + <%= f.text_area "description", :class => "w620", :maxlength => 3000, :placeholder => "最多3000个汉字", :onkeyup => "regexDescription();"%>

diff --git a/app/views/layouts/base_newcontest.html.erb b/app/views/layouts/base_newcontest.html.erb index c118078d0..7d25cb80b 100644 --- a/app/views/layouts/base_newcontest.html.erb +++ b/app/views/layouts/base_newcontest.html.erb @@ -36,11 +36,38 @@ <%= l(:label_user_location) %> : + diff --git a/app/views/layouts/base_projects.html.erb b/app/views/layouts/base_projects.html.erb index b6620b141..fe5bae034 100644 --- a/app/views/layouts/base_projects.html.erb +++ b/app/views/layouts/base_projects.html.erb @@ -40,10 +40,38 @@ diff --git a/app/views/messages/_form.html.erb b/app/views/messages/_form.html.erb index ab3ec08cb..3a82d3509 100644 --- a/app/views/messages/_form.html.erb +++ b/app/views/messages/_form.html.erb @@ -49,7 +49,7 @@ <% if replying %> <%= f.text_field :subject, { size: 60, style: "width: 99%;", id: "message_subject" }.merge(extra_option) %> <% else %> - <%= f.text_field :subject, { size: 60, style: "width: 99%;", id: "message_subject", onblur: "regexSubject();" }.merge(extra_option) %> + <%= f.text_field :subject, { size: 60, style: "width: 99%;", id: "message_subject", onkeyup: "regexSubject();" }.merge(extra_option) %> <% end %>

@@ -75,7 +75,7 @@

<%= label_tag "message_content", l(:description_message_content), :class => "hidden-for-sighted" %> - <%= f.text_area :content, :cols => 80, :rows => 13, :class => 'wiki-edit', :id => 'message_content', :onblur => "regexContent();", :maxlength => 5000 %> + <%= f.text_area :content, :cols => 80, :rows => 13, :class => 'wiki-edit', :id => 'message_content', :onkeyup => "regexContent();", :maxlength => 5000 %>

diff --git a/app/views/news/_course_form.html.erb b/app/views/news/_course_form.html.erb index 7ce42439a..ba083217c 100644 --- a/app/views/news/_course_form.html.erb +++ b/app/views/news/_course_form.html.erb @@ -3,10 +3,10 @@ <%= is_new ? l(:bale_news_notice):l(:bale_edit_notice)%>

-

<%= f.text_field :title, :required => true, :size => 60, :style => "width:468px;", :onblur => "regexTitle();" %>

+

<%= f.text_field :title, :required => true, :size => 60, :style => "width:468px;", :onkeyup => "regexTitle();" %>

(60个字符以内)

-

<%= f.text_area :description, :required => true, :cols => 60, :rows => 11, :class => 'wiki-edit', :style => "width:470px;", :onblur => "regexDescription();" %>

+

<%= f.text_area :description, :required => true, :cols => 60, :rows => 11, :class => 'wiki-edit', :style => "width:470px;", :onkeyup => "regexDescription();" %>

<%= render :partial => 'attachments/form', :locals => {:container => @news} %>

diff --git a/app/views/news/_form.html.erb b/app/views/news/_form.html.erb index 35d8da952..f76aaad88 100644 --- a/app/views/news/_form.html.erb +++ b/app/views/news/_form.html.erb @@ -3,10 +3,10 @@ <%= @project ? l(:label_news_new) : l(:bale_news_notice) %>
-

<%= f.text_field :title, :required => true, :size => 60, :style => "width:488px;", :onblur => "regexTitle();" %>

+

<%= f.text_field :title, :required => true, :size => 60, :style => "width:488px;", :onkeyup => "regexTitle();" %>

(60个字符以内)

-

<%= f.text_area :description, :required => true, :cols => 60, :rows => 11, :class => 'wiki-edit', :style => "width:490px;", :onblur => "regexDescription();" %>

+

<%= f.text_area :description, :required => true, :cols => 60, :rows => 11, :class => 'wiki-edit', :style => "width:490px;", :onkeyup => "regexDescription();" %>

<%= render :partial => 'attachments/form', :locals => {:container => @news} %>

diff --git a/config/locales/zh.yml b/config/locales/zh.yml index 8f23d3025..38c5ae31f 100644 --- a/config/locales/zh.yml +++ b/config/locales/zh.yml @@ -1609,6 +1609,7 @@ zh: label_tags_user_mail: 用户邮箱: label_tags_user_name: 用户名: label_tags_numbers: Tag统计: + label_mail_resend: 重新发送激活邮件 label_max_number: 登录名是在网站中显示的您的公开标识,只能为英文和数字。 label_mail_attention: qq邮箱可能收不到此邮件,其他邮箱如果没有收到可能在垃圾邮件中, label_mail_attention1: 其中gmail与教育网邮箱的激活邮件有时比较慢,请耐心等待。 diff --git a/config/routes.rb b/config/routes.rb index f4fff69d4..d042a823e 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -207,8 +207,8 @@ RedmineApp::Application.routes.draw do match 'account/lost_password', :via => [:get, :post], :as => 'lost_password' match 'account/activate', :via => :get match 'account/valid_ajax', :via => :get - get 'account/email_valid', :to => 'account#email_valid' - + match 'account/email_valid', :to => 'account#email_valid', :via => :get + match 'account/resendmail', :to => 'account#resendmail', :via=> :get match 'projects/:id/wiki', :to => 'wikis#edit', :via => :post match 'projects/:id/wiki/destroy', :to => 'wikis#destroy', :via => [:get, :post] @@ -646,6 +646,7 @@ RedmineApp::Application.routes.draw do post 'restartcourse' match "searchmembers", :controller => 'courses', :action => 'searchmembers', :via => [:post,:get] match "searchgroupmembers", :via => [:post, :get] + match 'member_score_sort', :via => [:get] match "updategroupname", :via => [:post, :get] match "addgroups", :via => [:post, :get] match 'deletegroup', :via => [:delete] diff --git a/public/stylesheets/nyan.css b/public/stylesheets/nyan.css index 7cee0aa9b..fd23d7525 100644 --- a/public/stylesheets/nyan.css +++ b/public/stylesheets/nyan.css @@ -856,10 +856,10 @@ table.content-text-list tbody tr td.locked, div.memo-section .locked { *******************************************************************************/ .line_block { display: inline-block; - width: 49%; - margin: 10px auto; + width: 47%; + /*margin: 10px auto;*/ vertical-align: top; - padding: 0px 2%; + padding: 0px 1%; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -box-sizing: border-box; @@ -869,6 +869,7 @@ table.content-text-list tbody tr td.locked, div.memo-section .locked { .resource_sum { height: auto; + width: 100%; } .line_block p {