Skip to content

Commit

Permalink
feat: Creates 404 page for public portal [CW-2727] (#8293)
Browse files Browse the repository at this point in the history
Co-authored-by: Sojan Jose <sojan@pepalo.com>
  • Loading branch information
nithindavid and sojan-official committed Nov 3, 2023
1 parent 23ea829 commit 3b84b0f
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 8 deletions.
4 changes: 0 additions & 4 deletions app/controllers/public/api/v1/portals/articles_controller.rb
Expand Up @@ -39,10 +39,6 @@ def set_category
)
end

def portal
@portal ||= Portal.find_by!(slug: permitted_params[:slug], archived: false)
end

def list_params
params.permit(:query, :locale, :sort, :status)
end
Expand Down
11 changes: 11 additions & 0 deletions app/controllers/public/api/v1/portals/base_controller.rb
Expand Up @@ -18,6 +18,10 @@ def set_color_scheme
end
end

def portal
@portal ||= Portal.find_by!(slug: params[:slug], archived: false)
end

def set_locale(&)
switch_locale_with_portal(&) if params[:locale].present?
switch_locale_with_article(&) if params[:article_slug].present?
Expand All @@ -40,6 +44,8 @@ def switch_locale_with_portal(&)

def switch_locale_with_article(&)
article = Article.find_by(slug: params[:article_slug])
Rails.logger.info "Article: not found for slug: #{params[:article_slug]}"
render_404 && return if article.blank?

@locale = if article.category.present?
article.category.locale
Expand All @@ -53,4 +59,9 @@ def switch_locale_with_article(&)
def allow_iframe_requests
response.headers.delete('X-Frame-Options') if @is_plain_layout_enabled
end

def render_404
portal
render 'public/api/v1/portals/error/404', status: :not_found
end
end
Expand Up @@ -13,10 +13,9 @@ def show; end
private

def set_category
@category = @portal.categories.find_by!(locale: params[:locale], slug: params[:category_slug])
end
@category = @portal.categories.find_by(locale: params[:locale], slug: params[:category_slug])

def portal
@portal ||= Portal.find_by!(slug: params[:slug], archived: false)
Rails.logger.info "Category: not found for slug: #{params[:category_slug]}"
render_404 && return if @category.blank?
end
end
12 changes: 12 additions & 0 deletions app/views/public/api/v1/portals/error/404.html.erb
@@ -0,0 +1,12 @@
<div class="max-w-6xl h-full w-full flex-grow flex flex-col items-center justify-center mx-auto py-16 px-4 relative">
<div class="text-center mb-12">
<span class="text-8xl">馃攳</span>
</div>
<h1 class="text-6xl text-center font-semibold text-slate-800 dark:text-slate-100 leading-relaxed"><%= I18n.t('public_portal.404.title') %></h1>
<p class="text-center text-slate-700 dark:text-slate-300 my-1"><%= I18n.t('public_portal.404.description') %></p>
<div class="text-center my-8">
<a href="/hc/<%= @portal.slug %>/<%= @portal.config['default_locale'] || params[:locale] %>/<%= @theme.present? ? '?theme='+@theme : '' %>" class="text-woot-500 font-semibold underline">
<%= I18n.t('public_portal.404.back_to_home') %>
</a>
</div>
</div>
4 changes: 4 additions & 0 deletions config/locales/en.yml
Expand Up @@ -220,6 +220,10 @@ en:
made_with: Made with
header:
go_to_homepage: Go to the main site
404:
title: Page not found
description: We couldn't find the page you were looking for.
back_to_home: Go to home page
slack_unfurl:
fields:
name: Name
Expand Down

0 comments on commit 3b84b0f

Please sign in to comment.