commit d20b1cb6bfa37b997488d147093665788626ea9c Author: Harry Bomrah Date: Thu Sep 21 20:53:58 2017 +0800 first commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..de5d954 --- /dev/null +++ b/.gitignore @@ -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 diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..9ccdab8 --- /dev/null +++ b/Gemfile @@ -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] + diff --git a/MIT-LICENSE b/MIT-LICENSE new file mode 100644 index 0000000..d33f7d5 --- /dev/null +++ b/MIT-LICENSE @@ -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. diff --git a/README.rdoc b/README.rdoc new file mode 100644 index 0000000..e413cc3 --- /dev/null +++ b/README.rdoc @@ -0,0 +1,3 @@ += InternationalRecruit + +This project rocks and uses MIT-LICENSE. \ No newline at end of file diff --git a/Rakefile b/Rakefile new file mode 100644 index 0000000..f99a03f --- /dev/null +++ b/Rakefile @@ -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 diff --git a/app/assets/images/international_recruit/.keep b/app/assets/images/international_recruit/.keep new file mode 100644 index 0000000..e69de29 diff --git a/app/assets/javascripts/international_recruit/application.js b/app/assets/javascripts/international_recruit/application.js new file mode 100644 index 0000000..8913b40 --- /dev/null +++ b/app/assets/javascripts/international_recruit/application.js @@ -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 . diff --git a/app/assets/stylesheets/international_recruit/application.css b/app/assets/stylesheets/international_recruit/application.css new file mode 100644 index 0000000..f9cd5b3 --- /dev/null +++ b/app/assets/stylesheets/international_recruit/application.css @@ -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 + */ diff --git a/app/controllers/admin/international_recruits_controller.rb b/app/controllers/admin/international_recruits_controller.rb new file mode 100644 index 0000000..fd0dcee --- /dev/null +++ b/app/controllers/admin/international_recruits_controller.rb @@ -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 \ No newline at end of file diff --git a/app/controllers/international_recruits_controller.rb b/app/controllers/international_recruits_controller.rb new file mode 100644 index 0000000..4c627a4 --- /dev/null +++ b/app/controllers/international_recruits_controller.rb @@ -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 \ No newline at end of file diff --git a/app/helpers/international_recruit/application_helper.rb b/app/helpers/international_recruit/application_helper.rb new file mode 100644 index 0000000..719a652 --- /dev/null +++ b/app/helpers/international_recruit/application_helper.rb @@ -0,0 +1,4 @@ +module InternationalRecruit + module ApplicationHelper + end +end diff --git a/app/models/international_country.rb b/app/models/international_country.rb new file mode 100644 index 0000000..679b832 --- /dev/null +++ b/app/models/international_country.rb @@ -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 \ No newline at end of file diff --git a/app/models/recruit_application.rb b/app/models/recruit_application.rb new file mode 100644 index 0000000..eb6deca --- /dev/null +++ b/app/models/recruit_application.rb @@ -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 \ No newline at end of file diff --git a/app/models/university_course.rb b/app/models/university_course.rb new file mode 100644 index 0000000..806ad10 --- /dev/null +++ b/app/models/university_course.rb @@ -0,0 +1,7 @@ +class UniversityCourse + include Mongoid::Document + include Mongoid::Timestamps + + field :course_name + +end \ No newline at end of file diff --git a/app/views/admin/international_recruits/index.html.erb b/app/views/admin/international_recruits/index.html.erb new file mode 100644 index 0000000..ac02728 --- /dev/null +++ b/app/views/admin/international_recruits/index.html.erb @@ -0,0 +1,20 @@ + + + + <% @table_fields.each do |f| %> + <%= thead(f) %> + <% end %> + + + + <% @applications.each do |application| %> + + + + + + <% end %> + +
<%= application.get_member.name rescue "" %><%= application.created_at.strftime("%Y-%m-%d") %> + Delete +
\ No newline at end of file diff --git a/app/views/international_recruits/application_success.html.erb b/app/views/international_recruits/application_success.html.erb new file mode 100644 index 0000000..d01a32d --- /dev/null +++ b/app/views/international_recruits/application_success.html.erb @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/views/international_recruits/index.html.erb b/app/views/international_recruits/index.html.erb new file mode 100644 index 0000000..95628c3 --- /dev/null +++ b/app/views/international_recruits/index.html.erb @@ -0,0 +1,663 @@ +<%= javascript_include_tag "lib/bootstrap-datetimepicker" %> +<%= javascript_include_tag "lib/datetimepicker/datetimepicker.js" %> +<% + data = action_data + application = data["application"] +%> + + +
+

Course Signup Form

+ <%= form_for application, :url => "/xhr/international_recruits/submitapplication" do |f| %> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ *<%= f.radio_button :student_type, "新生(New students)" %> 新生(New students) +          + <%= f.radio_button :student_type, "轉學生(Transferring)" %>轉學生(Transferring) +
*姓名(中文)
Name(Chinese)
<%= f.text_field :chinese_name, :size => 20 %>姓名(英文)
Name(English)
+ + + + + + + + + + + + + +
FirstMiddleLast
<%= f.text_field :english_first_name, :size => 8 %><%= f.text_field :english_middle_name, :size => 8 %><%= f.text_field :english_last_name, :size => 8 %>
+
出生地點
Place of Birth
<%= f.text_field :place_of_birth, :size => 20 %>出生年月日
Birth Day
+ <%= f.datetime_picker :birth_date, :no_label => true, :new_record => application.new_record? %> +
性別
Gender
+ <%= f.radio_button :gender, "男性(Male)" %>男性(Male) +      + <%= f.radio_button :gender, "女性(Female)" %>女性(Female) + 國籍
Nationality
+ <%= f.select :nationality, data["countries"] %>
+
+
護照號碼
Passport No.
<%= f.text_field :passport_no, :size => 20 %>
住址(臺灣地區請以中文)
Home Address in English
+ <%= f.select :address_nationality, data["countries"] %>
+ <%= f.text_field :home_address, :size => 60 %> +
聯絡電話
Telephone
+ 國碼 Country code +<%= f.text_field :country_code, :size => 3 %>    + <%= f.text_field :tel_part1, :size => 3 %> - + <%= f.text_field :tel_part2, :size => 6 %> + 手機
Cell Phone
<%= f.text_field :mobile, :size => 25 %>
在台聯絡人
Contact Person in the R.O.C
+ <%= f.text_field :taiwan_contact_person, :size => 25 %> + 聯絡人手機
Contact Person
Cell Phone
+ <%= f.text_field :taiwan_contact_person_phone, :size => 25 %> +
在台通訊處
Mailing Address in the R.O.C
+ <%= f.text_field :taiwan_mailing_address, :size => 60 %> +
監護人姓名
Name of parten/legal guardian
+ <%= f.text_field :legal_guardian_name, :size => 60 %> +
監護人住址
Address of parten/legal guardian
+ <%= f.text_field :legal_guardian_address, :size => 60 %> +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
父親曾為臺灣籍
Father have Taiwanese citizenship
+ <%= f.radio_button :taiwanese_father, "1" %>是 Yes + <%= f.radio_button :taiwanese_father, "2" %>否 No +
父親姓名
Father's Name
<%= f.text_field :father_name, :size => 20 %>出生年月日
Birth Day
<%= f.datetime_picker :father_birthdate, :no_label => true, :new_record => application.new_record? %>
出生地點
Place of Birth
+ <%= f.text_field :father_place_of_birth, :size => 30 %> + 聯絡電話
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 %> +
住址
Home Address
+ <%= f.text_field :father_home_address, :size => 60 %> +
+
國籍
Nationality
+ +
+
+ <%= f.select :father_nationality, data["countries"] %>
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
母親曾為臺灣籍
Mother have Taiwanese citizenship
+ <%= f.radio_button :taiwanese_father, "1" %>是 Yes + <%= f.radio_button :taiwanese_father, "2" %>否 No +
母親姓名
Mother's Name
<%= f.text_field :mother_name, :size => 20 %>出生年月日
Birth Day
+ <%= f.datetime_picker :mother_birthdate, :no_label => true, :new_record => application.new_record? %> +
出生地點
Place of Birth
+ <%= f.text_field :mother_place_of_birth, :size => 30 %> + 聯絡電話
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 %> +
住址
Home Address
+ <%= f.text_field :mother_home_address, :size => 60 %> +
+
國籍
Nationality
+ +
+
+ <%= f.select :mother_nationality, data["countries"] %>
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
擬申請就讀之系(所)組及擬攻讀何種學位
Department or graduate program do you expect to enroll in at NKUHT? And What program do you plan pursue
+ +
擬申請就讀之系(所)組及擬攻讀何種學位(第二志願)
Department or graduate program do you expect to enroll in at NKUHT? And What program do you plan pursue
+ +
擬申請就讀之系(所)組及擬攻讀何種學位(第三志願)
Department or graduate program do you expect to enroll in at NKUHT? And What program do you plan pursue
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
在台研習期間各項費用來源
What are your major financial
resources during your study at NKUHT?
+ + + + + + + + + + + +
個人儲蓄 Personal Saving 獎助學金 Scholarship
父母供給 Parental Support其他 Other <%= f.text_field :financial_other_financial, :size => 20 %>
+
健康情形
Health Condition
+ + + + + + + + + + + + + + +
<%= f.radio_button :health_condition, "佳 (Good)" %>佳 (Good)<%= f.radio_button :health_condition, "尚可 (Average)" %>尚可 (Average)<%= f.radio_button :health_condition, "差 (Poor)" %>差 (Poor)
+ 如有疾病或缺陷請敘明之 (Any major health problem or physical disability?) +
+ <%= f.text_field :major_health_condition, :size => 60 %> +
+
曾學習中文幾年?
How long have you studied Chinese?
+ <%= f.select :chinese_studying_years, data["years"] %>年 (Year) +
受何人指導(講授)?
Where and under whose guidance have you studied Chinese?
+ <%= f.text_field :chinese_tutor, :size => 20 %> +
中國語文程度
Chinese proficiency level
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
聽 (Listening)<%= f.radio_button :chinese_proficiency_level_listening, "優 (Excellent)" %>優 (Excellent)<%= f.radio_button :chinese_proficiency_level_listening, "佳 (Good)" %>佳 (Good)<%= f.radio_button :chinese_proficiency_level_listening, "尚可 (Average)" %>尚可 (Average)<%= f.radio_button :chinese_proficiency_level_listening, "差 (Poor)" %>差 (Poor)
說 (Speaking)<%= f.radio_button :chinese_proficiency_level_speaking, "優 (Excellent)" %>優 (Excellent)<%= f.radio_button :chinese_proficiency_level_speaking, "佳 (Good)" %>佳 (Good)<%= f.radio_button :chinese_proficiency_level_speaking, "尚可 (Average)" %>尚可 (Average)<%= f.radio_button :chinese_proficiency_level_speaking, "差 (Poor)" %>差 (Poor)
讀 (Reading)<%= f.radio_button :chinese_proficiency_level_reading, "優 (Excellent)" %>優 (Excellent)<%= f.radio_button :chinese_proficiency_level_reading, "佳 (Good)" %>佳 (Good)<%= f.radio_button :chinese_proficiency_level_reading, "尚可 (Average)" %>尚可 (Average)<%= f.radio_button :chinese_proficiency_level_reading, "差 (Poor)" %>差 (Poor)
寫 (Writing)<%= f.radio_button :chinese_proficiency_level_writing, "優 (Excellent)" %>優 (Excellent)<%= f.radio_button :chinese_proficiency_level_writing, "佳 (Good)" %>佳 (Good)<%= f.radio_button :chinese_proficiency_level_writing, "尚可 (Average)" %>尚可 (Average)<%= f.radio_button :chinese_proficiency_level_writing, "差 (Poor)" %>差 (Poor)
+
是否參加過中文語文能力測驗?
Have you taken any Chinese language test?
+ <%= f.radio_button :taken_chinese_test, "是 (Yes)" %>是 (Yes) + <%= f.radio_button :taken_chinese_test, "否 (No)" %>否 (No) +
何種測驗? What kind of test? + <%= f.text_field :chinese_test_name %> +
級數? Grade/Level? + <%= f.text_field :chinese_test_level %> +
+
+ + + + + + + + + +
課外活動 Extra-Curricular Activities
+
+ + + + + + + + + +
活動名稱 (Subject)參加年月 + <% years = Time.now.year..Time.now.year - 50 %> + 年 (Year) + 月 (Month) +
+
+
+
+ +
+ +
+ + + + + + + + + +
著作 Publications
+
+ + + + + + + + + +
著作名稱 (Title)參加年月 + <% years = Time.now.year..Time.now.year - 50 %> + 年 (Year) + 月 (Month) +
+
+
+
+ +
+ +
+ + + + + + + + + +
經歷 Previous Employment
+
+ + + + + + + + + + + + + +
公司名稱
(Company Name)
職稱 (Title)
起訖日
(Attendance Period)
+ + + + + + + +
+ 起 (From) + <% years = Time.now.year..Time.now.year - 50 %> + 年 (Year) + 月 (Month) + + 訖 (To)<% years = Time.now.year..Time.now.year - 50 %> + 年 (Year) + 月 (Month) +
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
學歷 Applicant’s previous educational background
學程 (Degree)<%= f.radio_button :degree_type, "中等學校 Secondary Education" %>中等學校
Secondary Education
<%= f.radio_button :degree_type, "專科或大學 College or University" %>專科或大學
College or University
<%= f.radio_button :degree_type, "國民型中學五年級 Form 5 graduates" %>國民型中學五年級
Form 5 graduates
學校名稱 (Name of school)<%= f.text_field :school_name %>
學校所在地 (City and country)<%= f.text_field :school_city %>
學位 (Degree granted)<%= f.text_field :school_degree %>
起迄日 (Attendance period) + <%= 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"} %> +
畢業日期 (Date of Graduation)<%= f.datetime_picker :graduation_date, :no_label => true, :new_record => application.new_record? %>
主修 (Major)<%= f.text_field :course_major, :size => 40 %>
副修 (Minor)<%= f.text_field :course_minor, :size => 40 %>
+ + + + + + + + + + + <%= f.hidden_field :member_id, :value => data["member"] %> + + + +
Email
Email<%= f.text_field :email, :size => 40 %>
<%= f.submit "Apply", :class => "btn btn-primary" %>
+ + <% end %> +
+ + + + diff --git a/bin/rails b/bin/rails new file mode 100755 index 0000000..59ac503 --- /dev/null +++ b/bin/rails @@ -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' diff --git a/config/locales/en.yml b/config/locales/en.yml new file mode 100644 index 0000000..96d07a0 --- /dev/null +++ b/config/locales/en.yml @@ -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 \ No newline at end of file diff --git a/config/locales/zh_tw.yml b/config/locales/zh_tw.yml new file mode 100644 index 0000000..93366f9 --- /dev/null +++ b/config/locales/zh_tw.yml @@ -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 \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb new file mode 100644 index 0000000..727db9f --- /dev/null +++ b/config/routes.rb @@ -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 + diff --git a/international_recruit.gemspec b/international_recruit.gemspec new file mode 100644 index 0000000..c37904e --- /dev/null +++ b/international_recruit.gemspec @@ -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 diff --git a/lib/international_recruit.rb b/lib/international_recruit.rb new file mode 100644 index 0000000..319b333 --- /dev/null +++ b/lib/international_recruit.rb @@ -0,0 +1,4 @@ +require "international_recruit/engine" + +module InternationalRecruit +end diff --git a/lib/international_recruit/engine.rb b/lib/international_recruit/engine.rb new file mode 100644 index 0000000..539eb27 --- /dev/null +++ b/lib/international_recruit/engine.rb @@ -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 \ No newline at end of file diff --git a/lib/international_recruit/version.rb b/lib/international_recruit/version.rb new file mode 100644 index 0000000..9e778b9 --- /dev/null +++ b/lib/international_recruit/version.rb @@ -0,0 +1,3 @@ +module InternationalRecruit + VERSION = "0.0.1" +end diff --git a/lib/tasks/international_recruit_tasks.rake b/lib/tasks/international_recruit_tasks.rake new file mode 100644 index 0000000..d72a0c3 --- /dev/null +++ b/lib/tasks/international_recruit_tasks.rake @@ -0,0 +1,4 @@ +# desc "Explaining what the task does" +# task :international_recruit do +# # Task goes here +# end diff --git a/test/dummy/README.rdoc b/test/dummy/README.rdoc new file mode 100644 index 0000000..dd4e97e --- /dev/null +++ b/test/dummy/README.rdoc @@ -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 +rake doc:app. diff --git a/test/dummy/Rakefile b/test/dummy/Rakefile new file mode 100644 index 0000000..ba6b733 --- /dev/null +++ b/test/dummy/Rakefile @@ -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 diff --git a/test/dummy/app/assets/images/.keep b/test/dummy/app/assets/images/.keep new file mode 100644 index 0000000..e69de29 diff --git a/test/dummy/app/assets/javascripts/application.js b/test/dummy/app/assets/javascripts/application.js new file mode 100644 index 0000000..8913b40 --- /dev/null +++ b/test/dummy/app/assets/javascripts/application.js @@ -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 . diff --git a/test/dummy/app/assets/stylesheets/application.css b/test/dummy/app/assets/stylesheets/application.css new file mode 100644 index 0000000..f9cd5b3 --- /dev/null +++ b/test/dummy/app/assets/stylesheets/application.css @@ -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 + */ diff --git a/test/dummy/app/controllers/application_controller.rb b/test/dummy/app/controllers/application_controller.rb new file mode 100644 index 0000000..d83690e --- /dev/null +++ b/test/dummy/app/controllers/application_controller.rb @@ -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 diff --git a/test/dummy/app/controllers/concerns/.keep b/test/dummy/app/controllers/concerns/.keep new file mode 100644 index 0000000..e69de29 diff --git a/test/dummy/app/helpers/application_helper.rb b/test/dummy/app/helpers/application_helper.rb new file mode 100644 index 0000000..de6be79 --- /dev/null +++ b/test/dummy/app/helpers/application_helper.rb @@ -0,0 +1,2 @@ +module ApplicationHelper +end diff --git a/test/dummy/app/mailers/.keep b/test/dummy/app/mailers/.keep new file mode 100644 index 0000000..e69de29 diff --git a/test/dummy/app/models/.keep b/test/dummy/app/models/.keep new file mode 100644 index 0000000..e69de29 diff --git a/test/dummy/app/models/concerns/.keep b/test/dummy/app/models/concerns/.keep new file mode 100644 index 0000000..e69de29 diff --git a/test/dummy/app/views/layouts/application.html.erb b/test/dummy/app/views/layouts/application.html.erb new file mode 100644 index 0000000..593a778 --- /dev/null +++ b/test/dummy/app/views/layouts/application.html.erb @@ -0,0 +1,14 @@ + + + + Dummy + <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %> + <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> + <%= csrf_meta_tags %> + + + +<%= yield %> + + + diff --git a/test/dummy/bin/bundle b/test/dummy/bin/bundle new file mode 100755 index 0000000..66e9889 --- /dev/null +++ b/test/dummy/bin/bundle @@ -0,0 +1,3 @@ +#!/usr/bin/env ruby +ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) +load Gem.bin_path('bundler', 'bundle') diff --git a/test/dummy/bin/rails b/test/dummy/bin/rails new file mode 100755 index 0000000..5191e69 --- /dev/null +++ b/test/dummy/bin/rails @@ -0,0 +1,4 @@ +#!/usr/bin/env ruby +APP_PATH = File.expand_path('../../config/application', __FILE__) +require_relative '../config/boot' +require 'rails/commands' diff --git a/test/dummy/bin/rake b/test/dummy/bin/rake new file mode 100755 index 0000000..1724048 --- /dev/null +++ b/test/dummy/bin/rake @@ -0,0 +1,4 @@ +#!/usr/bin/env ruby +require_relative '../config/boot' +require 'rake' +Rake.application.run diff --git a/test/dummy/bin/setup b/test/dummy/bin/setup new file mode 100755 index 0000000..acdb2c1 --- /dev/null +++ b/test/dummy/bin/setup @@ -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 diff --git a/test/dummy/config.ru b/test/dummy/config.ru new file mode 100644 index 0000000..bd83b25 --- /dev/null +++ b/test/dummy/config.ru @@ -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 diff --git a/test/dummy/config/application.rb b/test/dummy/config/application.rb new file mode 100644 index 0000000..41287a2 --- /dev/null +++ b/test/dummy/config/application.rb @@ -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 + diff --git a/test/dummy/config/boot.rb b/test/dummy/config/boot.rb new file mode 100644 index 0000000..6266cfc --- /dev/null +++ b/test/dummy/config/boot.rb @@ -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__) diff --git a/test/dummy/config/database.yml b/test/dummy/config/database.yml new file mode 100644 index 0000000..1c1a37c --- /dev/null +++ b/test/dummy/config/database.yml @@ -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 diff --git a/test/dummy/config/environment.rb b/test/dummy/config/environment.rb new file mode 100644 index 0000000..ee8d90d --- /dev/null +++ b/test/dummy/config/environment.rb @@ -0,0 +1,5 @@ +# Load the Rails application. +require File.expand_path('../application', __FILE__) + +# Initialize the Rails application. +Rails.application.initialize! diff --git a/test/dummy/config/environments/development.rb b/test/dummy/config/environments/development.rb new file mode 100644 index 0000000..b55e214 --- /dev/null +++ b/test/dummy/config/environments/development.rb @@ -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 diff --git a/test/dummy/config/environments/production.rb b/test/dummy/config/environments/production.rb new file mode 100644 index 0000000..5c1b32e --- /dev/null +++ b/test/dummy/config/environments/production.rb @@ -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 diff --git a/test/dummy/config/environments/test.rb b/test/dummy/config/environments/test.rb new file mode 100644 index 0000000..1c19f08 --- /dev/null +++ b/test/dummy/config/environments/test.rb @@ -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 diff --git a/test/dummy/config/initializers/assets.rb b/test/dummy/config/initializers/assets.rb new file mode 100644 index 0000000..01ef3e6 --- /dev/null +++ b/test/dummy/config/initializers/assets.rb @@ -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 ) diff --git a/test/dummy/config/initializers/backtrace_silencers.rb b/test/dummy/config/initializers/backtrace_silencers.rb new file mode 100644 index 0000000..59385cd --- /dev/null +++ b/test/dummy/config/initializers/backtrace_silencers.rb @@ -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! diff --git a/test/dummy/config/initializers/cookies_serializer.rb b/test/dummy/config/initializers/cookies_serializer.rb new file mode 100644 index 0000000..7f70458 --- /dev/null +++ b/test/dummy/config/initializers/cookies_serializer.rb @@ -0,0 +1,3 @@ +# Be sure to restart your server when you modify this file. + +Rails.application.config.action_dispatch.cookies_serializer = :json diff --git a/test/dummy/config/initializers/filter_parameter_logging.rb b/test/dummy/config/initializers/filter_parameter_logging.rb new file mode 100644 index 0000000..4a994e1 --- /dev/null +++ b/test/dummy/config/initializers/filter_parameter_logging.rb @@ -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] diff --git a/test/dummy/config/initializers/inflections.rb b/test/dummy/config/initializers/inflections.rb new file mode 100644 index 0000000..ac033bf --- /dev/null +++ b/test/dummy/config/initializers/inflections.rb @@ -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 diff --git a/test/dummy/config/initializers/mime_types.rb b/test/dummy/config/initializers/mime_types.rb new file mode 100644 index 0000000..dc18996 --- /dev/null +++ b/test/dummy/config/initializers/mime_types.rb @@ -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 diff --git a/test/dummy/config/initializers/session_store.rb b/test/dummy/config/initializers/session_store.rb new file mode 100644 index 0000000..e766b67 --- /dev/null +++ b/test/dummy/config/initializers/session_store.rb @@ -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' diff --git a/test/dummy/config/initializers/to_time_preserves_timezone.rb b/test/dummy/config/initializers/to_time_preserves_timezone.rb new file mode 100644 index 0000000..8674be3 --- /dev/null +++ b/test/dummy/config/initializers/to_time_preserves_timezone.rb @@ -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 diff --git a/test/dummy/config/initializers/wrap_parameters.rb b/test/dummy/config/initializers/wrap_parameters.rb new file mode 100644 index 0000000..33725e9 --- /dev/null +++ b/test/dummy/config/initializers/wrap_parameters.rb @@ -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 diff --git a/test/dummy/config/locales/en.yml b/test/dummy/config/locales/en.yml new file mode 100644 index 0000000..0653957 --- /dev/null +++ b/test/dummy/config/locales/en.yml @@ -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" diff --git a/test/dummy/config/routes.rb b/test/dummy/config/routes.rb new file mode 100644 index 0000000..a6bbc93 --- /dev/null +++ b/test/dummy/config/routes.rb @@ -0,0 +1,4 @@ +Rails.application.routes.draw do + + mount InternationalRecruit::Engine => "/international_recruit" +end diff --git a/test/dummy/config/secrets.yml b/test/dummy/config/secrets.yml new file mode 100644 index 0000000..4e4ed88 --- /dev/null +++ b/test/dummy/config/secrets.yml @@ -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"] %> diff --git a/test/dummy/lib/assets/.keep b/test/dummy/lib/assets/.keep new file mode 100644 index 0000000..e69de29 diff --git a/test/dummy/log/.keep b/test/dummy/log/.keep new file mode 100644 index 0000000..e69de29 diff --git a/test/dummy/public/404.html b/test/dummy/public/404.html new file mode 100644 index 0000000..b612547 --- /dev/null +++ b/test/dummy/public/404.html @@ -0,0 +1,67 @@ + + + + The page you were looking for doesn't exist (404) + + + + + + +
+
+

The page you were looking for doesn't exist.

+

You may have mistyped the address or the page may have moved.

+
+

If you are the application owner check the logs for more information.

+
+ + diff --git a/test/dummy/public/422.html b/test/dummy/public/422.html new file mode 100644 index 0000000..a21f82b --- /dev/null +++ b/test/dummy/public/422.html @@ -0,0 +1,67 @@ + + + + The change you wanted was rejected (422) + + + + + + +
+
+

The change you wanted was rejected.

+

Maybe you tried to change something you didn't have access to.

+
+

If you are the application owner check the logs for more information.

+
+ + diff --git a/test/dummy/public/500.html b/test/dummy/public/500.html new file mode 100644 index 0000000..061abc5 --- /dev/null +++ b/test/dummy/public/500.html @@ -0,0 +1,66 @@ + + + + We're sorry, but something went wrong (500) + + + + + + +
+
+

We're sorry, but something went wrong.

+
+

If you are the application owner check the logs for more information.

+
+ + diff --git a/test/dummy/public/favicon.ico b/test/dummy/public/favicon.ico new file mode 100644 index 0000000..e69de29 diff --git a/test/integration/navigation_test.rb b/test/integration/navigation_test.rb new file mode 100644 index 0000000..f5d1ec2 --- /dev/null +++ b/test/integration/navigation_test.rb @@ -0,0 +1,8 @@ +require 'test_helper' + +class NavigationTest < ActionDispatch::IntegrationTest + # test "the truth" do + # assert true + # end +end + diff --git a/test/international_recruit_test.rb b/test/international_recruit_test.rb new file mode 100644 index 0000000..ee3678e --- /dev/null +++ b/test/international_recruit_test.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class InternationalRecruitTest < ActiveSupport::TestCase + test "truth" do + assert_kind_of Module, InternationalRecruit + end +end diff --git a/test/test_helper.rb b/test/test_helper.rb new file mode 100644 index 0000000..763f88f --- /dev/null +++ b/test/test_helper.rb @@ -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