Skip to content

Commit

Permalink
Preserve user pagination parameters in browse category searches
Browse files Browse the repository at this point in the history
  • Loading branch information
cbeer committed Aug 18, 2016
1 parent 0c9fcb0 commit 98b4c5a
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 13 deletions.
4 changes: 1 addition & 3 deletions app/controllers/spotlight/browse_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,7 @@ def show
protected

def search_query
base_query = Blacklight::SearchState.new(@search.query_params, blacklight_config)
user_query = Blacklight::SearchState.new(params, blacklight_config).to_h
base_query.params_for_search(user_query)
@search.merge_params_for_search(params, blacklight_config)
end

##
Expand Down
12 changes: 2 additions & 10 deletions app/helpers/spotlight/pages_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ def disable_save_pages_button?
end

def get_search_widget_search_results(block)
if block.searches?
search_results(search_widget_search_query(block))
if block.search.present?
search_results(search_widget_search_query(block.search.merge_params_for_search(params, blacklight_config)))
else
[]
end
Expand Down Expand Up @@ -50,13 +50,5 @@ def nestable_data_attributes_hash(type)
def render_contact_email_address(address)
mail_to address, address
end

private

def search_widget_search_query(block)
base_query = Blacklight::SearchState.new(block.query_params, blacklight_config)
user_query = Blacklight::SearchState.new(params, blacklight_config).to_h
base_query.params_for_search(user_query)
end
end
end
6 changes: 6 additions & 0 deletions app/models/spotlight/search.rb
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,12 @@ def search_params
search_builder.with(query_params.with_indifferent_access).merge(facet: false, fl: default_search_fields)
end

def merge_params_for_search(params, blacklight_config)
base_query = Blacklight::SearchState.new(query_params, blacklight_config)
user_query = Blacklight::SearchState.new(params, blacklight_config).to_h
base_query.params_for_search(user_query).merge(user_query.slice(:page))
end

private

def search_builder_class
Expand Down
16 changes: 16 additions & 0 deletions spec/models/spotlight/search_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -118,4 +118,20 @@
expect(search.send(:repository).blacklight_config).to eql blacklight_config
end
end

describe '#merge_params_for_search' do
it 'merges user-supplied parameters into the search query' do
user_params = { view: 'x' }
search_params = subject.merge_params_for_search(user_params, blacklight_config)
expect(search_params).to include query_params
expect(search_params).to include user_params
end

it 'preserves user pagination' do
user_params = { page: 5, per_page: 7 }
search_params = subject.merge_params_for_search(user_params, blacklight_config)
expect(search_params).to include query_params
expect(search_params).to include user_params
end
end
end

0 comments on commit 98b4c5a

Please sign in to comment.