diff --git a/app/controllers/admin/mail_cron_logs_controller.rb b/app/controllers/admin/mail_cron_logs_controller.rb new file mode 100644 index 000000000..b07c9d5cd --- /dev/null +++ b/app/controllers/admin/mail_cron_logs_controller.rb @@ -0,0 +1,31 @@ +class Admin::MailCronLogsController < OrbitBackendController + + layout "new_admin" + before_filter :authenticate_user! + before_filter :is_admin? + + def index + + @mail_cron_logs = MailCronLog.all.desc(:created_at).page(params[:page_main] ).per('20') + + end + + def destroy + @mail_cron_log = MailCronLog.find(params[:id]) + @mail_cron_log.destroy + + respond_to do |format| + format.html { redirect_to(admin_mail_cron_logs_url) } + # format.xml { head :ok } + format.js + end + end + + def delete + if params[:ids] + mail_cron_logs = MailCronLog.any_in(:_id => params[:ids]).destroy_all + end + redirect_to admin_mail_cron_logs_url(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options]) + end + +end diff --git a/app/controllers/admin/mail_crons_controller.rb b/app/controllers/admin/mail_crons_controller.rb new file mode 100644 index 000000000..b9c2575bf --- /dev/null +++ b/app/controllers/admin/mail_crons_controller.rb @@ -0,0 +1,119 @@ +class Admin::MailCronsController < OrbitBackendController + + layout "new_admin" + before_filter :authenticate_user! + before_filter :is_admin? + + def index + + @mail_logs = MailCron.all.asc(:mail_sentdate).page(params[:page_main] ).per('20') + + end + + def show + end + + def new + @mail_cron = MailCron.new + + respond_to do |format| + format.html # new.html.erb + format.xml { render :xml => @mail_cron } + end + end + + def create + @mail_cron = MailCron.new(params[:mail_cron]) + + @mail_cron.create_user_id = current_user.id + @mail_cron.update_user_id = current_user.id + + respond_to do |format| + if @mail_cron.save + format.html { redirect_to(admin_mail_crons_url) } + format.xml { render :xml => @mail_cron, :status => :created, :location => @mail_cron } + else + format.html { render :action => "new" } + format.xml { render :xml => @mail_cron.errors, :status => :unprocessable_entity } + end + end + end + + def edit + @mail_cron = MailCron.find(params[:id]) + end + + def update + + + + @datas = MailCron.where(:mail_sentdate.lte => Time.now, :mail_sent => false) + + @datas.each do |mail_data| + + @mail_j = 0 + @read_mails = Array.new + + @mails = mail_data.mail_to.split(",") + + @mails.each do |send_mail| + + @read_mails << send_mail + + @mail_j += 1 + + if 0 == @mail_j % 30 + MailCronMailer.cron_mail( mail_data.id, @read_mails.join(',') ).deliver + @read_mails = Array.new + + sleep 10 + end + + end + + if !@read_mails.join(',').blank? + MailCronMailer.cron_mail( mail_data.id, @read_mails.join(',') ).deliver + @read_mails = Array.new + + sleep 10 + end + + end + + @mail_cron = MailCron.find(params[:id]) + + @mail_cron.update_user_id = current_user.id + + respond_to do |format| + if @mail_cron.update_attributes(params[:mail_cron]) + format.html { redirect_to(admin_mail_crons_url) } + format.js { render 'toggle_enable' } + format.xml { head :ok } + else + format.html { render :action => "edit" } + format.xml { render :xml => @mail_cron.errors, :status => :unprocessable_entity } + end + end + end + + def destroy + @mail_cron = MailCron.find(params[:id]) + @mail_cron.destroy + + respond_to do |format| + format.html { redirect_to(admin_mail_crons_url) } + # format.xml { head :ok } + format.js + end + end + + def delete + if params[:ids] + mail_crons = MailCron.any_in(:_id => params[:ids]).destroy_all + end + redirect_to admin_mail_crons_url(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options]) + end + + protected + +end diff --git a/app/jobs/email_cron.rb b/app/jobs/email_cron.rb new file mode 100644 index 000000000..51dec1166 --- /dev/null +++ b/app/jobs/email_cron.rb @@ -0,0 +1,42 @@ +class EmailCron + @queue = :mail + + def self.perform + + @datas = MailCron.where(:mail_sentdate.lte => Time.now) + + @datas.each do |mail_data| + + @mail_j = 0 + @read_mails = Array.new + + @mails = mail_data.mail_to.split(",") + + @mails.each do |send_mail| + + @read_mails << send_mail + + @mail_j += 1 + + if 0 == @mail_j % 30 + MailCronMailer.cron_mail( mail_data.id, @read_mails.join(',') ).deliver + @read_mails = Array.new + + sleep 10 + end + + end + + if !@read_mails.join(',').blank? + MailCronMailer.cron_mail( mail_data.id, @read_mails.join(',') ).deliver + @read_mails = Array.new + + sleep 10 + end + + end + + end + + +end \ No newline at end of file diff --git a/app/mailer/mail_cron_mailer.rb b/app/mailer/mail_cron_mailer.rb new file mode 100644 index 000000000..a469e9820 --- /dev/null +++ b/app/mailer/mail_cron_mailer.rb @@ -0,0 +1,81 @@ +class MailCronMailer < ActionMailer::Base + default :from => "orbit_test@rulingcom.com" + + def get_settings + + @site = Site.first + + @smtp_settings = { + :address => @site['site_settings']['address'], + :port => @site['site_settings']['port'], + :domain => @site['site_settings']['domain'], + :authentication => @site['site_settings']['authentication'], + # :user_name => @site['site_settings']['user_name'], + # :password => @site['site_settings']['password'], + :tls => (@site['site_settings']['tls'] == '0' ? false : true ) , + :enable_starttls_auto => (@site['site_settings']['enable_starttls_auto'] == '0' ? false : true ) + } + + if !@site['site_settings']['user_name'].blank? + @smtp_settings[:user_name] = @site['site_settings']['user_name'] + end + + if !@site['site_settings']['password'].blank? + @smtp_settings[:password] = @site['site_settings']['password'] + end + + + ActionMailer::Base.smtp_settings = @smtp_settings + + end + + + def cron_mail( data_id, group_mail ) + + get_settings + + @data = MailCron.find(data_id) + + if @data + + @user = User.find(@data.create_user_id) + + if !@data.mail_cron_files.blank? + @data.mail_cron_files.each_with_index do |mail_cron_file, i| + file_type = File.extname(mail_cron_file.file.to_s) + file_content = Mongo::GridFileSystem.new(Mongoid.database).open(mail_cron_file.file.url.gsub("/gridfs/", "").force_encoding("UTF-8"), 'r') + attachments["#{mail_cron_file.title}#{file_type}"] = file_content.read + end + end + + if !@data.mail_content["text"].blank? + mail( :from => @data.mail_from, :reply_to => @data.mail_reply_to, :bcc => group_mail, :subject => @data.mail_subject ) do |format| + format.html { render :text => @data.mail_content["text"] } + end + elsif !@data.mail_content["template"].blank? + mail( :from => @data.mail_from, :reply_to => @data.mail_reply_to, :bcc => group_mail, :subject => @data.mail_subject ) do |format| + format.html { render :template => @data.mail_content["template"], :collection => @data.mail_content } + end + end + + + @mail_cron_log = { + :mail_subject => @data.mail_subject, + :mail_to => group_mail, + :mail_user => @user.user_id, + :mailer_count => group_mail.split(",").size, + :mail_from_app => @data.mail_from_app + } + + @mail_cron_log = MailCronLog.new(@mail_cron_log) + + + @mail_cron_log.save + + @data.destroy + + end + + end + +end \ No newline at end of file diff --git a/app/models/mail_cron.rb b/app/models/mail_cron.rb new file mode 100644 index 000000000..de885c9a4 --- /dev/null +++ b/app/models/mail_cron.rb @@ -0,0 +1,32 @@ +class MailCron + + include Mongoid::Document + include Mongoid::Timestamps + + + field :mail_from_app + field :mail_from + field :mail_to + field :mail_reply_to + field :mail_subject + field :mail_content, :type => Hash + field :mail_sentdate , :type => DateTime + + field :create_user_id + field :update_user_id + + has_many :mail_cron_files, :autosave => true, :dependent => :destroy + + accepts_nested_attributes_for :mail_cron_files, :allow_destroy => true + + after_save :save_mail_cron_files + + + def save_mail_cron_files + self.mail_cron_files.each do |t| + if t.should_destroy + t.destroy + end + end + end +end \ No newline at end of file diff --git a/app/models/mail_cron_file.rb b/app/models/mail_cron_file.rb new file mode 100644 index 000000000..ceaa2d09f --- /dev/null +++ b/app/models/mail_cron_file.rb @@ -0,0 +1,13 @@ +class MailCronFile + + include Mongoid::Document + include Mongoid::Timestamps + + mount_uploader :file, AssetUploader + + field :should_destroy, :type => Boolean + field :title + + belongs_to :mail_cron + +end diff --git a/app/models/mail_cron_log.rb b/app/models/mail_cron_log.rb new file mode 100644 index 000000000..8aed7e2e0 --- /dev/null +++ b/app/models/mail_cron_log.rb @@ -0,0 +1,14 @@ +class MailCronLog + + include Mongoid::Document + include Mongoid::Timestamps + + + field :mail_subject + field :mail_to + field :mail_user + field :mailer_count + field :mail_from_app + + +end \ No newline at end of file diff --git a/app/views/admin/mail_cron_logs/_clear_filters.html.erb b/app/views/admin/mail_cron_logs/_clear_filters.html.erb new file mode 100644 index 000000000..3b9cc6187 --- /dev/null +++ b/app/views/admin/mail_cron_logs/_clear_filters.html.erb @@ -0,0 +1,3 @@ +
+ <%= link_to content_tag(:i, nil, :class => 'icons-cycle') + t(:clear), admin_mail_crons_path(:filter => @filter, :sort => params[:sort], :direction => params[:direction], :clear => true, :type => type), :class => "btn btn-small js_history" %> +
\ No newline at end of file diff --git a/app/views/admin/mail_cron_logs/_filter.html.erb b/app/views/admin/mail_cron_logs/_filter.html.erb new file mode 100644 index 000000000..63882b8f0 --- /dev/null +++ b/app/views/admin/mail_cron_logs/_filter.html.erb @@ -0,0 +1,11 @@ + + +<% content_for :page_specific_javascript do %> + <%= javascript_include_tag "sort_header" %> +<% end %> \ No newline at end of file diff --git a/app/views/admin/mail_cron_logs/_mail_cron_log.html.erb b/app/views/admin/mail_cron_logs/_mail_cron_log.html.erb new file mode 100644 index 000000000..35c59b37c --- /dev/null +++ b/app/views/admin/mail_cron_logs/_mail_cron_log.html.erb @@ -0,0 +1,29 @@ + + + <% if is_manager? %> + <%= check_box_tag 'to_delete[]', mail_cron_log.id, false, :class => "checkbox_in_list" %> + <% end -%> + + + <%= mail_cron_log.mail_subject %> +
+ +
+ + + <%= mail_cron_log.mail_to.gsub(/,/, "
").html_safe %> + + + <%= mail_cron_log.mail_user %> + + + <%= mail_cron_log.mail_from_app %> + + + <%= display_date_time(mail_cron_log.created_at) %> + + \ No newline at end of file diff --git a/app/views/admin/mail_cron_logs/_sort_headers.html.erb b/app/views/admin/mail_cron_logs/_sort_headers.html.erb new file mode 100644 index 000000000..1faf81142 --- /dev/null +++ b/app/views/admin/mail_cron_logs/_sort_headers.html.erb @@ -0,0 +1,6 @@ +<%= render_sort_bar(true, delete_admin_mail_cron_logs_path(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options]), + ['subject', 'subject','span2', :subject] , + ['mail_to', 'mail_to','span2', :mail_to] , + ['mail_user', 'mail_user','span2', :mail_user] , + ['mail_from_app', 'mail_from_app','span2', :mail_from_app] , + ['sentdate', 'sentdate','span2', :sentdate] ).html_safe %> \ No newline at end of file diff --git a/app/views/admin/mail_cron_logs/destroy.js.erb b/app/views/admin/mail_cron_logs/destroy.js.erb new file mode 100644 index 000000000..9e65f1760 --- /dev/null +++ b/app/views/admin/mail_cron_logs/destroy.js.erb @@ -0,0 +1 @@ +$("#<%= dom_id @mail_cron_log %>").remove(); \ No newline at end of file diff --git a/app/views/admin/mail_cron_logs/index.html.erb b/app/views/admin/mail_cron_logs/index.html.erb new file mode 100644 index 000000000..07d13f255 --- /dev/null +++ b/app/views/admin/mail_cron_logs/index.html.erb @@ -0,0 +1,28 @@ +<% content_for :side_bar do %> + <%= render :partial => 'layouts/side_bar', :locals => {:link_name => t('site.settings'), :link_url => admin_site_site_info_path(@site), :icon => 'icons-cog', :side_bar_content => 'admin/sites/side_bar'} %> +<% end %> + + <%= render 'filter' %> + + + + + + + + + + + + + <%= render :partial => "mail_cron_log",:collection=> @mail_cron_logs%> + +
+ + +
+ +
+ \ No newline at end of file diff --git a/app/views/admin/mail_cron_logs/index.js.erb b/app/views/admin/mail_cron_logs/index.js.erb new file mode 100644 index 000000000..6605cc4a6 --- /dev/null +++ b/app/views/admin/mail_cron_logs/index.js.erb @@ -0,0 +1,3 @@ +$("#sort_headers").html("<%= j render 'sort_headers' %>"); +$("#tbody_mail_cron_logs").html("<%= j render :partial => 'mail_cron_log', :collection => @mail_cron_logs %>"); +$("#mail_cron_log_pagination").html("<%= j paginate @mail_cron_logs, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil} %>"); \ No newline at end of file diff --git a/app/views/admin/mail_crons/_clear_filters.html.erb b/app/views/admin/mail_crons/_clear_filters.html.erb new file mode 100644 index 000000000..3b9cc6187 --- /dev/null +++ b/app/views/admin/mail_crons/_clear_filters.html.erb @@ -0,0 +1,3 @@ +
+ <%= link_to content_tag(:i, nil, :class => 'icons-cycle') + t(:clear), admin_mail_crons_path(:filter => @filter, :sort => params[:sort], :direction => params[:direction], :clear => true, :type => type), :class => "btn btn-small js_history" %> +
\ No newline at end of file diff --git a/app/views/admin/mail_crons/_filter.html.erb b/app/views/admin/mail_crons/_filter.html.erb new file mode 100644 index 000000000..63882b8f0 --- /dev/null +++ b/app/views/admin/mail_crons/_filter.html.erb @@ -0,0 +1,11 @@ + + +<% content_for :page_specific_javascript do %> + <%= javascript_include_tag "sort_header" %> +<% end %> \ No newline at end of file diff --git a/app/views/admin/mail_crons/_form.html.erb b/app/views/admin/mail_crons/_form.html.erb new file mode 100644 index 000000000..40d7bdebc --- /dev/null +++ b/app/views/admin/mail_crons/_form.html.erb @@ -0,0 +1,122 @@ +
+<% # encoding: utf-8 %> + + <%= f.error_messages %> + + + +
+ +
+

<%= t(:date_) %>

+
+
+ <%= f.datetime_picker :mail_sentdate, :picker_type => 'separated', :label => t(:start) %> +
+
+
+ +
+ + + + + +
+
+ + <%= f.label :mail_subject ,t(:mail_subject)%> + <%= f.text_field :mail_subject %> + + <%= f.label :mail_from ,t(:mail_from)%> + <%= f.text_field :mail_from %> + + <%= f.label :mail_reply_to ,t(:mail_reply_to)%> + <%= f.text_field :mail_reply_to %> + + <%= f.label :mail_to ,t(:mail_to)%> + <%= f.text_field :mail_to %> + + <%= f.label :mail_content ,t(:mail_content)%> + <%= f.text_area :mail_content, :class=>"span12", :cols=>"25", :rows=>"10" %> + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + <% @mail_cron.mail_cron_files.each_with_index do |mail_cron_file, i| %> + <%= f.fields_for :mail_cron_files, mail_cron_file do |f| %> + <%= render :partial => 'form_file', :object => mail_cron_file, :locals => {:f => f, :i => i} %> + <% end %> + <% end %> + +
FileFile Name
+
+ <%= hidden_field_tag 'plugin_file_field_count', @mail_cron.mail_cron_files.count %> + ADD/新增 +
+
+ +
+ +
+ + + +
+ + +
+ <%= f.submit t('submit'), :class=>'btn btn-primary' %> + <%= link_to t('cancel'), get_go_back, :class=>"btn" %> +
+ + + + +<% content_for :page_specific_javascript do %> + <%= javascript_include_tag "archive_plugin_form" %> + +<% end %> + + +
\ No newline at end of file diff --git a/app/views/admin/mail_crons/_form_file.html.erb b/app/views/admin/mail_crons/_form_file.html.erb new file mode 100644 index 000000000..e7fe526da --- /dev/null +++ b/app/views/admin/mail_crons/_form_file.html.erb @@ -0,0 +1,35 @@ +<% # encoding: utf-8 %> + + " class='list_item'> + +
+
+ <%= f.file_field :file %> + <%= form_file.file.file ? ( link_to t(:view), form_file.file.url, {:class => 'btn', :target => '_blank', :title => t(:view)} ) : '' %> +
+
+ + + +
+ + <%= f.text_field :title %> + +
+ + + + + + <% if form_file.new_record? %> + + <% else %> + <%= f.hidden_field :id %> + + <%= f.hidden_field :should_destroy, :value => nil, :class => 'should_destroy' %> + <% end %> + + + + + diff --git a/app/views/admin/mail_crons/_mail_cron.html.erb b/app/views/admin/mail_crons/_mail_cron.html.erb new file mode 100644 index 000000000..be7cf80de --- /dev/null +++ b/app/views/admin/mail_crons/_mail_cron.html.erb @@ -0,0 +1,26 @@ + + + <% if is_manager? %> + <%= check_box_tag 'to_delete[]', mail_cron.id, false, :class => "checkbox_in_list" %> + <% end -%> + + + <%= mail_cron.mail_subject %> +
+ +
+ + + <%= mail_cron.mail_to.gsub(/,/, "
").html_safe %> + + + <%= mail_cron.mail_from_app %> + + + <%= display_date_time(mail_cron.mail_sentdate) %> + + \ No newline at end of file diff --git a/app/views/admin/mail_crons/_sort_headers.html.erb b/app/views/admin/mail_crons/_sort_headers.html.erb new file mode 100644 index 000000000..261623f7b --- /dev/null +++ b/app/views/admin/mail_crons/_sort_headers.html.erb @@ -0,0 +1,5 @@ +<%= render_sort_bar(true, delete_admin_mail_crons_path(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options]), + ['subject', 'subject','span2', :subject] , + ['mail_to', 'mail_to','span2', :mail_to] , + ['mail_from_app', 'mail_from_app','span2', :mail_from_app] , + ['sentdate', 'sentdate','span2', :sentdate] ).html_safe %> \ No newline at end of file diff --git a/app/views/admin/mail_crons/destroy.js.erb b/app/views/admin/mail_crons/destroy.js.erb new file mode 100644 index 000000000..7c22134b1 --- /dev/null +++ b/app/views/admin/mail_crons/destroy.js.erb @@ -0,0 +1 @@ +$("#<%= dom_id @mail_cron %>").remove(); \ No newline at end of file diff --git a/app/views/admin/mail_crons/edit.html.erb b/app/views/admin/mail_crons/edit.html.erb new file mode 100644 index 000000000..e3d8b2d42 --- /dev/null +++ b/app/views/admin/mail_crons/edit.html.erb @@ -0,0 +1,9 @@ +<% content_for :side_bar do %> + <%= render :partial => 'layouts/side_bar', :locals => {:link_name => t('site.settings'), :link_url => admin_site_site_info_path(@site), :icon => 'icons-cog', :side_bar_content => 'admin/sites/side_bar'} %> +<% end %> + +

<%= t('mail_cron.editing_mail_cron') %>

+ +<%= form_for @mail_cron, :url => admin_mail_cron_path(@mail_cron), :html => {:class => 'clear'} do |f| %> + <%= render :partial => 'form', :locals => {:f => f} %> +<% end %> diff --git a/app/views/admin/mail_crons/index.html.erb b/app/views/admin/mail_crons/index.html.erb new file mode 100644 index 000000000..3057dce6e --- /dev/null +++ b/app/views/admin/mail_crons/index.html.erb @@ -0,0 +1,28 @@ + +<% content_for :side_bar do %> + <%= render :partial => 'layouts/side_bar', :locals => {:link_name => t('site.settings'), :link_url => admin_site_site_info_path(@site), :icon => 'icons-cog', :side_bar_content => 'admin/sites/side_bar'} %> +<% end %> + + <%= render 'filter' %> + + + + + + + + + + + + <%= render :partial => "mail_cron",:collection=> @mail_logs%> + +
+ +
+ +
+ + \ No newline at end of file diff --git a/app/views/admin/mail_crons/index.js.erb b/app/views/admin/mail_crons/index.js.erb new file mode 100644 index 000000000..8b187b189 --- /dev/null +++ b/app/views/admin/mail_crons/index.js.erb @@ -0,0 +1,3 @@ +$("#sort_headers").html("<%= j render 'sort_headers' %>"); +$("#tbody_mail_crons").html("<%= j render :partial => 'mail_cron', :collection => @mail_crons %>"); +$("#mail_cron_pagination").html("<%= j paginate @mail_crons, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil} %>"); \ No newline at end of file diff --git a/app/views/admin/mail_crons/new.html.erb b/app/views/admin/mail_crons/new.html.erb new file mode 100644 index 000000000..06d3c7891 --- /dev/null +++ b/app/views/admin/mail_crons/new.html.erb @@ -0,0 +1,12 @@ + +<% content_for :side_bar do %> + <%= render :partial => 'layouts/side_bar', :locals => {:link_name => t('site.settings'), :link_url => admin_site_site_info_path(@site), :icon => 'icons-cog', :side_bar_content => 'admin/sites/side_bar'} %> +<% end %> + +
+

<%= t('mail_cron.new_mail_cron') %>

+<%= form_for @mail_cron, :url => admin_mail_crons_path, :html => {:class => 'clear'} do |f| %> + <%= render :partial => 'form', :locals => {:f => f} %> +<% end %> +
+ diff --git a/app/views/admin/sites/_side_bar.html.erb b/app/views/admin/sites/_side_bar.html.erb index 2a564bd52..db6ceaa85 100644 --- a/app/views/admin/sites/_side_bar.html.erb +++ b/app/views/admin/sites/_side_bar.html.erb @@ -9,6 +9,8 @@ <%#= content_tag :li, link_to(t(:theme), admin_site_ui_theme_path(@site)), :class => active_for_action('sites', 'ui_theme') %> <%= content_tag :li, link_to(t('sitemap'), admin_site_sitemap_path(@site)), :class => active_for_action('sites', 'sitemap') %> <%= content_tag :li, link_to(t('user_actions'), admin_user_actions_path), :class => active_for_action('user_actions', 'index') %> + <%= content_tag :li, link_to(t('mail.mail_cron'), admin_mail_crons_path), :class => active_for_action('mail_cron', 'index') %> + <%= content_tag :li, link_to(t('mail.mail_cron_log'), admin_mail_cron_logs_path), :class => active_for_action('mail_cron_log', 'index') %> <% end -%> <% end -%> diff --git a/config/locales/en.yml b/config/locales/en.yml index d83137253..a12932337 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -272,6 +272,8 @@ en: setting: Mail settings tls: TLS user_name: User Name + mail_cron: Scheduled Email + mail_cron_log: Email Log manager: Manager markup: Markup markup_options: Markup options diff --git a/config/locales/zh_tw.yml b/config/locales/zh_tw.yml index 7c1b180ef..bdad5d25f 100644 --- a/config/locales/zh_tw.yml +++ b/config/locales/zh_tw.yml @@ -272,6 +272,8 @@ zh_tw: setting: 電子郵件設定 tls: 電子郵件TLS user_name: 電子郵件帳號 + mail_cron: 待寄Email + mail_cron_log: Email發送記錄 manager: 管理者 markup: 輸入模式 markup_options: 標註選項 diff --git a/config/resque_schedule.yml b/config/resque_schedule.yml index 98a5da1d2..f1b41aac0 100644 --- a/config/resque_schedule.yml +++ b/config/resque_schedule.yml @@ -14,4 +14,10 @@ generate_system_summary: cron: 0 0 12 * * * class: GenerateSystemSummary args: - description: Generate the system status such as disk free space,package version list for showing at site tab \ No newline at end of file + description: Generate the system status such as disk free space,package version list for showing at site tab + + email_cron: + cron: 0 0 [10,16,22] * * * + class: EmailCron + args: + description: EmailCron diff --git a/config/routes.rb b/config/routes.rb index 527c5aa0a..716918775 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -29,6 +29,19 @@ Orbit::Application.routes.draw do get 'delete' end end + + resources :mail_crons do + collection do + get 'delete' + end + end + + resources :mail_cron_logs do + collection do + get 'delete' + end + end + resources :asset_categories resources :asset_tags resources :app_auths