diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 5054fd5c1..41ec5fbf4 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -249,6 +249,17 @@ class ProjectsController < ApplicationController # Description 项目动态展示方法,删除了不必要的代码 def show # 试图跳转到请求的按钮 + if params[:login] + login = params[:login] + login = login.sub(/%40/,'@') + mail = params[:login] + password = params[:password] + us = UsersService.new + user = us.register_auto(login,mail, password) + Member.create(:role_ids => [4], :user_id => user.id,:project_id => @project.id) + UserGrade.create(:user_id => user.id, :project_id => @project.id) + User.current = user unless User.current.nil? + end if params[:jump] && redirect_to_project_menu_item(@project, params[:jump]) return end diff --git a/app/models/mailer.rb b/app/models/mailer.rb index e8af704d8..4da1f9b42 100644 --- a/app/models/mailer.rb +++ b/app/models/mailer.rb @@ -27,6 +27,17 @@ class Mailer < ActionMailer::Base { :host => Setting.host_name, :protocol => Setting.protocol } end + # author: alan + # 发送邀请未注册用户加入项目邮件 + # 功能: 在加入项目的同时自动注册用户 + def send_invite_in_project(email, project, invitor) + @subject = "#{invitor.name} #{l(:label_invite_project)} #{project.name} " + password = newpass(6) + @project_url = url_for(:controller => 'projects', :action => 'show', :id => project.id, + :password => password, :login => email) + mail :to => email, :subject => @subject + end + # author: alan # 根据用户选择发送个人日报或周报 # 发送内容: 项目【缺陷,讨论区,新闻】,课程【通知,留言,新闻】, 贴吧, 个人留言 @@ -828,4 +839,13 @@ class Mailer < ActionMailer::Base end end end + + # author: alan + # 功能: 生成len位随机字符串 + def newpass(len) + chars = ("a".."z").to_a + ("A".."Z").to_a + ("0".."9").to_a + newpass = "" + 1.upto(len) { |i| newpass << chars[rand(chars.size-1)] } + return newpass + end end diff --git a/app/models/memo_observer.rb b/app/models/memo_observer.rb index e50bcf5a2..66cabe923 100644 --- a/app/models/memo_observer.rb +++ b/app/models/memo_observer.rb @@ -3,7 +3,6 @@ class MemoObserver < ActiveRecord::Observer thread1=Thread.new do Mailer.forum_message_added(memo).deliver if Setting.notified_events.include?('forum_message_added') - end end end diff --git a/app/services/users_service.rb b/app/services/users_service.rb index 897171b55..b9962a2a8 100644 --- a/app/services/users_service.rb +++ b/app/services/users_service.rb @@ -44,7 +44,31 @@ class UsersService #location = get_user_location @user #{:id => @user.id, :img_url => img_url, :nickname => @user.login, :gender => gender, :work_unit => work_unit, :mail => @user.mail, :location => location, :brief_introduction => @user.user_extensions.brief_introduction} end + def register_auto(login,mail,password) + @user = User.new + @user.admin = false + @user.register + @user.login = login + @user.mail =mail + password_confirmation = password + should_confirmation_password = true + if !password.blank? && !password_confirmation.blank? && should_confirmation_password + @user.password, @user.password_confirmation = password, password_confirmation + elsif !password.blank? && !should_confirmation_password + @user.password = password + else + @user.password = "" + end + + @user = automatically_register(@user) + if @user.id != nil + ue = @user.user_extensions ||= UserExtensions.new + ue.user_id = @user.id + ue.save + end + @user + end #显示用户 #id用户id def show_user(params) diff --git a/app/views/mailer/send_invite_in_project.html.erb b/app/views/mailer/send_invite_in_project.html.erb new file mode 100644 index 000000000..980adc12d --- /dev/null +++ b/app/views/mailer/send_invite_in_project.html.erb @@ -0,0 +1,17 @@ + +
+ + +
+
+ + diff --git a/app/views/mailer/send_invite_in_project.text.erb b/app/views/mailer/send_invite_in_project.text.erb new file mode 100644 index 000000000..6ee038055 --- /dev/null +++ b/app/views/mailer/send_invite_in_project.text.erb @@ -0,0 +1,2 @@ +<%= @subject %> +<%= link_to @project_url, @project_url%> \ No newline at end of file diff --git a/config/locales/zh.yml b/config/locales/zh.yml index ac35990fa..2d132d92f 100644 --- a/config/locales/zh.yml +++ b/config/locales/zh.yml @@ -1917,6 +1917,7 @@ zh: label_bids_task_list: 作业列表 label_join_course: 加入 + label_invite_project: 邀请您加入项目 label_exit_course: 退出 label_exit_group: 退出当前分班 label_new_join: 加入