* schema file undelete description * update with main * update with origin * update * create rake task for new-forem nav links * remove debugger * create rake task for new-forem nav links * remove debugger * incorporate review feedback * DRY image paths up Co-authored-by: Jamie Gaskins <jgaskins@hey.com>
168 lines
5 KiB
Ruby
168 lines
5 KiB
Ruby
# rubocop:disable Metrics/BlockLength
|
|
namespace :navigation_links do
|
|
def image_path(*paths)
|
|
File.read(Rails.root.join("app/assets/images/#{paths.join('/')}")).freeze
|
|
end
|
|
|
|
def twemoji_path(name)
|
|
image_path("twemoji", name)
|
|
end
|
|
|
|
reading_icon = twemoji_path("drawer.svg")
|
|
contact_icon = twemoji_path("contact.svg")
|
|
thumb_up_icon = twemoji_path("thumb-up.svg")
|
|
smart_icon = twemoji_path("smart.svg")
|
|
look_icon = twemoji_path("look.svg")
|
|
listing_icon = twemoji_path("listing.svg")
|
|
mic_icon = twemoji_path("mic.svg")
|
|
camera_icon = twemoji_path("camera.svg")
|
|
tag_icon = twemoji_path("tag.svg")
|
|
bulb_icon = twemoji_path("bulb.svg")
|
|
shopping_icon = twemoji_path("shopping.svg")
|
|
heart_icon = twemoji_path("heart.svg")
|
|
rainbowdev = image_path("rainbowdev.svg")
|
|
|
|
desc "Create navigation links for new forem"
|
|
task create: :environment do
|
|
NavigationLink.where(url: "/readinglist").first_or_create(
|
|
name: "Reading List",
|
|
url: URL.url("readinglist"),
|
|
icon: reading_icon,
|
|
display_only_when_signed_in: true,
|
|
position: 0,
|
|
section: :default,
|
|
)
|
|
NavigationLink.where(url: "/contact").first_or_create(
|
|
name: "Contact",
|
|
url: URL.url("contact"),
|
|
icon: contact_icon,
|
|
display_only_when_signed_in: false,
|
|
position: 1,
|
|
section: :default,
|
|
)
|
|
NavigationLink.where(url: "/code-of-conduct").first_or_create(
|
|
name: "Code of Conduct",
|
|
url: URL.url("code-of-conduct"),
|
|
icon: thumb_up_icon,
|
|
display_only_when_signed_in: false,
|
|
position: 0,
|
|
section: :other,
|
|
)
|
|
NavigationLink.where(url: "/privacy").first_or_create(
|
|
name: "Privacy Policy",
|
|
url: URL.url("privacy"),
|
|
icon: smart_icon,
|
|
display_only_when_signed_in: false,
|
|
position: 1,
|
|
section: :other,
|
|
)
|
|
NavigationLink.where(url: "/terms").first_or_create(
|
|
name: "Terms of use",
|
|
url: URL.url("terms"),
|
|
icon: look_icon,
|
|
display_only_when_signed_in: false,
|
|
position: 2,
|
|
section: :other,
|
|
)
|
|
end
|
|
|
|
desc "Update DEV's navigation_links"
|
|
task update: :environment do
|
|
protocol = ApplicationConfig["APP_PROTOCOL"].freeze
|
|
domain = Rails.application&.initialized? ? Settings::General.app_domain : ApplicationConfig["APP_DOMAIN"]
|
|
base_url = "#{protocol}#{domain}".freeze
|
|
|
|
NavigationLink.where(url: "#{base_url}/readinglist").first_or_create(
|
|
name: "Reading List",
|
|
icon: reading_icon,
|
|
display_only_when_signed_in: true,
|
|
position: 0,
|
|
section: :default,
|
|
)
|
|
NavigationLink.where(url: "#{base_url}/listings").first_or_create(
|
|
name: "Listings",
|
|
icon: listing_icon,
|
|
display_only_when_signed_in: false,
|
|
position: 1,
|
|
section: :default,
|
|
)
|
|
NavigationLink.where(url: "#{base_url}/pod").first_or_create(
|
|
name: "Podcasts",
|
|
icon: mic_icon,
|
|
display_only_when_signed_in: false,
|
|
position: 2,
|
|
section: :default,
|
|
)
|
|
NavigationLink.where(url: "#{base_url}/videos").first_or_create(
|
|
name: "Videos",
|
|
icon: camera_icon,
|
|
display_only_when_signed_in: false,
|
|
position: 3,
|
|
section: :default,
|
|
)
|
|
NavigationLink.where(url: "#{base_url}/tags").first_or_create(
|
|
name: "Tags",
|
|
icon: tag_icon,
|
|
display_only_when_signed_in: false,
|
|
position: 4,
|
|
section: :default,
|
|
)
|
|
NavigationLink.where(url: "#{base_url}/code-of-conduct").first_or_create(
|
|
name: "Code of Conduct",
|
|
icon: thumb_up_icon,
|
|
display_only_when_signed_in: false,
|
|
position: 0,
|
|
section: :other,
|
|
)
|
|
NavigationLink.where(url: "#{base_url}/faq").first_or_create(
|
|
name: "FAQ",
|
|
icon: bulb_icon,
|
|
display_only_when_signed_in: false,
|
|
position: 5,
|
|
section: :default,
|
|
)
|
|
NavigationLink.where(url: "https://shop.dev.to/").first_or_create(
|
|
name: "DEV Shop",
|
|
icon: shopping_icon,
|
|
display_only_when_signed_in: false,
|
|
position: 6,
|
|
section: :default,
|
|
)
|
|
NavigationLink.where(url: "#{base_url}/sponsors").first_or_create(
|
|
name: "Sponsors",
|
|
icon: heart_icon,
|
|
display_only_when_signed_in: false,
|
|
position: 7,
|
|
section: :default,
|
|
)
|
|
NavigationLink.where(url: "#{base_url}/about").first_or_create(
|
|
name: "About",
|
|
icon: rainbowdev,
|
|
display_only_when_signed_in: false,
|
|
position: 8,
|
|
section: :default,
|
|
)
|
|
NavigationLink.where(url: "#{base_url}/privacy").first_or_create(
|
|
name: "Privacy Policy",
|
|
icon: smart_icon,
|
|
display_only_when_signed_in: false,
|
|
position: 1,
|
|
section: :other,
|
|
)
|
|
NavigationLink.where(url: "#{base_url}/terms").first_or_create(
|
|
name: "Terms of use",
|
|
icon: look_icon,
|
|
display_only_when_signed_in: false,
|
|
position: 2,
|
|
section: :other,
|
|
)
|
|
NavigationLink.where(url: "#{base_url}/contact").first_or_create(
|
|
name: "Contact",
|
|
icon: contact_icon,
|
|
display_only_when_signed_in: false,
|
|
position: 9,
|
|
section: :default,
|
|
)
|
|
end
|
|
end
|
|
# rubocop:enable Metrics/BlockLength
|