From 19c78d6072ba4825c38d2a0095fa40446dadfd30 Mon Sep 17 00:00:00 2001 From: Ridhwana Date: Wed, 7 Oct 2020 17:20:32 +0200 Subject: [PATCH] [deploy] Prepare the database for the configurable navigation items (#10662) * feat: add the order of the navigational items to the database + admin interface * refactor: rename :display_when_signed_in to :display_only_when_signed_in * chore: rename all instances of display_when_signed_in to display_only_when_signed_in * feat: add a data script that will setup the base urls * feat: add a temporary rake file that will allow us to seed prod db's * chore: oops rename file * chore: remove the index for now * chore: remove validation * feat: change the order field to position and add an index o the name and url * feat: update everything that uses order to position * refactor: order by name as a secondary attr --- .../admin/navigation_links_controller.rb | 4 +- app/models/navigation_link.rb | 4 +- .../_add_navigation_link_modal.html.erb | 8 ++- .../_edit_navigation_link_modal.html.erb | 8 ++- .../admin/navigation_links/index.html.erb | 3 +- ...ange_display_when_signed_in_column_name.rb | 5 ++ ...085440_add_position_to_navigation_links.rb | 5 ++ ..._index_to_navigation_links_url_and_name.rb | 6 ++ db/schema.rb | 6 +- .../20201001173841_add_navigation_links.rb | 26 +++++++++ .../temporary/add_dev_navigation_links.rake | 58 +++++++++++++++++++ 11 files changed, 122 insertions(+), 11 deletions(-) create mode 100644 db/migrate/20201005181510_change_display_when_signed_in_column_name.rb create mode 100644 db/migrate/20201007085440_add_position_to_navigation_links.rb create mode 100644 db/migrate/20201007091041_add_unique_index_to_navigation_links_url_and_name.rb create mode 100644 lib/data_update_scripts/20201001173841_add_navigation_links.rb create mode 100644 lib/tasks/temporary/add_dev_navigation_links.rake diff --git a/app/controllers/admin/navigation_links_controller.rb b/app/controllers/admin/navigation_links_controller.rb index d9a09e12c..7fd9a5d71 100644 --- a/app/controllers/admin/navigation_links_controller.rb +++ b/app/controllers/admin/navigation_links_controller.rb @@ -1,12 +1,12 @@ module Admin class NavigationLinksController < Admin::ApplicationController ALLOWED_PARAMS = %i[ - name url icon display_when_signed_in + name url icon display_only_when_signed_in position ].freeze layout "admin" def index - @navigation_links = NavigationLink.order(:name) + @navigation_links = NavigationLink.order(position: :asc, name: :asc) end def create diff --git a/app/models/navigation_link.rb b/app/models/navigation_link.rb index 5536c90f8..6bbd5e26f 100644 --- a/app/models/navigation_link.rb +++ b/app/models/navigation_link.rb @@ -2,7 +2,7 @@ class NavigationLink < ApplicationRecord SVG_REGEXP = //i.freeze validates :name, :url, :icon, presence: true - validates :url, url: { schemes: %w[https http] } + validates :url, url: { schemes: %w[https http] }, uniqueness: { scope: :name } validates :icon, format: SVG_REGEXP - validates :display_when_signed_in, inclusion: { in: [true, false] } + validates :display_only_when_signed_in, inclusion: { in: [true, false] } end diff --git a/app/views/admin/navigation_links/_add_navigation_link_modal.html.erb b/app/views/admin/navigation_links/_add_navigation_link_modal.html.erb index 49acc9c32..68a68b4c0 100644 --- a/app/views/admin/navigation_links/_add_navigation_link_modal.html.erb +++ b/app/views/admin/navigation_links/_add_navigation_link_modal.html.erb @@ -30,8 +30,12 @@ <%= form.text_area :icon, class: "form-control" %>
- <%= form.check_box :display_when_signed_in %> - <%= form.label :display_when_signed_in %> + <%= form.label :position %> + <%= form.number_field :position, class: "form-control" %> +
+
+ <%= form.check_box :display_only_when_signed_in %> + <%= form.label :display_only_when_signed_in %>
<%= form.submit "Add link", class: "crayons-btn" %> <% end %> diff --git a/app/views/admin/navigation_links/_edit_navigation_link_modal.html.erb b/app/views/admin/navigation_links/_edit_navigation_link_modal.html.erb index 77a3193d1..7c4411a3c 100644 --- a/app/views/admin/navigation_links/_edit_navigation_link_modal.html.erb +++ b/app/views/admin/navigation_links/_edit_navigation_link_modal.html.erb @@ -29,8 +29,12 @@ <%= form.text_field :icon, class: "form-control" %>
- <%= form.check_box :display_when_signed_in %> - <%= form.label :display_when_signed_in %> + <%= form.label :position %> + <%= form.number_field :position, class: "form-control" %> +
+
+ <%= form.check_box :display_only_when_signed_in %> + <%= form.label :display_only_when_signed_in %>
<%= form.submit class: "btn btn-primary" %> <% end %> diff --git a/app/views/admin/navigation_links/index.html.erb b/app/views/admin/navigation_links/index.html.erb index 4e8d9203e..6a8cddce0 100644 --- a/app/views/admin/navigation_links/index.html.erb +++ b/app/views/admin/navigation_links/index.html.erb @@ -1,6 +1,7 @@ <%= render "add_navigation_link_modal" %> <% @navigation_links.each do |link| %> -
+
+
<%= link.position %>