announcement email eminder and site sso
This commit is contained in:
parent
323be8912c
commit
c2c25f6187
2
Gemfile
2
Gemfile
|
@ -1,6 +1,8 @@
|
|||
source 'http://rubygems.org'
|
||||
gem 'rails', "~> 3.2.9"
|
||||
|
||||
gem 'savon', '~> 2.2.0'
|
||||
|
||||
gem "brakeman"
|
||||
gem 'mime-types'
|
||||
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
# encoding: utf-8
|
||||
|
||||
class SessionsController < Devise::SessionsController
|
||||
prepend_before_filter :require_no_authentication, :only => [ :new, :create ]
|
||||
|
||||
require 'savon'
|
||||
|
||||
def create
|
||||
|
||||
@sys_id = params["sys_id"]
|
||||
|
||||
client = Savon.client(wsdl: 'http://sso.ntue.edu.tw/soap/soapserver.php?wsdl')
|
||||
|
||||
client.operations
|
||||
|
||||
response = client.call(:chkidno, message: { sys_id: @sys_id })
|
||||
|
||||
@id = response.body[:chkidno_response][:return][:id]
|
||||
|
||||
login_uid = @id
|
||||
|
||||
resource = User.first(conditions:{user_id: login_uid})
|
||||
|
||||
if !resource.blank?
|
||||
resource_name = resource.class.to_s.downcase
|
||||
sign_in(resource_name, resource)
|
||||
redirect_to after_sign_in_path_for(resource)
|
||||
else
|
||||
flash[:error] = "很抱歉,您無此權限或帳號登入本站,請洽本站管理員<br />Sorry, you don't have the account or authority to login. Please contact the website administrator."
|
||||
edirect_to :root
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
|
@ -10,7 +10,7 @@ generate_system_summary:
|
|||
args:
|
||||
description: Generate the system status such as disk free space,package version list for showing at site tab
|
||||
|
||||
email_cron:
|
||||
email_cron:
|
||||
cron: 0 0 [10,16,22] * * *
|
||||
class: EmailCron
|
||||
args:
|
||||
|
|
|
@ -7,6 +7,11 @@ Orbit::Application.routes.draw do
|
|||
match "/users_passwd" => "desktop/registrations#update", :as => :users_passwd, :via => :put
|
||||
end
|
||||
|
||||
devise_scope :user do
|
||||
get 'soap_login' => 'sessions#create'
|
||||
end
|
||||
|
||||
|
||||
mount Resque::Server, :at => "/admin/resque"
|
||||
mount Rack::GridFS::Endpoint.new(:db => Mongoid.database,:lookup=>:path), :at => "gridfs"
|
||||
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# encoding: utf-8
|
||||
class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
|
||||
include OrbitControllerLib::DivisionForDisable
|
||||
|
||||
|
@ -77,6 +78,9 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
|
|||
# GET /bulletins/new
|
||||
# GET /bulletins/new.xml
|
||||
def new
|
||||
|
||||
email_group_data
|
||||
|
||||
if(session[:in_validate_object].blank?)
|
||||
@bulletin = Bulletin.new(:postdate => DateTime.now)
|
||||
else
|
||||
|
@ -94,6 +98,9 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
|
|||
|
||||
# GET /bulletins/1/edit
|
||||
def edit
|
||||
|
||||
email_group_data
|
||||
|
||||
@bulletin = Bulletin.find(params[:id])
|
||||
if !current_user.admin? && (@bulletin.is_rejected? || @bulletin.is_checked?)
|
||||
redirect_to :action => :index
|
||||
|
@ -146,6 +153,13 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
|
|||
respond_to do |format|
|
||||
if @bulletin.save
|
||||
|
||||
if @bulletin.email_sent == true && @bulletin.is_checked == true
|
||||
send_email_data(@bulletin)
|
||||
|
||||
@bulletin.email_sent = false
|
||||
@bulletin.save
|
||||
end
|
||||
|
||||
format.html { redirect_to(panel_announcement_back_end_bulletins_url, :notice => t('announcement.create_bulletin_success')) }
|
||||
format.xml { render :xml => @bulletin, :status => :created, :location => @bulletin }
|
||||
# format.js
|
||||
|
@ -226,6 +240,14 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
|
|||
@bulletin.is_rejected = false
|
||||
@bulletin.de_pending!
|
||||
end
|
||||
|
||||
if @bulletin.email_sent == true && @bulletin.is_checked == true
|
||||
send_email_data(@bulletin)
|
||||
|
||||
@bulletin.email_sent = false
|
||||
@bulletin.save
|
||||
end
|
||||
|
||||
# if (params[:bulletin][:is_checked] == "false")
|
||||
# @bulletin.is_rejected = true
|
||||
# @bulletin.save!
|
||||
|
@ -293,6 +315,66 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
|
|||
|
||||
protected
|
||||
|
||||
def send_email_data(bulletin)
|
||||
|
||||
@site = Site.first
|
||||
@user = User.find(bulletin.create_user_id)
|
||||
@host = request.host_with_port
|
||||
|
||||
email_group_data
|
||||
|
||||
@group_mail = Array.new
|
||||
|
||||
bulletin.email_group.each do |egroup|
|
||||
|
||||
if @email_group_data.include?(egroup) and (egroup == '0' or egroup == '1' or egroup == '2' or egroup == '3')
|
||||
|
||||
@group_mail << @email_group_data[egroup]["email"]
|
||||
|
||||
elsif @email_group_data.include?(egroup) and egroup == '4'
|
||||
|
||||
@group_mail << bulletin.other_mailaddress
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
if !@group_mail.join.blank?
|
||||
|
||||
@mail_content = {
|
||||
"host" => @host,
|
||||
"site_title" => @site.title,
|
||||
"title" => bulletin.title,
|
||||
"template" => 'announcement_mailer/cron_mail',
|
||||
"url" => "http://#{@host}#{panel_announcement_front_end_bulletin_path(bulletin, :category_id => bulletin.bulletin_category.id)}"
|
||||
}
|
||||
|
||||
@mail_cron = {
|
||||
:mail_from_app => 'announcement',
|
||||
:mail_from => @user.email,
|
||||
:mail_reply_to => @user.email,
|
||||
:mail_subject => "#{t("announcement.mail_subject",:site_title => @site.title)}:#{bulletin.title}",
|
||||
:mail_to => @group_mail.join(','),
|
||||
:mail_content => @mail_content ,
|
||||
:mail_sentdate => bulletin.email_sentdate,
|
||||
:create_user_id => bulletin.create_user_id,
|
||||
:update_user_id => bulletin.create_user_id
|
||||
}
|
||||
|
||||
@mail_cron = MailCron.new(@mail_cron)
|
||||
|
||||
@mail_cron.save
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def email_group_data
|
||||
|
||||
@email_group_data = Bulletin.email_group_data
|
||||
|
||||
end
|
||||
|
||||
def delete_out_invalid_date_from_params
|
||||
if((params[:bulletin]["deadline(1i)"] && params[:bulletin]["deadline(1i)"].blank?) or (params[:bulletin]["deadline(2i)"] && params[:bulletin]["deadline(2i)"].blank?) or (params[:bulletin]["deadline(3i)"] && params[:bulletin]["deadline(3i)"].blank?))
|
||||
params[:bulletin].delete("deadline(1i)")
|
||||
|
|
|
@ -41,6 +41,12 @@ class Bulletin
|
|||
|
||||
field :public, :type => Boolean, :default => true
|
||||
|
||||
|
||||
field :email_sent, :type => Boolean, :default => false
|
||||
field :email_sentdate , :type => DateTime
|
||||
field :email_group, :type => Array
|
||||
field :other_mailaddress
|
||||
|
||||
scope :can_display, where(is_checked: true, is_rejected: false, is_pending: false)
|
||||
scope :available_for_lang, ->(locale){ where("available_for_#{locale}".to_sym => true) }
|
||||
|
||||
|
@ -218,6 +224,18 @@ class Bulletin
|
|||
|
||||
protected
|
||||
|
||||
def self.email_group_data
|
||||
|
||||
@email_group_data = {
|
||||
'0'=> {"name"=>I18n.t('announcement.email_group_data_0'), "email"=>"alluser@tea.ntue.edu.tw"},
|
||||
'1'=> {"name"=>I18n.t('announcement.email_group_data_1'), "email"=>"allstu@tea.ntue.edu.tw"},
|
||||
'2'=> {"name"=>I18n.t('announcement.email_group_data_2'), "email"=>"allgrad@tea.ntue.edu.tw"},
|
||||
'3'=> {"name"=>I18n.t('announcement.email_group_data_3'), "email"=>"allad@tea.ntue.edu.tw"},
|
||||
'4'=> {"name"=>I18n.t('announcement.email_group_data_4')}
|
||||
}
|
||||
|
||||
end
|
||||
|
||||
def check_deadline
|
||||
if(!self.deadline.nil? and (self.deadline < self.postdate ))
|
||||
self.deadline = nil
|
||||
|
|
29
vendor/built_in_modules/announcement/app/views/announcement_mailer/cron_mail.html.erb
vendored
Normal file
29
vendor/built_in_modules/announcement/app/views/announcement_mailer/cron_mail.html.erb
vendored
Normal file
|
@ -0,0 +1,29 @@
|
|||
<% # encoding: utf-8 %>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF">
|
||||
<div style="text-ident:20px">
|
||||
</div>
|
||||
|
||||
<%= t('announcement.mail_hi') %> <br /><br />
|
||||
<%= t('announcement.mail_url_view') %> <br /><br />
|
||||
<a href="<%= @data.mail_content["url"] %>" target="_blank"> <%= @data.mail_content["title"] %> </a> <br /><br />
|
||||
</div>
|
||||
<span style="color:#555">--<br />
|
||||
<%= t('announcement.mail_source') %> :<a href="http://<%= @data.mail_content["host"] %>" target="_blank"> <%= @data.mail_content["site_title"] %> </a><br />
|
||||
<%= t('announcement.mail_time') %> <%= DateTime.now %>
|
||||
</span>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -265,6 +265,50 @@
|
|||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="widget" class="widget-box">
|
||||
<div class="widget-action clear">
|
||||
<a class="action"><i title="Added to the file" class="icon-exclamation-sign icon-white tip"></i></a>
|
||||
</div>
|
||||
<h3 class="widget-title"><i class="icons-bell"></i><%= t('announcement.email_eminder')%></h3>
|
||||
<div class="widget-content">
|
||||
<div class="controls">
|
||||
<label class="checkbox inline"><input id="remind-check" type="checkbox" value="1" name="bulletin[email_sent]"><%= t('announcement.activate_email_eminder')%></label>
|
||||
<div id="content-box">
|
||||
<hr />
|
||||
|
||||
<%= f.datetime_picker :email_sentdate, :picker_type => 'separated', :label => t("announcement.email_sentdate") %>
|
||||
|
||||
<br />
|
||||
|
||||
<%= f.label :email_group ,t("announcement.email_group")%>
|
||||
<div class="form-inline">
|
||||
<ul class="nav nav-pills">
|
||||
<% @email_group_data.collect do |k,v| %>
|
||||
<li class="pull-left">
|
||||
<%= check_box_tag 'bulletin[email_group][]', k, @bulletin.email_group.include?(k), :id => "field-#{k}" %>
|
||||
<label for="field-<%= k %>"><%= v["name"] %></label>
|
||||
<%= hidden_field_tag 'bulletin[email_group][]', '' %>
|
||||
</li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<%= f.label :other_mailaddress ,"#{t("announcement.other_mailaddress")}(#{t("announcement.other_mailaddress_note")})"%>
|
||||
<%= f.text_area :other_mailaddress, :class=>"span12", :cols=>"25", :rows=>"10" %>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
@ -300,6 +344,11 @@
|
|||
$(this).parents('table').append(("<%= escape_javascript(add_attribute 'form_bulletin_file', f, :bulletin_files) %>").replace(old_id, new_id));
|
||||
});
|
||||
$('.for_preview').popover({ html : true });
|
||||
|
||||
$('#remind-check').prop('checked') ? '':$('#content-box').addClass('hide')
|
||||
$('#remind-check').on('change', function() {
|
||||
$(this).prop('checked') ? $('#content-box').removeClass('hide'):$('#content-box').addClass('hide')
|
||||
})
|
||||
});
|
||||
</script>
|
||||
<% end %>
|
||||
|
|
|
@ -38,3 +38,20 @@ en:
|
|||
bulletins_and_web_links: Bulletins and Web Resources
|
||||
index: Index
|
||||
search: Search
|
||||
email_eminder: Email Reminder
|
||||
activate_email_eminder: Activate Email Reminder
|
||||
email_sentdate: Email Time
|
||||
email_group: Email Group
|
||||
email_group_data_0: All Faculty
|
||||
email_group_data_1: Undergraduates
|
||||
email_group_data_2: Postgraduates
|
||||
email_group_data_3: Continuing Ed. Postgraduates
|
||||
email_group_data_4: Other
|
||||
mail_subject: this is an announcement reminder from【%{site_title}】
|
||||
other_mailaddress: Other Email
|
||||
other_mailaddress_note: Divide different email accounts with ","
|
||||
mail_hi: Hi
|
||||
mail_url_view: This email is the reminder of an announcement, please click the link for the details
|
||||
mail_source: Source
|
||||
mail_time: Time
|
||||
|
||||
|
|
|
@ -38,3 +38,21 @@ zh_tw:
|
|||
bulletins_and_web_links: 索引
|
||||
index: 索引
|
||||
search: 搜尋
|
||||
email_eminder: 寄送提醒
|
||||
activate_email_eminder: 開啟寄送提醒
|
||||
email_sentdate: 寄送時間
|
||||
email_group: 寄送群組
|
||||
other_mailaddress: 其他Mail
|
||||
other_mailaddress_note: 輸入多組mail時,請用","逗號隔開
|
||||
email_group_data_0: 全校教職員
|
||||
email_group_data_1: 大學部學生
|
||||
email_group_data_2: 日間部研究生
|
||||
email_group_data_3: 進修部研究生
|
||||
email_group_data_4: 其他
|
||||
mail_subject: 來自【%{site_title}】的公告事件提醒
|
||||
mail_hi: 您好
|
||||
mail_url_view: 此封信件為公告事件提醒,請點選以下連結詳細觀看
|
||||
mail_source: 來源
|
||||
mail_time: 時間
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue