186 lines
8.0 KiB
Ruby
186 lines
8.0 KiB
Ruby
class OlympiamanagementsController < PagesController
|
|
include ActionView::Context #vary important (only add this can access @@session from view)
|
|
include ApplicationHelper
|
|
before_action :set_sign_up_setting
|
|
#include "#{Rails.root}/app/helpers/application_helper.rb"
|
|
def initialize
|
|
super
|
|
@app_title = "olympiamanagement"
|
|
end
|
|
def set_sign_up_setting
|
|
@sign_up_setting = SignUpSetting.last
|
|
data_arr = [{:url=>'/olympiamanagements/school_connection_data',:name=>t('olympiamanagement.school_connection_data')},
|
|
{:url=>'/olympiamanagements/add_sign_up_student_data',:name=>t('olympiamanagement.add_sign_up_student_data')},
|
|
{:url=>'/olympiamanagements/sign_up_student_data_list',:name=>t('olympiamanagement.sign_up_student_data_list')},
|
|
{:url=>'/olympiamanagements/edit_password',:name=>t('olympiamanagement.edit_password')},
|
|
{:url=>'/olympiamanagements/print_registration_form',:name=>t('olympiamanagement.print_registration_form')},
|
|
{:url=>'/olympiamanagements/logout',:name=>t('olympiamanagement.logout')}]
|
|
@breadcumb = render_to_string(:formats=> [:html] ,:partial=>'breadcumb',:locals=>{:data_arr=>data_arr})
|
|
end
|
|
def index
|
|
uid = OrbitHelper.params[:uid] rescue ""
|
|
tags = OrbitHelper.widget_tags
|
|
categories = OrbitHelper.widget_categories || []
|
|
@sign_up_setting = SignUpSetting.last
|
|
case OrbitHelper.params[:layout_type]
|
|
when "olympia_managements_instructions_index"
|
|
@olympiamanagement_instruction = @sign_up_setting.registration_instructions[I18n.locale.to_s].to_s
|
|
@sign_up_setting.attributes.to_h.each do |key,value|
|
|
@olympiamanagement_instruction = @olympiamanagement_instruction.gsub("{{#{key}}}",value.to_s)
|
|
end
|
|
@edit_link = '/admin/olympiamanagements/sign_up_setting#registration_instructions'
|
|
@edit_text = (I18n.locale.to_s == "zh_tw") ? "編輯" : "Edit"
|
|
if !OrbitHelper.current_user.nil?
|
|
@olympiamanagement_instruction += '<p class="admin-edit text-right"><a class="btn btn-primary" href="'+@edit_link+'" title="'+@edit_text+'"><i class="icon-edit"></i> '+@edit_text+'</a></p>'
|
|
end
|
|
#sign_up_hint
|
|
{
|
|
"olympiamanagement" => [],
|
|
"extras"=>{"instructions"=> @olympiamanagement_instruction}
|
|
}
|
|
when "olympia_managements_index"
|
|
@time_arr = ["year","month","day","o_clock","minute"]
|
|
start_time_str = @time_arr.map{|t| @sign_up_setting["start_"+t]}.join(' ')
|
|
end_time_str = @time_arr.map{|t| @sign_up_setting["end_"+t]}.join(' ')
|
|
time_now_str = Time.now.strftime("%Y %m %d %H %M")
|
|
if time_now_str <= end_time_str && time_now_str >= start_time_str
|
|
@error = nil
|
|
@page_content
|
|
if !OrbitHelper.params[:login_id].to_s.blank?
|
|
if OlympiaSchoolDataFields.where(:account_number=>OrbitHelper.params[:login_id]).length == 0
|
|
@error = "no_account"
|
|
else
|
|
if OlympiaSchoolDataFields.where(:account_number=>OrbitHelper.params[:login_id]).first.password != OrbitHelper.params[:login_pw]
|
|
@error = "password_error"
|
|
else
|
|
@@session[:olympia_login_id] = OrbitHelper.params[:login_id]
|
|
end
|
|
end
|
|
end
|
|
if @@session[:olympia_login_id].to_s.blank?
|
|
@page_content = render_to_string(:formats=> [:html] ,:partial=>'login')
|
|
else
|
|
@page_content = @breadcumb
|
|
|
|
end
|
|
{
|
|
"olympiamanagement" => [],
|
|
"extras"=>{"instructions"=> @page_content}
|
|
}
|
|
else
|
|
#@page_content = '<h3 style="margin: 20px 0px 10px; padding: 0px; color: rgb(0, 153, 153); font-variant-numeric: normal; font-variant-east-asian: normal; font-weight: bold; font-stretch: normal; font-size: 0.9375em; line-height: 20px; font-family: 微軟正黑體, sans-serif;">'+t('olympiamanagement.sign_up_hint')+'</h3>'
|
|
@error = nil
|
|
@page_content
|
|
if !OrbitHelper.params[:login_id].to_s.blank?
|
|
if OlympiaSchoolDataFields.where(:account_number=>OrbitHelper.params[:login_id]).length == 0
|
|
@error = "no_account"
|
|
else
|
|
if OlympiaSchoolDataFields.where(:account_number=>OrbitHelper.params[:login_id]).first.password != OrbitHelper.params[:login_pw]
|
|
@error = "password_error"
|
|
else
|
|
@@session[:olympia_login_id] = OrbitHelper.params[:login_id]
|
|
end
|
|
end
|
|
end
|
|
if @@session[:olympia_login_id].to_s.blank?
|
|
@page_content = render_to_string(:formats=> [:html] ,:partial=>'login')
|
|
else
|
|
@page_content = @breadcumb
|
|
|
|
end
|
|
{
|
|
"olympiamanagement" => [],
|
|
"extras"=>{"page_content"=> @page_content}
|
|
}
|
|
end
|
|
end
|
|
end
|
|
def school_connection_data
|
|
@time_arr = ["year","month","day","o_clock","minute"]
|
|
start_time_str = @time_arr.map{|t| @sign_up_setting["start_"+t]}.join(' ')
|
|
end_time_str = @time_arr.map{|t| @sign_up_setting["end_"+t]}.join(' ')
|
|
time_now_str = Time.now.strftime("%Y %m %d %H %M")
|
|
if !(time_now_str <= end_time_str && time_now_str >= start_time_str) || session[:olympia_login_id].to_s.blank?
|
|
render_contents_in_index_page#redirect_to :back
|
|
else
|
|
if params[:type].to_s == "update_school_data"
|
|
redirect_to :back
|
|
end
|
|
end
|
|
end
|
|
def add_sign_up_student_data
|
|
@time_arr = ["year","month","day","o_clock","minute"]
|
|
start_time_str = @time_arr.map{|t| @sign_up_setting["start_"+t]}.join(' ')
|
|
end_time_str = @time_arr.map{|t| @sign_up_setting["end_"+t]}.join(' ')
|
|
time_now_str = Time.now.strftime("%Y %m %d %H %M")
|
|
if !(time_now_str <= end_time_str && time_now_str >= start_time_str) || @@session[:olympia_login_id].to_s.blank?
|
|
redirect_to :back
|
|
else
|
|
@olympia_school_data_field = OlympiaSchoolDataFields.where(:account_number=>@@session[:olympia_login_id]).first
|
|
redirect_to :back if @olympia_school_data_field.nil?
|
|
@required_fields = [:school_contact_person_name,:department_job_title,:office_tel_number,:fax,:mobile_number,:email]
|
|
@flag = true
|
|
@required_fields.each do |field|
|
|
if @olympia_school_data_field[field].to_s.blank?
|
|
@flag = false
|
|
break
|
|
end
|
|
end
|
|
#if @flag = false
|
|
end
|
|
end
|
|
def sign_up_student_data_list
|
|
end
|
|
def edit_password
|
|
end
|
|
def print_registration_form
|
|
end
|
|
def logout
|
|
session[:olympia_login_id] = ""
|
|
redirect_to :back
|
|
end
|
|
def widget
|
|
uid = OrbitHelper.params[:uid] rescue ""
|
|
tags = OrbitHelper.widget_tags
|
|
categories = OrbitHelper.widget_categories || []
|
|
@sign_up_setting = SignUpSetting.last
|
|
@olympiamanagement_instruction = @sign_up_setting.registration_instructions[I18n.locale.to_s].to_s
|
|
@sign_up_setting.attributes.to_h.each do |key,value|
|
|
@olympiamanagement_instruction = @olympiamanagement_instruction.gsub("{{#{key}}}",value.to_s)
|
|
end
|
|
{
|
|
"olympiamanagement" => [],
|
|
"extras"=>{"instructions"=> @olympiamanagement_instruction}
|
|
}
|
|
end
|
|
def download_school_code
|
|
@OlympiaSchoolDataFields = OlympiaSchoolDataFields.all.asc(:school_code)
|
|
dir_path = 'tmp/olypiamanagement/'
|
|
#FileUtils.rm_r(dir_path, :force => true) if Dir.exist?(dir_path)
|
|
FileUtils.mkdir dir_path if !Dir.exist?(dir_path) #create dir for storing tmp_file if dir doesn't exist
|
|
@filename = 'download_school_code.xlsx'
|
|
Dir.chdir(dir_path) do
|
|
File.open(@filename, 'w') do |f|
|
|
f.write render_to_string( :handlers=> [:axlsx], :formats=> [:xlsx] ,:partial=> 'school_code.xlsx',:locals=> {:@OlympiaSchoolDataFields=>@OlympiaSchoolDataFields} )
|
|
end
|
|
end
|
|
tmp_filename_data = File.read(dir_path +@filename)
|
|
send_data(tmp_filename_data, type: 'application/xlsx', disposition: 'attachment', filename: "#{Time.now.year}#{Time.now.month}#{Time.now.day}_download_school_code.xlsx")
|
|
end
|
|
def render_contents_in_index_page(contents=@breadcumb)
|
|
doc = Nokogiri::HTML(render_final_page("page",Page.where(:layout=>"olympia_managements_index").first,true), nil, "UTF-8")
|
|
viewarea = doc.css("*[data-content='true']")[0]
|
|
viewarea.inner_html = @breadcumb
|
|
render :html => doc.to_html.html_safe
|
|
end
|
|
def updata_school_data
|
|
# doc = Nokogiri::HTML(render_final_page("page",Page.where(:layout=>"olympia_managements_index").first,true), nil, "UTF-8")
|
|
# viewarea = doc.css("*[data-content='true']")[0]
|
|
# viewarea.inner_html = "123"
|
|
# render :html => doc.to_html.html_safe
|
|
render_contents_in_index_page('123')
|
|
end
|
|
def updata_student_data
|
|
#render :html => '123'
|
|
end
|
|
end |