forked from spen/seminar
982 lines
38 KiB
Ruby
982 lines
38 KiB
Ruby
class SeminarsController < ApplicationController
|
|
helper MemberHelper
|
|
include MemberHelper
|
|
include ActionView::Context #vary important (only add this can access @@session from view)
|
|
include Admin::SeminarsHelper
|
|
FrontendMethods = ["show_privacy", "show_data", "check_email", "check_name", "check_availability", "signup_ok", "add_file", "edit_file", "con_login", "con_upload", "con_logout","confirm_email_page","reset_password_page","edit_login_seminar_signup"]
|
|
# include SimpleCaptcha::ControllerHelpers
|
|
def index
|
|
|
|
time_now = Time.now
|
|
|
|
seminars = SeminarMain.all.desc(:seminar_start_date).filter_by_categories
|
|
{
|
|
"seminars" => seminars,
|
|
'time_now' => time_now,
|
|
"total_pages" => seminars.total_pages
|
|
}
|
|
|
|
end
|
|
def widget
|
|
cats = OrbitHelper.widget_categories || []
|
|
widget_data_count = OrbitHelper.widget_data_count
|
|
seminars = SeminarMain.all.desc(:seminar_start_date).filter_by_categories(cats)
|
|
time_now = DateTime.now
|
|
session = OrbitHelper.request.session
|
|
seminars = seminars.map do |seminar|
|
|
registration_is_open = seminar.registration_status.present?
|
|
sign_up_not_yet = seminar.signup_start_date && time_now && seminar.signup_start_date > time_now
|
|
sign_up_overdue = seminar.signup_end_date && time_now && (seminar.signup_end_date + 1.day <= time_now)
|
|
signup_is_full = seminar.signup_is_full?
|
|
seminar_url = (@prefix_url ? @prefix_url : OrbitHelper.url_to_plugin_show(seminar.to_param, 'seminar'))
|
|
if !registration_is_open
|
|
sign_up = t('seminar.sign_up_not_open')
|
|
elsif sign_up_not_yet
|
|
sign_up = t('seminar.sign_up_not_yet')
|
|
elsif sign_up_overdue
|
|
sign_up = t('seminar.sign_up_overdue')
|
|
elsif signup_is_full
|
|
sign_up = t('seminar.sign_up_is_full')
|
|
else
|
|
sign_up_text = t('seminar.signup')
|
|
sign_up = link_to(sign_up_text, seminar.get_frontend_url(seminar_url), :target=>'_blank', :title=>sign_up_text)
|
|
end
|
|
if !seminar.registration_status.blank? && seminar.registration_status.include?('C') && (seminar.contribute_start_date <= time_now rescue false) && ( seminar.contribute_end_date.nil? || (seminar.contribute_end_date+1 >= time_now rescue false) )
|
|
sign_up += content_tag :span, :style=> "margin-left: 1em;" do
|
|
if session[:seminar_signup_id].present? && session[:seminar_main_id] == seminar.id
|
|
button_text = t('seminar_signup.uploads')
|
|
link_to(button_text, seminar.get_frontend_url(seminar_url, :con_upload), {:title=>button_text})
|
|
else
|
|
button_text = t('seminar_signup.con_login')
|
|
link_to(button_text, seminar.get_frontend_url(seminar_url, :con_login), {:title=>button_text})
|
|
end
|
|
end
|
|
end
|
|
files = seminar.seminar_files.map{|file| { "file_url" => file.file.url, "file_title" => (file.title.blank? ? File.basename(file.file.path) : file.title rescue '') } } rescue []
|
|
links = seminar.seminar_links.map{|link| { "link_url" => link.url, "link_title" => (link.title.blank? ? link.url : link.title rescue '') } } rescue []
|
|
{"title" => seminar.title,
|
|
"subtitle" => sign_up,
|
|
"category" => (seminar.category.title rescue ""),
|
|
"link_to_show" => (OrbitHelper.instance_variable_get(:@url_to_plugin_show_blank) ? 'javascript:void(0)' : seminar.get_frontend_url(seminar_url, :show_data)),
|
|
"postdate" => seminar.seminar_start_date,
|
|
"statuses" => {},
|
|
"bulletin_links" => links,
|
|
"bulletin_files" => files
|
|
}
|
|
end
|
|
{
|
|
"seminars" => seminars,
|
|
"extras" => {
|
|
"date-head" => I18n.t("seminar.seminar_start_date"),
|
|
"category-head" => I18n.t(:category),
|
|
"title-head" => I18n.t("seminar.title")
|
|
}
|
|
}
|
|
end
|
|
def custom_frontend_data
|
|
params = OrbitHelper.params
|
|
seminar = SeminarMain.find_by(:uid=>params[:uid])
|
|
@seminar = seminar
|
|
@site_in_use_locales = Site.first.in_use_locales rescue I18n.available_locales
|
|
seminar_template_setting = seminar.seminar_template_setting
|
|
@seminar_template_setting = seminar_template_setting
|
|
home_page = Page.where(:parent_page_id=>seminar.id).first
|
|
OrbitHelper.set_page(home_page) rescue nil
|
|
prefix_url = OrbitHelper.request.path.split("-").first + "-#{params[:uid]}"
|
|
@prefix_url = prefix_url
|
|
@registration_postfix = "/home/registration"
|
|
header_data = "<a href=\"#{prefix_url}#{home_page.url}\">Home</a> | " +
|
|
"<a href=\"/\">Main Site</a>"
|
|
content_style = seminar_template_setting.content_style
|
|
background_style = seminar_template_setting.background_style
|
|
background_style_info = SeminarTemplateSetting.background_style_infos[background_style].to_h
|
|
content_style_info = SeminarTemplateSetting.content_style_infos[content_style].to_h
|
|
extra_css = content_style_info["css"].to_a + background_style_info["css"].to_a
|
|
extra_js = content_style_info["js"].to_a + background_style_info["js"].to_a
|
|
template_path = content_style_info["template"]
|
|
template_info = content_style_info["info"]
|
|
custom_footer = seminar_template_setting.footer_info
|
|
if seminar_template_setting.seminar_banner_images.count != 0 || background_style_info["default_logo"]
|
|
banner_title = seminar.title
|
|
external_link = prefix_url + "/home"
|
|
images = []
|
|
if seminar_template_setting.seminar_banner_images.count == 0
|
|
images = [{
|
|
"image_link" => background_style_info["default_logo"],
|
|
"image_alt" => banner_title,
|
|
"title" => "",
|
|
"alt_title" => banner_title,
|
|
"class" => "active",
|
|
"height" => 0,
|
|
"width" => 0,
|
|
"caption" => '<div class="cycle-overlay"></div><div class="cycle-pager"></div>',
|
|
"context" => "",
|
|
"link" => external_link,
|
|
"target" => ""
|
|
}]
|
|
else
|
|
images = seminar_template_setting.seminar_banner_images.map.with_index do |image,i|
|
|
caption = (i == 0 ? '<div class="cycle-overlay"></div><div class="cycle-pager"></div>' : "")
|
|
klass = (i == 0 ? "active" : "")
|
|
alt_title = image.description
|
|
context = ""
|
|
image_link = image.file.url
|
|
{
|
|
"image_link" => image_link,
|
|
"image_alt" => alt_title,
|
|
"title" => "",
|
|
"alt_title" => alt_title,
|
|
"class" => klass,
|
|
"height" => 0,
|
|
"width" => 0,
|
|
"caption" => caption,
|
|
"context" => context,
|
|
"link" => external_link,
|
|
"target" => ""
|
|
}
|
|
end
|
|
end
|
|
custom_banner = {
|
|
"extras" => {
|
|
"ad_fx" => "fade",
|
|
"speed" => 500,
|
|
"title" => banner_title,
|
|
"banner-height" => 0,
|
|
"banner-width" => 0,
|
|
"base_image" => 0,
|
|
"timeout" => (5 * 1000),
|
|
"more" => "More"
|
|
},
|
|
"images" => images
|
|
}
|
|
else
|
|
custom_banner = nil
|
|
end
|
|
@@session = OrbitHelper.request.session
|
|
@@session[:seminar_main_id] = @seminar.id
|
|
if params[:method].present?
|
|
main_content = render_other_method
|
|
elsif params[:current_page_module] == "seminars_home"
|
|
seminar = SeminarMain.where(uid: params[:uid]).first
|
|
time_now = Time.now
|
|
data = {
|
|
"seminar" => seminar,
|
|
"time_now" => time_now
|
|
}
|
|
@_request = OrbitHelper.request
|
|
@registration_postfix = ""
|
|
if template_info["main_content"]
|
|
main_content = render_other_method("show_data",template_info["main_content"])
|
|
else
|
|
main_content = render_to_string("seminars/custom_home",:locals=>{:seminar=>seminar,
|
|
:params=>params,:session=>OrbitHelper.request.session},:layout=>false)
|
|
end
|
|
elsif params[:current_page_module] == "seminars_page"
|
|
time_now = Time.now
|
|
params = OrbitHelper.params
|
|
seminar = SeminarMain.find_by(uid: params[:uid])
|
|
registration_url = prefix_url + @registration_postfix
|
|
submission_url = prefix_url + '/home/submission'
|
|
if !seminar.registration_status.blank? && seminar.signup_start_date <= time_now && ( seminar.signup_end_date.nil? || seminar.signup_end_date+1 >= time_now )
|
|
sign_up = ('<a href="'+ registration_url + '" target="_blank">' + t('seminar.signup') + '</a>').html_safe
|
|
elsif seminar.registration_status.blank?
|
|
sign_up = t('seminar.sign_up_not_open')
|
|
elsif seminar.signup_start_date > time_now
|
|
sign_up = t('seminar.sign_up_not_yet')
|
|
else
|
|
sign_up = t('seminar.sign_up_overdue')
|
|
end
|
|
if !seminar.registration_status.blank? && seminar.registration_status.include?('C') && seminar.contribute_start_date <= time_now && ( seminar.contribute_end_date.nil? || seminar.contribute_end_date+1 >= time_now )
|
|
if @@session[:seminar_signup_id].present? && @@session[:seminar_main_id] == seminar.id
|
|
button_text = t('seminar_signup.uploads')
|
|
contribute_action = link_to(button_text, submission_url + '?method=con_upload', :title=>button_text)
|
|
else
|
|
button_text = t('seminar_signup.con_login')
|
|
contribute_action = link_to(button_text, submission_url + '?method=con_login', :title=>button_text)
|
|
end
|
|
end
|
|
data = {
|
|
'seminar' => seminar,
|
|
'sign_up' => sign_up,
|
|
'contribute_action' => contribute_action,
|
|
'time_now' => time_now,
|
|
'contribute_time_range' => SeminarMain.time_range(seminar.contribute_start_date, seminar.contribute_end_date),
|
|
'sign_up_time_range' => SeminarMain.time_range(seminar.signup_start_date, seminar.signup_end_date),
|
|
'seminar_time_range' => SeminarMain.time_range(seminar.seminar_start_date, seminar.seminar_end_date)
|
|
}
|
|
@_request = OrbitHelper.request
|
|
main_content = render_to_string("seminars/show_data",:locals=>{:action_data=>data,
|
|
:request=>OrbitHelper.request,:flash=>OrbitHelper.request.flash,
|
|
:params=>params,:session=>OrbitHelper.request.session},:layout=>false)
|
|
else
|
|
main_content = render_other_method("render_"+params[:current_page_module]) rescue nil
|
|
end
|
|
custom_datapp_data = {}
|
|
if custom_banner
|
|
custom_banner["custom_widget_type"] = "module_widget"
|
|
custom_banner["custom_widget_module"] = "ad_banner"
|
|
if custom_banner["images"].count > 1
|
|
custom_banner["custom_widget_file"] = "ad_banner_widget1"
|
|
else
|
|
custom_banner["custom_widget_file"] = "ad_banner_widget4"
|
|
end
|
|
custom_datapp_data["300"] = [custom_banner]
|
|
end
|
|
return {
|
|
"extra_body_class" => "seminar_custom_page background_style_#{background_style} content_style_#{content_style}",
|
|
"main_content"=>main_content,
|
|
"extra_css"=>extra_css,
|
|
"extra_js"=>extra_js,
|
|
"header_data" => header_data,
|
|
"prefix_url" => prefix_url,
|
|
"template_path" => template_path,
|
|
"custom_datapp_data" => custom_datapp_data,
|
|
"custom_footer" => (custom_footer.blank? ? nil : custom_footer)
|
|
}
|
|
end
|
|
def render_seminar_registration
|
|
action_data = show
|
|
@_request = OrbitHelper.request
|
|
action_data["prefix_url"] = @prefix_url
|
|
render_to_string("seminars/show",:locals=>{:action_data=>action_data,
|
|
:request=>OrbitHelper.request,:flash=>OrbitHelper.request.flash,
|
|
:params=>params,:session=>OrbitHelper.request.session},:layout=>false)
|
|
end
|
|
def render_seminar_registered_participants
|
|
action_data = {"seminar"=>@seminar, "seminar_template_setting"=>@seminar_template_setting}
|
|
@_request = OrbitHelper.request
|
|
action_data["prefix_url"] = @prefix_url
|
|
render_to_string("seminars/registered_participants",:locals=>{:action_data=>action_data,
|
|
:request=>OrbitHelper.request,:flash=>OrbitHelper.request.flash,
|
|
:params=>params,:session=>OrbitHelper.request.session},:layout=>false)
|
|
end
|
|
def render_other_method(render_method=nil,render_template=nil)
|
|
params = OrbitHelper.params
|
|
if render_method && render_template.nil?
|
|
return self.send(render_method)
|
|
end
|
|
render_method = render_method || params[:method]
|
|
render_template = render_template || render_method
|
|
params = OrbitHelper.params
|
|
action_data = self.send(render_method)
|
|
@seminar_main_url = @prefix_url + '/home/introduction'
|
|
if action_data
|
|
if render_method == "con_upload" || render_method == "signup_ok"
|
|
action_data["prefix_url"] = @prefix_url + '/home/submission'
|
|
else
|
|
action_data["prefix_url"] = @prefix_url
|
|
end
|
|
end
|
|
@_request = OrbitHelper.request
|
|
render_to_string("seminars/#{render_template}",:locals=>{:action_data=>action_data,
|
|
:request=>OrbitHelper.request,:flash=>OrbitHelper.request.flash,
|
|
:params=>params,:session=>OrbitHelper.request.session},:layout=>false).html_safe
|
|
end
|
|
def render_seminar_submission
|
|
if @@session[:seminar_signup_id]
|
|
action_data = con_upload
|
|
action_data["prefix_url"] = @prefix_url + '/home/submission'
|
|
@_request = OrbitHelper.request
|
|
render_to_string("seminars/con_upload",:locals=>{:action_data=>action_data,
|
|
:request=>OrbitHelper.request,:flash=>OrbitHelper.request.flash,
|
|
:params=>params,:session=>@@session},:layout=>false).html_safe
|
|
else
|
|
action_data = con_login
|
|
@_request = OrbitHelper.request
|
|
render_to_string("seminars/con_login",:locals=>{:action_data=>action_data,
|
|
:request=>OrbitHelper.request,:flash=>OrbitHelper.request.flash,
|
|
:params=>params,:session=>@@session},:layout=>false).html_safe
|
|
end
|
|
end
|
|
def get_referer_url_for_notice(notice_words)
|
|
referer_url = params[:referer_url].to_s
|
|
split_path = referer_url.split("/")
|
|
last_path = split_path.last
|
|
if last_path.include?("?")
|
|
referer_url = split_path[0...-1].join('/') + '/' + last_path.split('?')[0]
|
|
uri_query = last_path.split("?")[1..-1].join('?')
|
|
uri_query = uri_query.gsub(/notice=[^&]*/,'').gsub(/&+$/,'')
|
|
if uri_query.blank?
|
|
referer_url = referer_url + "?notice=#{notice_words}"
|
|
else
|
|
referer_url = referer_url + "?#{uri_query}¬ice=#{notice_words}"
|
|
end
|
|
else
|
|
referer_url = referer_url + "?notice=#{notice_words}"
|
|
end
|
|
end
|
|
def show_privacy
|
|
|
|
params = OrbitHelper.params
|
|
|
|
seminar = SeminarMain.where(uid: params[:uid]).first
|
|
|
|
seminar_agreement = SeminarAgreement.first
|
|
|
|
{
|
|
'seminar' => seminar,
|
|
"seminar_agreement" => seminar_agreement
|
|
}
|
|
|
|
end
|
|
|
|
def show_data
|
|
|
|
time_now = Time.now
|
|
|
|
params = OrbitHelper.params
|
|
|
|
seminar = SeminarMain.find_by(uid: params[:uid])
|
|
registration_is_open = seminar.registration_status.present?
|
|
sign_up_not_yet = seminar.signup_start_date && time_now && seminar.signup_start_date > time_now
|
|
sign_up_overdue = seminar.signup_end_date && time_now && (seminar.signup_end_date + 1.day <= time_now)
|
|
signup_is_full = seminar.signup_is_full?
|
|
seminar_url = (@prefix_url ? @prefix_url : OrbitHelper.url_to_show(seminar.to_param))
|
|
if !registration_is_open
|
|
sign_up = t('seminar.sign_up_not_open')
|
|
elsif sign_up_not_yet
|
|
sign_up = t('seminar.sign_up_not_yet')
|
|
elsif sign_up_overdue
|
|
sign_up = t('seminar.sign_up_overdue')
|
|
elsif signup_is_full
|
|
sign_up = t('seminar.sign_up_is_full')
|
|
else
|
|
sign_up_text = t('seminar.signup')
|
|
sign_up = link_to(sign_up_text, seminar.get_frontend_url(seminar_url), :target=>'_blank', :title=>sign_up_text)
|
|
end
|
|
|
|
if !seminar.registration_status.blank? && seminar.registration_status.include?('C') && seminar.contribute_start_date <= time_now && ( seminar.contribute_end_date.nil? || seminar.contribute_end_date+1 >= time_now )
|
|
if @@session[:seminar_signup_id].present? && @@session[:seminar_main_id] == seminar.id
|
|
button_text = t('seminar_signup.uploads')
|
|
contribute_action = link_to(button_text, seminar.get_frontend_url(seminar_url, :con_upload), :title=>button_text)
|
|
else
|
|
button_text = t('seminar_signup.con_login')
|
|
contribute_action = link_to(button_text, seminar.get_frontend_url(seminar_url, :con_login), :title=>button_text)
|
|
end
|
|
end
|
|
|
|
{
|
|
'seminar' => seminar,
|
|
'sign_up' => sign_up,
|
|
'contribute_action' => contribute_action,
|
|
'time_now' => time_now,
|
|
'contribute_time_range' => SeminarMain.time_range(seminar.contribute_start_date, seminar.contribute_end_date),
|
|
'sign_up_time_range' => SeminarMain.time_range(seminar.signup_start_date, seminar.signup_end_date),
|
|
'seminar_time_range' => SeminarMain.time_range(seminar.seminar_start_date, seminar.seminar_end_date)
|
|
}
|
|
|
|
end
|
|
|
|
def show
|
|
|
|
params = OrbitHelper.params
|
|
|
|
module_app = ModuleApp.where(:key => "seminar").first
|
|
|
|
categories = module_app.categories
|
|
|
|
seminar = SeminarMain.where(uid: params[:uid]).first
|
|
|
|
seminar_signup = SeminarSignup.new
|
|
|
|
time_now = Time.now
|
|
|
|
referer_url = OrbitHelper.request.referer
|
|
|
|
if (referer_url.nil? || referer_url.match(/(\?|&)method=show_privacy/).nil?) && !OrbitHelper.request.params[:notice]
|
|
return {
|
|
"seminar" => seminar,
|
|
"seminar_signup" => seminar_signup,
|
|
"time_now" => time_now,
|
|
"redirect_to" => "#{OrbitHelper.url_to_show(seminar.to_param)}?method=show_privacy"
|
|
}
|
|
end
|
|
|
|
|
|
{
|
|
"seminar" => seminar,
|
|
"seminar_signup" => seminar_signup,
|
|
"time_now" => time_now
|
|
}
|
|
|
|
end
|
|
|
|
def check_email
|
|
|
|
params = OrbitHelper.params
|
|
success = true
|
|
if !params[:email].blank?
|
|
count = SeminarSignup.where(:email => params[:email], :seminar_main_id => params[:no]).count
|
|
|
|
result = count > 0 ? t('seminar.already_used') : t('seminar.available')
|
|
success = count > 0 ? false : true
|
|
end
|
|
|
|
render :json => {
|
|
"result" => result,
|
|
"success" => success
|
|
}.to_json
|
|
|
|
end
|
|
|
|
def check_name
|
|
|
|
params = OrbitHelper.params
|
|
success = true
|
|
if !params[:name].blank?
|
|
count = SeminarSignup.where(:name => params[:name], :seminar_main_id => params[:no]).count
|
|
|
|
result = count > 0 ? t('seminar.already_used') : t('seminar.available')
|
|
success = count > 0 ? false : true
|
|
end
|
|
|
|
render :json => {
|
|
"result" => result,
|
|
"success" => success
|
|
}.to_json
|
|
|
|
end
|
|
|
|
def check_availability
|
|
|
|
params = OrbitHelper.params
|
|
|
|
response = {}
|
|
case params[:type]
|
|
when "seminar_signup_email"
|
|
|
|
response["success"] = SeminarSignup.where(:email => params[:value], :seminar_main_id => params[:no]).count > 0 ? false : true
|
|
end
|
|
render :json => response.to_json
|
|
end
|
|
|
|
def create
|
|
OrbitHelper.set_page(nil)
|
|
referer_url = request.referer
|
|
if referer_url
|
|
params[:url] = URI.parse(referer_url).path.sub(/\/[^\/]*$/, '').sub(/^\/#{I18n.locale}/, '')
|
|
end
|
|
OrbitHelper.set_params(params, current_user)
|
|
seminar_id = params[:seminar_signup][:seminar_main_id]
|
|
@seminar = SeminarMain.where(id: seminar_id).first
|
|
if @seminar.enable_recaptcha && (!gotcha_valid?)
|
|
notice_words = t('recaptcha.errors.verification_failed')
|
|
referer_url = get_referer_url_for_notice(notice_words)
|
|
show_alert(notice_words)
|
|
return
|
|
end
|
|
signup_limit = @seminar.signup_limit
|
|
has_counter = false
|
|
if signup_limit
|
|
if defined?(OrbitHelper::SharedMutex)
|
|
OrbitHelper::SharedMutex.synchronize do
|
|
signup_count = OrbitHelper::SharedHash['seminar'][:counter][seminar_id]
|
|
if signup_count.nil?
|
|
signup_count = SeminarSignup.where(:seminar_main_id=>@seminar.id).count
|
|
OrbitHelper::SharedHash['seminar'][:counter][seminar_id] = signup_count
|
|
end
|
|
if signup_limit > signup_count
|
|
OrbitHelper::SharedHash['seminar'][:counter][seminar_id] = signup_count + 1
|
|
has_counter = true
|
|
else
|
|
notice_words = t('seminar.sign_up_is_full')
|
|
referer_url = get_referer_url_for_notice(notice_words)
|
|
show_alert(notice_words)
|
|
return
|
|
end
|
|
end
|
|
else
|
|
signup_count = SeminarSignup.where(:seminar_main_id=>@seminar.id).count
|
|
if signup_limit <= signup_count
|
|
notice_words = t('seminar.sign_up_is_full')
|
|
referer_url = get_referer_url_for_notice(notice_words)
|
|
show_alert(notice_words)
|
|
return
|
|
end
|
|
end
|
|
end
|
|
@signup = SeminarSignup.where(name: params[:seminar_signup][:name], email: params[:seminar_signup][:email], seminar_main_id: seminar_id ).first
|
|
|
|
@seminar_signup = SeminarSignup.new(seminar_signup_params)
|
|
not_signup_yet = @signup.blank?
|
|
if not_signup_yet && @seminar_signup.save
|
|
if !params[:seminar_signup_values].nil?
|
|
seminar_signup_values_params.each_with_index do |r,i|
|
|
field_value = r.last[:id].present?
|
|
@custom_field_value = SeminarSignupValue.put_field_values(@seminar_signup, r.last, r.last[:seminar_signup_field_id], field_value)
|
|
end
|
|
seminar_reviews = SeminarReview.where(:seminar_main_id=>@seminar.id).to_a
|
|
seminar_reviews.each{|sr| sr.save}
|
|
@seminar = @seminar_signup.seminar_main
|
|
unassigned_seminar_signup_ids = @seminar.seminar_signup_ids.map{|s| s.to_s}
|
|
unassigned_seminar_signup_ids.push(@seminar_signup.id.to_s)
|
|
seminar_reviews = SeminarReview.where(:seminar_main_id=>@seminar.id).to_a
|
|
seminar_reviews.each do |sr|
|
|
unassigned_seminar_signup_ids = unassigned_seminar_signup_ids - sr.all_seminar_signup_ids
|
|
end
|
|
@seminar.unassigned_seminar_signup_ids << @seminar_signup.id.to_s
|
|
@seminar.unassigned_mode_1_seminar_signup_ids << @seminar_signup.id.to_s
|
|
@seminar.save
|
|
else
|
|
@seminar.unassigned_seminar_signup_ids << @seminar_signup.id.to_s
|
|
@seminar.unassigned_mode_1_seminar_signup_ids << @seminar_signup.id.to_s
|
|
@seminar.save
|
|
end
|
|
extra_text = "<br>#{I18n.t('seminar_signup.serial_number')}: #{@seminar_signup.display_serial_number}"
|
|
# extra_text += render_to_string("seminars/signup_email_contents",:locals=>{:seminar=>@seminar, :seminar_signup=>@seminar_signup},:layout=>false)
|
|
if params['seminar_signup']['status']=='C'
|
|
status_param = '&status='
|
|
if(@seminar.seminar_email_sets.where(:field_name => "signup").first.is_confirmation)
|
|
extra_text += "<br><div><a href='#{request.protocol + request.host_with_port + OrbitHelper.url_to_show(@seminar.to_param)}?method=confirm_email_page&token=#{@seminar_signup.token}&cid=#{@seminar_signup.id.to_s}'>" + t("seminar.click_here_to_confirm") + "</a></div>"
|
|
end
|
|
send_mail('signup',params[:seminar_signup][:email],params[:seminar_signup][:seminar_main_id],extra_text)
|
|
else
|
|
status_param = ''
|
|
if(@seminar.seminar_email_sets.where(:field_name => "signup").first.is_confirmation)
|
|
extra_text += "<br><div><a href='#{request.protocol + request.host_with_port + OrbitHelper.url_to_show(@seminar.to_param)}?method=confirm_email_page&token=#{@seminar_signup.token}&cid=#{@seminar_signup.id.to_s}'>" + t("seminar.click_here_to_confirm") + "</a></div>"
|
|
end
|
|
send_mail('signup',params[:seminar_signup][:email],params[:seminar_signup][:seminar_main_id],extra_text)
|
|
end
|
|
|
|
redirect_with_js("#{params[:referer_url].to_s.chomp('/').gsub(/\/([^\/?#]+)(|[^\/]+)$/){|f| '/'+$1}}?method=signup_ok#{status_param}&serial_number=#{@seminar_signup.display_serial_number}&seminar=#{@seminar.uid}")
|
|
|
|
else
|
|
if has_counter
|
|
OrbitHelper::SharedMutex.synchronize do
|
|
OrbitHelper::SharedHash['seminar'][:counter][seminar_id] = OrbitHelper::SharedHash['seminar'][:counter][seminar_id] - 1
|
|
end
|
|
end
|
|
if !not_signup_yet
|
|
notice_words = t('seminar.email_or_name_exist')
|
|
referer_url = get_referer_url_for_notice(notice_words)
|
|
show_alert(notice_words)
|
|
else
|
|
notice_words = t('seminar.sign_up_failed')
|
|
referer_url = get_referer_url_for_notice(notice_words)
|
|
show_alert(notice_words)
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
def update_signup_form
|
|
OrbitHelper.set_page(nil)
|
|
referer_url = request.referer
|
|
if referer_url
|
|
params[:url] = URI.parse(referer_url).path.sub(/\/[^\/]*$/, '').sub(/^\/#{I18n.locale}/, '')
|
|
end
|
|
params = OrbitHelper.params
|
|
tmp_seminar_signup_params = seminar_signup_params
|
|
@seminar_signup = SeminarSignup.find(params[:signup_id])
|
|
@seminar_signup.update_attributes(tmp_seminar_signup_params)
|
|
@seminar_signup.generate_token
|
|
if !params[:seminar_signup_values].nil?
|
|
params[:seminar_signup_values].each_with_index do |r,i|
|
|
field_value = r.last[:id].present?
|
|
@custom_field_value = SeminarSignupValue.put_field_values(@seminar_signup, r.last, r.last[:id], field_value)
|
|
end
|
|
seminar_reviews = SeminarReview.where(:seminar_main_id=>@seminar_signup.seminar_main_id).to_a
|
|
seminar_reviews.each{|sr| sr.save}
|
|
@seminar = @seminar_signup.seminar_main
|
|
unassigned_seminar_signup_ids = @seminar.seminar_signup_ids.map{|s| s.to_s}
|
|
@seminar.seminar_reviews.each do |sr|
|
|
unassigned_seminar_signup_ids = unassigned_seminar_signup_ids - sr.all_seminar_signup_ids
|
|
end
|
|
@seminar.unassigned_seminar_signup_ids = unassigned_seminar_signup_ids
|
|
@seminar.save
|
|
end
|
|
extra_text = "<br>#{I18n.t('seminar_signup.serial_number')}: #{@seminar_signup.display_serial_number}"
|
|
if tmp_seminar_signup_params['status']=='C'
|
|
status_param = '&status='
|
|
if(@seminar.seminar_email_sets.where(:field_name => "signup").first.is_confirmation)
|
|
extra_text += "<br><div><a href='#{request.protocol + request.host_with_port + OrbitHelper.url_to_show(@seminar.to_param)}?method=confirm_email_page&token=#{@seminar_signup.token}&cid=#{@seminar_signup.id.to_s}'>" + t("seminar.click_here_to_confirm") + "</a></div>"
|
|
end
|
|
send_mail('signup',tmp_seminar_signup_params[:email],tmp_seminar_signup_params[:seminar_main_id],extra_text)
|
|
else
|
|
status_param = ''
|
|
if(@seminar.seminar_email_sets.where(:field_name => "signup").first.is_confirmation)
|
|
extra_text += "<br><div><a href='#{request.protocol + request.host_with_port + OrbitHelper.url_to_show(@seminar.to_param)}?method=confirm_email_page&token=#{@seminar_signup.token}&cid=#{@seminar_signup.id.to_s}'>" + t("seminar.click_here_to_confirm") + "</a></div>"
|
|
end
|
|
send_mail('signup',tmp_seminar_signup_params[:email],tmp_seminar_signup_params[:seminar_main_id],extra_text)
|
|
end
|
|
redirect_with_js("#{params[:referer_url].to_s.chomp('/').gsub(/\/([^\/?#]+)(|[^\/]+)$/){|f| '/'+$1}}?method=signup_ok#{status_param}&serial_number=#{@seminar_signup.display_serial_number}&seminar=#{@seminar.uid}")
|
|
end
|
|
|
|
def signup_ok
|
|
params = OrbitHelper.params
|
|
msg = SeminarMain.where(:uid => params[:seminar]).first.signup_success
|
|
{
|
|
"serial_number"=> params[:serial_number],
|
|
"message" => msg
|
|
}
|
|
end
|
|
|
|
def add_file_proc
|
|
|
|
update_params = seminar_signup_contribute_params.merge('seminar_submission_values'=>params['seminar_submission_values'])
|
|
flag = true
|
|
update_params.permit!
|
|
if !update_params['seminar_submission_values'].nil?
|
|
if update_params['seminar_submission_values']['0']['value'].class==String
|
|
value = update_params['seminar_submission_values']['0']['value']
|
|
if !value.to_s.blank?
|
|
flag = false
|
|
end
|
|
else
|
|
update_params['seminar_submission_values']['0']['value'].each do |key,value|
|
|
if !value.to_s.blank?
|
|
flag = false
|
|
end
|
|
end
|
|
end
|
|
else
|
|
flag = false
|
|
end
|
|
if flag
|
|
update_params['seminar_submission_values']['0']['value']['en'] = ' '
|
|
end
|
|
@con = SeminarSignupContribute.new(update_params)
|
|
if @con.save
|
|
signup = SeminarSignup.where(id:update_params['seminar_signup_id']).first
|
|
seminar_id = signup.seminar_main_id
|
|
@seminar = SeminarMain.where(id:seminar_id).first
|
|
host_url = Site.first.root_url
|
|
if host_url == "http://"
|
|
host_url = request.protocol + request.host_with_port
|
|
end
|
|
extra_text = "<br>"+render_to_string("seminars/con_email_contents",:locals=>{:@seminar=>@seminar,
|
|
:@con=>@con,:@host_url=>host_url},:layout=>false)
|
|
send_mail('add_file',signup.email,seminar_id,extra_text)
|
|
seminar_reviews = SeminarReview.where(:seminar_main_id=>signup.seminar_main_id).to_a
|
|
seminar_reviews.each{|sr| sr.save}
|
|
@seminar = signup.seminar_main
|
|
unassigned_seminar_signup_ids = @seminar.seminar_signup_ids.map{|s| s.to_s}
|
|
@seminar.seminar_reviews.each do |sr|
|
|
unassigned_seminar_signup_ids = unassigned_seminar_signup_ids - sr.all_seminar_signup_ids
|
|
end
|
|
@seminar.unassigned_seminar_signup_ids = unassigned_seminar_signup_ids
|
|
@seminar.save
|
|
redirect_to "#{params[:referer_url].to_s.chomp('/')}/?method=con_upload"
|
|
else
|
|
redirect_to "#{params[:referer_url]}", :notice => t('recaptcha.errors.verification_failed')
|
|
end
|
|
|
|
end
|
|
|
|
def update
|
|
@con = SeminarSignupContribute.find(params[:seminar_signup_contribute][:id])
|
|
update_params = seminar_signup_contribute_params.merge('seminar_submission_values'=>params['seminar_submission_values'])
|
|
update_params.permit!
|
|
unless update_params['seminar_submission_values'].nil?
|
|
flag = true
|
|
if update_params['seminar_submission_values']['0']['value'].class==String
|
|
value = update_params['seminar_submission_values']['0']['value']
|
|
if !value.to_s.blank?
|
|
flag = false
|
|
end
|
|
else
|
|
update_params['seminar_submission_values']['0']['value'].each do |key,value|
|
|
if !value.to_s.blank?
|
|
flag = false
|
|
end
|
|
end
|
|
end
|
|
if flag
|
|
update_params['seminar_submission_values']['0']['value']['en'] = ' '
|
|
end
|
|
end
|
|
@con.update_attributes(update_params)
|
|
if @con.save
|
|
signup = SeminarSignup.where(id:update_params['seminar_signup_id']).first
|
|
seminar_id = signup.seminar_main_id
|
|
@seminar = SeminarMain.where(id:seminar_id).first
|
|
host_url = Site.first.root_url
|
|
if host_url == "http://"
|
|
host_url = request.protocol + request.host_with_port
|
|
end
|
|
extra_text = "<br>"+render_to_string("seminars/con_email_contents",:locals=>{:@seminar=>@seminar,
|
|
:@con=>@con,:@host_url=>host_url},:layout=>false)
|
|
send_mail('edit_file',signup.email,seminar_id,extra_text)
|
|
seminar_reviews = SeminarReview.where(:seminar_main_id=>signup.seminar_main_id).to_a
|
|
seminar_reviews.each{|sr| sr.save}
|
|
@seminar = signup.seminar_main
|
|
unassigned_seminar_signup_ids = @seminar.seminar_signup_ids.map{|s| s.to_s}
|
|
@seminar.seminar_reviews.each do |sr|
|
|
unassigned_seminar_signup_ids = unassigned_seminar_signup_ids - sr.all_seminar_signup_ids
|
|
end
|
|
@seminar.unassigned_seminar_signup_ids = unassigned_seminar_signup_ids
|
|
@seminar.save
|
|
redirect_to "#{params[:referer_url].to_s.chomp('/')}/?method=con_upload"
|
|
else
|
|
redirect_to "#{params[:referer_url]}", :notice => t('recaptcha.errors.verification_failed')
|
|
end
|
|
|
|
end
|
|
|
|
def del_file
|
|
|
|
con = SeminarSignupContribute.find(params[:con_no])
|
|
|
|
# seminar_signup = SeminarSignup.find_by(_id: con.seminar_signup_id )
|
|
# seminar = SeminarMain.find_by(_id: seminar_signup.seminar_main_id )
|
|
signup = con.seminar_signup
|
|
con.destroy
|
|
|
|
seminar_reviews = SeminarReview.where(:seminar_main_id=>signup.seminar_main_id).to_a
|
|
seminar_reviews.each{|sr| sr.save}
|
|
@seminar = SeminarMain.find(signup.seminar_main_id)
|
|
unassigned_seminar_signup_ids = @seminar.seminar_signup_ids.map{|s| s.to_s}
|
|
@seminar.seminar_reviews.each do |sr|
|
|
unassigned_seminar_signup_ids = unassigned_seminar_signup_ids - sr.all_seminar_signup_ids
|
|
end
|
|
@seminar.unassigned_seminar_signup_ids = unassigned_seminar_signup_ids
|
|
@seminar.save
|
|
redirect_to "#{params[:referer_url].to_s.chomp('/')}/?method=con_upload"
|
|
|
|
end
|
|
|
|
def add_file
|
|
|
|
if !@@session[:seminar_main_id].blank?
|
|
|
|
seminar = SeminarMain.find_by(id: @@session[:seminar_main_id])
|
|
seminar_signup = SeminarSignup.find_by(_id: @@session[:seminar_signup_id], seminar_main_id: @@session[:seminar_main_id] )
|
|
|
|
else
|
|
|
|
seminar = {}
|
|
seminar_signup = {}
|
|
|
|
end
|
|
|
|
con = SeminarSignupContribute.new
|
|
|
|
{
|
|
'con' => con,
|
|
'seminar' => seminar,
|
|
'seminar_signup' => seminar_signup
|
|
}
|
|
|
|
end
|
|
|
|
def edit_file
|
|
|
|
params = OrbitHelper.params
|
|
if !@@session[:seminar_main_id].blank?
|
|
seminar = SeminarMain.find_by(id: @@session[:seminar_main_id])
|
|
seminar_signup = SeminarSignup.find_by(_id: @@session[:seminar_signup_id], seminar_main_id: @@session[:seminar_main_id] )
|
|
else
|
|
seminar = {}
|
|
seminar_signup = {}
|
|
end
|
|
con = SeminarSignupContribute.find(params[:con_no])
|
|
{
|
|
'con' => con,
|
|
'seminar' => seminar,
|
|
'seminar_signup' => seminar_signup
|
|
}
|
|
|
|
end
|
|
|
|
def con_upload
|
|
|
|
time_now = Time.now
|
|
|
|
if !@@session[:seminar_main_id].blank?
|
|
|
|
seminar = SeminarMain.find_by(id: @@session[:seminar_main_id])
|
|
|
|
seminar_signup = SeminarSignup.find_by(_id: @@session[:seminar_signup_id], seminar_main_id: @@session[:seminar_main_id] ) rescue nil
|
|
|
|
show = true
|
|
seminar.seminar_submission_field_sets.each do |ssf|
|
|
if ssf.disabled && ssf.hidden
|
|
show = false
|
|
else
|
|
show = true
|
|
break
|
|
end
|
|
end
|
|
|
|
else
|
|
|
|
seminar = {}
|
|
seminar_signup = {}
|
|
|
|
end
|
|
|
|
{
|
|
'time_now' => time_now,
|
|
'seminar' => seminar,
|
|
'seminar_signup' => seminar_signup,
|
|
"show" => show
|
|
}
|
|
|
|
end
|
|
|
|
def edit_login_seminar_signup #copy from show
|
|
if !@@session[:seminar_main_id].blank?
|
|
seminar = SeminarMain.find_by(id: @@session[:seminar_main_id])
|
|
seminar_signup = SeminarSignup.find_by(_id: @@session[:seminar_signup_id], seminar_main_id: @@session[:seminar_main_id] ) rescue nil
|
|
else
|
|
seminar = {}
|
|
seminar_signup = {}
|
|
end
|
|
module_app = ModuleApp.where(:key => "seminar").first
|
|
|
|
categories = module_app.categories
|
|
|
|
time_now = Time.now
|
|
{
|
|
"seminar" => seminar,
|
|
"seminar_signup" => seminar_signup,
|
|
"time_now" => time_now
|
|
}
|
|
end
|
|
|
|
def con_logout
|
|
|
|
# redirect_to page_for_seminar_url
|
|
|
|
end
|
|
|
|
def con_login
|
|
|
|
time_now = Time.now
|
|
|
|
params = OrbitHelper.params
|
|
|
|
seminar = SeminarMain.find_by(uid: params[:uid])
|
|
|
|
{
|
|
'seminar' => seminar,
|
|
'time_now' => time_now
|
|
}
|
|
|
|
end
|
|
|
|
def reset_email
|
|
end
|
|
|
|
def reset_password_page
|
|
params = OrbitHelper.params
|
|
seminar = SeminarMain.find_by(uid: params[:uid])
|
|
seminar_signup = seminar.seminar_signups.where(:status=>'C', :id=> params[:cid], :token => params[:token]).first
|
|
password_pattern = ""
|
|
if(seminar.seminar_signup_field_sets.count != 0)
|
|
password_pattern = seminar.seminar_signup_field_sets.where(:field_name => "password").first.validator rescue ""
|
|
end
|
|
status = false
|
|
if(!seminar_signup.nil?)
|
|
status = true
|
|
end
|
|
{
|
|
"status" => status,
|
|
"seminar" => seminar,
|
|
"pattern" => password_pattern,
|
|
"cid" => params[:cid],
|
|
"token" => params[:token]
|
|
}
|
|
end
|
|
|
|
def confirm_email_page
|
|
confirm = false
|
|
params = OrbitHelper.params
|
|
uid = params[:uid]
|
|
if uid.nil?
|
|
uid = params[:page].split('-').last
|
|
end
|
|
seminar = SeminarMain.where(:uid => uid).first
|
|
if(!seminar.nil?)
|
|
signup = seminar.seminar_signups.where(:id => params[:cid], :token => params[:token]).first
|
|
if(!signup.nil?)
|
|
signup.token = nil
|
|
signup.is_confirmed = true
|
|
signup.is_confirmed_date = DateTime.now
|
|
signup.signup_confirmed_counter = signup.signup_confirmed_counter + 1
|
|
signup.save
|
|
confirm = true
|
|
end
|
|
end
|
|
{
|
|
"confirm" => confirm,
|
|
"url" => OrbitHelper.url_to_show(seminar.to_param)
|
|
}
|
|
end
|
|
|
|
def con_login_proc
|
|
|
|
seminar = SeminarMain.find_by(id: params[:seminar_signup][:seminar_main_id])
|
|
|
|
@seminar_signup = SeminarSignup.where(:status=>'C', :email=> params[:user_name], :password => params[:password], :seminar_main_id => params[:seminar_signup][:seminar_main_id]).first
|
|
|
|
if !@seminar_signup.blank?
|
|
|
|
session[:seminar_signup_id] = @seminar_signup.id
|
|
session[:seminar_main_id] = @seminar_signup.seminar_main_id
|
|
|
|
redirect_to "#{params[:referer_url].to_s.chomp('/')}/?method=con_upload"
|
|
else
|
|
redirect_to "#{params[:referer_url].to_s.chomp('/')}/?method=con_login", :notice => '登入失敗'
|
|
end
|
|
|
|
end
|
|
|
|
def reset_confirm_password_proc
|
|
params = OrbitHelper.params
|
|
seminar = SeminarMain.find(params[:seminar_id])
|
|
redirect_to "#{params[:referer_url].to_s.chomp('/')}/?method=reset_password_page" if seminar.nil?
|
|
|
|
seminar_signup = seminar.seminar_signups.where(:status =>'C', :token => params[:reset_token], :id => params[:cid]).first
|
|
if !seminar_signup.blank?
|
|
seminar_signup.password = params[:password]
|
|
seminar_signup.token = nil
|
|
seminar_signup.save
|
|
redirect_to "#{params[:referer_url].to_s.chomp('/')}/?method=con_login", :notice => t('seminar_signup.password_changed')
|
|
else
|
|
redirect_to "#{params[:referer_url].to_s.chomp('/')}/?method=con_login", :notice => t('seminar_signup.password_changed_not_ok')
|
|
end
|
|
end
|
|
|
|
def reset_password_proc
|
|
@seminar = SeminarMain.find_by(id: params[:seminar_signup][:seminar_main_id])
|
|
seminar_signup = SeminarSignup.where(:status=>'C', :email=> params[:user_name], :seminar_main_id => params[:seminar_signup][:seminar_main_id]).first
|
|
if !seminar_signup.blank?
|
|
token = seminar_signup.generate_token
|
|
extra_text = "<br><a href='#{request.protocol + request.host_with_port + params[:referer_url].to_s.chomp('/')}/?method=reset_password_page&token=#{token}&cid=#{seminar_signup.id.to_s}'>#{t("seminar.click_here_to_confirm")}</a>"
|
|
send_mail('reset_password', seminar_signup.email, @seminar.id.to_s, extra_text)
|
|
redirect_to "#{params[:referer_url].to_s.chomp('/')}/?method=reset_email", :notice => t('seminar_signup.reset_email_sent')
|
|
else
|
|
redirect_to "#{params[:referer_url].to_s.chomp('/')}/?method=reset_email", :notice => t('seminar_signup.email_not_found')
|
|
end
|
|
end
|
|
|
|
def seminar_signup_params
|
|
params.require(:seminar_signup).permit!
|
|
end
|
|
|
|
def seminar_signup_contribute_params
|
|
params.require(:seminar_signup_contribute).permit!
|
|
end
|
|
|
|
def seminar_signup_values_params
|
|
params.require(:seminar_signup_values).permit!
|
|
end
|
|
|
|
private
|
|
def show_alert(notice_words)
|
|
respond_to do |format|
|
|
format.js{
|
|
render :js => "$('.rucaptcha-image').click();alert('#{notice_words}');"
|
|
}
|
|
end
|
|
end
|
|
def redirect_with_js(url)
|
|
respond_to do |format|
|
|
format.js{
|
|
render :js => "window.location.href = '#{url}';"
|
|
}
|
|
end
|
|
end
|
|
end
|