From 6f912f3e26d03f4c68cd42545be95d67b86acb06 Mon Sep 17 00:00:00 2001 From: Andrew Cockerham Date: Sun, 25 Aug 2013 13:48:51 -0500 Subject: [PATCH] Aug 25 --- .gitignore | 5 +- Gemfile | 2 + Gemfile.lock | 10 +++ app/assets/images/logo.png | Bin 0 -> 12036 bytes app/assets/images/logo1.png | Bin 0 -> 30696 bytes app/assets/javascripts/pins.js.coffee | 11 ++- app/assets/stylesheets/styles.css.scss | 28 ++++++- .../job_applications_controller.rb | 30 ++++++-- app/controllers/job_postings_controller.rb | 23 +++++- app/controllers/pins_controller.rb | 1 + app/controllers/users_controller.rb | 8 +- app/mailers/recieve_application_mailer.rb | 12 +++ app/models/job_application.rb | 3 +- app/models/user.rb | 7 +- app/views/devise/registrations/edit.html.erb | 15 +++- app/views/devise/registrations/new.html.erb | 3 +- app/views/job_applications/_form.html.erb | 72 ++++++++++++++++-- .../_job_application.html.erb | 17 +++++ app/views/job_applications/index.html.erb | 26 ++----- app/views/job_applications/new.html.erb | 2 +- app/views/job_applications/show.html.erb | 4 + app/views/job_experiences/_form.html.erb | 2 + app/views/job_experiences/_my_form.html.erb | 2 +- app/views/job_postings/_job_posting.html.erb | 20 +++-- app/views/job_postings/index.html.erb | 18 +++-- app/views/job_postings/my_index.html.erb | 4 + app/views/job_postings/show.html.erb | 12 ++- .../job_postings/show_applications.html.erb | 28 +++++++ app/views/layouts/_header.html.erb | 5 +- app/views/pins/index.js.erb | 10 +++ .../recieve_application_email.html.erb | 28 +++++++ .../recieve_application_email.text.erb | 9 +++ app/views/users/_form.html.erb | 1 + app/views/users/show.js.erb | 10 +++ config/environments/development.rb | 21 ++++- config/initializers/setup_mail.rb | 9 +++ config/routes.rb | 9 ++- ..._add_job_posting_id_to_job_applications.rb | 6 ++ ...130707184331_add_company_to_job_posting.rb | 6 ++ db/schema.rb | 10 ++- logo/logo.png | Bin 0 -> 30696 bytes .../recieve_application_mailer_test.rb | 7 ++ 42 files changed, 431 insertions(+), 65 deletions(-) create mode 100644 app/assets/images/logo.png create mode 100644 app/assets/images/logo1.png create mode 100644 app/mailers/recieve_application_mailer.rb create mode 100644 app/views/job_applications/_job_application.html.erb create mode 100644 app/views/job_postings/my_index.html.erb create mode 100644 app/views/job_postings/show_applications.html.erb create mode 100644 app/views/pins/index.js.erb create mode 100644 app/views/recieve_application_mailer/recieve_application_email.html.erb create mode 100644 app/views/recieve_application_mailer/recieve_application_email.text.erb create mode 100644 app/views/users/show.js.erb create mode 100644 config/initializers/setup_mail.rb create mode 100644 db/migrate/20130706012945_add_job_posting_id_to_job_applications.rb create mode 100644 db/migrate/20130707184331_add_company_to_job_posting.rb create mode 100644 logo/logo.png create mode 100644 test/functional/recieve_application_mailer_test.rb diff --git a/.gitignore b/.gitignore index d3d7cab..9109974 100644 --- a/.gitignore +++ b/.gitignore @@ -24,4 +24,7 @@ doc/ /public/system # Ignore sample images -/sampleimages \ No newline at end of file +/sampleimages + +# Ignore application configuration (from figaro gem) +/config/application.yml diff --git a/Gemfile b/Gemfile index 0042fd0..119c44b 100644 --- a/Gemfile +++ b/Gemfile @@ -9,7 +9,9 @@ gem 'aws-sdk' gem 'faker' gem 'will_paginate', '3.0.3' gem 'bootstrap-will_paginate', '0.0.6' +gem 'figaro' +gem "letter_opener", :group => :development # Bundle edge Rails instead: # gem 'rails', :git => 'git://github.com/rails/rails.git' diff --git a/Gemfile.lock b/Gemfile.lock index d2b5b0c..7ca2eaf 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -28,6 +28,7 @@ GEM activesupport (3.2.12) i18n (~> 0.6) multi_json (~> 1.0) + addressable (2.3.5) arel (3.0.2) aws-sdk (1.11.2) json (~> 1.4) @@ -60,6 +61,9 @@ GEM multi_json (~> 1.0) faker (1.1.2) i18n (~> 0.5) + figaro (0.7.0) + bundler (~> 1.0) + rails (>= 3, < 5) hike (1.2.2) i18n (0.6.4) journey (1.0.4) @@ -67,6 +71,10 @@ GEM railties (>= 3.0, < 5.0) thor (>= 0.14, < 2.0) json (1.7.7) + launchy (2.3.0) + addressable (~> 2.3) + letter_opener (1.1.2) + launchy (~> 2.2) mail (2.4.4) i18n (>= 0.4.0) mime-types (~> 1.16) @@ -146,7 +154,9 @@ DEPENDENCIES coffee-rails (~> 3.2.1) devise faker + figaro jquery-rails + letter_opener paperclip (~> 3.0) pg rails (= 3.2.12) diff --git a/app/assets/images/logo.png b/app/assets/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e9b65a66666c9f095453d6dbd0bfb6fe3cc53654 GIT binary patch literal 12036 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 U8PCv%BETOCG9RTYC5`<52bDr3X8-^I literal 0 HcmV?d00001 diff --git a/app/assets/javascripts/pins.js.coffee b/app/assets/javascripts/pins.js.coffee index 7d0be3f..838a15f 100644 --- a/app/assets/javascripts/pins.js.coffee +++ b/app/assets/javascripts/pins.js.coffee @@ -4,4 +4,13 @@ jQuery -> $('#pins').imagesLoaded -> - $('#pins').masonry itemSelector: ".box" \ No newline at end of file + $('#pins').masonry itemSelector: ".box" + + if $('.pagination').length + $(window).scroll -> + url = $('.pagination .next_page a').attr('href') + if url && $(window).scrollTop() > $(document).height() - $(window).height() - 50 + # What to do at the bottom of the page + $('.pagination').text("Fetching more pins...") + $.getScript(url) + $(window).scroll() \ No newline at end of file diff --git a/app/assets/stylesheets/styles.css.scss b/app/assets/stylesheets/styles.css.scss index 97f536f..cda4e42 100644 --- a/app/assets/stylesheets/styles.css.scss +++ b/app/assets/stylesheets/styles.css.scss @@ -33,11 +33,12 @@ body { font-size: 11px; line-height: 1.4em; float: left; + text-align: left; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; box-shadow: 1px 1px 10px #444; - width: 214px; + /*width: 214px;*/ } .box img { @@ -49,4 +50,27 @@ body { .description { margin: 10px 0 5px; -} \ No newline at end of file +} + +.navbar .brand img { + width: 25px; + padding: 0px; + margin: 0px; +} + +/* +.navbar .brand { + width: 5%; + /*position: fixed; + max-height: 40px; + overflow: visible; + padding-left: 0; + padding-top: 0; +} +*/ +/* +.brand { + width: 5%; + padding-left: 0; +} +*/ \ No newline at end of file diff --git a/app/controllers/job_applications_controller.rb b/app/controllers/job_applications_controller.rb index 9a3e20b..6494039 100644 --- a/app/controllers/job_applications_controller.rb +++ b/app/controllers/job_applications_controller.rb @@ -2,7 +2,8 @@ class JobApplicationsController < ApplicationController # GET /job_applications # GET /job_applications.json def index - @job_applications = JobApplication.all + #@job_applications = JobApplication.all + @job_applications = current_user.job_applications.all respond_to do |format| format.html # index.html.erb @@ -13,7 +14,10 @@ def index # GET /job_applications/1 # GET /job_applications/1.json def show - @job_application = JobApplication.find(params[:id]) + #@job_application = JobApplication.find(params[:id]) + + #@user = User.find(params[:id]) + @job_application = current_user.job_applications #.page(params[:page]).per_page(10) respond_to do |format| format.html # show.html.erb @@ -24,7 +28,13 @@ def show # GET /job_applications/new # GET /job_applications/new.json def new - @job_application = JobApplication.new + #@job_application = JobApplication.new + @job_application = JobApplication.new(params[:job_application]) + @job_posting = JobPosting.find(params[:job_application][:job_posting_id]) + #@job_application.job_posting_id = @job_posting.id + #@job_application.job_posting_id = params[:job_application][:job_posting_id] + #@job_application.job_posting_id = @job_posting.id + #@job_application = JobApplication.find(params[:job_posting_id]) respond_to do |format| format.html # new.html.erb @@ -34,16 +44,26 @@ def new # GET /job_applications/1/edit def edit - @job_application = JobApplication.find(params[:id]) + @job_application = current_user.job_applications.find(params[:id]) end # POST /job_applications # POST /job_applications.json def create - @job_application = JobApplication.new(params[:job_application]) + #@job_application = JobApplication.new(params[:job_application]) + @job_application = current_user.job_applications.new(params[:job_application]) + #@job_application.job_posting_id = JobPostings.find(params[:job_posting_id]) # job_posting.id + #@job_posting = JobPosting.find(params[:job_posting_id]) + #@job_application.job_posting_id = @job_posting.id + #@job_application.job_posting_id = params[:job_application][:job_posting_id] respond_to do |format| if @job_application.save + # send email to HR person who posted the job + @job_posting = JobPosting.find(@job_application.job_posting_id) + @HR_person = User.find(@job_posting.user_id) + RecieveApplicationMailer.recieve_application_email(@HR_person, @job_application).deliver + format.html { redirect_to @job_application, notice: 'Job application was successfully created.' } format.json { render json: @job_application, status: :created, location: @job_application } else diff --git a/app/controllers/job_postings_controller.rb b/app/controllers/job_postings_controller.rb index 4231756..4df37f5 100644 --- a/app/controllers/job_postings_controller.rb +++ b/app/controllers/job_postings_controller.rb @@ -1,6 +1,6 @@ class JobPostingsController < ApplicationController before_filter :authenticate_user! - + before_filter :is_admin?, except: [:index, :show] # GET /job_postings # GET /job_postings.json def index @@ -12,6 +12,11 @@ def index end end + def my_index + @my_job_postings = current_user.job_postings.all + + end + # GET /job_postings/1 # GET /job_postings/1.json def show @@ -23,9 +28,17 @@ def show end end + def show_applications + @applications = JobApplication.find_all_by_job_posting_id(params[:job_application][:job_posting_id]) + @user = User.find(@applications[0].user_id) + @application1 = @applications[0] + @application2 = @applications[1] + end + # GET /job_postings/new # GET /job_postings/new.json def new + @job_posting = current_user.job_postings.new #@job_posting = JobPosting.new @@ -89,4 +102,12 @@ def destroy format.json { head :no_content } end end + + def is_admin? + if current_user.hirer + true + else + render :text => "You must have hiring privelages to post a job" + end + end end diff --git a/app/controllers/pins_controller.rb b/app/controllers/pins_controller.rb index 56d1f74..2e862a5 100644 --- a/app/controllers/pins_controller.rb +++ b/app/controllers/pins_controller.rb @@ -15,6 +15,7 @@ def index respond_to do |format| format.html # index.html.erb format.json { render json: @pins } + format.js end end diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 57ca9ef..fa0bc7d 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -1,7 +1,13 @@ class UsersController < ApplicationController def show @user = User.find(params[:id]) - @pins = @user.pins.page(params[:page]).per_page(20) + @pins = @user.pins.page(params[:page]).per_page(10) + + respond_to do |format| + format.html # index.html.erb + #format.json { render json: @pins } + format.js + end end def new diff --git a/app/mailers/recieve_application_mailer.rb b/app/mailers/recieve_application_mailer.rb new file mode 100644 index 0000000..2bde5da --- /dev/null +++ b/app/mailers/recieve_application_mailer.rb @@ -0,0 +1,12 @@ +class RecieveApplicationMailer < ActionMailer::Base + default from: "andrew@skillchest.com" + + def recieve_application_email(user, job_application) + @user = user + @job_application = job_application + @url = 'http://www.skillchest.com' + + mail(to: @user.email, subject: 'Someone has applied for your job posting') + + end +end diff --git a/app/models/job_application.rb b/app/models/job_application.rb index 0c2762b..8ae4511 100644 --- a/app/models/job_application.rb +++ b/app/models/job_application.rb @@ -1,6 +1,7 @@ class JobApplication < ActiveRecord::Base - # attr_accessible :title, :body + attr_accessible :job_posting_id belongs_to :user + belongs_to :job_posting has_many :job_experiences diff --git a/app/models/user.rb b/app/models/user.rb index e7e62c1..6e2d58f 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -6,8 +6,7 @@ class User < ActiveRecord::Base :rememberable, :trackable, :validatable # Setup accessible (or protected) attributes for your model - attr_accessible :email, :password, :password_confirmation, :remember_me, :name, :hirer, :job_experience_attributes - # attr_accessible :title, :body + attr_accessible :email, :password, :password_confirmation, :remember_me, :name, :hirer, :job_experiences_attributes # Validations validates_uniqueness_of :email @@ -16,10 +15,10 @@ class User < ActiveRecord::Base has_many :pins, :dependent => :destroy has_many :job_postings, :dependent => :destroy has_many :job_applications, :dependent => :destroy - has_one :job_experience, :dependent => :destroy + has_many :job_experiences, :dependent => :destroy # Nested Attributes - accepts_nested_attributes_for :job_experience + accepts_nested_attributes_for :job_experiences # :allow_destroy => true, # :reject_if => :all_blank end diff --git a/app/views/devise/registrations/edit.html.erb b/app/views/devise/registrations/edit.html.erb index c5c9a28..2230556 100644 --- a/app/views/devise/registrations/edit.html.erb +++ b/app/views/devise/registrations/edit.html.erb @@ -10,7 +10,20 @@ <%= f.input :current_password %>

Job Experience

- <%= f.fields_for :job_experience_attributes do |j| %> + <% job_experiences = JobExperience.find_all_by_user_id(current_user.id) %> + <% if job_experiences.length == 0 %> +

You have not entered any job experiences yet.

+ <% elsif job_experiences.length == 1 %> + <%= job_experiences[0].company %> + <%= job_experiences[0].job_title %> + <% elsif job_experiences.length > 1 %> + <% for x in job_experiences.length %> + <%= job_experiences[x].company %> + <%= job_experiences[x].job_title %> + <% end %> + <% end %> + + <%= f.fields_for :job_experiences_attributes do |j| %> <%= j.input :company %> <%= j.input :job_title %> <%= j.input :description, as: :text, input_html: { rows: "10" } %> diff --git a/app/views/devise/registrations/new.html.erb b/app/views/devise/registrations/new.html.erb index 2c5e780..4de697c 100644 --- a/app/views/devise/registrations/new.html.erb +++ b/app/views/devise/registrations/new.html.erb @@ -9,8 +9,7 @@ <%= f.input :password_confirmation %> <%= f.input :hirer, as: :boolean %> - - <%= f.fields_for :job_experience_attributes do |j| %> + <%= f.fields_for :job_experiences_attributes do |j| %> <%= j.input :company %> <% end %> diff --git a/app/views/job_applications/_form.html.erb b/app/views/job_applications/_form.html.erb index d1c439a..d195ba8 100644 --- a/app/views/job_applications/_form.html.erb +++ b/app/views/job_applications/_form.html.erb @@ -1,10 +1,68 @@ -<%= simple_form_for(@job_application) do |f| %> - <%= f.error_notification %> +
+
+

Your contact info

+
+
+
+
+ <%= simple_form_for(@job_application) do |f| %> + <%= f.error_notification %> + <% user = User.find(current_user.id) %> +
<%= f.label :your_name %>
+
<%= user.name %>
+
<%= f.label :email %>
+
<%= user.email %>
+
+
+
+
-
-
+
+
+

The job you're applying for

+
+
+

Your SkillChest application

+
+
+ +
+
+
+ <%= f.label :job_title %> + <% @job_posting = JobPosting.find(params[:job_application][:job_posting_id]) #@job_application.job_posting_id) %> + <%= @job_posting.title %> + <%= f.label :job_description %> + <%= @job_posting.description %> + <% @job_application.job_posting_id = @job_posting.id %> +
+
+ +
+
+ <% if JobExperience.find_by_user_id(current_user.id) != nil %> + <%= f.label :job_experience %> + <% job_experience = JobExperience.find_by_user_id(current_user.id) %> + <%= job_experience.company %> + <%= f.label :job_title %> + <%= job_experience.job_title %> + <% end %> +
+
+
+ +
+ <%= f.hidden_field :job_posting_id, value: @job_posting.id %> +
+ +
+ <%= f.button :submit, class: "btn btn-primary" %> +
+ <%= user.id %> + <%= @job_application.job_posting_id %> +<%= params %> +<% @job_application.save %> + +<% #link_to 'Test', job_applications_job_posting_path(@job_posting) %> -
- <%= f.button :submit %> -
<% end %> diff --git a/app/views/job_applications/_job_application.html.erb b/app/views/job_applications/_job_application.html.erb new file mode 100644 index 0000000..ec574db --- /dev/null +++ b/app/views/job_applications/_job_application.html.erb @@ -0,0 +1,17 @@ +
+ <%= link_to 'View', job_application %> +

+ <%= job_application.user_id %> +

+

+ <%= job_application.job_posting_id %> + <%= job_application %> +

+ + <% if current_user.id == job_application.user_id %> + +

<%= link_to 'Edit', edit_job_application_path(job_application) %> + <%= link_to 'Destroy', job_application, method: :delete, data: { confirm: 'Are you sure?' } %> +

+ <% end %> +
diff --git a/app/views/job_applications/index.html.erb b/app/views/job_applications/index.html.erb index 201cba4..a1e0be9 100644 --- a/app/views/job_applications/index.html.erb +++ b/app/views/job_applications/index.html.erb @@ -1,21 +1,11 @@ -

Listing job_applications

+

Your Job Applications

- - - - - - +<% if @job_applications.length == 0 %> +

You have not applied for any jobs yet.

+ <%= link_to 'Apply Now', job_postings_path %> + <% end %> -<% @job_applications.each do |job_application| %> - - - - - -<% end %> -
<%= link_to 'Show', job_application %><%= link_to 'Edit', edit_job_application_path(job_application) %><%= link_to 'Destroy', job_application, method: :delete, data: { confirm: 'Are you sure?' } %>
+
+ <%= render @job_applications %> +
-
- -<%= link_to 'New Job application', new_job_application_path %> diff --git a/app/views/job_applications/new.html.erb b/app/views/job_applications/new.html.erb index b4a0dff..97e426d 100644 --- a/app/views/job_applications/new.html.erb +++ b/app/views/job_applications/new.html.erb @@ -1,4 +1,4 @@ -

New job_application

+

New Job Application

<%= render 'form' %> diff --git a/app/views/job_applications/show.html.erb b/app/views/job_applications/show.html.erb index bafd711..2b105f5 100644 --- a/app/views/job_applications/show.html.erb +++ b/app/views/job_applications/show.html.erb @@ -1,5 +1,9 @@

<%= notice %>

+<%= params %> +<%= @job_application1 = JobApplication.find(params[:id]) %> +<%= @job_application1.job_posting_id %> +<%= @job_application1.id %> <%= link_to 'Edit', edit_job_application_path(@job_application) %> | <%= link_to 'Back', job_applications_path %> diff --git a/app/views/job_experiences/_form.html.erb b/app/views/job_experiences/_form.html.erb index 105e001..578ddd2 100644 --- a/app/views/job_experiences/_form.html.erb +++ b/app/views/job_experiences/_form.html.erb @@ -8,7 +8,9 @@ <%= f.input :start_date %> +

job experiences form

<%= f.button :submit %>
+ <% end %> diff --git a/app/views/job_experiences/_my_form.html.erb b/app/views/job_experiences/_my_form.html.erb index 1f09f02..fe1bc22 100644 --- a/app/views/job_experiences/_my_form.html.erb +++ b/app/views/job_experiences/_my_form.html.erb @@ -1,7 +1,7 @@ <%= simple_form_for(@user) do |f| %>

Job Experiences

- <%= f.fields_for :job_experiences_attributes do |j| %> + <%= f.fields_for :job_experience_attributes do |j| %>
<%= j.label :company %> <%= j.text_field :company %> diff --git a/app/views/job_postings/_job_posting.html.erb b/app/views/job_postings/_job_posting.html.erb index 2a5f5ad..c86e488 100644 --- a/app/views/job_postings/_job_posting.html.erb +++ b/app/views/job_postings/_job_posting.html.erb @@ -1,11 +1,17 @@ - - <%= job_posting.title %> - <%= job_posting.description %> - <%= link_to 'Show', job_posting %> +
+ <%= link_to 'View', job_posting %> +

+ <%= job_posting.title %> +

+

+ <%= job_posting.description %> +

<% if current_user == job_posting.user %> - <%= link_to 'Edit', edit_job_posting_path(job_posting) %> - <%= link_to 'Destroy', job_posting, method: :delete, data: { confirm: 'Are you sure?' } %> +

<%= link_to 'Edit', edit_job_posting_path(job_posting) %> + <%= link_to 'Destroy', job_posting, method: :delete, data: { confirm: 'Are you sure?' } %> +

<% end %> - \ No newline at end of file +
+ diff --git a/app/views/job_postings/index.html.erb b/app/views/job_postings/index.html.erb index 8734111..590b9f1 100644 --- a/app/views/job_postings/index.html.erb +++ b/app/views/job_postings/index.html.erb @@ -1,3 +1,14 @@ +

Job Postings

+
+ <%= render @job_postings %> +
+ +
+<% if current_user.hirer %> + <%= link_to 'Post New Job', new_job_posting_path %> +<% end %> + + diff --git a/app/views/job_postings/my_index.html.erb b/app/views/job_postings/my_index.html.erb new file mode 100644 index 0000000..574c884 --- /dev/null +++ b/app/views/job_postings/my_index.html.erb @@ -0,0 +1,4 @@ +

My Job Postings

+
+ <%= render @my_job_postings %> +
\ No newline at end of file diff --git a/app/views/job_postings/show.html.erb b/app/views/job_postings/show.html.erb index e013d57..d051ec2 100644 --- a/app/views/job_postings/show.html.erb +++ b/app/views/job_postings/show.html.erb @@ -7,11 +7,21 @@

<%= @job_posting.description %>

- <%= link_to 'Apply', "#{}" %> | +

<%= params %>

<% if current_user == @job_posting.user %> <%= link_to 'Edit', edit_job_posting_path(@job_posting) %> | + <%= link_to 'Destroy', @job_posting, method: :delete, data: { confirm: 'Are you sure?' } %> | + <%= link_to 'View Applications', job_posting_applications_path(:job_application => { :job_posting_id => @job_posting.id }) %> | + <% else %> + <%= link_to 'Apply', new_job_application_path(:job_application => { :job_posting_id => @job_posting.id }) %> | <% end %> <%= link_to 'Back', job_postings_path %>
+ +
+ <%= simple_form_for(@job_posting) do |f| %> + <%= f.hidden_field :job_posting_id, value: @job_posting.id %> + <% end %> +
diff --git a/app/views/job_postings/show_applications.html.erb b/app/views/job_postings/show_applications.html.erb new file mode 100644 index 0000000..f6c5978 --- /dev/null +++ b/app/views/job_postings/show_applications.html.erb @@ -0,0 +1,28 @@ +

Applications for (this job)

+
+ <% #render @application1 %> + + <% @applications.each do |a| %> +
+ <% #a.user_id %> + <% @usertest = User.find(a.user_id) %> +

<%= @usertest.name %>

+ <%= @usertest.job_experience.company %> + <%= @usertest.job_experience.job_title %> + <%= @usertest.job_experience.description %> + <%= @usertest.job_experience.start_date %> +
+ <% end %> + +
\ No newline at end of file diff --git a/app/views/layouts/_header.html.erb b/app/views/layouts/_header.html.erb index a25a214..4416cc1 100644 --- a/app/views/layouts/_header.html.erb +++ b/app/views/layouts/_header.html.erb @@ -10,7 +10,9 @@ - SkillChest + logo SkillChest + + users form <% end %> <% end %> \ No newline at end of file diff --git a/app/views/users/show.js.erb b/app/views/users/show.js.erb new file mode 100644 index 0000000..006c85d --- /dev/null +++ b/app/views/users/show.js.erb @@ -0,0 +1,10 @@ +$boxes = $('<%= j render(@pins) %>') + +$('#pins').append( $boxes ).imagesLoaded( function(){ + $('#pins').masonry( 'reload'); +}); +<% if @pins.next_page %> + $('.pagination').replaceWith('<%= j will_paginate(@pins) %>'); +<% else %> + $('.pagination').remove(); +<% end %> \ No newline at end of file diff --git a/config/environments/development.rb b/config/environments/development.rb index 11cd31f..691a66e 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -14,7 +14,19 @@ config.action_controller.perform_caching = false # Don't care if the mailer can't send - config.action_mailer.raise_delivery_errors = false + config.action_mailer.raise_delivery_errors = true + + # Change mail delivery to either :smtp, :sendmail, :file, :test + config.action_mailer.delivery_method = :smtp + config.action_mailer.smtp_settings = { + address: "smtp.gmail.com", + port: "587", + domain: "gmail.com", + authentication: "plain", + enable_starttls_auto: true, + user_name: ENV['GMAIL_USERNAME_DEV'], + password: ENV['GMAIL_PASSWORD_DEV'] + } # Print deprecation notices to the Rails logger config.active_support.deprecation = :log @@ -37,4 +49,11 @@ # From Devise gem config.action_mailer.default_url_options = { :host => 'localhost:3000' } + + # For mailer + #ActionMailer::Base.delivery_method = :smtp + #ActionMailer::Base.perform_deliveries = true + #ActionMailer::Base.raise_delivery_errors = true + #ActionMailer::Base.smtp_settings = {} + end diff --git a/config/initializers/setup_mail.rb b/config/initializers/setup_mail.rb new file mode 100644 index 0000000..ce71dc2 --- /dev/null +++ b/config/initializers/setup_mail.rb @@ -0,0 +1,9 @@ +#ActionMailer::Base.smtp_settings = { +# :address => "smtp.gmail.com", +# :port => "587", +# :domain => "gmail.com", +# :user_name => "skillchest", +# :password => "", +# :authentication => "plain", +# :enable_starttls_auto => true +#} \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 1512361..9bd5caf 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -4,9 +4,12 @@ resources :job_applications + match 'job_applications/:id' => 'job_applications#show', as: :job_application - resources :job_postings + resources :job_postings, shallow: true do + resources :job_applications + end resources :pins @@ -26,6 +29,10 @@ get 'vip' => 'pages#vip' get 'job_post' => 'pages#job_post' + + get 'my_job_postings' => 'job_postings#my_index' + + get 'job_posting_applications' => 'job_postings#show_applications' # The priority is based upon order of creation: # first created -> highest priority. diff --git a/db/migrate/20130706012945_add_job_posting_id_to_job_applications.rb b/db/migrate/20130706012945_add_job_posting_id_to_job_applications.rb new file mode 100644 index 0000000..dba6c9d --- /dev/null +++ b/db/migrate/20130706012945_add_job_posting_id_to_job_applications.rb @@ -0,0 +1,6 @@ +class AddJobPostingIdToJobApplications < ActiveRecord::Migration + def change + add_column :job_applications, :job_posting_id, :integer + add_index :job_applications, :job_posting_id + end +end diff --git a/db/migrate/20130707184331_add_company_to_job_posting.rb b/db/migrate/20130707184331_add_company_to_job_posting.rb new file mode 100644 index 0000000..b31d0c0 --- /dev/null +++ b/db/migrate/20130707184331_add_company_to_job_posting.rb @@ -0,0 +1,6 @@ +class AddCompanyToJobPosting < ActiveRecord::Migration + def change + add_column :job_postings, :company, :string + add_index :job_postings, :company + end +end diff --git a/db/schema.rb b/db/schema.rb index 9b166c9..6d2d75c 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20130617103741) do +ActiveRecord::Schema.define(:version => 20130707184331) do create_table "applications", :force => true do |t| t.integer "job_id" @@ -22,11 +22,13 @@ add_index "applications", ["job_id"], :name => "index_applications_on_job_id" create_table "job_applications", :force => true do |t| - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false t.integer "user_id" + t.integer "job_posting_id" end + add_index "job_applications", ["job_posting_id"], :name => "index_job_applications_on_job_posting_id" add_index "job_applications", ["user_id"], :name => "index_job_applications_on_user_id" create_table "job_experiences", :force => true do |t| @@ -47,8 +49,10 @@ t.datetime "created_at", :null => false t.datetime "updated_at", :null => false t.integer "user_id" + t.string "company" end + add_index "job_postings", ["company"], :name => "index_job_postings_on_company" add_index "job_postings", ["user_id"], :name => "index_jobs_on_user_id" create_table "pins", :force => true do |t| diff --git a/logo/logo.png b/logo/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..bbc697888c200ba3a6a1dc6e78dfd0aaefc91678 GIT binary patch literal 30696 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 U8PCv%BETOCG9RTYC5`<52bDr3X8-^I literal 0 HcmV?d00001 diff --git a/test/functional/recieve_application_mailer_test.rb b/test/functional/recieve_application_mailer_test.rb new file mode 100644 index 0000000..83907e6 --- /dev/null +++ b/test/functional/recieve_application_mailer_test.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class RecieveApplicationMailerTest < ActionMailer::TestCase + # test "the truth" do + # assert true + # end +end