mail weekly

email_verify
alan 10 years ago
parent 6226974f0b
commit 6f9e2bad63

@ -21,7 +21,7 @@ gem 'acts-as-taggable-on', '2.4.1'
gem 'spreadsheet'
gem 'ruby-ole'
#gem 'email_verifier', path: 'lib/email_verifier'
gem 'rufus-scheduler'
group :development do
gem 'grape-swagger'
gem 'grape-swagger-ui', git: 'https://github.com/guange2015/grape-swagger-ui.git'

@ -252,6 +252,8 @@ GEM
ruby-ole (1.2.11.7)
ruby-openid (2.1.8)
rubyzip (1.1.6)
rufus-scheduler (3.0.8)
tzinfo
sass (3.3.10)
sass-rails (3.2.6)
railties (~> 3.2.0)
@ -339,6 +341,7 @@ DEPENDENCIES
rspec-rails (= 2.13.1)
ruby-ole
ruby-openid (~> 2.1.4)
rufus-scheduler
sass-rails (~> 3.2.3)
seems_rateable!
selenium-webdriver (~> 2.42.0)

@ -5,6 +5,7 @@ class CoursesController < ApplicationController
helper :members
helper :words
before_filter :authorize1, :only => [:show, :feedback]
menu_item :overview
menu_item :feedback, :only => :feedback
menu_item :homework, :only => :homework

@ -17,6 +17,7 @@
class MessagesController < ApplicationController
include ApplicationHelper
before_filter :authorize1, :only => [:show]
menu_item :boards
default_search_scope :messages
before_filter :find_board, :only => [:new, :preview,:edit]

@ -17,6 +17,7 @@
class NewsController < ApplicationController
layout 'base_projects'# by young
before_filter :authorize1, :only => [:show]
default_search_scope :news
model_object News
before_filter :find_model_object, :except => [:new, :create, :index]

@ -19,7 +19,7 @@
# Description 封装代码,简化代码,格式化代码,
class ProjectsController < ApplicationController
layout :select_project_layout
before_filter :authorize1, :only => [:show]
menu_item :overview, :only => :show
menu_item :roadmap, :only => :roadmap
menu_item :settings, :only => :settings

@ -22,8 +22,8 @@ class JournalsForMessage < ActiveRecord::Base
:foreign_key => 'jour_id',
:conditions => "#{self.table_name}.jour_type = 'Project' "
belongs_to :course,
:foreign_key => 'jour_id',
:conditions => "#{self.table_name}.jour_type = 'Course' "
:foreign_key => 'jour_id'
belongs_to :jour, :polymorphic => true
belongs_to :user

@ -27,6 +27,80 @@ class Mailer < ActionMailer::Base
{ :host => Setting.host_name, :protocol => Setting.protocol }
end
# author: alan
# 根据用户选择发送个人日报或周报
# 发送内容: 项目【缺陷,讨论区,新闻】,课程【通知,留言,新闻】, 贴吧, 个人留言
def send_for_user_activities(user, date_to, days)
date_from = date_to - days.days
# 生成token用于直接点击登录
token = Token.new(:user =>user , :action => 'autologin')
token.save
@token = token
@user_url = url_for(my_account_url(user,:token => @token.value))
# 查询user参加的项目及课程
projects = user.projects
courses = user.courses
project_ids = projects.map{|project| project.id}.join(",")
course_ids = courses.map {|course| course.id}.join(",")
# 查询user的缺陷包括发布的跟踪的以及被指派的缺陷
@issues = Issue.find_by_sql("select DISTINCT i.* from issues i, watchers w
where (i.assigned_to_id = #{user.id} or i.author_id = #{user.id}
or (w.watchable_type = 'Issue' and w.watchable_id = i.id and w.user_id = #{user.id}))
and (i.created_on between #{date_from} and #{date_to}) order by i.created_on desc")
# 查询课程作业包括老师发布的作业以及user提交作业
@bids ||= [] # 老师发布的作业
courses.each do |course|
@bids << course.homeworks.where("created_at between #{date_from} and #{date_to} order by i.created_on desc")
end
# user 提交的作业
@homeworks = HomeworkAttach.where("user_id=#{user.id} and (created_at between #{date_from} and #{date_to})")
# 查询user在课程。项目中发布的讨论帖子
messages = Message.find_by_sql("select DISTINCT * from messages where author_id = #{user.id} and (created_on between #{date_from} and #{date_to}) order by i.created_on desc")
@course_messages ||= []
@project_messages ||= []
messages.each do |msg|
if msg.project
@project_messages << msg
elsif msg.course
@course_messages << msg
end
end
# 查询user在课程中发布的通知项目中发的新闻
@course_news = News.find_by_sql("select DISTINCT n.* from news n
where n.course_id in (#{course_ids})
and (created_on between #{date_from} and #{date_to}) order by i.created_on desc")
@project_news = News.find_by_sql("select DISTINCT n.* from news n where n.project_id in (#{project_ids})
and (created_on between #{date_from} and #{date_to}) order by i.created_on desc")
# 查询user在课程及个人中留言
@course_journal_messages = JournalsForMessage.find_by_sql("select DISTINCT * from journals_for_messages where
jour_type='Course' and user_id = #{user.id}
and (created_on between #{date_from} and #{date_to}) order by i.created_on desc")
@user_journal_messages = user.journals_for_messages.where("m_parent_id IS NULL and (created_on between #{date_from} and #{date_to})").order('created_on DESC')
# 查询课程课件更新
@attachments ||= []
courses.each do |course|
@attachments << course.attachments.where("created_on between #{date_from} and #{date_to}").order('created_at DESC')
end
# 查询user新建贴吧或发布帖子
@forums = Forum.find_by_sql("select DISTINCT * from forums where creator_id = #{user.id} and (created_at between #{date_from} and #{date_to}) order by i.created_on desc")
@memos = Memo.find_by_sql("select DISTINCT m.* from memos m, forums f where (m.author_id = #{user.id} or (m.forum_id = f.id and f.creator_id = #{user.id}))
and (created_at between #{date_from} and #{date_to}) order by i.created_on desc")
if days == 1
subject = "[ #{user.show_name} : #{date_from} - #{l(:label_day_mail)}]"
else
subject = "[ #{user.show_name} : #{l(:label_week_mail)}]"
end
mail :to => user.mail,:subject => "[ #{user.show_name} : #{l(:notice_successful_create)}]"
end
# 贴吧新建贴吧发送邮件
# example Mailer.forum(forum).deliver
def forum_add(forum)
@ -140,7 +214,6 @@ class Mailer < ActionMailer::Base
@author = issue.author
@issue = issue
user = User.find_by_mail(recipients)
token = Token.new(:user =>user , :action => 'autologin')
token.save
@token = token

@ -24,7 +24,7 @@ class User < Principal
DEVELOPER = 3
include Redmine::SafeAttributes
seems_rateable_rater
# Different ways of displaying/sorting users
USER_FORMATS = {
:firstname_lastname => {
@ -149,7 +149,7 @@ class User < Principal
scope :by_join_date, order("created_on DESC")
############################# added by liuping 关注
acts_as_watchable
seems_rateable_rater
has_one :user_extensions,:dependent => :destroy
## end

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -0,0 +1,23 @@
#!/usr/bin/env ruby
require 'rubygems'
require 'rufus-scheduler'
#users = User.where("mail_notification = 'week' or mail_notification = 'day'")
scheduler = Rufus::Scheduler.new
scheduler.cron('*/1 * * * *') do
users = User.where("login like '%alan%'")
users.each do |user|
# if user.mail_notification == "week"
# cycle = '*/1 * * * *'
# else
# cycle = '*/2 * * * *'
# end
Rails.logger.info "send mail to #{user.show_name}(#{user.mail}) at #{Time.now}"
Thread.start do
Mailer.send_for_user_activities(user, Date.today, 7).deliver
end
end
end

@ -248,6 +248,9 @@ zh:
# end
field_name: 名称
field_enterprise_name: 组织名称
label_week_mail: 一周动态
label_day_mail: 一日动态
#added by huang
field_tea_name: 教师
field_couurse_time: 学时
@ -497,6 +500,9 @@ zh:
permission_paret_in_homework: 加入作业
permission_view_homework_attaches: 查看作业附件
permission_view_course_journals_for_messages: 查看课程留言
view_course_journals_for_messages: 课程留言
label_send_course_journals_for_messages: 发布了留言
label_send_course_messages: 发布了讨论
permission_select_course_modules: 选择课程模块
permission_view_course_files: 查看课程资源
permission_add_course: 新建课程
@ -511,6 +517,7 @@ zh:
permission_upload_attachments: 资源上传
project_module_issue_tracking: 问题跟踪
project_moule_boards_show: 项目论坛
project_module_time_tracking: 时间跟踪
project_module_news: 新闻
project_module_documents: 文档
@ -657,6 +664,8 @@ zh:
label_user_login_attending_contest: 您还没有登录,请登录后参赛
label_user_login_score_and_comment: 您还没有登录,请登录后对作品进行打分评价
label_user_login_notificationcomment: 您还没有登录,请登录后参加评论
label_user_message: 您的留言
label_show_your_message: 给您的留言
#end
#by huang # modified by bai
label_college: 高校进入
@ -727,6 +736,7 @@ zh:
label_attachment: 文件
label_attachment_new: 新建文件
label_file_upload: 上传资料
label_course_file_upload: 上传了课件
label_attachment_delete: 删除文件
label_attachment_plural: 文件
label_file_added: 文件已添加
@ -745,6 +755,8 @@ zh:
label_settings: 配置
label_overview: 近期动态
label_course_overview: "课程动态"
label_project_overview: "项目动态"
label_homework_overview: 作业动态
label_question_student: 作业交流 #bai
label_homework_commit: 提交作业 #huang
label_homework_info: 提交情况 #huang
@ -992,6 +1004,7 @@ zh:
label_project_newother: "查看其他评论"
label_project_newshare: "分享了"
label_project_notice: "发布了通知:"
label_project_issue: "发布了问题:"
label_project_newadd: "添加了"
label_project_unadd: "暂无项目,赶快去创建吧!"
label_project_un: "该用户暂未参与任何项目!"
@ -1591,6 +1604,7 @@ zh:
label_exist_repository_path: 定义已有版本库URL路径定义格式file://, http://, https://, svn://
label_project_no_activity: 该项目暂无动态!
label_course_homework_un: 暂未发布任何作业
label_course_homework: 发布了作业
label_follow_no_requirement: 暂未关注任何需求!
label_no_user_respond_you: 暂无任何用户对您进行反馈!
label_tags_issue: 问题名称:
@ -1662,6 +1676,7 @@ zh:
label_project_no_follow: 该项目暂未被关注!
label_no_bid_project: 暂无参与项目
label_no_course_project: 暂无已提交的作业!
label_course_submit_homework: 提交了作业
label_bids_reward_method: 奖励方式
label_bids_reward_what: 输入奖励内容
label_call_bonus: 奖金
@ -1769,6 +1784,7 @@ zh:
label_wiki_number: wiki的数量
label_message_number: 留言的数量
label_activity_number: 个人动态数量
label_activities: 个人动态
label_issue_message_number: 对issue的留言数量
label_code_submit_number: 代码提交次数
label_topic_number: 讨论区发言数量
@ -1954,6 +1970,7 @@ zh:
label_hot_project: '热门项目'
label_borad_project: 项目讨论区
label_borad_course: 课程讨论区
view_borad_course: 课程讨论
label_memo_create_succ: 发布成功
label_memo_create_fail: 发布失败
label_forum_create_succ: 贴吧新建成功
@ -2117,6 +2134,7 @@ zh:
label_attendingcontestwork_release_person: 发布人员
label_attendingcontestwork_adaptive_system: 系统支持
label_attendingcontestwork_download: 作品下载
label_course_attendingcontestwork_download: 课件下载
label_attendingcontestwork_developers: 开发人员
label_attendingcontestwork_average_scores: 平均评分
label_attendingcontestwork_release_time: 发布时间
@ -2370,7 +2388,7 @@ zh:
mail_issue_from_project: "项目问题跟踪"
mail_issue_attachments: "附件:"
mail_issue_reply: "我要回复"
mail_footer: "退订Trustie社区任务提醒"
# 课程资源上传
# edit by meng
# 课程资源上传>

Loading…
Cancel
Save