From 97fecd6703031017034c3ee2ca5d12dcb51a897e Mon Sep 17 00:00:00 2001 From: Molly Struve Date: Thu, 4 Jun 2020 08:17:23 -0500 Subject: [PATCH] Display Jobs Banner if User searches jobs or job (#8259) * Display Jobs Banner if User Searches jobs or job * Add period to end of sentence Co-authored-by: Ridhwana * reword site config description Co-authored-by: Ridhwana * Change SiteConfig display field name to display_jobs_banner * dont forget the specs Co-authored-by: Andy Zhao <17884966+Zhao-Andy@users.noreply.github.com> Co-authored-by: Ridhwana --- .../internal/configs_controller.rb | 10 +++++++- app/models/site_config.rb | 4 +++ app/views/articles/search.html.erb | 3 +++ app/views/internal/configs/show.html.erb | 25 +++++++++++++++++++ spec/requests/internal/configs_spec.rb | 15 +++++++++-- 5 files changed, 54 insertions(+), 3 deletions(-) diff --git a/app/controllers/internal/configs_controller.rb b/app/controllers/internal/configs_controller.rb index 7fb2ec45a..1de3460b7 100644 --- a/app/controllers/internal/configs_controller.rb +++ b/app/controllers/internal/configs_controller.rb @@ -45,7 +45,8 @@ class Internal::ConfigsController < Internal::ApplicationController rate_limit_params | mascot_params | image_params | - onboarding_params + onboarding_params | + job_params params.require(:site_config).permit( allowed_params, @@ -139,4 +140,11 @@ class Internal::ConfigsController < Internal::ApplicationController suggested_users ] end + + def job_params + %i[ + jobs_url + display_jobs_banner + ] + end end diff --git a/app/models/site_config.rb b/app/models/site_config.rb index 0ce7f8d40..f4096d468 100644 --- a/app/models/site_config.rb +++ b/app/models/site_config.rb @@ -44,6 +44,10 @@ class SiteConfig < RailsSettings::Base field :periodic_email_digest_max, type: :integer, default: 0 field :periodic_email_digest_min, type: :integer, default: 2 + # Jobs + field :jobs_url, type: :string, default: "https://jobs.dev.to/" + field :display_jobs_banner, type: :boolean, default: false + # Google Analytics Reporting API v4 # field :ga_view_id, type: :string, default: "" diff --git a/app/views/articles/search.html.erb b/app/views/articles/search.html.erb index 057966357..5e77dbd35 100644 --- a/app/views/articles/search.html.erb +++ b/app/views/articles/search.html.erb @@ -9,6 +9,9 @@ data-articles-since="<%= Timeframer.new(params[:timeframe]).datetime&.iso8601 %>"> <%= render "articles/search/sidebar" %>
+ <% if (params[:q].downcase == "job" || params[:q].downcase == "jobs") && SiteConfig.display_jobs_banner %> +
Interested in joining our team? Explore our >open roles.
+ <% end %>
diff --git a/app/views/internal/configs/show.html.erb b/app/views/internal/configs/show.html.erb index 7d10f0890..2b4b2431b 100644 --- a/app/views/internal/configs/show.html.erb +++ b/app/views/internal/configs/show.html.erb @@ -245,6 +245,31 @@
+
+ <%= render partial: "card_header", + locals: { + header: "Jobs", + state: "collapse", + target: "jobsBodyContainer", + expanded: "false" + } %> +
+
+ <%= f.label :jobs_url %> + <%= f.text_field :jobs_url, + class: "form-control", + value: SiteConfig.jobs_url, + placeholder: "Jobs URL" %> +
URL of the website where open positions are posted.
+ +
+ <%= f.label :display_jobs_banner %> + <%= f.check_box :display_jobs_banner, checked: SiteConfig.display_jobs_banner %> +
Display a jobs banner that points users to the <%= community_name %> jobs page when they type "job" or "jobs" in the search box
+
+
+
+
<%= render partial: "card_header", locals: { diff --git a/spec/requests/internal/configs_spec.rb b/spec/requests/internal/configs_spec.rb index 9adf8b79b..0531a3cfa 100644 --- a/spec/requests/internal/configs_spec.rb +++ b/spec/requests/internal/configs_spec.rb @@ -41,7 +41,7 @@ RSpec.describe "/internal/config", type: :request do describe "API tokens" do it "updates the health_check_token" do - token = "#{rand(20)}" + token = rand(20).to_s post "/internal/config", params: { site_config: { health_check_token: token }, confirmation: confirmation_message } expect(SiteConfig.health_check_token).to eq token end @@ -128,6 +128,18 @@ RSpec.describe "/internal/config", type: :request do end end + describe "Jobs" do + it "updates jobs_url" do + post "/internal/config", params: { site_config: { jobs_url: "www.jobs.com" }, confirmation: confirmation_message } + expect(SiteConfig.jobs_url).to eq("www.jobs.com") + end + + it "updates display_jobs_banner" do + post "/internal/config", params: { site_config: { display_jobs_banner: true }, confirmation: confirmation_message } + expect(SiteConfig.display_jobs_banner).to eq(true) + end + end + describe "Google Analytics Reporting API v4" do it "updates ga_view_id" do post "/internal/config", params: { site_config: { ga_view_id: "abc" }, confirmation: confirmation_message } @@ -376,7 +388,6 @@ RSpec.describe "/internal/config", type: :request do expect(SiteConfig.sidebar_tags).to eq(%w[hey haha hoho bobofofo]) end end - end end # rubocop:enable RSpec/NestedGroups