Skip to content

Commit

Permalink
support empty ui searches again
Browse files Browse the repository at this point in the history
  • Loading branch information
mjansing committed Oct 14, 2024
1 parent 8e88357 commit bfd4696
Showing 1 changed file with 52 additions and 43 deletions.
95 changes: 52 additions & 43 deletions app/controllers/search_results_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -91,56 +91,65 @@ def index

@remote_result_collections = []

if params[:query].present?
# Deal with language parameter patterns
languages = []
# Either "l[]=de&l[]=en" as well as "l=de,en" should be possible
if params[:languages].respond_to?(:each) && params[:languages].include?('none')
# Special treatment for the "nil language"
languages << nil
elsif params[:languages].respond_to?(:split)
languages = params[:languages].split(',')
end
if params[:query]
if params[:query].blank? and request.format.to_sym.in? [:ttl, :nt, :rdf]
# support blank searches via web ui, but not for api requests
respond_to do |format|
format.any(:ttl, :rdf, :nt) do
head :bad_request
end
end
else
# Deal with language parameter patterns
languages = []
# Either "l[]=de&l[]=en" as well as "l=de,en" should be possible
if params[:languages].respond_to?(:each) && params[:languages].include?('none')
# Special treatment for the "nil language"
languages << nil
elsif params[:languages].respond_to?(:split)
languages = params[:languages].split(',')
end

# Ensure a valid class was selected
unless klass = Iqvoc.searchable_class_names.detect { |key, value| value == params[:type] }.try(:first)
raise "'#{params[:type]}' is not a searchable class! Must be one of " + Iqvoc.searchable_class_names.keys.join(', ')
end
klass = klass.constantize
# Ensure a valid class was selected
unless klass = Iqvoc.searchable_class_names.detect { |key, value| value == params[:type] }.try(:first)
raise "'#{params[:type]}' is not a searchable class! Must be one of " + Iqvoc.searchable_class_names.keys.join(', ')
end
klass = klass.constantize

@results = klass.single_query(params.merge({ languages: languages.flatten }))
.filter { |search_result| result_allowed?(search_result) }
@results = klass.single_query(params.merge({ languages: languages.flatten }))
.filter { |search_result| result_allowed?(search_result) }

if params[:limit] && Iqvoc.unlimited_search_results
@results = @results.per(params[:limit].to_i)
end
if params[:limit] && Iqvoc.unlimited_search_results
@results = @results.per(params[:limit].to_i)
end

if params[:datasets] && datasets = @datasets.select { |a| params[:datasets].include?(a.name) }
@results = SearchResultCollection.new(@results)
datasets.each do |dataset|
results = dataset.search(params)
if results
@results = @results + results
else
flash.now[:error] ||= []
flash.now[:error] << t('txt.controllers.search_results.remote_source_error', source: dataset)
if params[:datasets] && datasets = @datasets.select { |a| params[:datasets].include?(a.name) }
@results = SearchResultCollection.new(@results)
datasets.each do |dataset|
results = dataset.search(params)
if results
@results = @results + results
else
flash.now[:error] ||= []
flash.now[:error] << t('txt.controllers.search_results.remote_source_error', source: dataset)
end
end
@results = @results.sort { |x, y| x.to_s <=> y.to_s }
end
@results = @results.sort { |x, y| x.to_s <=> y.to_s }
end

@results = Kaminari.paginate_array(@results)
@results = @results.page(params[:page])

respond_to do |format|
format.html {
if request.headers['Accept'] == 'text/html; fragment=true'
render template: 'search_results/_result_list', layout: false
else
render :index, layout: with_layout?
end
}
format.any(:ttl, :rdf, :nt)
@results = Kaminari.paginate_array(@results)
@results = @results.page(params[:page])

respond_to do |format|
format.html {
if request.headers['Accept'] == 'text/html; fragment=true'
render template: 'search_results/_result_list', layout: false
else
render :index, layout: with_layout?
end
}
format.any(:ttl, :rdf, :nt)
end
end
else
respond_to do |format|
Expand Down

0 comments on commit bfd4696

Please sign in to comment.