diff --git a/app/controllers/public/api/v1/portals/search_controller.rb b/app/controllers/public/api/v1/portals/search_controller.rb new file mode 100644 index 000000000..7d2cc2f56 --- /dev/null +++ b/app/controllers/public/api/v1/portals/search_controller.rb @@ -0,0 +1,19 @@ +class Public::Api::V1::Portals::SearchController < Public::Api::V1::Portals::BaseController + before_action :portal + layout 'portal' + + def index + @query = params[:query] + @articles = @portal.articles.published + + @articles = @articles.search(search_params) if @query.present? + + @articles = @articles.page(params[:page]).per(10) # Add pagination + end + + private + + def search_params + params.permit(:query, :locale, :sort, :status, :page) + end +end diff --git a/app/javascript/portal/components/PublicArticleSearch.vue b/app/javascript/portal/components/PublicArticleSearch.vue index 809755e46..1ac4bcfd5 100644 --- a/app/javascript/portal/components/PublicArticleSearch.vue +++ b/app/javascript/portal/components/PublicArticleSearch.vue @@ -90,18 +90,29 @@ export default { this.isLoading = false; } }, + handleSubmit() { + if (this.searchTerm.trim()) { + const url = `/hc/${this.portalSlug}/${this.localeCode}/search?query=${encodeURIComponent(this.searchTerm)}`; + window.location.href = url; + } + }, }, };