# Pull Request Template
## Description
Implemented search results page functionality. Now you can press "Enter"
to search by term and display results in a results page. Also now you
can link to /hc/{account}/en/search?query=XXXXXX to view search results
for XXXXXX query.
fixes: https://github.com/chatwoot/chatwoot/issues/10945
## Screenshots
Classic layout search results:
<img width="3840" height="2160" alt="classic-results"
src="https://github.com/user-attachments/assets/3bbb3272-33ca-4eb4-b80a-76ed77442088"
/>
Classic layout pagination:
<img width="3840" height="2160" alt="classic-page-two"
src="https://github.com/user-attachments/assets/062b09d3-7c58-4d3b-8611-b94375e7db51"
/>
Classic layout empty search:
<img width="3840" height="2160" alt="no-results"
src="https://github.com/user-attachments/assets/c5e3f47a-cd9a-4e14-ae92-ccba00c89e98"
/>
Documentation layout search results:
<img width="3840" height="2160" alt="documentation-results"
src="https://github.com/user-attachments/assets/9e45d8d9-c975-4589-b6c6-3bc7bb3c588e"
/>
Documentation layout dark theme:
<img width="3840" height="2160" alt="documentation-dark"
src="https://github.com/user-attachments/assets/cdb6ed63-4241-4b32-9f79-7d92ed479fc8"
/>
Plain embedded dark layout:
<img width="3840" height="2160" alt="plain-embedded-dark"
src="https://github.com/user-attachments/assets/7deb02b9-9f24-48fb-8979-a2ecd7002c05"
/>
---------
Co-authored-by: Shivam Mishra <scm.mymail@gmail.com>
Co-authored-by: Sojan Jose <sojan@pepalo.com>
Co-authored-by: Pranav <pranav@chatwoot.com>
Co-authored-by: Muhsin Keloth <muhsinkeramam@gmail.com>
Co-authored-by: Vinay Keerthi <11478411+stonecharioteer@users.noreply.github.com>
32 lines
919 B
Ruby
32 lines
919 B
Ruby
class Public::Api::V1::Portals::SearchController < Public::Api::V1::Portals::BaseController
|
|
before_action :ensure_custom_domain_request, only: [:index]
|
|
before_action :portal
|
|
before_action :set_portal_layout
|
|
before_action :set_view_variant
|
|
before_action :ensure_portal_feature_enabled
|
|
layout 'portal'
|
|
|
|
def index
|
|
@query = params[:query].to_s.strip
|
|
@articles = @portal.articles.published.includes(:category).where(locale: params[:locale])
|
|
|
|
search_articles
|
|
|
|
@articles = @articles.page(params[:page]).per(10)
|
|
end
|
|
|
|
private
|
|
|
|
def search_articles
|
|
@articles = @query.present? ? @articles.search(search_params) : @articles.none
|
|
end
|
|
|
|
def search_params
|
|
params.permit(:query, :locale, :sort, :status, :page).tap do |permitted|
|
|
permitted[:query] = @query
|
|
end
|
|
end
|
|
end
|
|
|
|
Public::Api::V1::Portals::SearchController.prepend_mod_with('Public::Api::V1::Portals::SearchController')
|