mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2025-03-14 07:00:01 -04:00
Fixes, tweaks, and i18n for the employers page.
This commit is contained in:
parent
3d5cd29519
commit
45545796a0
6 changed files with 157 additions and 116 deletions
Binary file not shown.
Before Width: | Height: | Size: 1 KiB After Width: | Height: | Size: 1.1 KiB |
BIN
app/assets/images/pages/employer/artisanal_claim.png
Normal file
BIN
app/assets/images/pages/employer/artisanal_claim.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.9 KiB |
|
@ -281,7 +281,7 @@
|
|||
education_duration_help: "When?"
|
||||
education_description: "Description"
|
||||
education_description_help: "Highlight anything about this educational experience. (140 chars; optional)"
|
||||
our_notes: "Our Notes"
|
||||
our_notes: "CodeCombat's Notes"
|
||||
remarks: "Remarks"
|
||||
projects: "Projects"
|
||||
projects_header: "Add 3 projects"
|
||||
|
@ -298,26 +298,37 @@
|
|||
player_code: "Player Code"
|
||||
|
||||
employers:
|
||||
want_to_hire_our_players: "Hire CodeCombat Players"
|
||||
hire_developers_not_credentials: "Hire developers, not credentials."
|
||||
get_started: "Get Started"
|
||||
already_screened: "We've already technically screened all our candidates"
|
||||
filter_further: ", but you can also filter further:"
|
||||
filter_visa: "Visa"
|
||||
filter_visa_yes: "US Authorized"
|
||||
filter_visa_no: "Not Authorized"
|
||||
filter_education_top: "Top School"
|
||||
filter_education_other: "Other"
|
||||
filter_role_web_developer: "Web Developer"
|
||||
filter_role_software_developer: "Software Developer"
|
||||
filter_role_mobile_developer: "Mobile Developer"
|
||||
filter_experience: "Experience"
|
||||
filter_experience_senior: "Senior"
|
||||
filter_experience_junior: "Junior"
|
||||
filter_experience_recent_grad: "Recent Grad"
|
||||
filter_experience_student: "College Student"
|
||||
filter_results: "results"
|
||||
start_hiring: "Start hiring."
|
||||
reasons: "Three reasons you should hire through us:"
|
||||
everyone_looking: "Everyone here is looking for their next opportunity."
|
||||
everyone_looking_blurb: "Forget about 20% LinkedIn InMail response rates. Everyone that we list on this site wants to find their next position and will respond to your request for an introduction."
|
||||
weeding: "Sit back; we've done the weeding for you."
|
||||
weeding_blurb: "Every player that we list has been screened for technical ability. We also perform phone screens for select candidates and make notes on their profiles to save you time."
|
||||
pass_screen: "They will pass your technical screen."
|
||||
pass_screen_blurb: "Review each candidate's code before reaching out. One employer found that 5x as many of our devs passed their technical screen than hiring from Hacker News."
|
||||
make_hiring_easier: "Make my hiring easier, please."
|
||||
what: "What is CodeCombat?"
|
||||
what_blurb: "CodeCombat is a multiplayer browser programming game. Players write code to control their forces in battle against other developers. We support JavaScript, Python, Lua, Clojure, CoffeeScript, and Io."
|
||||
who: "Who Are the Players?"
|
||||
who_blurb: "CodeCombateers are CTOs, VPs of Engineering, and graduates of top 20 engineering schools. Our advanced players enjoy playing with difficult code and solving problems."
|
||||
how: "How Do We Find Developers?"
|
||||
how_blurb: "We host competitive tournaments to attract competitive software engieneers. We then use in-house algorithms to identify the best players among the top 5% of tournament winners."
|
||||
why: "Why Hire Through Us?"
|
||||
why_blurb_1: "We will save you time. Every CodeCombateer we feaure is "
|
||||
cost: "How much do we charge?"
|
||||
cost_blurb: "We charge 15% of first year's salary and offer a 100% money back guarantee for 90 days. We don't charge for candidates who are already actively being interviewed at your company."
|
||||
response: "What's the response rate?"
|
||||
response_blurb: "Almost every developer you contact on CodeCombat will respond to inquires whether or not they want to interivew. If you would like help finding a candidate for your role, we can make recommendations."
|
||||
why_blurb_2: "looking for work"
|
||||
why_blurb_3: ", has "
|
||||
why_blurb_4: "demonstrated top notch technical skills"
|
||||
why_blurb_5: ", and has been "
|
||||
why_blurb_6: "personally screened by us"
|
||||
why_blurb_7: ". Stop screening and start hiring."
|
||||
see_candidates: "Click here to see our candidates"
|
||||
candidate_name: "Name"
|
||||
candidate_location: "Location"
|
||||
candidate_looking_for: "Looking For"
|
||||
|
|
|
@ -1,13 +1,8 @@
|
|||
#employers-view
|
||||
.artisanal-claim
|
||||
//font-variant: small-caps
|
||||
text-align: center
|
||||
font-size: 20px
|
||||
font-weight: bold
|
||||
font-family: Arial, Helvetica, sans-serif
|
||||
border-top: 1px solid #DBDBDB
|
||||
border-bottom: 1px solid #DBDBDB
|
||||
background: transparent url(/images/pages/employer/artisanal_claim.png) no-repeat center
|
||||
margin-bottom: 5px
|
||||
height: 24px
|
||||
|
||||
.employer-button
|
||||
background: #fce232 /* Old browsers */
|
||||
|
@ -20,7 +15,15 @@
|
|||
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fce232', endColorstr='#ea8e2b',GradientType=0 )
|
||||
vertical-align: text-bottom
|
||||
margin-left: 30px
|
||||
|
||||
|
||||
#filter-column
|
||||
margin-left: 0px
|
||||
padding-right: 0
|
||||
|
||||
#candidates-column
|
||||
padding-left: 5px
|
||||
padding-right: 5px
|
||||
|
||||
//filter panels
|
||||
#filter
|
||||
border: 2px solid #CBCBCB
|
||||
|
@ -32,10 +35,12 @@
|
|||
border-top-right-radius: 0px
|
||||
#folder-icon
|
||||
margin-right: 5px
|
||||
color: #919191
|
||||
.panel-body
|
||||
background-color: #D9D9D9
|
||||
border-top-left-radius: 0px
|
||||
border-top-right-radius: 0px
|
||||
padding: 5px 10px 10px 10px
|
||||
.panel
|
||||
border: 1px red
|
||||
border-radius: 0px
|
||||
|
@ -67,11 +72,13 @@
|
|||
float: right
|
||||
|
||||
#login-link, #logout-link
|
||||
float: right
|
||||
color: #333333
|
||||
position: absolute
|
||||
right: 10px
|
||||
top: -25px
|
||||
color: black
|
||||
display: inline-block
|
||||
:visited
|
||||
color: #333333
|
||||
color: black
|
||||
#logout-link:hover
|
||||
cursor: pointer
|
||||
|
||||
|
@ -113,6 +120,7 @@
|
|||
display: inline-block
|
||||
vertical-align: top
|
||||
.employer_icon
|
||||
display: block
|
||||
width: 125px
|
||||
margin: 0px auto
|
||||
|
||||
|
@ -146,17 +154,26 @@
|
|||
vertical-align: top
|
||||
tr
|
||||
.candidate-picture
|
||||
width: 100px
|
||||
height: 100px
|
||||
background-color: transparent
|
||||
background-size: cover
|
||||
background-repeat: no-repeat
|
||||
background-position: center
|
||||
width: 75px
|
||||
height: 75px
|
||||
border-radius: 5px
|
||||
overflow: hidden
|
||||
margin-right: 10px
|
||||
img
|
||||
border-radius: 5px
|
||||
&.anonymous
|
||||
background-size: contain
|
||||
|
||||
.candidate-description
|
||||
width: 100%
|
||||
vertical-align: bottom
|
||||
div
|
||||
text-overflow: ellipsis
|
||||
overflow: hidden
|
||||
height: 17px
|
||||
|
||||
td.candidate-description
|
||||
padding-bottom: 5px
|
||||
td.candidate-name-cell
|
||||
|
|
|
@ -397,7 +397,7 @@ block content
|
|||
|
||||
if user.get('jobProfileNotes') || me.isAdmin()
|
||||
div(class="our-notes-section" + (editing ? " deemphasized" : ""))
|
||||
h3.experience-header(data-i18n="account_profile.our_notes") Our Notes
|
||||
h3.experience-header(data-i18n="account_profile.our_notes") CodeCombat's Notes
|
||||
- var notes = user.get('jobProfileNotes') || '';
|
||||
if me.isAdmin()
|
||||
textarea#job-profile-notes!= notes
|
||||
|
|
|
@ -2,20 +2,96 @@ extends /templates/recruitment_base
|
|||
|
||||
block content
|
||||
.artisanal-claim
|
||||
| Always 100% Pre-Screened
|
||||
if me.get('anonymous')
|
||||
a#login-link Login
|
||||
a#login-link(data-i18n="login.log_in") Log In
|
||||
br
|
||||
if !isEmployer && !me.isAdmin()
|
||||
#tagline
|
||||
h1(data-i18n="employers.hire_developers_not_credentials") Hire developers, not credentials.
|
||||
button.btn.get-started-button.employer-button Get started
|
||||
button.btn.get-started-button.employer-button(data-i18n="employers.get_started") Get Started
|
||||
else
|
||||
if !me.get('anonymous')
|
||||
a#logout-link(data-i18n="login.log_out") Logout
|
||||
a#logout-link(data-i18n="login.log_out") Log Out
|
||||
br
|
||||
.row
|
||||
- var fullProfiles = isEmployer || me.isAdmin();
|
||||
|
||||
if fullProfiles
|
||||
#filter-column.col-md-3
|
||||
#filter
|
||||
.panel-group#filter_panel
|
||||
a#filter-link(data-toggle="collapse" data-target="#collapseOne")
|
||||
.panel.panel-default
|
||||
.panel-heading
|
||||
h4.panel-title
|
||||
span.glyphicon.glyphicon-folder-open#folder-icon
|
||||
| Filter
|
||||
.panel-collapse.collapse.in#collapseOne
|
||||
.panel-body
|
||||
p
|
||||
strong(data-i18n="employers.already_screened") We've already technically screened all our candidates
|
||||
span(data-i18n="employers.filter_further") , but you can also filter further:
|
||||
form#filters
|
||||
.filter_section#visa_filter
|
||||
h4(data-i18n="employers.filter_visa") Visa
|
||||
label
|
||||
input(type="checkbox" name="visa" value="Authorized to work in the US")
|
||||
span(data-i18n="employers.filter_visa_yes") US Authorized
|
||||
| (#{candidatesInFilter("visa","Authorized to work in the US")})
|
||||
label
|
||||
input(type="checkbox" name="visa" value="Need visa sponsorship")
|
||||
span(data-i18n="employers.filter_visa_no") Not Authorized
|
||||
| (#{candidatesInFilter("visa","Need visa sponsorship")})
|
||||
.filter_section#school_filter
|
||||
h4(data-i18n="account_profile.education") Education
|
||||
label
|
||||
input(type="checkbox" name="schoolFilter" value="Top School")
|
||||
span(data-i18n="employers.filter_education_top") Top School
|
||||
| (#{candidatesInFilter("schoolFilter","Top School")})
|
||||
label
|
||||
input(type="checkbox" name="schoolFilter" value="Other")
|
||||
span(data-i18n="employers.filter_education_other") Other
|
||||
| (#{candidatesInFilter("schoolFilter","Other")})
|
||||
.filter_section#role_filter
|
||||
h4(data-i18n="employers.candidate_role") Role
|
||||
label
|
||||
input(type="checkbox" name="roleFilter" value="Web Developer")
|
||||
span(data-i18n="employers.filter_role_web_developer") Web Developer
|
||||
| (#{candidatesInFilter("roleFilter","Web Developer")})
|
||||
label
|
||||
input(type="checkbox" name="roleFilter" value="Software Developer")
|
||||
span(data-i18n="employers.filter_role_software_developer") Software Developer
|
||||
| (#{candidatesInFilter("roleFilter","Software Developer")})
|
||||
label
|
||||
input(type="checkbox" name="roleFilter" value="Mobile Developer")
|
||||
span(data-i18n="employers.filter_role_mobile_developer") Mobile Developer
|
||||
| (#{candidatesInFilter("roleFilter","Mobile Developer")})
|
||||
.filter_section#seniority_filter
|
||||
h4(data-i18n="employers.filter_experience") Experience
|
||||
label
|
||||
input(type="checkbox" name="seniorityFilter" value="Senior")
|
||||
span(data-i18n="employers.filter_experience_senior") Senior
|
||||
| (#{candidatesInFilter("seniorityFilter","Senior")})
|
||||
label
|
||||
input(type="checkbox" name="seniorityFilter" value="Junior")
|
||||
span(data-i18n="employers.filter_experience_junior") Junior
|
||||
| (#{candidatesInFilter("seniorityFilter","Junior")})
|
||||
label
|
||||
input(type="checkbox" name="seniorityFilter" value="Recent Grad")
|
||||
span(data-i18n="employers.filter_experience_recent_grad") Recent Grad
|
||||
| (#{candidatesInFilter("seniorityFilter","Recent Grad")})
|
||||
label
|
||||
input(type="checkbox" name="seniorityFilter" value="College Student")
|
||||
span(data-i18n="employers.filter_experience_student") College Student
|
||||
| (#{candidatesInFilter("seniorityFilter","College Student")})
|
||||
|
||||
//input#select_all_checkbox(type="checkbox" name="select_all" checked)
|
||||
//| Select all
|
||||
p#results
|
||||
| #{numberOfCandidates}
|
||||
span(data-i18n="employers.results") results
|
||||
//button.btn#create-alert-button Create Alert
|
||||
|
||||
#candidates-column(class=fullProfiles ? "full-profiles col-md-9" : "teaser-profiles col-md-12")
|
||||
if candidates.length
|
||||
#candidate-table
|
||||
|
@ -27,12 +103,12 @@ block content
|
|||
- var profileAge = (new Date() - new Date(profile.updated)) / 86400 / 1000;
|
||||
- var expired = profileAge > 2 * 30.4;
|
||||
- var curated = profile.curated;
|
||||
- var photoSize = fullProfiles ? 100 : 50;
|
||||
- var photoSize = fullProfiles ? 75 : 50;
|
||||
|
||||
tr.candidate-row(data-candidate-id=candidate.id, id=candidate.id, class=expired ? "expired" : "")
|
||||
td(rowspan=3)
|
||||
.candidate-picture
|
||||
img(src=candidate.getPhotoURL(photoSize, false, true), alt=profile.name, title=profile.name, width=photoSize)
|
||||
- var photoURL = candidate.getPhotoURL(photoSize, false, true);
|
||||
div(class="candidate-picture " + (/^\/file/.test(photoURL) ? "" : "anonymous"), style='background-image: url(' + encodeURI(photoURL) + ')')
|
||||
if fullProfiles
|
||||
td.candidate-name-cell
|
||||
strong= profile.name
|
||||
|
@ -40,9 +116,11 @@ block content
|
|||
span= profile.jobTitle
|
||||
tr.description_row(data-candidate-id=candidate.id)
|
||||
if curated && curated.shortDescription
|
||||
td.candidate-description #{curated.shortDescription}
|
||||
td.candidate-description
|
||||
div #{curated.shortDescription}
|
||||
else
|
||||
td.candidate-description #{profile.shortDescription}
|
||||
td.candidate-description
|
||||
div #{profile.shortDescription}
|
||||
tr.border_row(data-candidate-id=candidate.id)
|
||||
if curated
|
||||
- var workHistory = curated.workHistory.join(",");
|
||||
|
@ -60,95 +138,30 @@ block content
|
|||
if workHistory
|
||||
img(src="/images/pages/employer/briefcase.png")
|
||||
| #{workHistory}
|
||||
if fullProfiles
|
||||
.col-md-3
|
||||
#filter
|
||||
.panel-group#filter_panel
|
||||
a#filter-link(data-toggle="collapse" data-target="#collapseOne")
|
||||
.panel.panel-default
|
||||
.panel-heading
|
||||
h4.panel-title
|
||||
span.glyphicon.glyphicon-folder-open#folder-icon
|
||||
| Filter
|
||||
.panel-collapse.collapse.in#collapseOne
|
||||
.panel-body
|
||||
p
|
||||
strong We've already technically screened all our candidates
|
||||
| , but you can also filter further:
|
||||
form#filters
|
||||
.filter_section#visa_filter
|
||||
h4 Visa
|
||||
label
|
||||
input(type="checkbox" name="visa" value="Authorized to work in the US")
|
||||
| US Authorized (#{candidatesInFilter("visa","Authorized to work in the US")})
|
||||
label
|
||||
input(type="checkbox" name="visa" value="Need visa sponsorship")
|
||||
| Not Authorized (#{candidatesInFilter("visa","Need visa sponsorship")})
|
||||
.filter_section#school_filter
|
||||
h4 Education
|
||||
label
|
||||
input(type="checkbox" name="schoolFilter" value="Top School")
|
||||
| Top School (#{candidatesInFilter("schoolFilter","Top School")})
|
||||
label
|
||||
input(type="checkbox" name="schoolFilter" value="Other")
|
||||
| Other (#{candidatesInFilter("schoolFilter","Other")})
|
||||
.filter_section#role_filter
|
||||
h4 Role
|
||||
label
|
||||
input(type="checkbox" name="roleFilter" value="Web Developer")
|
||||
| Web Developer (#{candidatesInFilter("roleFilter","Web Developer")})
|
||||
label
|
||||
input(type="checkbox" name="roleFilter" value="Software Developer")
|
||||
| Software Developer (#{candidatesInFilter("roleFilter","Software Developer")})
|
||||
label
|
||||
input(type="checkbox" name="roleFilter" value="Mobile Developer")
|
||||
| Mobile Developer (#{candidatesInFilter("roleFilter","Mobile Developer")})
|
||||
.filter_section#seniority_filter
|
||||
h4 Experience
|
||||
label
|
||||
input(type="checkbox" name="seniorityFilter" value="Senior")
|
||||
| Senior (#{candidatesInFilter("seniorityFilter","Senior")})
|
||||
label
|
||||
input(type="checkbox" name="seniorityFilter" value="Junior")
|
||||
| Junior (#{candidatesInFilter("seniorityFilter","Junior")})
|
||||
label
|
||||
input(type="checkbox" name="seniorityFilter" value="Recent Grad")
|
||||
| Recent Grad (#{candidatesInFilter("seniorityFilter","Recent Grad")})
|
||||
label
|
||||
input(type="checkbox" name="seniorityFilter" value="College Student")
|
||||
| College Student (#{candidatesInFilter("seniorityFilter","College Student")})
|
||||
|
||||
//input#select_all_checkbox(type="checkbox" name="select_all" checked)
|
||||
//| Select all
|
||||
p#results #{numberOfCandidates} results
|
||||
//button.btn#create-alert-button Create Alert
|
||||
|
||||
|
||||
if !fullProfiles
|
||||
div#info_wrapper
|
||||
span.hiring-call-to-action
|
||||
h2#start-hiring(data-i18n="employers.start_hiring") Start hiring.
|
||||
button.btn.get-started-button.employer-button Get started
|
||||
button.btn.get-started-button.employer-button(data-i18n="employers.get_started") Get Started
|
||||
|
||||
h2#hiring-reasons.hiring-call-to-action(data-i18n="employers.reasons") 3 reasons you should hire through us:
|
||||
h2#hiring-reasons.hiring-call-to-action(data-i18n="employers.reasons") Three reasons you should hire through us:
|
||||
.reasons#top_row
|
||||
.reason
|
||||
img.employer_icon(src="/images/pages/employer/employer_icon2.png")
|
||||
h3(data-i18n="employers.everyone_looking") Everyone here is looking for work.
|
||||
h3(data-i18n="employers.everyone_looking") Everyone here is looking for their next opportunity.
|
||||
p(data-i18n="employers.everyone_looking_blurb") Forget about 20% LinkedIn InMail response rates. Everyone that we list on this site wants to find their next position and will respond to your request for an introduction.
|
||||
.reason
|
||||
img.employer_icon(src="/images/pages/employer/employer_icon6.png")
|
||||
h3(data-i18n="employers.weeding") We've done the weeding for you.
|
||||
//this will break in i18n. Fix the inlining
|
||||
p(data-i18n="employers.weeding_blurb")
|
||||
| We only feature developers that we would work with. We've reviewed each profile (in addition to meeting with many of the candidates.)
|
||||
h3(data-i18n="employers.weeding") Sit back; we've done the weeding for you.
|
||||
p(data-i18n="employers.weeding_blurb") Every player that we list has been screened for technical ability. We also perform phone screens for select candidates and make notes on their profiles to save you time.
|
||||
.reason
|
||||
img(class="employer_icon" src="/images/pages/employer/employer_icon3.png")
|
||||
h3(data-i18n="employers.pass_screen") They will pass your technical screen.
|
||||
p(data-i18n="employers.pass_screen_blurb") All of these developers have ranked in our programming competitions. One employer found that 5x as many of our devs passed their technical screen than hiring from Hacker News.
|
||||
p(data-i18n="employers.pass_screen_blurb") Review each candidate's code before reaching out. One employer found that 5x as many of our devs passed their technical screen than hiring from Hacker News.
|
||||
span.hiring-call-to-action
|
||||
h2(data-i18n="employers.make_hiring_easier") Make my hiring easier, please.
|
||||
button.btn.get-started-button.employer-button Get started
|
||||
button.btn.get-started-button.employer-button(data-i18n="employers.get_started") Get Started
|
||||
.reasons#bottom_row
|
||||
.reason_long
|
||||
img.employer_icon(src="/images/pages/employer/employer_icon1.png")
|
||||
|
@ -158,5 +171,5 @@ block content
|
|||
.reason_long
|
||||
img.employer_icon(src="/images/pages/employer/employer_icon5.png")
|
||||
.reason_text
|
||||
h3(data-i18n="employers.cost") Who Are the Players?
|
||||
p(data-i18n="employers.cost_blurb") CodeCombateers are CTOs, VPs of Engineering, and graduates of top 20 engineering schools. No junior developers here. Our players enjoy playing with code and solving problems.
|
||||
h3(data-i18n="employers.cost") How much do we charge?
|
||||
p(data-i18n="employers.cost_blurb") We charge 15% of first year's salary and offer a 100% money back guarantee for 90 days. We don't charge for candidates who are already actively being interviewed at your company.
|
||||
|
|
Loading…
Reference in a new issue