backedn with graphs and applications

This commit is contained in:
Harry Bomrah 2018-01-18 02:22:24 +08:00
parent 1d652c1481
commit 05a7c8ee06
23 changed files with 628 additions and 34 deletions

View File

@ -1,5 +1,118 @@
class Admin::RecruitmentsController < OrbitAdminController
def index
@job_postings = RecruitmentJob.jobs.count
@internship_postings = RecruitmentJob.internships.count
@exchange_postings = RecruitmentJob.exchanges.count
@total_employees = EmployeeProfile.count
@total_employers = EmployerProfile.count
@total_position_filled = RecruitmentJob.filled.count
end
def load_chart
month = params[:month].present? ? params[:month] : Time.now.month
year = params[:year].present? ? params[:year] : Time.now.year
case params[:type]
when "posting"
@startdt = DateTime.parse("#{year}/#{month}")
enddt = DateTime.parse("#{year}/#{month.to_i + 1}")
@data = {}
@data[t("recruitment.post_t.type1")] = RecruitmentJob.jobs.where(:created_at.gte => @startdt, :created_at.lt => enddt).count
@data[t("recruitment.post_t.type2")] = RecruitmentJob.internships.where(:created_at.gte => @startdt, :created_at.lt => enddt).count
@data[t("recruitment.post_t.type3")] = RecruitmentJob.exchanges.where(:created_at.gte => @startdt, :created_at.lt => enddt).count
when "registration"
@startdt = DateTime.parse("#{year}/#{month}")
enddt = DateTime.parse("#{year}/#{month.to_i + 1}")
@data = {}
@data[t("recruitment.user_type.type1")] = RecruitProfile.employees.where(:created_at.gte => @startdt, :created_at.lt => enddt).count
@data[t("recruitment.user_type.type2")] = RecruitProfile.employers.where(:created_at.gte => @startdt, :created_at.lt => enddt).count
when "filled"
@startdt = DateTime.parse("#{year}/#{month}")
enddt = DateTime.parse("#{year}/#{month.to_i + 1}")
@data = {}
@data[t("recruitment.post_t.type1")] = RecruitmentJob.jobs.filled.where(:created_at.gte => @startdt, :created_at.lt => enddt).count
@data[t("recruitment.post_t.type2")] = RecruitmentJob.internships.filled.where(:created_at.gte => @startdt, :created_at.lt => enddt).count
@data[t("recruitment.post_t.type3")] = RecruitmentJob.exchanges.filled.where(:created_at.gte => @startdt, :created_at.lt => enddt).count
end
render :layout => false
end
def member_management
@filter_fields = {:user_type => [{:title => t("recruitment.user_type.type1"), :id => "1"},{:title => t("recruitment.user_type.type2"), :id => "2"}]}
@table_fields = ["recruitment.name", "recruitment.user_type_title", "recruitment.actions"]
if params[:filters].present? && params[:filters]["user_type"].present?
numbers = params[:filters]["user_type"].collect{|ut| ut.to_i}
@users = RecruitProfile.where(:user_type.in => numbers).order_by(sort)
else
@users = RecruitProfile.all.order_by(sort)
end
@users = search_data(@users,[:pseudo_member_id, :email, :first_name, :last_name]).page(params[:page]).per(10)
if request.xhr?
render :partial => "member_index"
end
end
def postings
@filter_fields = {:application_type => [{:title => "recruitment.post_t.type1", :id => "type1"},{:title => "recruitment.post_t.type2", :id => "type2"},{:title => "recruitment.post_t.type3", :id => "type3"}]}
@table_fields = ["recruitment.job_title", "recruitment.company_name", "recruitment.position_filled", "recruitment.number_of_applicants", "recruitment.post_type", "recruitment.actions"]
if params[:filters].present? && params[:filters]["application_type"].present?
@jobs = RecruitmentJob.where(:post_type.in => params[:filters]["application_type"])
else
@jobs = RecruitmentJob.all
end
@jobs = search_data(@jobs,[:job_title]).page(params[:page]).per(10)
if request.xhr?
render :partial => "posting_index"
end
end
def show_member
@user = RecruitProfile.find(params[:id])
@profile = @user.profile
end
def applications
@job = RecruitmentJob.find(params[:id])
@applications = EmployeeJobApplication.where(:job => @job.id.to_s).not_archived
@table_fields = ["recruitment.name", "recruitment.applied_date"]
end
def member_applications
@user = RecruitProfile.find(params[:id])
profile = @user.profile
@applications = profile.employee_job_applications.not_archived
@table_fields = ["recruitment.job_title", "recruitment.company_name", "recruitment.applied_date", "recruitment.post_type"]
end
def company_postings
@user = RecruitProfile.find(params[:id])
profile = @user.profile
@jobs = profile.recruitment_jobs
@filter_fields = {:application_type => [{:title => "recruitment.post_t.type1", :id => "type1"},{:title => "recruitment.post_t.type2", :id => "type2"},{:title => "recruitment.post_t.type3", :id => "type3"}]}
@table_fields = ["recruitment.job_title", "recruitment.company_name", "recruitment.position_filled", "recruitment.number_of_applicants", "recruitment.post_type", "recruitment.actions"]
if params[:filters].present? && params[:filters]["application_type"].present?
@jobs = @jobs.where(:post_type.in => params[:filters]["application_type"])
end
@jobs = search_data(@jobs,[:job_title]).page(params[:page]).per(10)
if request.xhr?
render :partial => "posting_index"
end
end
def delete_user
user = RecruitProfile.find(params[:id])
if params[:status].present?
if params[:status] == "disable"
user.disable_user
elsif params[:status] == "enable"
user.enable_user
end
else
pu = PseudoUser.where(:user_name => user.pseudo_member_id).first
user.destroy
pu.destroy
end
redirect_to member_management_admin_recruitments_path(:page => params[:page])
end
def industries

View File

@ -692,6 +692,7 @@ class RecruitmentsController < PseudoSessionController
par[:employee_profile_attributes][:skills] = par[:employee_profile_attributes][:skills].split(",")
par[:employee_profile_attributes][:skills].collect!{|sk| sk.strip}
end
# debugger
par
end

View File

@ -11,6 +11,7 @@ class RecruitProfile
field :first_name, as: :slug_title
field :last_name
field :user_type, type: Integer, default: 1
field :enabled, type: Boolean, :default => true
scope :employers, ->{ where(user_type: self::EMPLOYER) }
scope :employees, ->{ where(user_type: self::EMPLOYEE) }
@ -22,6 +23,22 @@ class RecruitProfile
accepts_nested_attributes_for :employer_profile, :allow_destroy => true
def disable_user
pu = PseudoUser.where(:user_name => self.pseudo_member_id).first
pu.enabled = false
self.enabled = false
pu.save
self.save
end
def enable_user
pu = PseudoUser.where(:user_name => self.pseudo_member_id).first
pu.enabled = true
self.enabled = true
pu.save
self.save
end
def name
self.first_name + " " + self.last_name rescue self.email
end

View File

@ -45,8 +45,10 @@ class RecruitmentJob
belongs_to :employer_profile
scope :not_filled, ->{where(:filled => false)}
scope :filled, ->{where(:filled => true)}
scope :jobs, ->{where(:post_type => "type1")}
scope :internships, ->{where(:post_type => "type2")}
scope :exchanges, ->{where(:post_type => "type3")}
def get_category
RecruitmentCategory.find(self.category).job_category rescue ""
@ -67,4 +69,15 @@ class RecruitmentJob
end
end
def get_job_page
case self.post_type
when "type1"
"jobs"
when "type2"
"internships"
when "type3"
"exchanges"
end
end
end

View File

@ -0,0 +1,46 @@
<script>
if(document.querySelectorAll("#orbit-bar").length==0) location.reload();
</script>
<table class="table main-list">
<thead>
<tr class="sort-header">
<% @table_fields.each do |f| %>
<%= thead(f) %>
<% end %>
</tr>
</thead>
<tbody>
<% @users.each do |user| %>
<tr>
<td>
<% if user.is_employee? %>
<a href="/<%= I18n.locale.to_s + "/candidates/" + user.to_param %>" target="_blank" ><%= user.name %></a>
<% elsif user.is_employer? %>
<a href="<%= show_member_admin_recruitment_path(user.id) %>" ><%= user.profile.company_name %></a>
<% end %>
</td>
<td><%= t("recruitment.user_type.type#{user.user_type.to_s}") %></td>
<td>
<% if user.enabled %>
<a href="<%= delete_user_admin_recruitment_path(user.id, :status => "disable", :page => params[:page]) %>" data-method="delete" class="btn btn-warning"><%= t("recruitment.disable_user") %></a>
<% else %>
<a href="<%= delete_user_admin_recruitment_path(user.id, :status => "enable", :page => params[:page]) %>" data-method="delete" class="btn btn-success"><%= t("recruitment.enable_user") %></a>
<% end %>
<a href="<%= delete_user_admin_recruitment_path(user.id, :page => params[:page]) %>" data-method="delete" data-confirm="Are you sure?" class="btn btn-danger"><%= t(:_delete) %></a>
<% if user.is_employee? %>
<a href="<%= member_applications_admin_recruitment_path(user.id) %>" class="btn btn-info"><%= t("recruitment.show_applications") %></a>
<% elsif user.is_employer? %>
<a href="<%= company_postings_admin_recruitment_path(user.id) %>" class="btn btn-info"><%= t("recruitment.show_jobs") %></a>
<% end %>
</td>
</tr>
<% end %>
</tbody>
</table>
<%=
content_tag :div, class: "bottomnav clearfix" do
content_tag :div, paginate(@users), class: "pagination pagination-centered"
end
%>

View File

@ -0,0 +1,35 @@
<script>
if(document.querySelectorAll("#orbit-bar").length==0) location.reload();
</script>
<table class="table main-list">
<thead>
<tr class="sort-header">
<% @table_fields.each do |f| %>
<%= thead(f) %>
<% end %>
</tr>
</thead>
<tbody>
<% @jobs.each do |job| %>
<tr>
<td><a href="/<%= I18n.locale.to_s %>/<%= job.get_job_page %>/<%= job.to_param %>" target="_blank"><%= job.job_title %></a></td>
<td><%= job.employer_profile.company_name %></td>
<td><span class="label label-<%= (job.filled ? "success" : "important" ) %>"><%= (job.filled ? "Yes" : "No" ) %></span></td>
<% jobcount = job.get_application_count %>
<td><%= jobcount %></td>
<td><%= job.get_post_type_label.html_safe %></td>
<td>
<% if jobcount > 0 %>
<a href="<%= applications_admin_recruitment_path(job.id) %>" class="btn btn-default"><%= t("recruitment.show_application") %></a>
<% end %>
</td>
</tr>
<% end %>
</tbody>
</table>
<%=
content_tag :div, class: "bottomnav clearfix" do
content_tag :div, paginate(@jobs), class: "pagination pagination-centered"
end
%>

View File

@ -0,0 +1,19 @@
<h3>Applications for <%= @job.job_title %> ~ <i><%= @job.employer_profile.company_name %></i></h3>
<table class="table main-list">
<thead>
<tr class="sort-header">
<% @table_fields.each do |f| %>
<%= thead(f) %>
<% end %>
</tr>
</thead>
<tbody>
<% @applications.each do |app| %>
<tr>
<td><a href="/<%= I18n.locale.to_s %>/candidates/<%= app.employee_profile.recruit_profile.to_param %>" target="_blank"><%= app.employee_profile.recruit_profile.name %></a></td>
<td><%= app.created_at.strftime("%Y/%m/%d") %></td>
</tr>
<% end %>
</tbody>
</table>
<a href="#" onclick="window.history.back(); return false;" class="btn btn-warning"><%= t(:back) %></a>

View File

@ -0,0 +1,6 @@
<%= csrf_meta_tag %>
<%= render_filter @filter_fields, "index_table" %>
<span id="index_table">
<%= render 'posting_index'%>
</span>
<a href="#" onclick="window.history.back(); return false;" class="btn btn-warning"><%= t(:back) %></a>

View File

@ -1 +1,171 @@
backend index
<%= javascript_include_tag "//www.google.com/jsapi", "chartkick"%>
<style type="text/css">
.all-stats{
list-style: none;
display: inline-block;
text-align: center;
font-size: 16px;
}
.all-stats li{
display: inline-block;
width: 150px;
height: 100px;
background-color: #ff8700;
padding-top: 40px;
color: #fff;
border-radius: 5px;
margin-right: 20px;
border: 2px solid yellow;
}
.all-stats li:hover{
background-color: #ff8700cc;
}
.all-stats li .heading{
margin-bottom: 5px;
height: 20px;
}
.all-stats li .count{
margin-top: 30px;
font-size: 20px;
}
.loading-area{
margin-top: 25px;
}
.start-chart{
margin-bottom: 30px;
}
</style>
<div id="all-stats">
<h3>Summary</h3>
<ul class="all-stats">
<li>
<div class="heading">Total Job Postings</div>
<div class="count"><%= @job_postings %></div>
</li>
<li>
<div class="heading">Total Internship Postings</div>
<div class="count"><%= @internship_postings %></div>
</li>
<li>
<div class="heading">Total Exchange Postings</div>
<div class="count"><%= @exchange_postings %></div>
</li>
<li>
<div class="heading">Total Employees</div>
<div class="count"><%= @total_employees %></div>
</li>
<li>
<div class="heading">Total Employers</div>
<div class="count"><%= @total_employers %></div>
</li>
<li>
<div class="heading">Total Positions Filled</div>
<div class="count"><%= @total_position_filled %></div>
</li>
</ul>
</div>
<hr>
<div id="posting-chart" class="stat-chart">
<div class="form pull-right">
<form class="form-inline" id="posting-chart-form">
<select name="year" class="input-small">
<option><%= t("recruitment.select_year") %></option>
<% (2017..Time.now.year).each do |year| %>
<option value="<%= year %>"><%= year %></option>
<% end %>
</select>
<select name="month" class="input-small">
<option><%= t("recruitment.select_month") %></option>
<% (01..12).each do |month| %>
<option value="<%= month %>"><%= month %></option>
<% end %>
</select>
<button type="submit" class="btn">Load</button>
</form>
</div>
<div class="loading-area">
<div style="text-align: center;"><img src="/assets/preloader.gif" width="75px"></div>
</div>
</div>
<div id="registration-chart" class="stat-chart">
<div class="form pull-right">
<form class="form-inline" id="registration-chart-form">
<select name="year" class="input-small">
<option><%= t("recruitment.select_year") %></option>
<% (2017..Time.now.year).each do |year| %>
<option value="<%= year %>"><%= year %></option>
<% end %>
</select>
<select name="month" class="input-small">
<option><%= t("recruitment.select_month") %></option>
<% (1..12).each do |month| %>
<option value="<%= month %>"><%= month %></option>
<% end %>
</select>
<button type="submit" class="btn">Load</button>
</form>
</div>
<div class="loading-area">
<div style="text-align: center;"><img src="/assets/preloader.gif" width="75px"></div>
</div>
</div>
<div id="filled-chart" class="stat-chart">
<div class="form pull-right">
<form class="form-inline" id="filled-chart-form">
<select name="year" class="input-small">
<option><%= t("recruitment.select_year") %></option>
<% (2017..Time.now.year).each do |year| %>
<option value="<%= year %>"><%= year %></option>
<% end %>
</select>
<select name="month" class="input-small">
<option><%= t("recruitment.select_month") %></option>
<% (1..12).each do |month| %>
<option value="<%= month %>"><%= month %></option>
<% end %>
</select>
<button type="submit" class="btn">Load</button>
</form>
</div>
<div class="loading-area">
<div style="text-align: center;"><img src="/assets/preloader.gif" width="75px"></div>
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){
loadChart("posting");
loadChart("registration");
loadChart("filled");
})
var loadChart = function(type, month, year){
$.ajax({
url : "<%= load_chart_admin_recruitments_path %>",
data : {"type" : type, "month" : month, "year" : year},
dataType : "html",
type : "get"
}).done(function(html){
console.log($("#" + type + "-chart .loading-area"));
$("#" + type + "-chart .loading-area").html(html);
})
}
$("#posting-chart-form").on("submit",function(){
var month = $(this).find("select[name=month]").val(),
year = $(this).find("select[name=year]").val();
loadChart("posting", month, year);
return false;
})
$("#registration-chart-form").on("submit",function(){
var month = $(this).find("select[name=month]").val(),
year = $(this).find("select[name=year]").val();
loadChart("registration", month, year);
return false;
})
$("#filled-chart-form").on("submit",function(){
var month = $(this).find("select[name=month]").val(),
year = $(this).find("select[name=year]").val();
loadChart("filled", month, year);
return false;
})
</script>

View File

@ -0,0 +1,19 @@
<% if params[:type] == "posting" %>
<h4>
Posting statistics for the month
<b><i><%= @startdt.strftime("%B %Y") %></i></b>
</h4>
<%= column_chart @data, ytitle: t("recruitment.number_of_posts"), label: t("recruitment.number_of_posts"), id: "posting_chart" %>
<% elsif params[:type] == "registration" %>
<h4>
Registration statistics for the month
<b><i><%= @startdt.strftime("%B %Y") %></i></b>
</h4>
<%= column_chart @data, ytitle: t("recruitment.number_of_registered_users"), label: t("recruitment.number_of_registered_users"), id: "registration_chart", colors: ["#f2096e"] %>
<% elsif params[:type] == "filled" %>
<h4>
Positions filled statistics for the month
<b><i><%= @startdt.strftime("%B %Y") %></i></b>
</h4>
<%= column_chart @data, ytitle: t("recruitment.number_of_positions_filled"), label: t("recruitment.number_of_positions_filled"), id: "filled_chart", colors: ["#aff109"] %>
<% end %>

View File

@ -0,0 +1,33 @@
<h3>Applications for <%= @user.name %></h3>
<table class="table main-list">
<thead>
<tr class="sort-header">
<% @table_fields.each do |f| %>
<%= thead(f) %>
<% end %>
</tr>
</thead>
<tbody>
<% @applications.each do |app| %>
<tr>
<%
job = app.get_job
company_profile = job.employer_profile
%>
<td>
<a href="/<%= I18n.locale.to_s + "/" + job.get_job_page + "/" + job.to_param %>" target="_blank"><%= job.job_title %></a>
</td>
<td>
<a href="<%= show_member_admin_recruitment_path(company_profile.recruit_profile.id) %>"><%= company_profile.company_name %></a>
</td>
<td>
<%= app.created_at.strftime("%y/%m/%d") %>
</td>
<td>
<%= job.get_post_type_label.html_safe %>
</td>
</tr>
<% end %>
</tbody>
</table>
<a href="#" onclick="window.history.back();return false;" class="btn btn-warning">Back</a>

View File

@ -0,0 +1,5 @@
<%= csrf_meta_tag %>
<%= render_filter @filter_fields, "index_table" %>
<span id="index_table">
<%= render 'member_index'%>
</span>

View File

@ -0,0 +1,5 @@
<%= csrf_meta_tag %>
<%= render_filter @filter_fields, "index_table" %>
<span id="index_table">
<%= render 'posting_index'%>
</span>

View File

@ -0,0 +1,53 @@
<table class="table main-list">
<tbody>
<tr>
<th><%= t("recruitment.name") %></th>
<td><%= @user.name %></td>
</tr>
<tr>
<th><%= t("recruitment.company_name") %></th>
<td><%= @profile.company_name %></td>
</tr>
<tr>
<th><%= t("recruitment.office_address") %></th>
<td><%= @profile.office_address %></td>
</tr>
<tr>
<th><%= t("recruitment.company_profile") %></th>
<td><%= @profile.company_profile %></td>
</tr>
<tr>
<th><%= t("recruitment.website") %></th>
<td><a href="<%= @profile.website %>" target="_blank"><%= @profile.website %></a></td>
</tr>
<tr>
<th><%= t("recruitment.country") %></th>
<td><%= MiscList::COUNTRIES[@profile.country] %></td>
</tr>
<tr>
<th><%= t("recruitment.state") %></th>
<td><%= @profile.state %></td>
</tr>
<tr>
<th><%= t("recruitment.zipcode") %></th>
<td><%= @profile.zipcode %></td>
</tr>
<tr>
<th><%= t("recruitment.country_code") %></th>
<td><%= @profile.country_code %></td>
</tr>
<tr>
<th><%= t("recruitment.phone_number") %></th>
<td><%= @profile.phone_number %></td>
</tr>
<tr>
<th><%= t("recruitment.mobile_number") %></th>
<td><%= @profile.mobile_number %></td>
</tr>
<tr>
<th><%= t("recruitment.industry") %></th>
<td><%= @profile.get_industry %></td>
</tr>
</tbody>
</table>
<a href="#" onclick="window.history.back();return false;" class="btn btn-warning">Back</a>

View File

@ -14,17 +14,26 @@
<% @applications.each do |app| %>
<% job = app.get_job %>
<tr>
<td><%= job.get_post_type_label.html_safe %></td>
<td>
<% if job.post_type == "type1" %>
<a href="<%= "/#{I18n.locale.to_s}/jobs/" + job.to_param %>" target="_blank"><%= job.job_title %></a>
<% elsif job.post_type == "type2" %>
<a href="<%= "/#{I18n.locale.to_s}/internships/" + job.to_param %>" target="_blank"><%= job.job_title %></a>
<% elsif job.post_type == "type3" %>
<a href="<%= "/#{I18n.locale.to_s}/exchanges/" + job.to_param %>" target="_blank"><%= job.job_title %></a>
<% if !job.nil? %>
<%= job.get_post_type_label.html_safe %></td>
<% else %>
<%= t("recruitment.not_available") %>
<% end %>
<td>
<% if !job.nil? %>
<% if job.post_type == "type1" %>
<a href="<%= "/#{I18n.locale.to_s}/jobs/" + job.to_param %>" target="_blank"><%= job.job_title %></a>
<% elsif job.post_type == "type2" %>
<a href="<%= "/#{I18n.locale.to_s}/internships/" + job.to_param %>" target="_blank"><%= job.job_title %></a>
<% elsif job.post_type == "type3" %>
<a href="<%= "/#{I18n.locale.to_s}/exchanges/" + job.to_param %>" target="_blank"><%= job.job_title %></a>
<% end %>
<% else %>
<%= t("recruitment.not_available") %>
<% end %>
</td>
<td><%= job.employer_profile.company_name %></td>
<td><%= job.employer_profile.company_name rescue t("recruitment.not_available") %></td>
<td><%= app.created_at.strftime("%d %B %Y") %></td>
</tr>
<% end %>

View File

@ -196,7 +196,7 @@
<!-- Academic Type -->
<div class="form-group">
<%= f.label :academic_type, t("recruitment.academic_type"), :class => "col-sm-2 control-label" %>
<%= f.label :academic_type, t("recruitment.academic_type_title"), :class => "col-sm-2 control-label" %>
<div class="col-sm-5">
<%= f.select :academic_type, @academic_types, {:include_blank => "Select Degree"},{:class => "form-control"} %>
</div>

View File

@ -237,7 +237,7 @@
<!-- Academic Type -->
<div class="form-group">
<%= f.label :academic_type, t("recruitment.academic_type"), :class => "col-sm-2 control-label" %>
<%= f.label :academic_type, t("recruitment.academic_type_title"), :class => "col-sm-2 control-label" %>
<div class="col-sm-5">
<%= f.select :academic_type, @academic_types, {:include_blank => "Select Degree"},{:class => "form-control"} %>
</div>

View File

@ -198,7 +198,7 @@
<!-- Academic Type -->
<div class="form-group">
<%= f.label :academic_type, t("recruitment.academic_type"), :class => "col-sm-2 control-label" %>
<%= f.label :academic_type, t("recruitment.academic_type_title"), :class => "col-sm-2 control-label" %>
<div class="col-sm-5">
<%= f.select :academic_type, @academic_types, {:include_blank => "Select Degree"},{:class => "form-control"} %>
</div>

View File

@ -180,9 +180,9 @@
</div>
<script type="text/javascript">
$(function() {
$("#portfolioForm").submit(function() {
$(this).find(":input").filter(function(){ return !this.value; }).attr("disabled", "disabled");
return true; // ensure form still submits
});
// $("#portfolioForm").submit(function() {
// $(this).find(":input").filter(function(){ return !this.value; }).attr("disabled", "disabled");
// return true; // ensure form still submits
// });
});
</script>

View File

@ -2,6 +2,22 @@ en:
module_name:
recruitment: Recruitment
recruitment:
show_jobs: Show Jobs
number_of_positions_filled: Number of position filled
number_of_registered_users: Number of registered users
select_year: Year
select_month: Month
postings: Postings
number_of_posts: Number of Posts
number_of_applicants: Number of Applications
applications: Applications
disable_user: Disable User
enable_user: Enable User
user_type_title: User Type
user_type:
type1: Employee
type2: Employer
stats: Statistics
file: File
download_file: Download File
add_exchange: Add Exchange
@ -53,7 +69,7 @@ en:
request_letter: Request Letter
request: Request
recommendation: Recommendations
academic_type: Academic Type
academic_type_title: Academic Type
salary_range: Salary Range
min_salary: Min Salary
max_salary: Max Salary

View File

@ -2,16 +2,32 @@ zh_tw:
module_name:
recruitment: 招募
recruitment:
file: File
download_file: Download File
add_exchange: Add Exchange
edit_internship: Edit Internship
min_credit_score: Min Credit Score
exchange_title: Exchange Title
exchange_description: Exchange Description
exchange_conditions: Exchange Information
exchange_duration: Exchange Duration
exchange_start_date: Exchange Start Date
show_jobs: Show Jobs
number_of_positions_filled: Number of position filled
number_of_registered_users: Number of registered users
select_year: Year
select_month: Month
postings: Postings
number_of_posts: Number of Posts
number_of_applicants: Number of Applications
applications: 應用
disable_user: 停止用戶
enable_user: 啟動用戶
user_type_title: 使用者類型
user_type:
type1: 僱員
type2: 雇主
stats: 數據
file: 檔案
download_file: 下載資料
add_exchange: 新增交換學生
edit_internship: 編輯 實習生
min_credit_score: 最低需求信用點
exchange_title: 交換學生名義
exchange_description: 交換描述
exchange_conditions: 交換資訊
exchange_duration: 交換期間
exchange_start_date: 交換日期
post_type: 公告類型
post_t:
type1: 正職
@ -33,7 +49,7 @@ zh_tw:
internship_conditions: 實習工作條件
stipend-title: 實習薪資
stipend_range: 實習薪資範圍
in: in
in: 專精於
min_qualification: 最低需求
referral_already_recommended: 報歉,您已經撰寫此使用者的推薦函.
name: 名字
@ -53,7 +69,7 @@ zh_tw:
request_letter: 需求信件
request: 需求
recommendation: 建議
academic_type: 學術類型
academic_type_title: 學術類型
salary_range: 工資範圍
min_salary: 最低薪資
max_salary: 最高薪資
@ -87,13 +103,13 @@ zh_tw:
type1: 待業中
type2: 就業中
website: 網址
avatar: Avatar
avatar: 上傳圖片
address: 地址
next: 下一個
job_posted: 公開職缺
position_filled: 值缺已滿
applications: 申請
actions: Actions
actions: 動作
no_jobs_posted: 未有相關工作需求
show_application: 展示 應用
edit: 編輯

View File

@ -9,18 +9,24 @@ Rails.application.routes.draw do
get "categories"
get "addindustry"
post "createindustry"
get "member_management"
get "addcategory"
post "createcategory"
get "postings"
get "load_chart"
end
member do
delete "deleteindustry"
get "editindustry"
patch "updateindustry"
delete "delete_user"
delete "deletecategory"
get "editcategory"
patch "updatecategory"
get "applications"
get "show_member"
get "member_applications"
get "company_postings"
end
end
end

View File

@ -13,12 +13,24 @@ module Recruitment
active_for_controllers (['admin/recruitments'])
head_link_path "admin_recruitments_path"
context_link 'recruitment.members',
context_link 'recruitment.stats',
:link_path=>"admin_recruitments_path" ,
:priority=>1,
:active_for_action=>{'admin/recruitments'=>"index"},
:available_for => 'managers'
context_link 'recruitment.members',
:link_path=>"member_management_admin_recruitments_path" ,
:priority=>1,
:active_for_action=>{'admin/recruitments'=>"member_management"},
:available_for => 'managers'
context_link 'recruitment.postings',
:link_path=>"postings_admin_recruitments_path" ,
:priority=>1,
:active_for_action=>{'admin/recruitments'=>"postings"},
:available_for => 'managers'
context_link 'recruitment.industries',
:link_path=>"industries_admin_recruitments_path" ,
:priority=>1,