diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index 217c47866..010315c0e 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -383,16 +383,26 @@ class ProjectsController < ApplicationController
@is_zhuce = false
flash[:notice] = l(:notice_email_sent, :value => email)
end
+
+ # 邮箱地址已被注册
elsif !User.find_by_mail(params[:mail].to_s).nil?
user = User.find_by_mail(params[:mail].to_s)
if !user.member_of?(@project)
# 如果已经邀请过该用户,则不重复发送
- if InviteList.where("project_id =? and mail =?", @project.id, params[:mail].to_s).first.nil?
+ invite_list = InviteList.where("project_id =? and mail =?", @project.id, params[:mail].to_s).first
+ if invite_list.nil?
email = params[:mail]
Mailer.request_member_to_project(email, @project, User.current).deliver
flash[:notice] = l(:notice_email_sent, :value => email)
else
- flash[:error] = l(:notice_email_invited)
+ # 已经发送过了,则隔24小时才能再次发送
+ if Time.now - invite_list.created_at > 10800
+ email = params[:mail]
+ Mailer.request_member_to_project(email, @project, User.current).deliver
+ flash[:notice] = l(:notice_email_sent, :value => email)
+ else
+ flash[:error] = l(:notice_email_invited)
+ end
end
else
flash[:error] = l(:label_member_of_project, :value => email)
@@ -409,22 +419,22 @@ class ProjectsController < ApplicationController
# 发送邮件邀请新用户页面对应方法
def invite_members_by_mail
if User.current.member_of?(@project) || User.current.admin?
- @inviter_lists = InviteList.where(project_id:@project.id).all
- @inviters = []
- @waiters = []
- unless @inviter_lists.blank?
- @inviter_lists.each do|inviter_list|
- unless inviter_list.user.nil?
- if inviter_list.user.member_of?(@project)
- @inviters << inviter_list.user
- @inviters_count = @inviters.size
- else
- @waiters << inviter_list.user
- @waiters_count = @waiters.size
- end
- end
- end
- end
+ @inviter_lists = InviteList.where(project_id:@project.id)
+ # @inviters = []
+ # @waiters = []
+ # unless @inviter_lists.blank?
+ # @inviter_lists.each do|inviter_list|
+ # unless inviter_list.user.nil?
+ # if inviter_list.user.member_of?(@project)
+ # @inviters << inviter_list.user
+ # @inviters_count = @inviters.size
+ # else
+ # @waiters << inviter_list.user
+ # @waiters_count = @waiters.size
+ # end
+ # end
+ # end
+ # end
@is_zhuce = false
respond_to do |format|
format.html
diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb
index 12925b0b1..6f6ce06b8 100644
--- a/app/helpers/projects_helper.rb
+++ b/app/helpers/projects_helper.rb
@@ -75,6 +75,17 @@ module ProjectsHelper
return result
end
+# 被邀请成员的状态
+ def status_for_ivitied(ivite_list, project)
+ if ivite_list.user.member_of?(project)
+ value = "已经加入了项目!"
+ elsif ivite_list.user.active?
+ value = "邀请已发送,等待用户加入!"
+ else
+ value = "账号尚未激活,等待用户应答!"
+ end
+ end
+
# Added by young
def course_settings_tabs
tabs = [{:name => 'info', :action => :edit_project, :partial => 'projects/edit', :label => :label_information_plural, :course=>'1'},
diff --git a/app/views/projects/invite_members_by_mail.html.erb b/app/views/projects/invite_members_by_mail.html.erb
index 8c951a485..089efeb08 100644
--- a/app/views/projects/invite_members_by_mail.html.erb
+++ b/app/views/projects/invite_members_by_mail.html.erb
@@ -85,7 +85,37 @@
<%= l(:label_send_email)%>
<% end %>
+
<%# 邀请用户的状态 %>
+ <% unless @inviter_lists.blank? %>
+
+
+
+ <% @inviter_lists.each do |inviter_list| %>
+
+
+
+ <%= inviter_list.user.mail %> |
+
+ <% if inviter_list.user.active? %>
+ <%=link_to inviter_list.user.name, user_path(inviter_list.user), :class => "c_eblue" %>
+ <% else %>
+ <%= inviter_list.user.name %>
+ <% end %>
+ |
+ <%= status_for_ivitied(inviter_list, @project) %> |
+
+
+
+
+ <% end %>
+
+
+ <% end %>
+
+
<% unless @inviter_lists.blank? %>
<% unless @inviters_count.nil? %>
diff --git a/config/locales/zh.yml b/config/locales/zh.yml
index a979d7fff..69288d933 100644
--- a/config/locales/zh.yml
+++ b/config/locales/zh.yml
@@ -53,7 +53,7 @@ zh:
notice_not_authorized_message: 您访问的消息不存在!
notice_email_sent: "邮件已发送至 %{value}"
notice_email_login_used: 无法自动为该邮箱注册新用户,该邮箱地址已经有人作为登录名使用!
- notice_email_invited: 已经向该邮箱发送过邀请,正在等待对方的回复!
+ notice_email_invited: 已经向该邮箱发送过邀请,正在等待对方的回复,三小时后您可以再次发送邀请!
notice_email_error: "发送邮件时发生错误 (%{value})"
notice_feeds_access_key_reseted: 您的RSS存取键已被重置。
notice_api_access_key_reseted: 您的API访问键已被重置。
diff --git a/public/stylesheets/project.css b/public/stylesheets/project.css
index a4eaa7f0a..2d287ddd4 100644
--- a/public/stylesheets/project.css
+++ b/public/stylesheets/project.css
@@ -51,6 +51,99 @@ a:hover.icon_removem{background:url(../images/img_floatbox.png) -22px -61px no-
a.btn_free{ background:#ff5722; display:block; text-align:center; color:#fff; padding:3px 0; width:80px; margin-bottom:10px;}
a:hover.btn_free{ background:#d63502;}
.status_inviter{color: #3CA5C6;font-weight: bold; font-size: 14px }
+/*邮件邀请新列表*/
+.section{background-color: #FFF;
+ border-width: 1px;
+ border-style: solid;
+ -moz-border-top-colors: none;
+ -moz-border-right-colors: none;
+ -moz-border-bottom-colors: none;
+ -moz-border-left-colors: none;
+ border-image: none;
+ border-color: #DAE1E8 #D3DDE5 #B6C8D8;
+ box-shadow: 0px 1px 0px 0px rgba(56, 61, 72, 0.09);
+ margin-bottom: 14px;
+ border-radius: 3px;
+ margin-top: 20px;}
+
+.section .section-header {
+ /*font-size: 24px;*/
+ font-weight: 200;
+ line-height: 32px;
+}
+
+.section .section-header div.desc {
+ font-size: 14px;
+ font-weight: bold;
+ line-height: 25px;
+ padding: 20px 15px;
+ color: #333;
+}
+
+.invitations-records {
+ border-top: 1px solid #DFE4E8;
+}
+
+.invitations-records table {
+ width: 100%;
+ border-collapse: collapse;
+}
+
+.invitations-records tr {
+ border-bottom: 1px solid #EAEDED;
+}
+.invitations-records td.email {
+ width: 178px;
+}
+.invitations-records td {
+ transition-property: background;
+ transition-duration: 0.3s;
+}
+.invitations-records td, .invitations-records th {
+ padding: 15px;
+ position: relative;
+}
+/*th, td {*/
+ /*text-align: left;*/
+ /*vertical-align: top;*/
+/*}*/
+.invitations-records td.email {
+ max-width: 150px;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+.invitations-records td.text-name {
+ max-width: 150px;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ width: 150px;
+}
+.invitations-records td.text-name span.unactive {
+ max-width: 150px;
+ color: #888;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+.invitations-records td.text-status {
+ max-width: 290px;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ color: #7CAD37;
+ font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
+ width: 290px;
+}
+.invitations-records td.text-time {
+ max-width: 80px;
+ font-size: 12px;
+ color: #888;
+ display: block;
+ text-align: right;
+ width: 80px;
+}
/*成员邀请*/
.invi_search{ }
.invi_search_input{ border:1px solid #15bccf; width:180px; height:24px; color:#9b9b9b; padding-left:5px; margin-bottom:10px;}
diff --git a/public/stylesheets/public.css b/public/stylesheets/public.css
index 5ff90bb43..e6cbc41f9 100644
--- a/public/stylesheets/public.css
+++ b/public/stylesheets/public.css
@@ -131,6 +131,7 @@ a:hover.c_orange{color: #d33503;}
a.c_lorange{color:#ff9900;}
a:hover.c_lorange{color:#fff;}
a.c_blue{ color:#15bccf;}
+a.c_eblue{color: #3784D3}
a.c_setting_blue{color: #0781B4}
a.c_dblue{ color:#09658c;}
a:hover.c_dblue{ color:#15bccf;}