email send cron & send logs for any apps
This commit is contained in:
parent
8043573370
commit
7d6df11873
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -0,0 +1,3 @@
|
|||
<div class="filter-clear">
|
||||
<%= 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" %>
|
||||
</div>
|
|
@ -0,0 +1,11 @@
|
|||
<div id="filter" class="subnav">
|
||||
<div class="filters">
|
||||
<div id="sort_headers" class="table-label">
|
||||
<%= render 'sort_headers' %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<% content_for :page_specific_javascript do %>
|
||||
<%= javascript_include_tag "sort_header" %>
|
||||
<% end %>
|
|
@ -0,0 +1,29 @@
|
|||
<tr id="<%= dom_id mail_cron_log %>" class="with_action">
|
||||
<td class="span1">
|
||||
<% if is_manager? %>
|
||||
<%= check_box_tag 'to_delete[]', mail_cron_log.id, false, :class => "checkbox_in_list" %>
|
||||
<% end -%>
|
||||
</td>
|
||||
<td class="span1-2">
|
||||
<%= mail_cron_log.mail_subject %>
|
||||
<div class="quick-edit">
|
||||
<ul class="nav nav-pills hide">
|
||||
<%if at_least_module_manager %>
|
||||
<li><%= link_to t(:delete_), admin_mail_cron_log_path(mail_cron_log), :confirm => t('sure?'), :method => :delete, :remote => true %></li>
|
||||
<% end -%>
|
||||
</ul>
|
||||
</div>
|
||||
</td>
|
||||
<td class="span2">
|
||||
<%= mail_cron_log.mail_to.gsub(/,/, "<br />").html_safe %>
|
||||
</td>
|
||||
<td class="span2">
|
||||
<%= mail_cron_log.mail_user %>
|
||||
</td>
|
||||
<td class="span2">
|
||||
<%= mail_cron_log.mail_from_app %>
|
||||
</td>
|
||||
<td class="span2">
|
||||
<%= display_date_time(mail_cron_log.created_at) %>
|
||||
</td>
|
||||
</tr>
|
|
@ -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 %>
|
|
@ -0,0 +1 @@
|
|||
$("#<%= dom_id @mail_cron_log %>").remove();
|
|
@ -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' %>
|
||||
<table class="table main-list">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="span1"></th>
|
||||
<th class="span2"></th>
|
||||
<th class="span2"></th>
|
||||
<th class="span2"></th>
|
||||
<th class="span2"></th>
|
||||
<th class="span2"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="tbody_mail_cron_logs" class="sort-holder">
|
||||
<%= render :partial => "mail_cron_log",:collection=> @mail_cron_logs%>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
<div class="form-actions form-fixed pagination-right">
|
||||
<div id="web_link_pagination" class="paginationFixed">
|
||||
<%= paginate @mail_cron_logs, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil} %>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -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} %>");
|
|
@ -0,0 +1,3 @@
|
|||
<div class="filter-clear">
|
||||
<%= 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" %>
|
||||
</div>
|
|
@ -0,0 +1,11 @@
|
|||
<div id="filter" class="subnav">
|
||||
<div class="filters">
|
||||
<div id="sort_headers" class="table-label">
|
||||
<%= render 'sort_headers' %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<% content_for :page_specific_javascript do %>
|
||||
<%= javascript_include_tag "sort_header" %>
|
||||
<% end %>
|
|
@ -0,0 +1,122 @@
|
|||
<div id= "poststuff">
|
||||
<% # encoding: utf-8 %>
|
||||
|
||||
<%= f.error_messages %>
|
||||
|
||||
<!--Widget start-->
|
||||
|
||||
<div id="sub-wiget">
|
||||
|
||||
<div id="widget-date" class="widget-box widget-size-300">
|
||||
<h3 class="widget-title"><i class="icons-calendar"></i><%= t(:date_) %></h3>
|
||||
<div class="widget-content clear">
|
||||
<div class="control-group">
|
||||
<%= f.datetime_picker :mail_sentdate, :picker_type => 'separated', :label => t(:start) %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<!--Wiget End-->
|
||||
<!--Post Start-->
|
||||
|
||||
<div id="post-body">
|
||||
<div id="post-body-content" class="clear">
|
||||
|
||||
<%= 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" %>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div>
|
||||
|
||||
<div id='plugin_files' class="plugin_files_block">
|
||||
|
||||
<table class="table table-condensed">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>File</th>
|
||||
<th>File Name</th>
|
||||
<th class="span1"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td style="text-align:center" colspan="3">
|
||||
<div id='add_plugin_file' class="info_input plugin_files_block">
|
||||
<%= hidden_field_tag 'plugin_file_field_count', @mail_cron.mail_cron_files.count %>
|
||||
<a class="add"><span class="btn btn-primary btn-small"><i class="icon-plus icon-white"></i> ADD/新增</span></a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</tfoot>
|
||||
<tbody>
|
||||
|
||||
<% @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 %>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<!--Post End-->
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-actions">
|
||||
<%= f.submit t('submit'), :class=>'btn btn-primary' %>
|
||||
<%= link_to t('cancel'), get_go_back, :class=>"btn" %>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<% content_for :page_specific_javascript do %>
|
||||
<%= javascript_include_tag "archive_plugin_form" %>
|
||||
<script>
|
||||
$('#add_plugin_file a.add').live('click', function(){
|
||||
var new_id = $(this).prev().attr('value');
|
||||
var old_id = new RegExp("new_add_plugin_files", "g");
|
||||
$(this).prev().attr('value', parseInt(new_id) + 1);
|
||||
$(this).parents('table').append(("<%= escape_javascript(add_attribute 'form_file', f, :mail_cron_files) %>").replace(old_id, new_id));
|
||||
});
|
||||
|
||||
$('.add_plugin_files_block a.delete').live('click', function(){
|
||||
$(this).parents('.list_item').remove();
|
||||
});
|
||||
|
||||
$('.action a.remove_existing_record').live('click', function(){
|
||||
$(this).next('.should_destroy').attr('value', 1);
|
||||
$("tr#add_plugin_file_" + $(this).prev().attr('value')).hide();
|
||||
});
|
||||
|
||||
</script>
|
||||
<% end %>
|
||||
|
||||
|
||||
</div>
|
|
@ -0,0 +1,35 @@
|
|||
<% # encoding: utf-8 %>
|
||||
|
||||
<tr id="<%= "plugin_file_#{form_file.id}" if !form_file.new_record? %>" class='list_item'>
|
||||
<td>
|
||||
<div class="control-group">
|
||||
<div class="controls">
|
||||
<%= f.file_field :file %>
|
||||
<%= form_file.file.file ? ( link_to t(:view), form_file.file.url, {:class => 'btn', :target => '_blank', :title => t(:view)} ) : '' %>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
|
||||
<div class="tab-content">
|
||||
|
||||
<%= f.text_field :title %>
|
||||
|
||||
</div>
|
||||
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<span class="action">
|
||||
<% if form_file.new_record? %>
|
||||
<a class="delete"><i class="icon-remove"></i></a>
|
||||
<% else %>
|
||||
<%= f.hidden_field :id %>
|
||||
<a class="remove_existing_record"><i class="icon-remove"></i></a>
|
||||
<%= f.hidden_field :should_destroy, :value => nil, :class => 'should_destroy' %>
|
||||
<% end %>
|
||||
</span>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
<tr id="<%= dom_id mail_cron %>" class="with_action">
|
||||
<td class="span1">
|
||||
<% if is_manager? %>
|
||||
<%= check_box_tag 'to_delete[]', mail_cron.id, false, :class => "checkbox_in_list" %>
|
||||
<% end -%>
|
||||
</td>
|
||||
<td class="span1-2">
|
||||
<%= mail_cron.mail_subject %>
|
||||
<div class="quick-edit">
|
||||
<ul class="nav nav-pills hide">
|
||||
<%if at_least_module_manager %>
|
||||
<li><%= link_to t(:delete_), admin_mail_cron_path(mail_cron), :confirm => t('sure?'), :method => :delete, :remote => true %></li>
|
||||
<% end -%>
|
||||
</ul>
|
||||
</div>
|
||||
</td>
|
||||
<td class="span2">
|
||||
<%= mail_cron.mail_to.gsub(/,/, "<br />").html_safe %>
|
||||
</td>
|
||||
<td class="span2">
|
||||
<%= mail_cron.mail_from_app %>
|
||||
</td>
|
||||
<td class="span2">
|
||||
<%= display_date_time(mail_cron.mail_sentdate) %>
|
||||
</td>
|
||||
</tr>
|
|
@ -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 %>
|
|
@ -0,0 +1 @@
|
|||
$("#<%= dom_id @mail_cron %>").remove();
|
|
@ -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 %>
|
||||
|
||||
<h1><%= t('mail_cron.editing_mail_cron') %></h1>
|
||||
|
||||
<%= form_for @mail_cron, :url => admin_mail_cron_path(@mail_cron), :html => {:class => 'clear'} do |f| %>
|
||||
<%= render :partial => 'form', :locals => {:f => f} %>
|
||||
<% end %>
|
|
@ -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' %>
|
||||
<table class="table main-list">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="span1"></th>
|
||||
<th class="span2"></th>
|
||||
<th class="span2"></th>
|
||||
<th class="span2"></th>
|
||||
<th class="span2"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="tbody_mail_crons" class="sort-holder">
|
||||
<%= render :partial => "mail_cron",:collection=> @mail_logs%>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div class="form-actions form-fixed pagination-right">
|
||||
<div id="web_link_pagination" class="paginationFixed">
|
||||
<%= paginate @mail_logs, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil} %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -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} %>");
|
|
@ -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 %>
|
||||
|
||||
<div id="poststuff">
|
||||
<h1><%= t('mail_cron.new_mail_cron') %></h1>
|
||||
<%= form_for @mail_cron, :url => admin_mail_crons_path, :html => {:class => 'clear'} do |f| %>
|
||||
<%= render :partial => 'form', :locals => {:f => f} %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
|
@ -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 -%>
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -272,6 +272,8 @@ zh_tw:
|
|||
setting: 電子郵件設定
|
||||
tls: 電子郵件TLS
|
||||
user_name: 電子郵件帳號
|
||||
mail_cron: 待寄Email
|
||||
mail_cron_log: Email發送記錄
|
||||
manager: 管理者
|
||||
markup: 輸入模式
|
||||
markup_options: 標註選項
|
||||
|
|
|
@ -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
|
||||
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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue