Chatwoot/app/controllers/public/api/v1/portals/articles_controller.rb

40 lines
1,017 B
Ruby
Raw Normal View History

class Public::Api::V1::Portals::ArticlesController < PublicController
before_action :ensure_custom_domain_request, only: [:show, :index]
before_action :portal
before_action :set_category, except: [:index]
2022-07-08 11:54:38 +00:00
before_action :set_article, only: [:show]
layout 'portal'
2022-07-08 11:54:38 +00:00
def index
@articles = @portal.articles
2022-07-28 08:29:16 +00:00
@articles = @articles.search(list_params) if list_params.present?
2022-07-08 11:54:38 +00:00
end
def show; end
private
def set_article
@article = @category.articles.find(params[:id])
@parsed_content = render_article_content(@article.content)
end
def set_category
@category = @portal.categories.find_by!(slug: params[:category_slug]) if params[:category_slug].present?
2022-07-08 11:54:38 +00:00
end
def portal
@portal ||= Portal.find_by!(slug: params[:slug], archived: false)
2022-07-08 11:54:38 +00:00
end
def list_params
2022-07-28 08:29:16 +00:00
params.permit(:query)
2022-07-08 11:54:38 +00:00
end
def render_article_content(content)
# rubocop:disable Rails/OutputSafety
CommonMarker.render_html(content).html_safe
# rubocop:enable Rails/OutputSafety
end
2022-07-08 11:54:38 +00:00
end