backedn with graphs and applications
This commit is contained in:
parent
1d652c1481
commit
05a7c8ee06
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -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
|
||||
%>
|
|
@ -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
|
||||
%>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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 %>
|
|
@ -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>
|
|
@ -0,0 +1,5 @@
|
|||
<%= csrf_meta_tag %>
|
||||
<%= render_filter @filter_fields, "index_table" %>
|
||||
<span id="index_table">
|
||||
<%= render 'member_index'%>
|
||||
</span>
|
|
@ -0,0 +1,5 @@
|
|||
<%= csrf_meta_tag %>
|
||||
<%= render_filter @filter_fields, "index_table" %>
|
||||
<span id="index_table">
|
||||
<%= render 'posting_index'%>
|
||||
</span>
|
|
@ -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>
|
|
@ -14,8 +14,14 @@
|
|||
<% @applications.each do |app| %>
|
||||
<% job = app.get_job %>
|
||||
<tr>
|
||||
<td><%= job.get_post_type_label.html_safe %></td>
|
||||
<td>
|
||||
<% 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" %>
|
||||
|
@ -23,8 +29,11 @@
|
|||
<% 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 %>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
|
@ -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
|
||||
|
|
|
@ -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: 編輯
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue