first commit
This commit is contained in:
commit
d20b1cb6bf
|
@ -0,0 +1,8 @@
|
|||
.bundle/
|
||||
log/*.log
|
||||
pkg/
|
||||
test/dummy/db/*.sqlite3
|
||||
test/dummy/db/*.sqlite3-journal
|
||||
test/dummy/log/*.log
|
||||
test/dummy/tmp/
|
||||
test/dummy/.sass-cache
|
|
@ -0,0 +1,15 @@
|
|||
source 'https://rubygems.org'
|
||||
|
||||
# Declare your gem's dependencies in international_recruit.gemspec.
|
||||
# Bundler will treat runtime dependencies like base dependencies, and
|
||||
# development dependencies will be added by default to the :development group.
|
||||
gemspec
|
||||
|
||||
# Declare any dependencies that are still in development here instead of in
|
||||
# your gemspec. These might include edge Rails or gems from your path or
|
||||
# Git. Remember to move these dependencies to your gemspec before releasing
|
||||
# your gem to rubygems.org.
|
||||
|
||||
# To use a debugger
|
||||
# gem 'byebug', group: [:development, :test]
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
Copyright 2017 Harry Bomrah
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@ -0,0 +1,3 @@
|
|||
= InternationalRecruit
|
||||
|
||||
This project rocks and uses MIT-LICENSE.
|
|
@ -0,0 +1,37 @@
|
|||
begin
|
||||
require 'bundler/setup'
|
||||
rescue LoadError
|
||||
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
||||
end
|
||||
|
||||
require 'rdoc/task'
|
||||
|
||||
RDoc::Task.new(:rdoc) do |rdoc|
|
||||
rdoc.rdoc_dir = 'rdoc'
|
||||
rdoc.title = 'InternationalRecruit'
|
||||
rdoc.options << '--line-numbers'
|
||||
rdoc.rdoc_files.include('README.rdoc')
|
||||
rdoc.rdoc_files.include('lib/**/*.rb')
|
||||
end
|
||||
|
||||
APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__)
|
||||
load 'rails/tasks/engine.rake'
|
||||
|
||||
|
||||
load 'rails/tasks/statistics.rake'
|
||||
|
||||
|
||||
|
||||
Bundler::GemHelper.install_tasks
|
||||
|
||||
require 'rake/testtask'
|
||||
|
||||
Rake::TestTask.new(:test) do |t|
|
||||
t.libs << 'lib'
|
||||
t.libs << 'test'
|
||||
t.pattern = 'test/**/*_test.rb'
|
||||
t.verbose = false
|
||||
end
|
||||
|
||||
|
||||
task default: :test
|
|
@ -0,0 +1,13 @@
|
|||
// This is a manifest file that'll be compiled into application.js, which will include all the files
|
||||
// listed below.
|
||||
//
|
||||
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
|
||||
// or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
|
||||
//
|
||||
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
||||
// compiled file.
|
||||
//
|
||||
// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
|
||||
// about supported directives.
|
||||
//
|
||||
//= require_tree .
|
|
@ -0,0 +1,15 @@
|
|||
/*
|
||||
* This is a manifest file that'll be compiled into application.css, which will include all the files
|
||||
* listed below.
|
||||
*
|
||||
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
|
||||
* or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
|
||||
*
|
||||
* You're free to add application-wide styles to this file and they'll appear at the bottom of the
|
||||
* compiled file so the styles you add here take precedence over styles defined in any styles
|
||||
* defined in the other CSS/SCSS files in this directory. It is generally better to create a new
|
||||
* file per style scope.
|
||||
*
|
||||
*= require_tree .
|
||||
*= require_self
|
||||
*/
|
|
@ -0,0 +1,8 @@
|
|||
class Admin::InternationalRecruitsController < OrbitAdminController
|
||||
|
||||
def index
|
||||
@table_fields = ["international_recruit.member_name", "international_recruit.submited_date", "international_recruit.actions"]
|
||||
@applications = RecruitApplication.all.desc(:created_at).page(params[:page]).per(10)
|
||||
end
|
||||
|
||||
end
|
|
@ -0,0 +1,37 @@
|
|||
class InternationalRecruitsController < ApplicationController
|
||||
def index
|
||||
countries = []
|
||||
session = OrbitHelper.request.session
|
||||
InternationalCountry::LIST.keys.each do |countrykey|
|
||||
countries << [InternationalCountry::LIST[countrykey], countrykey]
|
||||
end
|
||||
years = (0..10).collect do |x|
|
||||
t = x == 10 ? x.to_s + " more years" : x.to_s
|
||||
[t, x]
|
||||
end
|
||||
{
|
||||
"application" => RecruitApplication.new,
|
||||
"countries" => countries,
|
||||
"years" => years,
|
||||
"member" => session["current_pseudo_user_id"]
|
||||
}
|
||||
end
|
||||
|
||||
def application_success
|
||||
{}
|
||||
end
|
||||
|
||||
def submitapplication
|
||||
ra = RecruitApplication.new(application_params)
|
||||
ra.save
|
||||
page = Page.where(:module => "international_recruit").first
|
||||
redirect_to "/#{I18n.locale.to_s}#{page.url}?method=application_success"
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def application_params
|
||||
params.require(:recruit_application).permit!
|
||||
end
|
||||
|
||||
end
|
|
@ -0,0 +1,4 @@
|
|||
module InternationalRecruit
|
||||
module ApplicationHelper
|
||||
end
|
||||
end
|
|
@ -0,0 +1,242 @@
|
|||
class InternationalCountry
|
||||
LIST = {
|
||||
"AF" => "Afghanistan阿富汗",
|
||||
"AL" => "Albania阿爾巴尼亞",
|
||||
"DZ" => "Algeria阿爾及利亞",
|
||||
"AS" => "American Samoa美屬薩摩亞",
|
||||
"AD" => "Andorra安道爾共和國",
|
||||
"AO" => "Angola安哥拉",
|
||||
"AI" => "Anguilla安歸拉島",
|
||||
"AQ" => "Antarctica南極洲",
|
||||
"AG" => "Antigua and Barbuda安地卡及巴布達",
|
||||
"AR" => "Argentina阿根廷",
|
||||
"AM" => "Armenia亞美尼亞",
|
||||
"AW" => "Aruba阿魯巴島",
|
||||
"AU" => "Australia澳洲",
|
||||
"AT" => "Austria奧地利",
|
||||
"AZ" => "Azerbaijan亞賽拜然",
|
||||
"BS" => "Bahamas巴哈馬",
|
||||
"BH" => "Bahrain巴林",
|
||||
"BD" => "Bangladesh孟加拉",
|
||||
"BB" => "Barbados巴貝多",
|
||||
"BY" => "Belarus白俄羅斯",
|
||||
"BE" => "Belgium比利時",
|
||||
"BZ" => "Belize貝里斯",
|
||||
"BJ" => "Benin貝南",
|
||||
"BM" => "Bermuda百慕達",
|
||||
"BT" => "Bhutan不丹",
|
||||
"BO" => "Bolivia玻利維亞",
|
||||
"BA" => "Bosnia and Herzegovina波斯尼亞 - 赫塞哥維納",
|
||||
"BW" => "Botswana波札那",
|
||||
"BV" => "Bouvet Island布干維島",
|
||||
"BR" => "Brazil巴西",
|
||||
"IO" => "British Indian Ocean Territory英屬印度洋領地",
|
||||
"VG" => "British Virgin Islands英屬維爾京群島",
|
||||
"BN" => "Brunei汶萊",
|
||||
"BG" => "Bulgaria保加利亞",
|
||||
"BF" => "Burkina Faso布吉納法索",
|
||||
"BI" => "Burundi蒲隆地",
|
||||
"KH" => "Cambodia柬埔寨",
|
||||
"CM" => "Cameroon喀麥隆",
|
||||
"CA" => "Canada加拿大",
|
||||
"CV" => "Cape Verde維德角",
|
||||
"KY" => "Cayman Islands開曼群島",
|
||||
"CF" => "Central African Republic中非共和國",
|
||||
"TD" => "Chad查德",
|
||||
"CL" => "Chile智利",
|
||||
"CN" => "China中國",
|
||||
"CX" => "Christmas Island聖誕島",
|
||||
"CC" => "Cocos (Keeling) Islands可可斯群島",
|
||||
"CO" => "Colombia哥倫比亞",
|
||||
"KM" => "Comoros科摩洛",
|
||||
"CD" => "Congo - Democratic Republic of剛果 - 民主共和國",
|
||||
"CG" => "Congo剛果",
|
||||
"CK" => "Cook Islands科克群島",
|
||||
"CR" => "Costa Rica哥斯達黎加",
|
||||
"CI" => "Cote d`Ivoire象牙海岸",
|
||||
"HR" => "Croatia克羅埃西亞",
|
||||
"CU" => "Cuba古巴",
|
||||
"CY" => "Cyprus賽普勒斯",
|
||||
"CZ" => "Czech Republic捷克共和國",
|
||||
"DK" => "Denmark丹麥",
|
||||
"DJ" => "Djibouti吉布地",
|
||||
"DO" => "Dominican Republic多明尼加共和國",
|
||||
"DM" => "Dominica多明尼克",
|
||||
"TP" => "East Timor東帝汶",
|
||||
"EC" => "Ecuador厄瓜多",
|
||||
"EG" => "Egypt埃及",
|
||||
"SV" => "El Salvador薩爾瓦多",
|
||||
"GQ" => "Equitorial Guinea赤道幾內亞",
|
||||
"ER" => "Eritrea厄利垂亞",
|
||||
"EE" => "Estonia愛沙尼亞",
|
||||
"ET" => "Ethiopia衣索比亞",
|
||||
"FO" => "Faroe Islands法羅群島",
|
||||
"FJ" => "Fiji斐濟",
|
||||
"FI" => "Finland芬蘭",
|
||||
"FR" => "France法國",
|
||||
"GF" => "French Guyana法屬圭亞那",
|
||||
"PF" => "French Polynesia法屬波里尼西亞",
|
||||
"TF" => "French Southern and Antarctic Lands法國南方和南極洲",
|
||||
"GA" => "Gabon加彭",
|
||||
"GM" => "Gambia甘比亞",
|
||||
"GZ" => "Gaza Strip加薩走廊",
|
||||
"GE" => "Georgia喬治亞",
|
||||
"DE" => "Germany德國",
|
||||
"GH" => "Ghana迦納",
|
||||
"GI" => "Gibraltar直布羅陀",
|
||||
"GR" => "Greece希臘",
|
||||
"GL" => "Greenland格陵蘭",
|
||||
"GD" => "Grenada格瑞那達",
|
||||
"GP" => "Guadeloupe瓜達羅普",
|
||||
"GU" => "Guam關島",
|
||||
"GT" => "Guatemala瓜地馬拉",
|
||||
"GG" => "Guernsey根西島",
|
||||
"GW" => "Guinea-Bissau幾內亞比索",
|
||||
"GN" => "Guinea幾內亞",
|
||||
"GY" => "Guyana蓋亞那",
|
||||
"HT" => "Haiti海地",
|
||||
"HM" => "Heard Island and McDonald Islands赫德島及麥當勞群島",
|
||||
"VA" => "Holy See (Vatican City)教廷 (梵蒂岡城)",
|
||||
"HN" => "Honduras宏都拉斯",
|
||||
"HK" => "Hong Kong香港",
|
||||
"HU" => "Hungary匈牙利",
|
||||
"IS" => "Iceland冰島",
|
||||
"IN" => "India印度",
|
||||
"ID" => "Indonesia印尼",
|
||||
"IR" => "Iran伊朗",
|
||||
"IQ" => "Iraq伊拉克",
|
||||
"IE" => "Ireland愛爾蘭",
|
||||
"IM" => "Isle of Man地曼島",
|
||||
"IL" => "Israel以色列",
|
||||
"IT" => "Italy意大利",
|
||||
"JM" => "Jamaica牙買加",
|
||||
"JP" => "Japan日本",
|
||||
"JE" => "Jersey澤西島",
|
||||
"JO" => "Jordan約旦",
|
||||
"KZ" => "Kazakhstan哈薩克",
|
||||
"KE" => "Kenya肯亞",
|
||||
"KI" => "Kiribati吉里巴斯",
|
||||
"KW" => "Kuwait科威特",
|
||||
"KG" => "Kyrgyzstan吉爾吉斯",
|
||||
"LA" => "Laos寮國",
|
||||
"LV" => "Latvia拉脫維亞",
|
||||
"LB" => "Lebanon黎巴嫩",
|
||||
"LS" => "Lesotho賴索托",
|
||||
"LR" => "Liberia賴比瑞亞",
|
||||
"LY" => "Libya利比亞",
|
||||
"LI" => "Liechtenstein列支敦士登",
|
||||
"LT" => "Lithuania立陶宛",
|
||||
"LU" => "Luxembourg盧森堡",
|
||||
"MO" => "Macau澳門特別行政區",
|
||||
"MG" => "Madagascar馬達加斯加",
|
||||
"MW" => "Malawi馬拉威",
|
||||
"MY" => "Malaysia馬來西亞",
|
||||
"MV" => "Maldives馬爾地夫",
|
||||
"ML" => "Mali馬利",
|
||||
"MT" => "Malta馬爾他",
|
||||
"MH" => "Marshall Islands馬歇爾群島",
|
||||
"MQ" => "Martinique馬丁尼克島",
|
||||
"MR" => "Mauritania茅利塔尼亞",
|
||||
"MU" => "Mauritius模里西斯",
|
||||
"YT" => "Mayotte馬約特島",
|
||||
"MX" => "Mexico墨西哥",
|
||||
"FM" => "Micronesia - Federated States of密可羅尼西亞 - 聯邦",
|
||||
"MD" => "Moldova摩爾多瓦",
|
||||
"MC" => "Monaco摩納哥",
|
||||
"MN" => "Mongolia蒙古",
|
||||
"MS" => "Montserrat蒙特色納島",
|
||||
"MA" => "Morocco摩洛哥",
|
||||
"MZ" => "Mozambique莫桑比克",
|
||||
"MM" => "Myanmar緬甸",
|
||||
"NA" => "Namibia納米比亞",
|
||||
"NR" => "Nauru諾魯",
|
||||
"NP" => "Nepal尼泊爾",
|
||||
"AN" => "Netherlands Antilles荷屬安地列斯群島",
|
||||
"NL" => "Netherlands荷蘭",
|
||||
"NC" => "New Caledonia新喀里多尼亞",
|
||||
"NZ" => "New Zealand紐西蘭",
|
||||
"NI" => "Nicaragua尼加拉瓜",
|
||||
"NG" => "Nigeria奈及利亞",
|
||||
"NE" => "Niger尼日",
|
||||
"NU" => "Niue紐埃島",
|
||||
"NF" => "Norfolk Island諾福克島",
|
||||
"KP" => "North Korea北韓",
|
||||
"MP" => "Northern Mariana Islands北馬里亞納群島",
|
||||
"NO" => "Norway挪威",
|
||||
"OM" => "Oman阿曼",
|
||||
"PK" => "Pakistan巴基斯坦",
|
||||
"PW" => "Palau帛琉",
|
||||
"PA" => "Panama巴拿馬",
|
||||
"PG" => "Papua New Guinea巴布亞紐幾內亞",
|
||||
"PY" => "Paraguay巴拉圭",
|
||||
"PE" => "Peru祕魯",
|
||||
"PH" => "Philippines菲律賓",
|
||||
"PN" => "Pitcairn Islands皮特凱恩群島",
|
||||
"PL" => "Poland波蘭",
|
||||
"PT" => "Portugal葡萄牙",
|
||||
"PR" => "Puerto Rico波多黎克",
|
||||
"QA" => "Qatar卡達",
|
||||
"RO" => "Romania羅馬尼亞",
|
||||
"RU" => "Russia俄羅斯",
|
||||
"RW" => "Rwanda盧旺達",
|
||||
"KN" => "Saint Kitts and Nevis聖克里斯多福",
|
||||
"LC" => "Saint Lucia聖路西亞",
|
||||
"VC" => "Saint Vincent and the Grenadines聖文森與格瑞那丁",
|
||||
"WS" => "Samoa薩摩斯島",
|
||||
"SM" => "San Marino聖馬力諾",
|
||||
"ST" => "Sao Tome and Principe聖多美普林西比",
|
||||
"SA" => "Saudi Arabia沙地阿拉伯",
|
||||
"SN" => "Senegal塞內加爾",
|
||||
"CS" => "Serbia and Montenegro塞爾維亞蒙特內哥羅",
|
||||
"SC" => "Seychelles塞席爾",
|
||||
"SL" => "Sierra Leone獅子山",
|
||||
"SG" => "Singapore新加坡",
|
||||
"SK" => "Slovakia斯洛伐克",
|
||||
"SI" => "Slovenia斯洛維尼亞",
|
||||
"SB" => "Solomon Islands所羅門群島",
|
||||
"SO" => "Somalia索馬利亞",
|
||||
"ZA" => "South Africa南非",
|
||||
"KR" => "South Korea南韓",
|
||||
"ES" => "Spain西班牙",
|
||||
"LK" => "Sri Lanka斯里蘭卡",
|
||||
"SH" => "St. Helena聖赫勒拿島",
|
||||
"PM" => "St. Pierre and Miquelon聖匹島",
|
||||
"SD" => "Sudan蘇丹",
|
||||
"SR" => "Suriname蘇利南",
|
||||
"SJ" => "Svalbard斯瓦巴德群島",
|
||||
"SZ" => "Swaziland史瓦濟蘭",
|
||||
"SE" => "Sweden瑞典",
|
||||
"CH" => "Switzerland瑞士",
|
||||
"SY" => "Syria敘利亞",
|
||||
"TW" => "Taiwan台灣",
|
||||
"TJ" => "Tajikistan塔吉克",
|
||||
"TZ" => "Tanzania坦尚尼亞",
|
||||
"TH" => "Thailand泰國",
|
||||
"TL" => "Timor-Leste東帝汶",
|
||||
"TG" => "Togo多哥",
|
||||
"TK" => "Tokelau托克勞群島",
|
||||
"TO" => "Tonga東加",
|
||||
"TN" => "Tunisia突尼西亞",
|
||||
"TR" => "Turkey土耳其",
|
||||
"TM" => "Turkmenistan土庫曼",
|
||||
"TC" => "Turks and Caicos Islands特克斯和凱科斯群島",
|
||||
"TV" => "Tuvalu土瓦魯",
|
||||
"UG" => "Uganda烏干達",
|
||||
"UA" => "Ukraine烏克蘭",
|
||||
"AE" => "United Arab Emirates阿拉伯聯合大公國",
|
||||
"GB" => "United Kingdom英國",
|
||||
"UM" => "United States Minor Outlying Islands美國本土外小島嶼",
|
||||
"VI" => "United States Virgin Islands美屬維爾京群島",
|
||||
"US" => "United States美國",
|
||||
"UY" => "Uruguay烏拉圭",
|
||||
"UZ" => "Uzbekistan烏茲別克",
|
||||
"VU" => "Vanuatu萬那杜",
|
||||
"VE" => "Venezuela委內瑞拉",
|
||||
"VN" => "Vietnam越南",
|
||||
"PS" => "West Bank約旦河西岸",
|
||||
"EH" => "Western Sahara西撒哈拉",
|
||||
"YE" => "Yemen葉門",
|
||||
"ZM" => "Zambia贊比亞",
|
||||
"ZW" => "Zimbabwe辛巴威"
|
||||
}
|
||||
end
|
|
@ -0,0 +1,104 @@
|
|||
class RecruitApplication
|
||||
include Mongoid::Document
|
||||
include Mongoid::Timestamps
|
||||
|
||||
field :student_type
|
||||
|
||||
# //Personal info//
|
||||
|
||||
field :member_id
|
||||
field :chinese_name
|
||||
field :english_first_name
|
||||
field :english_middle_name
|
||||
field :english_last_name
|
||||
field :place_of_birth
|
||||
field :birth_date, type: DateTime
|
||||
field :gender
|
||||
field :nationality
|
||||
field :passport_no
|
||||
field :address_nationality
|
||||
field :home_address
|
||||
field :country_code
|
||||
field :tel_part1
|
||||
field :tel_part2
|
||||
field :mobile
|
||||
field :taiwan_contact_person
|
||||
field :taiwan_contact_person_phone
|
||||
field :taiwan_mailing_address
|
||||
field :legal_guardian_name
|
||||
field :legal_guardian_address
|
||||
|
||||
# //Father Info//
|
||||
|
||||
field :taiwanese_father, type: Boolean, :default => false
|
||||
field :father_name
|
||||
field :father_birthdate, type: DateTime
|
||||
field :father_place_of_birth
|
||||
field :father_country_code
|
||||
field :father_tel_part1
|
||||
field :father_tel_part2
|
||||
field :father_home_address
|
||||
field :father_nationality
|
||||
field :father_ID
|
||||
|
||||
# //Mother Info//
|
||||
|
||||
field :taiwanese_mother, type: Boolean, :default => false
|
||||
field :mother_name
|
||||
field :mother_birthdate, type: DateTime
|
||||
field :mother_place_of_birth
|
||||
field :mother_country_code
|
||||
field :mother_tel_part1
|
||||
field :mother_tel_part2
|
||||
field :mother_home_address
|
||||
field :mother_nationality
|
||||
field :mother_ID
|
||||
|
||||
# //Course Choice//
|
||||
|
||||
field :course_choice_one_id
|
||||
field :course_choice_two_id
|
||||
field :course_choice_three_id
|
||||
|
||||
# //General Options//
|
||||
|
||||
field :financial_options, type: Array
|
||||
field :financial_other_financial
|
||||
field :health_condition
|
||||
field :major_health_condition
|
||||
field :chinese_studying_years
|
||||
field :chinese_tutor
|
||||
field :chinese_proficiency_level_listening
|
||||
field :chinese_proficiency_level_speaking
|
||||
field :chinese_proficiency_level_reading
|
||||
field :chinese_proficiency_level_writing
|
||||
field :taken_chinese_test, type: Boolean, :default => false
|
||||
field :chinese_test_name
|
||||
field :chinese_test_level
|
||||
|
||||
# // Previous educational background //
|
||||
|
||||
field :degree_type
|
||||
field :school_name
|
||||
field :school_city
|
||||
field :school_degree
|
||||
field :school_start, type: DateTime
|
||||
field :school_end, type: DateTime
|
||||
field :graduation_date, type: DateTime
|
||||
field :course_major
|
||||
field :course_minor
|
||||
|
||||
field :email
|
||||
|
||||
# //Extra Curricular Activities//
|
||||
|
||||
field :extra_curricular_activities, type: Array, :default => []
|
||||
field :publications, type: Array, :default => []
|
||||
field :previous_employments, type: Array, :default => []
|
||||
|
||||
|
||||
def get_member
|
||||
PseudoUser.find(self.member_id) rescue nil
|
||||
end
|
||||
|
||||
end
|
|
@ -0,0 +1,7 @@
|
|||
class UniversityCourse
|
||||
include Mongoid::Document
|
||||
include Mongoid::Timestamps
|
||||
|
||||
field :course_name
|
||||
|
||||
end
|
|
@ -0,0 +1,20 @@
|
|||
<table class="table main-list">
|
||||
<thead>
|
||||
<tr class="sort-header">
|
||||
<% @table_fields.each do |f| %>
|
||||
<%= thead(f) %>
|
||||
<% end %>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<% @applications.each do |application| %>
|
||||
<tr>
|
||||
<td><%= application.get_member.name rescue "" %></td>
|
||||
<td><%= application.created_at.strftime("%Y-%m-%d") %></td>
|
||||
<td>
|
||||
<a class="btn btn-danger" href="<%= admin_international_recruit_path(application) %>" data-method="delete" data-confirm="Are you sure?">Delete</a>
|
||||
</td>
|
||||
</tr>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
|
@ -0,0 +1 @@
|
|||
<div class="alert alert-success" role="alert">Your application has been submitted successfully.</div>
|
|
@ -0,0 +1,663 @@
|
|||
<%= javascript_include_tag "lib/bootstrap-datetimepicker" %>
|
||||
<%= javascript_include_tag "lib/datetimepicker/datetimepicker.js" %>
|
||||
<%
|
||||
data = action_data
|
||||
application = data["application"]
|
||||
%>
|
||||
<style media="screen">
|
||||
table,tr,td,th{
|
||||
border: 1px black solid;
|
||||
}
|
||||
table{
|
||||
text-align: center;
|
||||
margin: 0 auto;
|
||||
width: 100%;
|
||||
}
|
||||
.apply_form_table{
|
||||
margin-bottom: 100px;
|
||||
}
|
||||
#signup_form input[type="text"]{
|
||||
width: 100%;
|
||||
}
|
||||
.default_picker input[type="text"]{
|
||||
width: auto !important;
|
||||
}
|
||||
.telephone input[type="text"]{
|
||||
width: auto !important;
|
||||
}
|
||||
.add-panel table{
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
.add-panel {
|
||||
margin-bottom: 100px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="signup_form">
|
||||
<h3>Course Signup Form</h3>
|
||||
<%= form_for application, :url => "/xhr/international_recruits/submitapplication" do |f| %>
|
||||
<table class="apply_form_table" cellpadding="5" cellspacing="0" border="0" width="800">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td colspan="4" style="text-align: left;">
|
||||
*<%= f.radio_button :student_type, "新生(New students)" %> 新生(New students)
|
||||
|
||||
<%= f.radio_button :student_type, "轉學生(Transferring)" %>轉學生(Transferring)
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>*姓名(中文)<br>Name(Chinese)</th>
|
||||
<td><%= f.text_field :chinese_name, :size => 20 %></td>
|
||||
<th>姓名(英文)<br>Name(English)</th>
|
||||
<td>
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="margin:0 auto;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>First</th>
|
||||
<th>Middle</th>
|
||||
<th>Last</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><%= f.text_field :english_first_name, :size => 8 %></td>
|
||||
<td><%= f.text_field :english_middle_name, :size => 8 %></td>
|
||||
<td><%= f.text_field :english_last_name, :size => 8 %></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>出生地點<br>Place of Birth</th>
|
||||
<td><%= f.text_field :place_of_birth, :size => 20 %></td>
|
||||
<th>出生年月日<br>Birth Day</th>
|
||||
<td>
|
||||
<%= f.datetime_picker :birth_date, :no_label => true, :new_record => application.new_record? %>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>性別<br>Gender</th>
|
||||
<td>
|
||||
<%= f.radio_button :gender, "男性(Male)" %>男性(Male)
|
||||
|
||||
<%= f.radio_button :gender, "女性(Female)" %>女性(Female)
|
||||
</td>
|
||||
<th>國籍<br>Nationality</th>
|
||||
<td style="text-align: left;">
|
||||
<%= f.select :nationality, data["countries"] %><br>
|
||||
<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>護照號碼<br>Passport No.</th>
|
||||
<td><%= f.text_field :passport_no, :size => 20 %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>住址(臺灣地區請以中文)<br>Home Address in English</th>
|
||||
<td colspan="3" style="text-align: left;">
|
||||
<%= f.select :address_nationality, data["countries"] %><br>
|
||||
<%= f.text_field :home_address, :size => 60 %>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>聯絡電話<br>Telephone</th>
|
||||
<td class="telephone">
|
||||
國碼 Country code +<%= f.text_field :country_code, :size => 3 %>
|
||||
<%= f.text_field :tel_part1, :size => 3 %> -
|
||||
<%= f.text_field :tel_part2, :size => 6 %>
|
||||
</td>
|
||||
<th>手機<br>Cell Phone</th>
|
||||
<td><%= f.text_field :mobile, :size => 25 %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>在台聯絡人<br>Contact Person in the R.O.C</th>
|
||||
<td>
|
||||
<%= f.text_field :taiwan_contact_person, :size => 25 %>
|
||||
</td>
|
||||
<th>聯絡人手機<br>Contact Person<br>Cell Phone</th>
|
||||
<td>
|
||||
<%= f.text_field :taiwan_contact_person_phone, :size => 25 %>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>在台通訊處<br>Mailing Address in the R.O.C</th>
|
||||
<td colspan="3" style="text-align: left;">
|
||||
<%= f.text_field :taiwan_mailing_address, :size => 60 %>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>監護人姓名<br>Name of parten/legal guardian</th>
|
||||
<td colspan="3" style="text-align: left;">
|
||||
<%= f.text_field :legal_guardian_name, :size => 60 %>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>監護人住址<br>Address of parten/legal guardian</th>
|
||||
<td colspan="3" style="text-align: left;">
|
||||
<%= f.text_field :legal_guardian_address, :size => 60 %>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="apply_form_table" cellpadding="5" cellspacing="0" border="0" width="800">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th width="300">父親曾為臺灣籍<br>Father have Taiwanese citizenship</th>
|
||||
<td style="text-align: left;">
|
||||
<%= f.radio_button :taiwanese_father, "1" %>是 Yes
|
||||
<%= f.radio_button :taiwanese_father, "2" %>否 No
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>父親姓名<br>Father's Name</th>
|
||||
<td><%= f.text_field :father_name, :size => 20 %></td>
|
||||
<th>出生年月日<br>Birth Day</th>
|
||||
<td><%= f.datetime_picker :father_birthdate, :no_label => true, :new_record => application.new_record? %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>出生地點<br>Place of Birth</th>
|
||||
<td>
|
||||
<%= f.text_field :father_place_of_birth, :size => 30 %>
|
||||
</td>
|
||||
<th>聯絡電話<br>Telephone</th>
|
||||
<td class="telephone">
|
||||
國碼 Country code +<%= f.text_field :father_country_code, :size => 3 %>
|
||||
<%= f.text_field :father_tel_part1, :size => 3 %> -
|
||||
<%= f.text_field :father_tel_part2, :size => 6 %>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>住址<br>Home Address</th>
|
||||
<td colspan="3" style="text-align: left;">
|
||||
<%= f.text_field :father_home_address, :size => 60 %>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th width="200">
|
||||
<div class="Father_Nationality" style="display:inline">國籍<br>Nationality</div>
|
||||
<div class="Father_Security_Number" style="display:none">身份正字號<br>Social Security Number</div>
|
||||
</th>
|
||||
<td colspan="3" style="text-align: left;">
|
||||
<div class="Father_Nationality_ComboSelectHolder" style="display:inline;">
|
||||
<%= f.select :father_nationality, data["countries"] %><br>
|
||||
</div>
|
||||
<div class="Father_SSN_Holder" style="display:none">
|
||||
<%= f.text_field :father_ID, :size => 20 %>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="apply_form_table" cellpadding="5" cellspacing="0" border="0" width="800">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th width="300">母親曾為臺灣籍<br>Mother have Taiwanese citizenship</th>
|
||||
<td style="text-align: left;">
|
||||
<%= f.radio_button :taiwanese_father, "1" %>是 Yes
|
||||
<%= f.radio_button :taiwanese_father, "2" %>否 No
|
||||
</td>
|
||||
</tr>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>母親姓名<br>Mother's Name</th>
|
||||
<td><%= f.text_field :mother_name, :size => 20 %></td>
|
||||
<th>出生年月日<br>Birth Day</th>
|
||||
<td>
|
||||
<%= f.datetime_picker :mother_birthdate, :no_label => true, :new_record => application.new_record? %>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>出生地點<br>Place of Birth</th>
|
||||
<td>
|
||||
<%= f.text_field :mother_place_of_birth, :size => 30 %>
|
||||
</td>
|
||||
<th>聯絡電話<br>Telephone</th>
|
||||
<td class="telephone">
|
||||
國碼 Country code +<%= f.text_field :mother_country_code, :size => 3 %>
|
||||
<%= f.text_field :mother_tel_part1, :size => 3 %> -
|
||||
<%= f.text_field :mother_tel_part2, :size => 6 %>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>住址<br>Home Address</th>
|
||||
<td colspan="3" style="text-align: left;">
|
||||
<%= f.text_field :mother_home_address, :size => 60 %>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th width="200">
|
||||
<div class="Mother_Nationality" style="display:inline">國籍<br>Nationality</div>
|
||||
<div class="Mother_Security_Number" style="display:none">身份正字號<br>Social Security Number</div>
|
||||
</th>
|
||||
<td colspan="3" style="text-align: left;">
|
||||
<div class="Mother_Nationality_ComboSelectHolder" style="display:inline;">
|
||||
<%= f.select :mother_nationality, data["countries"] %><br>
|
||||
</div>
|
||||
<div class="Mother_SSN_Holder" style="display:none">
|
||||
<%= f.text_field :mother_ID, :size => 20 %>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="apply_form_table" cellpadding="5" cellspacing="0" border="0" width="800">
|
||||
<tbody>
|
||||
<tr>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>擬申請就讀之系(所)組及擬攻讀何種學位<br>Department or graduate program do you expect to enroll in at NKUHT? And What program do you plan pursue</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<select name="Department" id="Department"></select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>擬申請就讀之系(所)組及擬攻讀何種學位(第二志願)<br>Department or graduate program do you expect to enroll in at NKUHT? And What program do you plan pursue</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<select name="Department_Two" id="Department_Two">
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody>
|
||||
<tr></tr>
|
||||
<tr>
|
||||
<th>擬申請就讀之系(所)組及擬攻讀何種學位(第三志願)<br>Department or graduate program do you expect to enroll in at NKUHT? And What program do you plan pursue</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<select name="Department_Three" id="Department_Three">
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="apply_form_table" cellpadding="5" cellspacing="0" border="0" width="800">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>在台研習期間各項費用來源<br>What are your major financial<br>resources during your study at NKUHT?</th>
|
||||
<td colspan="3">
|
||||
<table width="100%" cellpadding="5" cellspacing="0" border="0" style="margin:0 auto;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><input type="checkbox" name="recruit_application[financial_options][]" value="個人儲蓄 Personal Saving"> 個人儲蓄 Personal Saving</td>
|
||||
<td><input type="checkbox" name="recruit_application[financial_options][]" value="獎助學金 Scholarship"> 獎助學金 Scholarship</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="checkbox" name="recruit_application[financial_options][]" value="父母供給 Parental Support">父母供給 Parental Support</td>
|
||||
<td><input type="checkbox" name="recruit_application[financial_options][]" value="Other">其他 Other <%= f.text_field :financial_other_financial, :size => 20 %> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>健康情形<br>Health Condition</th>
|
||||
<td colspan="3">
|
||||
<table width="100%" cellpadding="5" cellspacing="0" border="0" style="margin:0 auto;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><%= f.radio_button :health_condition, "佳 (Good)" %>佳 (Good)</td>
|
||||
<td><%= f.radio_button :health_condition, "尚可 (Average)" %>尚可 (Average)</td>
|
||||
<td><%= f.radio_button :health_condition, "差 (Poor)" %>差 (Poor)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3" style="text-align:left;">
|
||||
如有疾病或缺陷請敘明之 (Any major health problem or physical disability?)
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3" style="text-align:left;">
|
||||
<%= f.text_field :major_health_condition, :size => 60 %>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>曾學習中文幾年?<br>How long have you studied Chinese?</th>
|
||||
<td colspan="3">
|
||||
<%= f.select :chinese_studying_years, data["years"] %>年 (Year)
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>受何人指導(講授)?<br>Where and under whose guidance have you studied Chinese?</th>
|
||||
<td colspan="3">
|
||||
<%= f.text_field :chinese_tutor, :size => 20 %>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>中國語文程度<br>Chinese proficiency level</th>
|
||||
<td colspan="3">
|
||||
<table width="100%" cellpadding="5" cellspacing="0" border="0" style="margin:0 auto;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th width="100">聽 (Listening)</th>
|
||||
<td><%= f.radio_button :chinese_proficiency_level_listening, "優 (Excellent)" %>優 (Excellent)</td>
|
||||
<td><%= f.radio_button :chinese_proficiency_level_listening, "佳 (Good)" %>佳 (Good)</td>
|
||||
<td><%= f.radio_button :chinese_proficiency_level_listening, "尚可 (Average)" %>尚可 (Average)</td>
|
||||
<td><%= f.radio_button :chinese_proficiency_level_listening, "差 (Poor)" %>差 (Poor)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>說 (Speaking)</th>
|
||||
<td><%= f.radio_button :chinese_proficiency_level_speaking, "優 (Excellent)" %>優 (Excellent)</td>
|
||||
<td><%= f.radio_button :chinese_proficiency_level_speaking, "佳 (Good)" %>佳 (Good)</td>
|
||||
<td><%= f.radio_button :chinese_proficiency_level_speaking, "尚可 (Average)" %>尚可 (Average)</td>
|
||||
<td><%= f.radio_button :chinese_proficiency_level_speaking, "差 (Poor)" %>差 (Poor)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>讀 (Reading)</th>
|
||||
<td><%= f.radio_button :chinese_proficiency_level_reading, "優 (Excellent)" %>優 (Excellent)</td>
|
||||
<td><%= f.radio_button :chinese_proficiency_level_reading, "佳 (Good)" %>佳 (Good)</td>
|
||||
<td><%= f.radio_button :chinese_proficiency_level_reading, "尚可 (Average)" %>尚可 (Average)</td>
|
||||
<td><%= f.radio_button :chinese_proficiency_level_reading, "差 (Poor)" %>差 (Poor)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>寫 (Writing)</th>
|
||||
<td><%= f.radio_button :chinese_proficiency_level_writing, "優 (Excellent)" %>優 (Excellent)</td>
|
||||
<td><%= f.radio_button :chinese_proficiency_level_writing, "佳 (Good)" %>佳 (Good)</td>
|
||||
<td><%= f.radio_button :chinese_proficiency_level_writing, "尚可 (Average)" %>尚可 (Average)</td>
|
||||
<td><%= f.radio_button :chinese_proficiency_level_writing, "差 (Poor)" %>差 (Poor)</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>是否參加過中文語文能力測驗? <br>Have you taken any Chinese language test?</th>
|
||||
<td colspan="3">
|
||||
<%= f.radio_button :taken_chinese_test, "是 (Yes)" %>是 (Yes)
|
||||
<%= f.radio_button :taken_chinese_test, "否 (No)" %>否 (No)
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>何種測驗? What kind of test?</th>
|
||||
<td colspan="3">
|
||||
<%= f.text_field :chinese_test_name %>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>級數? Grade/Level?</th>
|
||||
<td colspan="3">
|
||||
<%= f.text_field :chinese_test_level %>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div id="extra_curricular_area" class="add-panel">
|
||||
<table class="apply_form_table" cellpadding="5" cellspacing="0" border="0" width="800">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>課外活動 Extra-Curricular Activities</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div id="activities">
|
||||
<table class="to_clone" width="100%" cellpadding="5" cellspacing="0" border="0" style="margin:10px 0;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>活動名稱 (Subject)</th>
|
||||
<td><input type="text" size="20" name="recruit_application[extra_curricular_activities][][subject]" ></td>
|
||||
<th>參加年月</th>
|
||||
<td>
|
||||
<% years = Time.now.year..Time.now.year - 50 %>
|
||||
<select name="recruit_application[extra_curricular_activities][][year]">
|
||||
<% (years.first).downto(years.last).each do |year| %>
|
||||
<option value="<%= year %>"><%= year %></option>
|
||||
<% end %>
|
||||
</select>年 (Year)
|
||||
<select name="recruit_application[extra_curricular_activities][][month]">
|
||||
<% (1..12).each do |month| %>
|
||||
<option value="<%= month %>"><%= month %></option>
|
||||
<% end %>
|
||||
</select>月 (Month)
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="new_panel"></div>
|
||||
<div class="pull-right">
|
||||
<a href="#" class="btn btn-default" id="extra_curricular_area_btn">增加一筆 (Add)</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="publications_area" class="add-panel">
|
||||
<table class="apply_form_table" cellpadding="5" cellspacing="0" border="0" width="800">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>著作 Publications</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div id="publications">
|
||||
<table class="to_clone" width="100%" cellpadding="5" cellspacing="0" border="0" style="margin:10px 0;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>著作名稱 (Title)</th>
|
||||
<td><input type="text" size="20" name="recruit_application[publications][][subject]" ></td>
|
||||
<th>參加年月</th>
|
||||
<td>
|
||||
<% years = Time.now.year..Time.now.year - 50 %>
|
||||
<select name="recruit_application[publications][][year]">
|
||||
<% (years.first).downto(years.last).each do |year| %>
|
||||
<option value="<%= year %>"><%= year %></option>
|
||||
<% end %>
|
||||
</select>年 (Year)
|
||||
<select name="recruit_application[publications][][month]">
|
||||
<% (1..12).each do |month| %>
|
||||
<option value="<%= month %>"><%= month %></option>
|
||||
<% end %>
|
||||
</select>月 (Month)
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="new_panel"></div>
|
||||
<div class="pull-right">
|
||||
<a href="#" class="btn btn-default" id="publications_area_btn">增加一筆 (Add)</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="employment_area" class="add-panel">
|
||||
<table class="apply_form_table" cellpadding="5" cellspacing="0" border="0" width="800">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>經歷 Previous Employment</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div id="employments">
|
||||
<table class="to_clone" cellpadding="5" cellspacing="0" border="0" style="margin:10px auto;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th width="130">公司名稱<br>(Company Name)</th>
|
||||
<td width="130"><input type="text" size="20" name="recruit_application[previous_employments][][company_name]" ></td>
|
||||
<th width="80">職稱 (Title)</th>
|
||||
<td width="150"><input type="text" size="20" name="recruit_application[previous_employments][][title]" ></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th width="150">起訖日<br>(Attendance Period)</th>
|
||||
<td colspan="3">
|
||||
<table width="100%" cellpadding="5" cellspacing="0" border="0" style="margin:0 auto;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
起 (From)
|
||||
<% years = Time.now.year..Time.now.year - 50 %>
|
||||
<select name="recruit_application[previous_employments][][start_year]">
|
||||
<% (years.first).downto(years.last).each do |year| %>
|
||||
<option value="<%= year %>"><%= year %></option>
|
||||
<% end %>
|
||||
</select>年 (Year)
|
||||
<select name="recruit_application[previous_employments][][start_month]">
|
||||
<% (1..12).each do |month| %>
|
||||
<option value="<%= month %>"><%= month %></option>
|
||||
<% end %>
|
||||
</select>月 (Month)
|
||||
</td>
|
||||
<td>
|
||||
訖 (To)<% years = Time.now.year..Time.now.year - 50 %>
|
||||
<select name="recruit_application[previous_employments][][end_year]">
|
||||
<% (years.first).downto(years.last).each do |year| %>
|
||||
<option value="<%= year %>"><%= year %></option>
|
||||
<% end %>
|
||||
</select>年 (Year)
|
||||
<select name="recruit_application[previous_employments][][end_month]">
|
||||
<% (1..12).each do |month| %>
|
||||
<option value="<%= month %>"><%= month %></option>
|
||||
<% end %>
|
||||
</select>月 (Month)
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="new_panel"></div>
|
||||
<div class="pull-right">
|
||||
<a href="#" class="btn btn-default" id="employment_area_btn">增加一筆 (Add)</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<table class="apply_form_table" cellpadding="5" cellspacing="0" border="0" width="800">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th colspan="4">學歷 Applicant’s previous educational background</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>學程 (Degree)</th>
|
||||
<td><%= f.radio_button :degree_type, "中等學校 Secondary Education" %>中等學校<br>Secondary Education</td>
|
||||
<td><%= f.radio_button :degree_type, "專科或大學 College or University" %>專科或大學<br>College or University</td>
|
||||
<td><%= f.radio_button :degree_type, "國民型中學五年級 Form 5 graduates" %>國民型中學五年級<br>Form 5 graduates</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>學校名稱 (Name of school)</th>
|
||||
<td colspan="3"><%= f.text_field :school_name %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>學校所在地 (City and country)</th>
|
||||
<td colspan="3"><%= f.text_field :school_city %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>學位 (Degree granted)</th>
|
||||
<td colspan="3"><%= f.text_field :school_degree %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>起迄日 (Attendance period)</th>
|
||||
<td colspan="3">
|
||||
<%= f.datetime_picker :school_start, :label => "起 (From) ", :new_record => application.new_record?, :data=>{"picker-type" => "range", "range" => "start"} %>
|
||||
<%= f.datetime_picker :school_end, :label => "訖 (To) ", :new_record => application.new_record?, :data=>{"picker-type" => "range", "range" => "end"} %>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>畢業日期 (Date of Graduation)</th>
|
||||
<td colspan="3"><%= f.datetime_picker :graduation_date, :no_label => true, :new_record => application.new_record? %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>主修 (Major)</th>
|
||||
<td colspan="3"><%= f.text_field :course_major, :size => 40 %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>副修 (Minor)</th>
|
||||
<td colspan="3"><%= f.text_field :course_minor, :size => 40 %></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="apply_form_table" cellpadding="5" cellspacing="0" border="0" width="800">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th colspan="2">Email</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th width="250">Email</th>
|
||||
<td><%= f.text_field :email, :size => 40 %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<%= f.hidden_field :member_id, :value => data["member"] %>
|
||||
<td colspan="2"><%= f.submit "Apply", :class => "btn btn-primary" %></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<% end %>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$("#extra_curricular_area_btn").on("click",function(){
|
||||
var boxtoclone = $("#activities table.to_clone"),
|
||||
clonedbox = boxtoclone.clone(),
|
||||
deleteicon = $("<a href='#'>Delete</a>"),
|
||||
td = $("<td></td>");
|
||||
|
||||
deleteicon.on("click",function(){
|
||||
deleteicon.parents(".clonedbox").remove();
|
||||
return false;
|
||||
})
|
||||
td.append(deleteicon);
|
||||
clonedbox.removeClass("to_clone");
|
||||
clonedbox.addClass("clonedbox");
|
||||
clonedbox.find("tbody tr").append(td);
|
||||
$("#activities").append(clonedbox);
|
||||
return false;
|
||||
})
|
||||
|
||||
$("#publications_area_btn").on("click",function(){
|
||||
var boxtoclone = $("#publications table.to_clone"),
|
||||
clonedbox = boxtoclone.clone(),
|
||||
deleteicon = $("<a href='#'>Delete</a>"),
|
||||
td = $("<td></td>");
|
||||
|
||||
deleteicon.on("click",function(){
|
||||
deleteicon.parents(".clonedbox").remove();
|
||||
return false;
|
||||
})
|
||||
td.append(deleteicon);
|
||||
clonedbox.removeClass("to_clone");
|
||||
clonedbox.addClass("clonedbox");
|
||||
clonedbox.find("tbody tr").append(td);
|
||||
$("#publications").append(clonedbox);
|
||||
return false;
|
||||
})
|
||||
|
||||
$("#employment_area_btn").on("click",function(){
|
||||
var boxtoclone = $("#employments table.to_clone"),
|
||||
clonedbox = boxtoclone.clone(),
|
||||
deleteicon = $("<a href='#'>Delete</a>"),
|
||||
td = $("<td rowspan='2' width='50px;'></td>");
|
||||
|
||||
deleteicon.on("click",function(){
|
||||
deleteicon.parents(".clonedbox").remove();
|
||||
return false;
|
||||
})
|
||||
td.append(deleteicon);
|
||||
clonedbox.removeClass("to_clone");
|
||||
clonedbox.addClass("clonedbox");
|
||||
clonedbox.find("tbody tr:eq(0)").append(td);
|
||||
$("#employments").append(clonedbox);
|
||||
return false;
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
#!/usr/bin/env ruby
|
||||
# This command will automatically be run when you run "rails" with Rails 4 gems installed from the root of your application.
|
||||
|
||||
ENGINE_ROOT = File.expand_path('../..', __FILE__)
|
||||
ENGINE_PATH = File.expand_path('../../lib/international_recruit/engine', __FILE__)
|
||||
|
||||
# Set up gems listed in the Gemfile.
|
||||
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
|
||||
require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
|
||||
|
||||
require 'rails/all'
|
||||
require 'rails/engine/commands'
|
|
@ -0,0 +1,9 @@
|
|||
en:
|
||||
module_name: International Recruit
|
||||
international_recruit:
|
||||
international_recruit: International Recruit
|
||||
applications: Applications
|
||||
courses: Courses
|
||||
member_name: Member Name
|
||||
submited_date: Submitted Date
|
||||
actions: Actions
|
|
@ -0,0 +1,9 @@
|
|||
zh_tw:
|
||||
module_name: International Recruit
|
||||
international_recruit:
|
||||
international_recruit: International Recruit
|
||||
applications: Applications
|
||||
courses: Courses
|
||||
member_name: Member Name
|
||||
submited_date: Submitted Date
|
||||
actions: Actions
|
|
@ -0,0 +1,16 @@
|
|||
Rails.application.routes.draw do
|
||||
|
||||
locales = Site.find_by(site_active: true).in_use_locales rescue I18n.available_locales
|
||||
scope "(:locale)", locale: Regexp.new(locales.join("|")) do
|
||||
namespace :admin do
|
||||
resources :international_recruits do
|
||||
collection do
|
||||
get "courses"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
post "/xhr/international_recruits/submitapplication" => "international_recruits#submitapplication"
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
$:.push File.expand_path("../lib", __FILE__)
|
||||
|
||||
# Maintain your gem's version:
|
||||
require "international_recruit/version"
|
||||
|
||||
# Describe your gem and declare its dependencies:
|
||||
Gem::Specification.new do |s|
|
||||
s.name = "international_recruit"
|
||||
s.version = InternationalRecruit::VERSION
|
||||
s.authors = ["Harry Bomrah"]
|
||||
s.email = ["harry@rulingcom.com"]
|
||||
s.homepage = "http://www.rulingcom.com"
|
||||
s.summary = "Module for international student recruits."
|
||||
s.description = "Module for international student recruits."
|
||||
s.license = "MIT"
|
||||
|
||||
s.files = Dir["{app,config,db,lib}/**/*", "MIT-LICENSE", "Rakefile", "README.rdoc"]
|
||||
s.test_files = Dir["test/**/*"]
|
||||
|
||||
end
|
|
@ -0,0 +1,4 @@
|
|||
require "international_recruit/engine"
|
||||
|
||||
module InternationalRecruit
|
||||
end
|
|
@ -0,0 +1,30 @@
|
|||
module InternationalRecruit
|
||||
class Engine < ::Rails::Engine
|
||||
initializer "international_recruit" do
|
||||
OrbitApp.registration "InternationalRecruit", :type => "ModuleApp" do
|
||||
module_label "international_recruit.international_recruit"
|
||||
base_url File.expand_path File.dirname(__FILE__)
|
||||
frontend_enabled
|
||||
data_count 1..30
|
||||
side_bar do
|
||||
head_label_i18n 'international_recruit.international_recruit', icon_class: "icons-graduation"
|
||||
available_for "admin"
|
||||
active_for_controllers (['admin/international_recruits'])
|
||||
head_link_path "admin_international_recruits_path"
|
||||
|
||||
context_link 'international_recruit.applications',
|
||||
:link_path=>"admin_international_recruits_path" ,
|
||||
:priority=>1,
|
||||
:active_for_action=>{'admin/international_recruits'=>"index"},
|
||||
:available_for => 'managers'
|
||||
|
||||
context_link 'international_recruit.courses',
|
||||
:link_path=>"courses_admin_international_recruits_path" ,
|
||||
:priority=>1,
|
||||
:active_for_action=>{'admin/international_recruits'=>"courses"},
|
||||
:available_for => 'managers'
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,3 @@
|
|||
module InternationalRecruit
|
||||
VERSION = "0.0.1"
|
||||
end
|
|
@ -0,0 +1,4 @@
|
|||
# desc "Explaining what the task does"
|
||||
# task :international_recruit do
|
||||
# # Task goes here
|
||||
# end
|
|
@ -0,0 +1,28 @@
|
|||
== README
|
||||
|
||||
This README would normally document whatever steps are necessary to get the
|
||||
application up and running.
|
||||
|
||||
Things you may want to cover:
|
||||
|
||||
* Ruby version
|
||||
|
||||
* System dependencies
|
||||
|
||||
* Configuration
|
||||
|
||||
* Database creation
|
||||
|
||||
* Database initialization
|
||||
|
||||
* How to run the test suite
|
||||
|
||||
* Services (job queues, cache servers, search engines, etc.)
|
||||
|
||||
* Deployment instructions
|
||||
|
||||
* ...
|
||||
|
||||
|
||||
Please feel free to use a different markup language if you do not plan to run
|
||||
<tt>rake doc:app</tt>.
|
|
@ -0,0 +1,6 @@
|
|||
# Add your own tasks in files placed in lib/tasks ending in .rake,
|
||||
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
|
||||
|
||||
require File.expand_path('../config/application', __FILE__)
|
||||
|
||||
Rails.application.load_tasks
|
|
@ -0,0 +1,13 @@
|
|||
// This is a manifest file that'll be compiled into application.js, which will include all the files
|
||||
// listed below.
|
||||
//
|
||||
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
|
||||
// or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
|
||||
//
|
||||
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
||||
// compiled file.
|
||||
//
|
||||
// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
|
||||
// about supported directives.
|
||||
//
|
||||
//= require_tree .
|
|
@ -0,0 +1,15 @@
|
|||
/*
|
||||
* This is a manifest file that'll be compiled into application.css, which will include all the files
|
||||
* listed below.
|
||||
*
|
||||
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
|
||||
* or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
|
||||
*
|
||||
* You're free to add application-wide styles to this file and they'll appear at the bottom of the
|
||||
* compiled file so the styles you add here take precedence over styles defined in any styles
|
||||
* defined in the other CSS/SCSS files in this directory. It is generally better to create a new
|
||||
* file per style scope.
|
||||
*
|
||||
*= require_tree .
|
||||
*= require_self
|
||||
*/
|
|
@ -0,0 +1,5 @@
|
|||
class ApplicationController < ActionController::Base
|
||||
# Prevent CSRF attacks by raising an exception.
|
||||
# For APIs, you may want to use :null_session instead.
|
||||
protect_from_forgery with: :exception
|
||||
end
|
|
@ -0,0 +1,2 @@
|
|||
module ApplicationHelper
|
||||
end
|
|
@ -0,0 +1,14 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Dummy</title>
|
||||
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>
|
||||
<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
|
||||
<%= csrf_meta_tags %>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<%= yield %>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,3 @@
|
|||
#!/usr/bin/env ruby
|
||||
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
|
||||
load Gem.bin_path('bundler', 'bundle')
|
|
@ -0,0 +1,4 @@
|
|||
#!/usr/bin/env ruby
|
||||
APP_PATH = File.expand_path('../../config/application', __FILE__)
|
||||
require_relative '../config/boot'
|
||||
require 'rails/commands'
|
|
@ -0,0 +1,4 @@
|
|||
#!/usr/bin/env ruby
|
||||
require_relative '../config/boot'
|
||||
require 'rake'
|
||||
Rake.application.run
|
|
@ -0,0 +1,29 @@
|
|||
#!/usr/bin/env ruby
|
||||
require 'pathname'
|
||||
|
||||
# path to your application root.
|
||||
APP_ROOT = Pathname.new File.expand_path('../../', __FILE__)
|
||||
|
||||
Dir.chdir APP_ROOT do
|
||||
# This script is a starting point to setup your application.
|
||||
# Add necessary setup steps to this file:
|
||||
|
||||
puts "== Installing dependencies =="
|
||||
system "gem install bundler --conservative"
|
||||
system "bundle check || bundle install"
|
||||
|
||||
# puts "\n== Copying sample files =="
|
||||
# unless File.exist?("config/database.yml")
|
||||
# system "cp config/database.yml.sample config/database.yml"
|
||||
# end
|
||||
|
||||
puts "\n== Preparing database =="
|
||||
system "bin/rake db:setup"
|
||||
|
||||
puts "\n== Removing old logs and tempfiles =="
|
||||
system "rm -f log/*"
|
||||
system "rm -rf tmp/cache"
|
||||
|
||||
puts "\n== Restarting application server =="
|
||||
system "touch tmp/restart.txt"
|
||||
end
|
|
@ -0,0 +1,4 @@
|
|||
# This file is used by Rack-based servers to start the application.
|
||||
|
||||
require ::File.expand_path('../config/environment', __FILE__)
|
||||
run Rails.application
|
|
@ -0,0 +1,26 @@
|
|||
require File.expand_path('../boot', __FILE__)
|
||||
|
||||
require 'rails/all'
|
||||
|
||||
Bundler.require(*Rails.groups)
|
||||
require "international_recruit"
|
||||
|
||||
module Dummy
|
||||
class Application < Rails::Application
|
||||
# Settings in config/environments/* take precedence over those specified here.
|
||||
# Application configuration should go into files in config/initializers
|
||||
# -- all .rb files in that directory are automatically loaded.
|
||||
|
||||
# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
|
||||
# Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
|
||||
# config.time_zone = 'Central Time (US & Canada)'
|
||||
|
||||
# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
|
||||
# config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
|
||||
# config.i18n.default_locale = :de
|
||||
|
||||
# Do not swallow errors in after_commit/after_rollback callbacks.
|
||||
config.active_record.raise_in_transactional_callbacks = true
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
# Set up gems listed in the Gemfile.
|
||||
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../../../Gemfile', __FILE__)
|
||||
|
||||
require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
|
||||
$LOAD_PATH.unshift File.expand_path('../../../../lib', __FILE__)
|
|
@ -0,0 +1,25 @@
|
|||
# SQLite version 3.x
|
||||
# gem install sqlite3
|
||||
#
|
||||
# Ensure the SQLite 3 gem is defined in your Gemfile
|
||||
# gem 'sqlite3'
|
||||
#
|
||||
default: &default
|
||||
adapter: sqlite3
|
||||
pool: 5
|
||||
timeout: 5000
|
||||
|
||||
development:
|
||||
<<: *default
|
||||
database: db/development.sqlite3
|
||||
|
||||
# Warning: The database defined as "test" will be erased and
|
||||
# re-generated from your development database when you run "rake".
|
||||
# Do not set this db to the same as development or production.
|
||||
test:
|
||||
<<: *default
|
||||
database: db/test.sqlite3
|
||||
|
||||
production:
|
||||
<<: *default
|
||||
database: db/production.sqlite3
|
|
@ -0,0 +1,5 @@
|
|||
# Load the Rails application.
|
||||
require File.expand_path('../application', __FILE__)
|
||||
|
||||
# Initialize the Rails application.
|
||||
Rails.application.initialize!
|
|
@ -0,0 +1,41 @@
|
|||
Rails.application.configure do
|
||||
# Settings specified here will take precedence over those in config/application.rb.
|
||||
|
||||
# In the development environment your application's code is reloaded on
|
||||
# every request. This slows down response time but is perfect for development
|
||||
# since you don't have to restart the web server when you make code changes.
|
||||
config.cache_classes = false
|
||||
|
||||
# Do not eager load code on boot.
|
||||
config.eager_load = false
|
||||
|
||||
# Show full error reports and disable caching.
|
||||
config.consider_all_requests_local = true
|
||||
config.action_controller.perform_caching = false
|
||||
|
||||
# Don't care if the mailer can't send.
|
||||
config.action_mailer.raise_delivery_errors = false
|
||||
|
||||
# Print deprecation notices to the Rails logger.
|
||||
config.active_support.deprecation = :log
|
||||
|
||||
# Raise an error on page load if there are pending migrations.
|
||||
config.active_record.migration_error = :page_load
|
||||
|
||||
# Debug mode disables concatenation and preprocessing of assets.
|
||||
# This option may cause significant delays in view rendering with a large
|
||||
# number of complex assets.
|
||||
config.assets.debug = true
|
||||
|
||||
# Asset digests allow you to set far-future HTTP expiration dates on all assets,
|
||||
# yet still be able to expire them through the digest params.
|
||||
config.assets.digest = true
|
||||
|
||||
# Adds additional error checking when serving assets at runtime.
|
||||
# Checks for improperly declared sprockets dependencies.
|
||||
# Raises helpful error messages.
|
||||
config.assets.raise_runtime_errors = true
|
||||
|
||||
# Raises error for missing translations
|
||||
# config.action_view.raise_on_missing_translations = true
|
||||
end
|
|
@ -0,0 +1,79 @@
|
|||
Rails.application.configure do
|
||||
# Settings specified here will take precedence over those in config/application.rb.
|
||||
|
||||
# Code is not reloaded between requests.
|
||||
config.cache_classes = true
|
||||
|
||||
# Eager load code on boot. This eager loads most of Rails and
|
||||
# your application in memory, allowing both threaded web servers
|
||||
# and those relying on copy on write to perform better.
|
||||
# Rake tasks automatically ignore this option for performance.
|
||||
config.eager_load = true
|
||||
|
||||
# Full error reports are disabled and caching is turned on.
|
||||
config.consider_all_requests_local = false
|
||||
config.action_controller.perform_caching = true
|
||||
|
||||
# Enable Rack::Cache to put a simple HTTP cache in front of your application
|
||||
# Add `rack-cache` to your Gemfile before enabling this.
|
||||
# For large-scale production use, consider using a caching reverse proxy like
|
||||
# NGINX, varnish or squid.
|
||||
# config.action_dispatch.rack_cache = true
|
||||
|
||||
# Disable serving static files from the `/public` folder by default since
|
||||
# Apache or NGINX already handles this.
|
||||
config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present?
|
||||
|
||||
# Compress JavaScripts and CSS.
|
||||
config.assets.js_compressor = :uglifier
|
||||
# config.assets.css_compressor = :sass
|
||||
|
||||
# Do not fallback to assets pipeline if a precompiled asset is missed.
|
||||
config.assets.compile = false
|
||||
|
||||
# Asset digests allow you to set far-future HTTP expiration dates on all assets,
|
||||
# yet still be able to expire them through the digest params.
|
||||
config.assets.digest = true
|
||||
|
||||
# `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb
|
||||
|
||||
# Specifies the header that your server uses for sending files.
|
||||
# config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache
|
||||
# config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX
|
||||
|
||||
# Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
|
||||
# config.force_ssl = true
|
||||
|
||||
# Use the lowest log level to ensure availability of diagnostic information
|
||||
# when problems arise.
|
||||
config.log_level = :debug
|
||||
|
||||
# Prepend all log lines with the following tags.
|
||||
# config.log_tags = [ :subdomain, :uuid ]
|
||||
|
||||
# Use a different logger for distributed setups.
|
||||
# config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new)
|
||||
|
||||
# Use a different cache store in production.
|
||||
# config.cache_store = :mem_cache_store
|
||||
|
||||
# Enable serving of images, stylesheets, and JavaScripts from an asset server.
|
||||
# config.action_controller.asset_host = 'http://assets.example.com'
|
||||
|
||||
# Ignore bad email addresses and do not raise email delivery errors.
|
||||
# Set this to true and configure the email server for immediate delivery to raise delivery errors.
|
||||
# config.action_mailer.raise_delivery_errors = false
|
||||
|
||||
# Enable locale fallbacks for I18n (makes lookups for any locale fall back to
|
||||
# the I18n.default_locale when a translation cannot be found).
|
||||
config.i18n.fallbacks = true
|
||||
|
||||
# Send deprecation notices to registered listeners.
|
||||
config.active_support.deprecation = :notify
|
||||
|
||||
# Use default logging formatter so that PID and timestamp are not suppressed.
|
||||
config.log_formatter = ::Logger::Formatter.new
|
||||
|
||||
# Do not dump schema after migrations.
|
||||
config.active_record.dump_schema_after_migration = false
|
||||
end
|
|
@ -0,0 +1,42 @@
|
|||
Rails.application.configure do
|
||||
# Settings specified here will take precedence over those in config/application.rb.
|
||||
|
||||
# The test environment is used exclusively to run your application's
|
||||
# test suite. You never need to work with it otherwise. Remember that
|
||||
# your test database is "scratch space" for the test suite and is wiped
|
||||
# and recreated between test runs. Don't rely on the data there!
|
||||
config.cache_classes = true
|
||||
|
||||
# Do not eager load code on boot. This avoids loading your whole application
|
||||
# just for the purpose of running a single test. If you are using a tool that
|
||||
# preloads Rails for running tests, you may have to set it to true.
|
||||
config.eager_load = false
|
||||
|
||||
# Configure static file server for tests with Cache-Control for performance.
|
||||
config.serve_static_files = true
|
||||
config.static_cache_control = 'public, max-age=3600'
|
||||
|
||||
# Show full error reports and disable caching.
|
||||
config.consider_all_requests_local = true
|
||||
config.action_controller.perform_caching = false
|
||||
|
||||
# Raise exceptions instead of rendering exception templates.
|
||||
config.action_dispatch.show_exceptions = false
|
||||
|
||||
# Disable request forgery protection in test environment.
|
||||
config.action_controller.allow_forgery_protection = false
|
||||
|
||||
# Tell Action Mailer not to deliver emails to the real world.
|
||||
# The :test delivery method accumulates sent emails in the
|
||||
# ActionMailer::Base.deliveries array.
|
||||
config.action_mailer.delivery_method = :test
|
||||
|
||||
# Randomize the order test cases are executed.
|
||||
config.active_support.test_order = :random
|
||||
|
||||
# Print deprecation notices to the stderr.
|
||||
config.active_support.deprecation = :stderr
|
||||
|
||||
# Raises error for missing translations
|
||||
# config.action_view.raise_on_missing_translations = true
|
||||
end
|
|
@ -0,0 +1,11 @@
|
|||
# Be sure to restart your server when you modify this file.
|
||||
|
||||
# Version of your assets, change this if you want to expire all your assets.
|
||||
Rails.application.config.assets.version = '1.0'
|
||||
|
||||
# Add additional assets to the asset load path
|
||||
# Rails.application.config.assets.paths << Emoji.images_path
|
||||
|
||||
# Precompile additional assets.
|
||||
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
|
||||
# Rails.application.config.assets.precompile += %w( search.js )
|
|
@ -0,0 +1,7 @@
|
|||
# Be sure to restart your server when you modify this file.
|
||||
|
||||
# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
|
||||
# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }
|
||||
|
||||
# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code.
|
||||
# Rails.backtrace_cleaner.remove_silencers!
|
|
@ -0,0 +1,3 @@
|
|||
# Be sure to restart your server when you modify this file.
|
||||
|
||||
Rails.application.config.action_dispatch.cookies_serializer = :json
|
|
@ -0,0 +1,4 @@
|
|||
# Be sure to restart your server when you modify this file.
|
||||
|
||||
# Configure sensitive parameters which will be filtered from the log file.
|
||||
Rails.application.config.filter_parameters += [:password]
|
|
@ -0,0 +1,16 @@
|
|||
# Be sure to restart your server when you modify this file.
|
||||
|
||||
# Add new inflection rules using the following format. Inflections
|
||||
# are locale specific, and you may define rules for as many different
|
||||
# locales as you wish. All of these examples are active by default:
|
||||
# ActiveSupport::Inflector.inflections(:en) do |inflect|
|
||||
# inflect.plural /^(ox)$/i, '\1en'
|
||||
# inflect.singular /^(ox)en/i, '\1'
|
||||
# inflect.irregular 'person', 'people'
|
||||
# inflect.uncountable %w( fish sheep )
|
||||
# end
|
||||
|
||||
# These inflection rules are supported but not enabled by default:
|
||||
# ActiveSupport::Inflector.inflections(:en) do |inflect|
|
||||
# inflect.acronym 'RESTful'
|
||||
# end
|
|
@ -0,0 +1,4 @@
|
|||
# Be sure to restart your server when you modify this file.
|
||||
|
||||
# Add new mime types for use in respond_to blocks:
|
||||
# Mime::Type.register "text/richtext", :rtf
|
|
@ -0,0 +1,3 @@
|
|||
# Be sure to restart your server when you modify this file.
|
||||
|
||||
Rails.application.config.session_store :cookie_store, key: '_dummy_session'
|
|
@ -0,0 +1,10 @@
|
|||
# Be sure to restart your server when you modify this file.
|
||||
|
||||
# Preserve the timezone of the receiver when calling to `to_time`.
|
||||
# Ruby 2.4 will change the behavior of `to_time` to preserve the timezone
|
||||
# when converting to an instance of `Time` instead of the previous behavior
|
||||
# of converting to the local system timezone.
|
||||
#
|
||||
# Rails 5.0 introduced this config option so that apps made with earlier
|
||||
# versions of Rails are not affected when upgrading.
|
||||
ActiveSupport.to_time_preserves_timezone = true
|
|
@ -0,0 +1,14 @@
|
|||
# Be sure to restart your server when you modify this file.
|
||||
|
||||
# This file contains settings for ActionController::ParamsWrapper which
|
||||
# is enabled by default.
|
||||
|
||||
# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
|
||||
ActiveSupport.on_load(:action_controller) do
|
||||
wrap_parameters format: [:json] if respond_to?(:wrap_parameters)
|
||||
end
|
||||
|
||||
# To enable root element in JSON for ActiveRecord objects.
|
||||
# ActiveSupport.on_load(:active_record) do
|
||||
# self.include_root_in_json = true
|
||||
# end
|
|
@ -0,0 +1,23 @@
|
|||
# Files in the config/locales directory are used for internationalization
|
||||
# and are automatically loaded by Rails. If you want to use locales other
|
||||
# than English, add the necessary files in this directory.
|
||||
#
|
||||
# To use the locales, use `I18n.t`:
|
||||
#
|
||||
# I18n.t 'hello'
|
||||
#
|
||||
# In views, this is aliased to just `t`:
|
||||
#
|
||||
# <%= t('hello') %>
|
||||
#
|
||||
# To use a different locale, set it with `I18n.locale`:
|
||||
#
|
||||
# I18n.locale = :es
|
||||
#
|
||||
# This would use the information in config/locales/es.yml.
|
||||
#
|
||||
# To learn more, please read the Rails Internationalization guide
|
||||
# available at http://guides.rubyonrails.org/i18n.html.
|
||||
|
||||
en:
|
||||
hello: "Hello world"
|
|
@ -0,0 +1,4 @@
|
|||
Rails.application.routes.draw do
|
||||
|
||||
mount InternationalRecruit::Engine => "/international_recruit"
|
||||
end
|
|
@ -0,0 +1,22 @@
|
|||
# Be sure to restart your server when you modify this file.
|
||||
|
||||
# Your secret key is used for verifying the integrity of signed cookies.
|
||||
# If you change this key, all old signed cookies will become invalid!
|
||||
|
||||
# Make sure the secret is at least 30 characters and all random,
|
||||
# no regular words or you'll be exposed to dictionary attacks.
|
||||
# You can use `rake secret` to generate a secure secret key.
|
||||
|
||||
# Make sure the secrets in this file are kept private
|
||||
# if you're sharing your code publicly.
|
||||
|
||||
development:
|
||||
secret_key_base: d31118d69f0deb75e4eb40466785d5a65a988fa83a31f8dc543cb04c6d87c4cd891898b99ada5949140d08d5f71e4d896b702486ff5b50c9969a4e70373bcfe2
|
||||
|
||||
test:
|
||||
secret_key_base: c774e75ce931cc5cab6dd00157429961e2f7c9a8b213fad39b60fac08818065e6bb77d83b8bf60cf182ba81cfcf87498eb95bb03e5521597f81a95b3bd6870eb
|
||||
|
||||
# Do not keep production secrets in the repository,
|
||||
# instead read values from the environment.
|
||||
production:
|
||||
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
|
|
@ -0,0 +1,67 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>The page you were looking for doesn't exist (404)</title>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<style>
|
||||
body {
|
||||
background-color: #EFEFEF;
|
||||
color: #2E2F30;
|
||||
text-align: center;
|
||||
font-family: arial, sans-serif;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
div.dialog {
|
||||
width: 95%;
|
||||
max-width: 33em;
|
||||
margin: 4em auto 0;
|
||||
}
|
||||
|
||||
div.dialog > div {
|
||||
border: 1px solid #CCC;
|
||||
border-right-color: #999;
|
||||
border-left-color: #999;
|
||||
border-bottom-color: #BBB;
|
||||
border-top: #B00100 solid 4px;
|
||||
border-top-left-radius: 9px;
|
||||
border-top-right-radius: 9px;
|
||||
background-color: white;
|
||||
padding: 7px 12% 0;
|
||||
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 100%;
|
||||
color: #730E15;
|
||||
line-height: 1.5em;
|
||||
}
|
||||
|
||||
div.dialog > p {
|
||||
margin: 0 0 1em;
|
||||
padding: 1em;
|
||||
background-color: #F7F7F7;
|
||||
border: 1px solid #CCC;
|
||||
border-right-color: #999;
|
||||
border-left-color: #999;
|
||||
border-bottom-color: #999;
|
||||
border-bottom-left-radius: 4px;
|
||||
border-bottom-right-radius: 4px;
|
||||
border-top-color: #DADADA;
|
||||
color: #666;
|
||||
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- This file lives in public/404.html -->
|
||||
<div class="dialog">
|
||||
<div>
|
||||
<h1>The page you were looking for doesn't exist.</h1>
|
||||
<p>You may have mistyped the address or the page may have moved.</p>
|
||||
</div>
|
||||
<p>If you are the application owner check the logs for more information.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,67 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>The change you wanted was rejected (422)</title>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<style>
|
||||
body {
|
||||
background-color: #EFEFEF;
|
||||
color: #2E2F30;
|
||||
text-align: center;
|
||||
font-family: arial, sans-serif;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
div.dialog {
|
||||
width: 95%;
|
||||
max-width: 33em;
|
||||
margin: 4em auto 0;
|
||||
}
|
||||
|
||||
div.dialog > div {
|
||||
border: 1px solid #CCC;
|
||||
border-right-color: #999;
|
||||
border-left-color: #999;
|
||||
border-bottom-color: #BBB;
|
||||
border-top: #B00100 solid 4px;
|
||||
border-top-left-radius: 9px;
|
||||
border-top-right-radius: 9px;
|
||||
background-color: white;
|
||||
padding: 7px 12% 0;
|
||||
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 100%;
|
||||
color: #730E15;
|
||||
line-height: 1.5em;
|
||||
}
|
||||
|
||||
div.dialog > p {
|
||||
margin: 0 0 1em;
|
||||
padding: 1em;
|
||||
background-color: #F7F7F7;
|
||||
border: 1px solid #CCC;
|
||||
border-right-color: #999;
|
||||
border-left-color: #999;
|
||||
border-bottom-color: #999;
|
||||
border-bottom-left-radius: 4px;
|
||||
border-bottom-right-radius: 4px;
|
||||
border-top-color: #DADADA;
|
||||
color: #666;
|
||||
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- This file lives in public/422.html -->
|
||||
<div class="dialog">
|
||||
<div>
|
||||
<h1>The change you wanted was rejected.</h1>
|
||||
<p>Maybe you tried to change something you didn't have access to.</p>
|
||||
</div>
|
||||
<p>If you are the application owner check the logs for more information.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,66 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>We're sorry, but something went wrong (500)</title>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<style>
|
||||
body {
|
||||
background-color: #EFEFEF;
|
||||
color: #2E2F30;
|
||||
text-align: center;
|
||||
font-family: arial, sans-serif;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
div.dialog {
|
||||
width: 95%;
|
||||
max-width: 33em;
|
||||
margin: 4em auto 0;
|
||||
}
|
||||
|
||||
div.dialog > div {
|
||||
border: 1px solid #CCC;
|
||||
border-right-color: #999;
|
||||
border-left-color: #999;
|
||||
border-bottom-color: #BBB;
|
||||
border-top: #B00100 solid 4px;
|
||||
border-top-left-radius: 9px;
|
||||
border-top-right-radius: 9px;
|
||||
background-color: white;
|
||||
padding: 7px 12% 0;
|
||||
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 100%;
|
||||
color: #730E15;
|
||||
line-height: 1.5em;
|
||||
}
|
||||
|
||||
div.dialog > p {
|
||||
margin: 0 0 1em;
|
||||
padding: 1em;
|
||||
background-color: #F7F7F7;
|
||||
border: 1px solid #CCC;
|
||||
border-right-color: #999;
|
||||
border-left-color: #999;
|
||||
border-bottom-color: #999;
|
||||
border-bottom-left-radius: 4px;
|
||||
border-bottom-right-radius: 4px;
|
||||
border-top-color: #DADADA;
|
||||
color: #666;
|
||||
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- This file lives in public/500.html -->
|
||||
<div class="dialog">
|
||||
<div>
|
||||
<h1>We're sorry, but something went wrong.</h1>
|
||||
</div>
|
||||
<p>If you are the application owner check the logs for more information.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,8 @@
|
|||
require 'test_helper'
|
||||
|
||||
class NavigationTest < ActionDispatch::IntegrationTest
|
||||
# test "the truth" do
|
||||
# assert true
|
||||
# end
|
||||
end
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
require 'test_helper'
|
||||
|
||||
class InternationalRecruitTest < ActiveSupport::TestCase
|
||||
test "truth" do
|
||||
assert_kind_of Module, InternationalRecruit
|
||||
end
|
||||
end
|
|
@ -0,0 +1,21 @@
|
|||
# Configure Rails Environment
|
||||
ENV["RAILS_ENV"] = "test"
|
||||
|
||||
require File.expand_path("../../test/dummy/config/environment.rb", __FILE__)
|
||||
ActiveRecord::Migrator.migrations_paths = [File.expand_path("../../test/dummy/db/migrate", __FILE__)]
|
||||
ActiveRecord::Migrator.migrations_paths << File.expand_path('../../db/migrate', __FILE__)
|
||||
require "rails/test_help"
|
||||
|
||||
# Filter out Minitest backtrace while allowing backtrace from other libraries
|
||||
# to be shown.
|
||||
Minitest.backtrace_filter = Minitest::BacktraceFilter.new
|
||||
|
||||
# Load support files
|
||||
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
||||
|
||||
# Load fixtures from the engine
|
||||
if ActiveSupport::TestCase.respond_to?(:fixture_path=)
|
||||
ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__)
|
||||
ActionDispatch::IntegrationTest.fixture_path = ActiveSupport::TestCase.fixture_path
|
||||
ActiveSupport::TestCase.fixtures :all
|
||||
end
|
Loading…
Reference in New Issue