blacklight 6.0.0.pre2 → 6.0.0.pre3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/VERSION +1 -1
- data/Vagrantfile +79 -0
- data/app/controllers/concerns/blacklight/catalog.rb +4 -4
- data/app/helpers/blacklight/deprecated_url_helper_behavior.rb +58 -0
- data/app/helpers/blacklight/url_helper_behavior.rb +16 -8
- data/app/presenters/blacklight/document_presenter.rb +6 -2
- data/config/routes.rb +2 -0
- data/lib/blacklight/search_state.rb +43 -35
- data/provision.sh +20 -0
- data/spec/helpers/deprecated_url_helper_behavior_spec.rb +92 -0
- data/spec/helpers/url_helper_spec.rb +19 -2
- data/spec/presenters/document_presenter_spec.rb +28 -5
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0ff860357fb3d2118c70ca7e8f1c4dc36bc496f4
|
4
|
+
data.tar.gz: 645e95ebad1081be628cd2c1f24f302b711fc2b1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c48d40732144a83f9708e0b12a1f6b29a603e667df94e2f7c79aeef0e86a58444241d2a63c32cd68e3835cad52716d7bf53f0a22a115416c0bb716153b1a4a3c
|
7
|
+
data.tar.gz: 0fb793e45aa4bb028cecc280a37f3c8a602b9d54d6fc70ebf52376edb16653bfe1492ec7f11703e4ee141efd9d4445e13dab39d2ec79220089a83cb2dac740f8
|
data/.gitignore
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
6.0.0.
|
1
|
+
6.0.0.pre3
|
data/Vagrantfile
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
# -*- mode: ruby -*-
|
2
|
+
# vi: set ft=ruby :
|
3
|
+
|
4
|
+
# All Vagrant configuration is done below. The "2" in Vagrant.configure
|
5
|
+
# configures the configuration version (we support older styles for
|
6
|
+
# backwards compatibility). Please don't change it unless you know what
|
7
|
+
# you're doing.
|
8
|
+
Vagrant.configure(2) do |config|
|
9
|
+
|
10
|
+
# The most common configuration options are documented and commented below.
|
11
|
+
# For a complete reference, please see the online documentation at
|
12
|
+
# https://docs.vagrantup.com.
|
13
|
+
|
14
|
+
# Every Vagrant development environment requires a box. You can search for
|
15
|
+
# boxes at https://atlas.hashicorp.com/search.
|
16
|
+
config.vm.box = "bento/centos-7.1"
|
17
|
+
config.vm.hostname = "blacklight"
|
18
|
+
config.vm.synced_folder ".", "/home/vagrant/sync", type: 'virtualbox'
|
19
|
+
|
20
|
+
|
21
|
+
# Disable automatic box update checking. If you disable this, then
|
22
|
+
# boxes will only be checked for updates when the user runs
|
23
|
+
# `vagrant box outdated`. This is not recommended.
|
24
|
+
# config.vm.box_check_update = false
|
25
|
+
|
26
|
+
# Create a forwarded port mapping which allows access to a specific port
|
27
|
+
# within the machine from a port on the host machine. In the example below,
|
28
|
+
# accessing "localhost:8080" will access port 80 on the guest machine.
|
29
|
+
# config.vm.network "forwarded_port", guest: 80, host: 8080
|
30
|
+
config.vm.network "forwarded_port", guest: 8983, host: 8983, auto_correct: true
|
31
|
+
config.vm.network "forwarded_port", guest: 3000, host: 3000, auto_correct: true
|
32
|
+
|
33
|
+
# Create a private network, which allows host-only access to the machine
|
34
|
+
# using a specific IP.
|
35
|
+
# config.vm.network "private_network", ip: "192.168.33.10"
|
36
|
+
|
37
|
+
# Create a public network, which generally matched to bridged network.
|
38
|
+
# Bridged networks make the machine appear as another physical device on
|
39
|
+
# your network.
|
40
|
+
# config.vm.network "public_network"
|
41
|
+
|
42
|
+
# Share an additional folder to the guest VM. The first argument is
|
43
|
+
# the path on the host to the actual folder. The second argument is
|
44
|
+
# the path on the guest to mount the folder. And the optional third
|
45
|
+
# argument is a set of non-required options.
|
46
|
+
# config.vm.synced_folder "../data", "/vagrant_data"
|
47
|
+
|
48
|
+
# Provider-specific configuration so you can fine-tune various
|
49
|
+
# backing providers for Vagrant. These expose provider-specific options.
|
50
|
+
# Example for VirtualBox:
|
51
|
+
#
|
52
|
+
# config.vm.provider "virtualbox" do |vb|
|
53
|
+
# # Display the VirtualBox GUI when booting the machine
|
54
|
+
# vb.gui = true
|
55
|
+
#
|
56
|
+
# # Customize the amount of memory on the VM:
|
57
|
+
# vb.memory = "1024"
|
58
|
+
# end
|
59
|
+
#
|
60
|
+
# View the documentation for the provider you are using for more
|
61
|
+
# information on available options.
|
62
|
+
|
63
|
+
# Define a Vagrant Push strategy for pushing to Atlas. Other push strategies
|
64
|
+
# such as FTP and Heroku are also available. See the documentation at
|
65
|
+
# https://docs.vagrantup.com/v2/push/atlas.html for more information.
|
66
|
+
# config.push.define "atlas" do |push|
|
67
|
+
# push.app = "YOUR_ATLAS_USERNAME/YOUR_APPLICATION_NAME"
|
68
|
+
# end
|
69
|
+
|
70
|
+
# Enable provisioning with a shell script. Additional provisioners such as
|
71
|
+
# Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the
|
72
|
+
# documentation for more information about their specific syntax and use.
|
73
|
+
# config.vm.provision "shell", inline: <<-SHELL
|
74
|
+
# sudo apt-get update
|
75
|
+
# sudo apt-get install -y apache2
|
76
|
+
# SHELL
|
77
|
+
|
78
|
+
config.vm.provision "shell", path: "provision.sh"
|
79
|
+
end
|
@@ -56,12 +56,12 @@ module Blacklight::Catalog
|
|
56
56
|
search_session['id'] = params[:search_id]
|
57
57
|
search_session['per_page'] = params[:per_page]
|
58
58
|
|
59
|
-
|
60
|
-
URI.parse(params[:redirect]).path
|
59
|
+
if params[:redirect] and (params[:redirect].starts_with?('/') or params[:redirect] =~ URI::regexp)
|
60
|
+
path = URI.parse(params[:redirect]).path
|
61
|
+
redirect_to path, status: 303
|
61
62
|
else
|
62
|
-
|
63
|
+
redirect_to blacklight_config.document_model.new(id: params[:id]), status: 303
|
63
64
|
end
|
64
|
-
redirect_to path, :status => 303
|
65
65
|
end
|
66
66
|
|
67
67
|
# displays values and pagination links for a single facet field
|
@@ -0,0 +1,58 @@
|
|
1
|
+
module Blacklight
|
2
|
+
module DeprecatedUrlHelperBehavior
|
3
|
+
extend Deprecation
|
4
|
+
self.deprecation_horizon = 'blacklight 7.x'
|
5
|
+
|
6
|
+
def params_for_search(*args, &block)
|
7
|
+
source_params, params_to_merge = case args.length
|
8
|
+
when 0
|
9
|
+
search_state.params_for_search
|
10
|
+
when 1
|
11
|
+
search_state.params_for_search(args.first)
|
12
|
+
when 2
|
13
|
+
Deprecation.warn(Blacklight::DeprecatedUrlHelperBehavior, 'Use Blacklight::SearchState.new(source_params).params_for_search instead')
|
14
|
+
Blacklight::SearchState.new(args.first, blacklight_config).params_for_search(args.last)
|
15
|
+
else
|
16
|
+
raise ArgumentError.new "wrong number of arguments (#{args.length} for 0..2)"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
deprecation_deprecate :params_for_search
|
20
|
+
|
21
|
+
def sanitize_search_params(source_params)
|
22
|
+
Blacklight::Parameters.sanitize(source_params)
|
23
|
+
end
|
24
|
+
deprecation_deprecate :sanitize_search_params
|
25
|
+
|
26
|
+
def reset_search_params(source_params)
|
27
|
+
Blacklight::SearchState.new(source_params, blacklight_config).send(:reset_search_params)
|
28
|
+
end
|
29
|
+
deprecation_deprecate :reset_search_params
|
30
|
+
|
31
|
+
def add_facet_params(field, item, source_params = nil)
|
32
|
+
if source_params
|
33
|
+
Deprecation.warn(Blacklight::DeprecatedUrlHelperBehavior, 'Use Blacklight::SearchState.new(source_params).add_facet_params instead')
|
34
|
+
|
35
|
+
Blacklight::SearchState.new(source_params, blacklight_config).add_facet_params(field, item)
|
36
|
+
else
|
37
|
+
search_state.add_facet_params(field, item)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
deprecation_deprecate :add_facet_params
|
41
|
+
|
42
|
+
def remove_facet_params(field, item, source_params = nil)
|
43
|
+
if source_params
|
44
|
+
Deprecation.warn(Blacklight::DeprecatedUrlHelperBehavior, 'Use Blacklight::SearchState.new(source_params).remove_facet_params instead')
|
45
|
+
|
46
|
+
Blacklight::SearchState.new(source_params, blacklight_config).remove_facet_params(field, item)
|
47
|
+
else
|
48
|
+
search_state.remove_facet_params(field, item)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
deprecation_deprecate :remove_facet_params
|
52
|
+
|
53
|
+
def add_facet_params_and_redirect(field, item)
|
54
|
+
search_state.add_facet_params_and_redirect(field, item)
|
55
|
+
end
|
56
|
+
deprecation_deprecate :add_facet_params_and_redirect
|
57
|
+
end
|
58
|
+
end
|
@@ -1,6 +1,8 @@
|
|
1
1
|
##
|
2
2
|
# URL helper methods
|
3
3
|
module Blacklight::UrlHelperBehavior
|
4
|
+
include Blacklight::DeprecatedUrlHelperBehavior
|
5
|
+
|
4
6
|
##
|
5
7
|
# Extension point for downstream applications
|
6
8
|
# to provide more interesting routing to
|
@@ -61,26 +63,32 @@ module Blacklight::UrlHelperBehavior
|
|
61
63
|
# session_tracking_params(SolrDocument.new(id: 123), 7)
|
62
64
|
# => { data: { :'tracker-href' => '/catalog/123/track?counter=7&search_id=999' } }
|
63
65
|
def session_tracking_params document, counter
|
64
|
-
|
66
|
+
path = session_tracking_path(document, per_page: params.fetch(:per_page, search_session['per_page']), counter: counter, search_id: current_search_session.try(:id))
|
67
|
+
|
68
|
+
if path.nil?
|
65
69
|
return {}
|
66
70
|
end
|
67
|
-
|
68
|
-
{ :
|
71
|
+
|
72
|
+
{ data: {:'context-href' => path } }
|
69
73
|
end
|
70
74
|
protected :session_tracking_params
|
71
|
-
|
75
|
+
|
72
76
|
##
|
73
77
|
# Get the URL for tracking search sessions across pages using polymorphic routing
|
74
78
|
def session_tracking_path document, params = {}
|
75
|
-
|
79
|
+
return if document.nil?
|
76
80
|
|
77
|
-
if respond_to?
|
81
|
+
if respond_to?(controller_tracking_method)
|
78
82
|
send(controller_tracking_method, params.merge(id: document.id))
|
79
83
|
else
|
80
|
-
|
84
|
+
blacklight.track_search_context_path(params.merge(id: document.id))
|
81
85
|
end
|
82
86
|
end
|
83
87
|
|
88
|
+
def controller_tracking_method
|
89
|
+
"track_#{controller_name}_path"
|
90
|
+
end
|
91
|
+
|
84
92
|
#
|
85
93
|
# link based helpers ->
|
86
94
|
#
|
@@ -146,7 +154,7 @@ module Blacklight::UrlHelperBehavior
|
|
146
154
|
# @param [Blacklight::SolrResponse::Group]
|
147
155
|
# @return [Hash]
|
148
156
|
def add_group_facet_params_and_redirect group
|
149
|
-
search_state.add_facet_params_and_redirect(group.field, group.key
|
157
|
+
search_state.add_facet_params_and_redirect(group.field, group.key)
|
150
158
|
end
|
151
159
|
|
152
160
|
# A URL to refworks export, with an embedded callback URL to this app.
|
@@ -106,7 +106,7 @@ module Blacklight
|
|
106
106
|
options[:last_word_connector] ||= field_config.separator
|
107
107
|
end
|
108
108
|
|
109
|
-
values.to_sentence(options)
|
109
|
+
values.map { |x| html_escape(x) }.to_sentence(options).html_safe
|
110
110
|
end
|
111
111
|
|
112
112
|
##
|
@@ -220,11 +220,15 @@ module Blacklight
|
|
220
220
|
end
|
221
221
|
|
222
222
|
Array(value).map do |v|
|
223
|
-
@controller.link_to render_field_value(v, field_config), @controller.search_action_path(@controller.add_facet_params(link_field, v
|
223
|
+
@controller.link_to render_field_value(v, field_config), @controller.search_action_path(@controller.search_state.reset.add_facet_params(link_field, v))
|
224
224
|
end if field
|
225
225
|
else
|
226
226
|
value
|
227
227
|
end
|
228
228
|
end
|
229
|
+
|
230
|
+
def html_escape(*args)
|
231
|
+
ERB::Util.html_escape(*args)
|
232
|
+
end
|
229
233
|
end
|
230
234
|
end
|
data/config/routes.rb
CHANGED
@@ -6,5 +6,7 @@ Blacklight::Engine.routes.draw do
|
|
6
6
|
put "saved_searches/save/:id", :to => "saved_searches#save", :as => "save_search"
|
7
7
|
delete "saved_searches/forget/:id", :to => "saved_searches#forget", :as => "forget_search"
|
8
8
|
post "saved_searches/forget/:id", :to => "saved_searches#forget"
|
9
|
+
post "/catalog/:id/track", to: 'catalog#track', as: 'track_search_context'
|
10
|
+
|
9
11
|
resources :suggest, only: :index, defaults: { format: 'json' }
|
10
12
|
end
|
@@ -11,6 +11,10 @@ module Blacklight
|
|
11
11
|
@blacklight_config = blacklight_config
|
12
12
|
end
|
13
13
|
|
14
|
+
def reset
|
15
|
+
Blacklight::SearchState.new({}, blacklight_config)
|
16
|
+
end
|
17
|
+
|
14
18
|
def url_for_document(doc, options = {})
|
15
19
|
if respond_to?(:blacklight_config) and
|
16
20
|
blacklight_config.show.route and
|
@@ -27,31 +31,14 @@ module Blacklight
|
|
27
31
|
# Does NOT remove request keys and otherwise ensure that the hash
|
28
32
|
# is suitable for a redirect. See
|
29
33
|
# add_facet_params_and_redirect
|
30
|
-
def add_facet_params(field, item
|
31
|
-
|
32
|
-
if item.respond_to? :field
|
33
|
-
field = item.field
|
34
|
-
end
|
34
|
+
def add_facet_params(field, item)
|
35
|
+
p = reset_search_params
|
35
36
|
|
36
|
-
|
37
|
-
|
38
|
-
url_field = facet_config.key
|
39
|
-
|
40
|
-
value = facet_value_for_facet_item(item)
|
41
|
-
|
42
|
-
p = reset_search_params(source_params)
|
43
|
-
p[:f] = (p[:f] || {}).dup # the command above is not deep in rails3, !@#$!@#$
|
44
|
-
p[:f][url_field] = (p[:f][url_field] || []).dup
|
45
|
-
|
46
|
-
if facet_config.single and not p[:f][url_field].empty?
|
47
|
-
p[:f][url_field] = []
|
48
|
-
end
|
49
|
-
|
50
|
-
p[:f][url_field].push(value)
|
37
|
+
add_facet_param(p, field, item)
|
51
38
|
|
52
39
|
if item and item.respond_to?(:fq) and item.fq
|
53
|
-
Array(item.fq).each do |f,v|
|
54
|
-
p
|
40
|
+
Array(item.fq).each do |f, v|
|
41
|
+
add_facet_param(p, f, v)
|
55
42
|
end
|
56
43
|
end
|
57
44
|
|
@@ -91,7 +78,7 @@ module Blacklight
|
|
91
78
|
|
92
79
|
value = facet_value_for_facet_item(item)
|
93
80
|
|
94
|
-
p = reset_search_params
|
81
|
+
p = reset_search_params
|
95
82
|
# need to dup the facet values too,
|
96
83
|
# if the values aren't dup'd, then the values
|
97
84
|
# from the session will get remove in the show view...
|
@@ -124,20 +111,41 @@ module Blacklight
|
|
124
111
|
|
125
112
|
private
|
126
113
|
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
114
|
+
##
|
115
|
+
# Reset any search parameters that store search context
|
116
|
+
# and need to be reset when e.g. constraints change
|
117
|
+
def reset_search_params
|
118
|
+
Parameters.sanitize(params).except(:page, :counter).with_indifferent_access
|
119
|
+
end
|
120
|
+
|
121
|
+
# TODO: this code is duplicated in Blacklight::FacetsHelperBehavior
|
122
|
+
def facet_value_for_facet_item item
|
123
|
+
if item.respond_to? :value
|
124
|
+
item.value
|
125
|
+
else
|
126
|
+
item
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
def add_facet_param(p, field, item)
|
131
|
+
if item.respond_to? :field
|
132
|
+
field = item.field
|
132
133
|
end
|
133
134
|
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
135
|
+
facet_config = facet_configuration_for_field(field)
|
136
|
+
|
137
|
+
url_field = facet_config.key
|
138
|
+
|
139
|
+
value = facet_value_for_facet_item(item)
|
140
|
+
|
141
|
+
p[:f] = (p[:f] || {}).dup # the command above is not deep in rails3, !@#$!@#$
|
142
|
+
p[:f][url_field] = (p[:f][url_field] || []).dup
|
143
|
+
|
144
|
+
if facet_config.single and not p[:f][url_field].empty?
|
145
|
+
p[:f][url_field] = []
|
141
146
|
end
|
147
|
+
|
148
|
+
p[:f][url_field].push(value)
|
149
|
+
end
|
142
150
|
end
|
143
151
|
end
|
data/provision.sh
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
sudo yum install -y epel-release
|
3
|
+
sudo yum install -y curl git java-1.7.0-openjdk-devel nodejs yum-utils gcc bzip2 kernel-devel dkms
|
4
|
+
|
5
|
+
su - vagrant -c 'gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3'
|
6
|
+
su - vagrant -c 'curl -sSL https://get.rvm.io | bash -s stable'
|
7
|
+
su - vagrant -c 'rvm 2.2.3 --install --default'
|
8
|
+
su - vagrant -c 'gem install bundler'
|
9
|
+
su - vagrant -c 'cd /home/vagrant/sync && bundle install'
|
10
|
+
su - vagrant -c 'cd /home/vagrant/sync && rake engine_cart:generate'
|
11
|
+
|
12
|
+
echo "
|
13
|
+
Now to start Solr and Blacklight run the following from within the Blacklight directory:
|
14
|
+
|
15
|
+
vagrant ssh
|
16
|
+
cd /home/vagrant/sync
|
17
|
+
rake blacklight:server[\"-b 0.0.0.0\"]
|
18
|
+
|
19
|
+
Now you can make changes to Blacklight and see the results.
|
20
|
+
"
|
@@ -0,0 +1,92 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Blacklight::DeprecatedUrlHelperBehavior do
|
4
|
+
around do |test|
|
5
|
+
Deprecation.silence(described_class) do
|
6
|
+
test.call
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
let(:search_state) { Blacklight::SearchState.new(params, blacklight_config) }
|
11
|
+
let(:params) { {} }
|
12
|
+
let(:blacklight_config) { Blacklight::Configuration.new }
|
13
|
+
|
14
|
+
before do
|
15
|
+
allow(helper).to receive(:search_state).and_return(search_state)
|
16
|
+
allow(helper).to receive(:params).and_return(params)
|
17
|
+
allow(helper).to receive(:blacklight_config).and_return(blacklight_config)
|
18
|
+
end
|
19
|
+
|
20
|
+
describe '#params_for_search' do
|
21
|
+
it 'passes through to the search state' do
|
22
|
+
expect(helper.params_for_search).to eq search_state.params_for_search
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'passes arguments through to the search state' do
|
26
|
+
expect(helper.params_for_search(merge: 1)).to eq search_state.params_for_search(merge: 1)
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'generates a search state for the source parameters' do
|
30
|
+
expect(helper.params_for_search({ source: 1 }, { merge: 1 })).to include merge: 1, source: 1
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe '#sanitize_search_params' do
|
35
|
+
it 'passes through to the parameter sanitizer' do
|
36
|
+
expect(helper.sanitize_search_params(a: 1)).to eq Blacklight::Parameters.sanitize(a: 1)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe '#reset_search_params' do
|
41
|
+
it 'resets the current page and counter' do
|
42
|
+
expect(helper.reset_search_params(page: 1, counter: 10)).to be_blank
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe '#add_facet_params' do
|
47
|
+
before do
|
48
|
+
blacklight_config.add_facet_field 'x'
|
49
|
+
end
|
50
|
+
|
51
|
+
let(:field) { blacklight_config.facet_fields['x'] }
|
52
|
+
let(:item) { true }
|
53
|
+
|
54
|
+
it 'passes through to the search state' do
|
55
|
+
expect(helper.add_facet_params(field, item)).to eq search_state.add_facet_params(field, item)
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'generates a search state for the source parameters' do
|
59
|
+
expect(helper.add_facet_params(field, item, source: 1)).to include source: 1
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
describe '#add_facet_params_and_redirect' do
|
64
|
+
before do
|
65
|
+
blacklight_config.add_facet_field 'x'
|
66
|
+
end
|
67
|
+
|
68
|
+
let(:field) { blacklight_config.facet_fields['x'] }
|
69
|
+
let(:item) { true }
|
70
|
+
|
71
|
+
it 'passes through to the search state' do
|
72
|
+
expect(helper.add_facet_params_and_redirect(field, item)).to eq search_state.add_facet_params_and_redirect(field, item)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
describe '#remove_facet_params' do
|
77
|
+
before do
|
78
|
+
blacklight_config.add_facet_field 'x'
|
79
|
+
end
|
80
|
+
|
81
|
+
let(:field) { blacklight_config.facet_fields['x'] }
|
82
|
+
let(:item) { true }
|
83
|
+
|
84
|
+
it 'passes through to the search state' do
|
85
|
+
expect(helper.remove_facet_params(field, item)).to eq search_state.remove_facet_params(field, item)
|
86
|
+
end
|
87
|
+
|
88
|
+
it 'generates a search state for the source parameters' do
|
89
|
+
expect(helper.remove_facet_params(field, item, source: 1)).to include source: 1
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
@@ -222,12 +222,29 @@ describe BlacklightUrlHelper do
|
|
222
222
|
expect(helper.link_to_document(@document, :title_display, counter: 5)).to include 'data-context-href="tracking url"'
|
223
223
|
end
|
224
224
|
|
225
|
-
it "
|
225
|
+
it "includes the data- attributes from the options" do
|
226
226
|
data = {'id'=>'123456','title_display'=>['654321']}
|
227
227
|
@document = SolrDocument.new(data)
|
228
228
|
link = helper.link_to_document @document, { data: { x: 1 } }
|
229
229
|
expect(link).to have_selector '[data-x]'
|
230
|
-
|
230
|
+
end
|
231
|
+
|
232
|
+
it 'adds a controller-specific tracking attribute' do
|
233
|
+
data = { 'id'=>'123456', 'title_display'=>['654321'] }
|
234
|
+
@document = SolrDocument.new(data)
|
235
|
+
|
236
|
+
expect(helper).to receive(:track_test_path).and_return('/asdf')
|
237
|
+
link = helper.link_to_document @document, { data: { x: 1 } }
|
238
|
+
|
239
|
+
expect(link).to have_selector '[data-context-href="/asdf"]'
|
240
|
+
end
|
241
|
+
|
242
|
+
it 'adds a global tracking attribute' do
|
243
|
+
data = { 'id'=>'123456', 'title_display'=>['654321'] }
|
244
|
+
@document = SolrDocument.new(data)
|
245
|
+
|
246
|
+
link = helper.link_to_document @document, { data: { x: 1 } }
|
247
|
+
expect(link).to have_selector '[data-context-href="/catalog/123456/track"]'
|
231
248
|
end
|
232
249
|
|
233
250
|
it "passes on the title attribute to the link_to_with_data method" do
|
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Blacklight::DocumentPresenter do
|
4
4
|
include Capybara::RSpecMatchers
|
5
|
-
let(:request_context) { double
|
5
|
+
let(:request_context) { double }
|
6
6
|
let(:config) { Blacklight::Configuration.new }
|
7
7
|
|
8
8
|
subject { presenter }
|
@@ -16,6 +16,10 @@ describe Blacklight::DocumentPresenter do
|
|
16
16
|
'mnbv' => 'document mnbv value')
|
17
17
|
end
|
18
18
|
|
19
|
+
before do
|
20
|
+
allow(request_context).to receive(:search_state).and_return(Blacklight::SearchState.new({}, config))
|
21
|
+
end
|
22
|
+
|
19
23
|
describe "link_rel_alternates" do
|
20
24
|
before do
|
21
25
|
class MockDocument
|
@@ -116,7 +120,6 @@ describe Blacklight::DocumentPresenter do
|
|
116
120
|
end
|
117
121
|
|
118
122
|
it "should check for a link_to_search" do
|
119
|
-
allow(request_context).to receive(:add_facet_params).and_return(:f => { :link_to_search_true => ['x'] })
|
120
123
|
allow(request_context).to receive(:search_action_path).with(:f => { :link_to_search_true => ['x'] }).and_return('/foo')
|
121
124
|
allow(request_context).to receive(:link_to).with("x", '/foo').and_return('bar')
|
122
125
|
value = subject.render_index_field_value 'link_to_search_true'
|
@@ -124,7 +127,6 @@ describe Blacklight::DocumentPresenter do
|
|
124
127
|
end
|
125
128
|
|
126
129
|
it "should check for a link_to_search with a field name" do
|
127
|
-
allow(request_context).to receive(:add_facet_params).and_return(:f => { :some_field => ['x'] })
|
128
130
|
allow(request_context).to receive(:search_action_path).with(:f => { :some_field => ['x'] }).and_return('/foo')
|
129
131
|
allow(request_context).to receive(:link_to).with("x", '/foo').and_return('bar')
|
130
132
|
value = subject.render_index_field_value 'link_to_search_named'
|
@@ -198,6 +200,21 @@ describe Blacklight::DocumentPresenter do
|
|
198
200
|
end
|
199
201
|
end
|
200
202
|
|
203
|
+
it 'html-escapes values' do
|
204
|
+
value = subject.render_document_show_field_value 'asdf', value: '<b>val1</b>'
|
205
|
+
expect(value).to eq '<b>val1</b>'
|
206
|
+
end
|
207
|
+
|
208
|
+
it 'joins multivalued valued fields' do
|
209
|
+
value = subject.render_document_show_field_value 'asdf', value: ['<a', 'b']
|
210
|
+
expect(value).to eq '<a and b'
|
211
|
+
end
|
212
|
+
|
213
|
+
it 'joins multivalued valued fields' do
|
214
|
+
value = subject.render_document_show_field_value 'asdf', value: ['a', 'b', 'c']
|
215
|
+
expect(value).to eq 'a, b, and c'
|
216
|
+
end
|
217
|
+
|
201
218
|
it "should check for an explicit value" do
|
202
219
|
expect(request_context).to_not receive(:render_asdf_document_show_field)
|
203
220
|
value = subject.render_document_show_field_value 'asdf', :value => 'val1'
|
@@ -211,14 +228,14 @@ describe Blacklight::DocumentPresenter do
|
|
211
228
|
end
|
212
229
|
|
213
230
|
it "should check for a link_to_search" do
|
214
|
-
allow(request_context).to receive(:search_action_path).
|
231
|
+
allow(request_context).to receive(:search_action_path).and_return('/foo')
|
215
232
|
allow(request_context).to receive(:link_to).with("x", '/foo').and_return('bar')
|
216
233
|
value = subject.render_document_show_field_value 'link_to_search_true'
|
217
234
|
expect(value).to eq 'bar'
|
218
235
|
end
|
219
236
|
|
220
237
|
it "should check for a link_to_search with a field name" do
|
221
|
-
allow(request_context).to receive(:search_action_path).
|
238
|
+
allow(request_context).to receive(:search_action_path).and_return('/foo')
|
222
239
|
allow(request_context).to receive(:link_to).with("x", '/foo').and_return('bar')
|
223
240
|
value = subject.render_document_show_field_value 'link_to_search_named'
|
224
241
|
expect(value).to eq 'bar'
|
@@ -237,6 +254,12 @@ describe Blacklight::DocumentPresenter do
|
|
237
254
|
expect(value).to eq '<em>highlight</em>'
|
238
255
|
end
|
239
256
|
|
257
|
+
it 'respects the HTML-safeness of multivalued highlight fields' do
|
258
|
+
allow(document).to receive(:has_highlight_field?).and_return(true)
|
259
|
+
allow(document).to receive(:highlight_field).with('highlight').and_return(['<em>highlight</em>'.html_safe, '<em>other highlight</em>'.html_safe])
|
260
|
+
value = subject.render_document_show_field_value 'highlight'
|
261
|
+
expect(value).to eq '<em>highlight</em> and <em>other highlight</em>'
|
262
|
+
end
|
240
263
|
|
241
264
|
it "should check the document field value" do
|
242
265
|
value = subject.render_document_show_field_value 'qwer'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: blacklight
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.0.0.
|
4
|
+
version: 6.0.0.pre3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonathan Rochkind
|
@@ -17,7 +17,7 @@ authors:
|
|
17
17
|
autorequire:
|
18
18
|
bindir: bin
|
19
19
|
cert_chain: []
|
20
|
-
date: 2015-11-
|
20
|
+
date: 2015-11-08 00:00:00.000000000 Z
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
23
23
|
name: rails
|
@@ -272,6 +272,7 @@ files:
|
|
272
272
|
- README.md
|
273
273
|
- Rakefile
|
274
274
|
- VERSION
|
275
|
+
- Vagrantfile
|
275
276
|
- app/assets/images/blacklight/logo.png
|
276
277
|
- app/assets/images/favicon.ico
|
277
278
|
- app/assets/javascripts/blacklight/ajax_modal.js
|
@@ -321,6 +322,7 @@ files:
|
|
321
322
|
- app/helpers/blacklight/catalog_helper_behavior.rb
|
322
323
|
- app/helpers/blacklight/component_helper_behavior.rb
|
323
324
|
- app/helpers/blacklight/configuration_helper_behavior.rb
|
325
|
+
- app/helpers/blacklight/deprecated_url_helper_behavior.rb
|
324
326
|
- app/helpers/blacklight/facets_helper_behavior.rb
|
325
327
|
- app/helpers/blacklight/hash_as_hidden_fields_helper_behavior.rb
|
326
328
|
- app/helpers/blacklight/layout_helper_behavior.rb
|
@@ -520,6 +522,7 @@ files:
|
|
520
522
|
- lib/generators/blacklight/test_support_generator.rb
|
521
523
|
- lib/generators/blacklight/user_generator.rb
|
522
524
|
- lib/railties/blacklight.rake
|
525
|
+
- provision.sh
|
523
526
|
- solr/conf/_rest_managed.json
|
524
527
|
- solr/conf/admin-extra.html
|
525
528
|
- solr/conf/elevate.xml
|
@@ -568,6 +571,7 @@ files:
|
|
568
571
|
- spec/helpers/blacklight_helper_spec.rb
|
569
572
|
- spec/helpers/catalog_helper_spec.rb
|
570
573
|
- spec/helpers/configuration_helper_spec.rb
|
574
|
+
- spec/helpers/deprecated_url_helper_behavior_spec.rb
|
571
575
|
- spec/helpers/facets_helper_spec.rb
|
572
576
|
- spec/helpers/hash_as_hidden_fields_spec.rb
|
573
577
|
- spec/helpers/layout_helper_spec.rb
|
@@ -697,6 +701,7 @@ test_files:
|
|
697
701
|
- spec/helpers/blacklight_helper_spec.rb
|
698
702
|
- spec/helpers/catalog_helper_spec.rb
|
699
703
|
- spec/helpers/configuration_helper_spec.rb
|
704
|
+
- spec/helpers/deprecated_url_helper_behavior_spec.rb
|
700
705
|
- spec/helpers/facets_helper_spec.rb
|
701
706
|
- spec/helpers/hash_as_hidden_fields_spec.rb
|
702
707
|
- spec/helpers/layout_helper_spec.rb
|