blacklight 3.1.2 → 3.2.0pre1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +5 -2
- data/README.md +7 -2
- data/VERSION +1 -1
- data/app/assets/images/favicon.ico +0 -0
- data/app/assets/javascripts/blacklight/blacklight.js +23 -1
- data/app/assets/stylesheets/blacklight/_catalog.css.scss +369 -0
- data/app/assets/stylesheets/blacklight/_facets.css.scss +117 -0
- data/app/assets/stylesheets/blacklight/_folder.css.scss +38 -0
- data/app/assets/stylesheets/blacklight/_formatting.css.scss +164 -0
- data/app/assets/stylesheets/blacklight/_header.css.scss +36 -0
- data/app/assets/stylesheets/blacklight/_layout.css.scss +79 -0
- data/app/assets/stylesheets/blacklight/_print.css.scss +54 -0
- data/app/assets/stylesheets/blacklight/_search_history.css.scss +44 -0
- data/app/assets/stylesheets/blacklight/_susy_framework.css.scss +228 -0
- data/app/assets/stylesheets/blacklight/blacklight.css.scss +27 -0
- data/app/assets/stylesheets/blacklight/blacklight_defaults.css.scss +48 -0
- data/app/controllers/bookmarks_controller.rb +2 -1
- data/app/controllers/folder_controller.rb +4 -0
- data/app/controllers/saved_searches_controller.rb +4 -0
- data/app/controllers/search_history_controller.rb +4 -0
- data/app/helpers/blacklight/blacklight_helper_behavior.rb +64 -104
- data/app/helpers/blacklight/catalog_helper_behavior.rb +4 -4
- data/app/helpers/blacklight/facets_helper_behavior.rb +52 -5
- data/app/helpers/blacklight/render_constraints_helper_behavior.rb +14 -59
- data/app/helpers/blacklight/search_history_constraints_helper_behavior.rb +56 -0
- data/app/helpers/search_history_constraints_helper.rb +3 -0
- data/app/models/record_mailer.rb +1 -2
- data/app/views/_flash_msg.html.erb +4 -5
- data/app/views/_user_util_links.html.erb +3 -1
- data/app/views/bookmarks/index.html.erb +2 -2
- data/app/views/catalog/_bookmark_control.html.erb +6 -6
- data/app/views/catalog/_facet_layout.html.erb +4 -0
- data/app/views/catalog/_facet_limit.html.erb +20 -33
- data/app/views/catalog/_facets.html.erb +1 -5
- data/app/views/catalog/_folder_control.html.erb +5 -5
- data/app/views/catalog/_index_default.html.erb +1 -1
- data/app/views/catalog/_search_form.html.erb +4 -3
- data/app/views/catalog/_show_default.html.erb +1 -1
- data/app/views/catalog/_show_tools.html.erb +6 -6
- data/app/views/catalog/_sort_and_per_page.html.erb +1 -1
- data/app/views/catalog/index.atom.builder +2 -2
- data/app/views/catalog/index.rss.builder +1 -1
- data/app/views/catalog/opensearch.xml.builder +10 -0
- data/app/views/catalog/show.html.erb +1 -1
- data/app/views/folder/_tools.html.erb +4 -4
- data/app/views/layouts/blacklight.html.erb +25 -37
- data/app/views/record_mailer/email_record.text.erb +1 -1
- data/app/views/record_mailer/sms_record.text.erb +2 -2
- data/app/views/search_history/index.html.erb +1 -1
- data/blacklight.gemspec +11 -9
- data/lib/{generators/blacklight/templates/SolrMarc.jar → SolrMarc.jar} +0 -0
- data/lib/blacklight.rb +5 -3
- data/lib/blacklight/catalog.rb +3 -4
- data/lib/blacklight/configurable.rb +54 -39
- data/lib/blacklight/configuration.rb +126 -0
- data/lib/blacklight/configuration/fields.rb +142 -0
- data/lib/blacklight/configuration/search_field.rb +12 -0
- data/lib/blacklight/configuration/solr_field.rb +12 -0
- data/lib/blacklight/configuration/sort_field.rb +17 -0
- data/lib/blacklight/controller.rb +16 -14
- data/lib/blacklight/engine.rb +1 -1
- data/lib/blacklight/global_configurable.rb +46 -0
- data/lib/blacklight/search_fields.rb +21 -54
- data/lib/blacklight/solr/document.rb +13 -3
- data/lib/blacklight/solr_helper.rb +88 -52
- data/lib/blacklight/utils.rb +18 -0
- data/lib/generators/blacklight/assets_generator.rb +14 -20
- data/lib/generators/blacklight/blacklight_generator.rb +14 -6
- data/lib/generators/blacklight/jetty_generator.rb +1 -1
- data/lib/generators/blacklight/templates/assets/standard.css.scss +51 -0
- data/lib/generators/blacklight/templates/catalog_controller.rb +148 -0
- data/lib/generators/blacklight/templates/config/blacklight_config.rb +2 -239
- data/lib/generators/blacklight/templates/config/sass.rb +5 -0
- data/lib/generators/blacklight/templates/solr_conf/schema.xml +514 -164
- data/lib/generators/blacklight/templates/solr_conf/solrconfig.xml +1591 -323
- data/lib/generators/blacklight/templates/solr_document.rb +2 -0
- data/lib/railties/all_tests.rake +36 -3
- data/lib/railties/blacklight_cucumber.rake +6 -4
- data/lib/railties/blacklight_rspec.rake +5 -4
- data/test_support/bin/run-tests.sh +2 -13
- data/test_support/bin/test.sh +30 -23
- data/test_support/features/did_you_mean.feature +14 -13
- data/test_support/features/step_definitions/saved_searches_steps.rb +1 -1
- data/test_support/features/step_definitions/search_steps.rb +4 -4
- data/test_support/spec/controllers/application_controller_spec.rb +3 -13
- data/test_support/spec/controllers/catalog_controller_spec.rb +102 -24
- data/test_support/spec/controllers/folder_controller_spec.rb +7 -1
- data/test_support/spec/helpers/blacklight_helper_spec.rb +45 -34
- data/test_support/spec/helpers/facets_helper_spec.rb +68 -0
- data/test_support/spec/helpers/html_head_helper_spec.rb +37 -0
- data/test_support/spec/helpers/{render_constraints_helper_spec.rb → search_history_constraints_helper_spec.rb} +26 -7
- data/test_support/spec/lib/blacklight_configurable_spec.rb +92 -0
- data/test_support/spec/lib/blacklight_configuration_spec.rb +295 -0
- data/test_support/spec/lib/{configurable_spec.rb → global_configurable_spec.rb} +2 -2
- data/test_support/spec/lib/search_fields_spec.rb +26 -29
- data/test_support/spec/{helpers → lib}/solr_helper_spec.rb +268 -287
- data/test_support/spec/lib/tasks/solr_marc_task_spec.rb +1 -1
- data/test_support/spec/lib/utils_spec.rb +58 -0
- data/test_support/spec/models/solr_docment_spec.rb +4 -8
- data/test_support/spec/views/catalog/_facets.html.erb_spec.rb +27 -170
- data/test_support/spec/views/catalog/_index_default.erb_spec.rb +38 -20
- data/test_support/spec/views/catalog/_show_default.erb_spec.rb +38 -19
- data/test_support/spec/views/catalog/index.atom.builder_spec.rb +19 -1
- metadata +148 -145
- data/app/assets/stylesheets/blacklight/blacklight.css +0 -493
- data/app/assets/stylesheets/yui.css +0 -31
- data/app/views/catalog/opensearch.xml.erb +0 -11
- data/doc/Atom-Responses.md +0 -90
- data/doc/CUSTOMIZING.md +0 -121
- data/doc/Extending-blacklight-with-the-document-extension-framework.md +0 -1
- data/doc/Extending-or-Modifying-Blacklight-Search-Behavior.md +0 -131
- data/doc/Features.md +0 -147
- data/doc/Integration-with-Rails-Footnotes.md +0 -20
- data/doc/Pagination.md +0 -38
- data/doc/Quickstart.md +0 -97
- data/doc/Upgrading-Guide.md +0 -98
- data/doc/User-Authentication.md +0 -54
- data/doc/Using-a-custom-solr-uniquekey-field.md +0 -36
- data/lib/blacklight/comma_link_renderer.rb +0 -28
- data/lib/railties/jetty_solr_server.rb +0 -108
- data/test_support/spec/views/catalog/show.html.erb_spec.rb +0 -101
@@ -0,0 +1,27 @@
|
|
1
|
+
/* This file is generated by Blacklight. You probably don't want to edit
|
2
|
+
this file directly, or you'll have to manually merge your changes if later
|
3
|
+
versions of Blacklight change this file. Instead, use your own CSS file
|
4
|
+
which over-rides things in this file. Or of course you can choose
|
5
|
+
not to use the Blacklight CSS file at all in your local app. */
|
6
|
+
|
7
|
+
|
8
|
+
@import "compass";
|
9
|
+
@import "compass/reset";
|
10
|
+
|
11
|
+
@import 'blacklight/blacklight_defaults';
|
12
|
+
|
13
|
+
/* Import this to maintain the old YUI font styles */
|
14
|
+
@import "blacklight/layout";
|
15
|
+
@import "blacklight/formatting";
|
16
|
+
@import "blacklight/header";
|
17
|
+
@import "blacklight/catalog";
|
18
|
+
@import "blacklight/facets";
|
19
|
+
@import "blacklight/folder";
|
20
|
+
@import "blacklight/search_history";
|
21
|
+
@import "blacklight/print";
|
22
|
+
|
23
|
+
|
24
|
+
/* IE 6 Adjustments */
|
25
|
+
* html #hd .yui-g .yui-u {margin-top: -5em;}
|
26
|
+
* html #hd .yui-g .first {margin-top: 2em;}
|
27
|
+
* html #search {left: -1.8em;}
|
@@ -0,0 +1,48 @@
|
|
1
|
+
/* Warning! If you want to change these, just copy them into your own theme css. But you want to remove the !default, which only will set them if not already set. */
|
2
|
+
|
3
|
+
/* Grid parameters */
|
4
|
+
/* changing total cols is not recommended unless you're going to redo blacklight/_layout.css.sass */
|
5
|
+
$total-cols: 24 !default;
|
6
|
+
|
7
|
+
/* But the widths are changeable to px, em. */
|
8
|
+
$col-width: 2.5em !default;
|
9
|
+
$gutter-width: .5em !default;
|
10
|
+
$side-gutter-width: 2em !default;
|
11
|
+
|
12
|
+
|
13
|
+
$logo_url: 'blacklight/logo.png' !default;
|
14
|
+
|
15
|
+
/* Various elements of search customization share these colors */
|
16
|
+
|
17
|
+
$search_ui_border_color: #AAAAAA !default;
|
18
|
+
$search_ui_bg_color: #F0F0F0 !default;
|
19
|
+
|
20
|
+
/* separates documents, facets */
|
21
|
+
$dotted_border_color: #CCC !default;
|
22
|
+
|
23
|
+
/* background color of page */
|
24
|
+
$page_bg_color: #2E4F81 !default;
|
25
|
+
|
26
|
+
|
27
|
+
/* label (field names) */
|
28
|
+
$field_name_color: #888 !default;
|
29
|
+
|
30
|
+
|
31
|
+
/* constraint (you searched for:) details: */
|
32
|
+
|
33
|
+
$constraint_bg_color: #E2EDFE !default;
|
34
|
+
|
35
|
+
$constraint_border_color: #C4DAFE !default;
|
36
|
+
$constraint_border_active_color: #FFD27A !default;
|
37
|
+
|
38
|
+
/* dialog that pops up when you pick more on facets */
|
39
|
+
$facet_extended_button_bg_color: #F6F6F6 !default;
|
40
|
+
$facet_extended_button_border_color: #CCC !default;
|
41
|
+
$facet_extended_disabled_button_bg_color: #E2EDFE !default;
|
42
|
+
$facet_extended_disabled_border_color: #C4DAFE !default;
|
43
|
+
$facet_extended_button_hover_bg_color: #DADADA !default;
|
44
|
+
$facet_extended_button_hover_border_color: #999 !default;
|
45
|
+
$facet_extended_button_hover_color: #212121 !default;
|
46
|
+
|
47
|
+
/* border between items on marc view */
|
48
|
+
$marc_item_separator: 1px solid #CCC !default;
|
@@ -2,7 +2,8 @@
|
|
2
2
|
# note that while this is mostly restful routing, the #update and #destroy actions
|
3
3
|
# take the Solr document ID as the :id, NOT the id of the actual Bookmark action.
|
4
4
|
class BookmarksController < ApplicationController
|
5
|
-
|
5
|
+
|
6
|
+
before_filter :require_user_authentication_provider
|
6
7
|
before_filter :verify_user
|
7
8
|
|
8
9
|
# Beware, :id is the Solr document_id, not the actual Bookmark id.
|
@@ -1,6 +1,10 @@
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
2
2
|
class FolderController < ApplicationController
|
3
|
+
include Blacklight::Configurable
|
3
4
|
include Blacklight::SolrHelper
|
5
|
+
|
6
|
+
copy_blacklight_config_from(CatalogController)
|
7
|
+
|
4
8
|
helper CatalogHelper
|
5
9
|
|
6
10
|
# fetch the documents that match the ids in the folder
|
@@ -1,5 +1,9 @@
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
2
2
|
class SavedSearchesController < ApplicationController
|
3
|
+
include Blacklight::Configurable
|
4
|
+
|
5
|
+
copy_blacklight_config_from(CatalogController)
|
6
|
+
before_filter :require_user_authentication_provider
|
3
7
|
before_filter :verify_user
|
4
8
|
|
5
9
|
def index
|
@@ -11,9 +11,15 @@ module Blacklight::BlacklightHelperBehavior
|
|
11
11
|
|
12
12
|
|
13
13
|
def application_name
|
14
|
+
return Rails.application.config.application_name if Rails.application.config.respond_to? :application_name
|
15
|
+
|
14
16
|
'Blacklight'
|
15
17
|
end
|
16
18
|
|
19
|
+
# Provide the full, absolute url for an image
|
20
|
+
def asset_url(*args)
|
21
|
+
"#{request.protocol}#{request.host_with_port}#{asset_path(*args)}"
|
22
|
+
end
|
17
23
|
|
18
24
|
# Create <link rel="alternate"> links from a documents dynamically
|
19
25
|
# provided export formats. Currently not used by standard BL layouts,
|
@@ -36,7 +42,7 @@ module Blacklight::BlacklightHelperBehavior
|
|
36
42
|
unless( options[:exclude].include?(format) ||
|
37
43
|
(options[:unique] && seen.include?(spec[:content_type]))
|
38
44
|
)
|
39
|
-
html << tag(:link, {:rel=>"alternate", :title=>format, :type => spec[:content_type], :href=> catalog_url(document
|
45
|
+
html << tag(:link, {:rel=>"alternate", :title=>format, :type => spec[:content_type], :href=> catalog_url(document, format)}) << "\n"
|
40
46
|
|
41
47
|
seen.add(spec[:content_type]) if options[:unique]
|
42
48
|
end
|
@@ -69,38 +75,45 @@ module Blacklight::BlacklightHelperBehavior
|
|
69
75
|
# Save function area for search results 'index' view, normally
|
70
76
|
# renders next to title. Includes just 'Folder' by default.
|
71
77
|
def render_index_doc_actions(document, options={})
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
78
|
+
content = []
|
79
|
+
content << render(:partial => 'bookmark_control', :locals => {:document=> document}.merge(options)) if has_user_authentication_provider? and current_user
|
80
|
+
content << render(:partial => 'folder_control', :locals => {:document=> document}.merge(options))
|
81
|
+
|
82
|
+
content_tag("div", content.join("\n").html_safe, :class=>"documentFunctions")
|
76
83
|
end
|
77
84
|
|
78
85
|
# Save function area for item detail 'show' view, normally
|
79
86
|
# renders next to title. By default includes 'Folder' and 'Bookmarks'
|
80
87
|
def render_show_doc_actions(document=@document, options={})
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
88
|
+
content = []
|
89
|
+
content << render(:partial => 'bookmark_control', :locals => {:document=> document}.merge(options)) if has_user_authentication_provider? and current_user
|
90
|
+
content << render(:partial => 'folder_control', :locals => {:document=> document}.merge(options))
|
91
|
+
|
92
|
+
content_tag("div", content.join("\n").html_safe, :class=>"documentFunctions")
|
85
93
|
end
|
86
94
|
|
87
95
|
# used in the catalog/_index_partials/_default view
|
96
|
+
def index_fields
|
97
|
+
blacklight_config.index_fields
|
98
|
+
end
|
99
|
+
|
88
100
|
def index_field_names
|
89
|
-
|
101
|
+
index_fields.keys
|
90
102
|
end
|
91
|
-
|
92
|
-
# used in the _index_partials/_default
|
103
|
+
|
104
|
+
# used in the catalog/_index_partials/_default partial
|
93
105
|
def index_field_labels
|
94
|
-
|
106
|
+
# XXX DEPRECATED
|
107
|
+
Hash[*index_fields.map { |key, field| [key, field.label] }.flatten]
|
95
108
|
end
|
96
|
-
|
109
|
+
|
97
110
|
def spell_check_max
|
98
|
-
|
111
|
+
blacklight_config.spell_max
|
99
112
|
end
|
100
113
|
|
101
114
|
def render_index_field_label args
|
102
115
|
field = args[:field]
|
103
|
-
html_escape
|
116
|
+
html_escape index_fields[field].label
|
104
117
|
end
|
105
118
|
|
106
119
|
def render_index_field_value args
|
@@ -111,7 +124,7 @@ module Blacklight::BlacklightHelperBehavior
|
|
111
124
|
|
112
125
|
# Used in the show view for displaying the main solr document heading
|
113
126
|
def document_heading
|
114
|
-
@document[
|
127
|
+
@document[blacklight_config.show.heading] || @document.id
|
115
128
|
end
|
116
129
|
def render_document_heading
|
117
130
|
content_tag(:h1, document_heading)
|
@@ -119,42 +132,43 @@ module Blacklight::BlacklightHelperBehavior
|
|
119
132
|
|
120
133
|
# Used in the show view for setting the main html document title
|
121
134
|
def document_show_html_title
|
122
|
-
@document[
|
135
|
+
@document[blacklight_config.show.html_title]
|
123
136
|
end
|
124
137
|
|
125
138
|
# Used in citation view for displaying the title
|
126
139
|
def citation_title(document)
|
127
|
-
document[
|
140
|
+
document[blacklight_config.show.html_title]
|
128
141
|
end
|
129
142
|
|
130
143
|
# Used in the document_list partial (search view) for building a select element
|
131
144
|
def sort_fields
|
132
|
-
|
145
|
+
blacklight_config.sort_fields.map { |key, x| [x.label, x.key] }
|
133
146
|
end
|
134
147
|
|
135
148
|
# Used in the document list partial (search view) for creating a link to the document show action
|
136
149
|
def document_show_link_field
|
137
|
-
|
150
|
+
blacklight_config.index.show_link.to_sym
|
138
151
|
end
|
139
152
|
|
140
153
|
# Used in the search form partial for building a select tag
|
141
154
|
def search_fields
|
142
|
-
|
155
|
+
search_field_options_for_select
|
143
156
|
end
|
144
157
|
|
145
158
|
# used in the catalog/_show/_default partial
|
146
159
|
def document_show_fields
|
147
|
-
|
160
|
+
blacklight_config.show_fields.keys
|
148
161
|
end
|
149
162
|
|
150
163
|
# used in the catalog/_show/_default partial
|
151
164
|
def document_show_field_labels
|
152
|
-
|
165
|
+
# XXX DEPRECATED
|
166
|
+
Hash[*blacklight_config.show_fields.map { |key, field| [key, field.label] }.flatten]
|
153
167
|
end
|
154
168
|
|
155
169
|
def render_document_show_field_label args
|
156
170
|
field = args[:field]
|
157
|
-
html_escape
|
171
|
+
html_escape blacklight_config.show_fields[field].label
|
158
172
|
end
|
159
173
|
|
160
174
|
def render_document_show_field_value args
|
@@ -178,7 +192,7 @@ module Blacklight::BlacklightHelperBehavior
|
|
178
192
|
# .to_s is necessary otherwise the default return value is not always a string
|
179
193
|
# using "_" as sep. to more closely follow the views file naming conventions
|
180
194
|
# parameterize uses "-" as the default sep. which throws errors
|
181
|
-
display_type = document[
|
195
|
+
display_type = document[blacklight_config.show.display_type]
|
182
196
|
|
183
197
|
return 'default' unless display_type
|
184
198
|
display_type = display_type.join(" ") if display_type.respond_to?(:join)
|
@@ -250,13 +264,18 @@ module Blacklight::BlacklightHelperBehavior
|
|
250
264
|
label ||= doc.id
|
251
265
|
end
|
252
266
|
|
267
|
+
|
268
|
+
def solr_document_path(*args); catalog_path(*args); end
|
269
|
+
def solr_document_url(*args); catalog_url(*args); end
|
270
|
+
|
253
271
|
# link_to_document(doc, :label=>'VIEW', :counter => 3)
|
254
272
|
# Use the catalog_path RESTful route to create a link to the show page for a specific item.
|
255
273
|
# catalog_path accepts a HashWithIndifferentAccess object. The solr query params are stored in the session,
|
256
274
|
# so we only need the +counter+ param here. We also need to know if we are viewing to document as part of search results.
|
257
|
-
def link_to_document(doc, opts={:label=>
|
275
|
+
def link_to_document(doc, opts={:label=>nil, :counter => nil, :results_view => true})
|
276
|
+
label ||= blacklight_config.index.show_link.to_sym
|
258
277
|
label = render_document_index_label doc, opts
|
259
|
-
|
278
|
+
link_to label, doc, :'data-counter' => opts[:counter]
|
260
279
|
end
|
261
280
|
|
262
281
|
# link_back_to_catalog(:label=>'Back to Search')
|
@@ -278,7 +297,20 @@ module Blacklight::BlacklightHelperBehavior
|
|
278
297
|
|
279
298
|
options = {:params => params, :omit_keys => [:page]}.merge(options)
|
280
299
|
my_params = options[:params].dup
|
281
|
-
options[:omit_keys].each
|
300
|
+
options[:omit_keys].each do |omit_key|
|
301
|
+
case omit_key
|
302
|
+
when Hash
|
303
|
+
omit_key.each do |key, values|
|
304
|
+
next unless my_params[key]
|
305
|
+
my_params[key] = my_params[key].dup
|
306
|
+
|
307
|
+
values = [values] unless values.respond_to? :each
|
308
|
+
values.each { |v| my_params[key].delete(v) }
|
309
|
+
end
|
310
|
+
else
|
311
|
+
my_params.delete(omit_key)
|
312
|
+
end
|
313
|
+
end
|
282
314
|
# removing action and controller from duplicate params so that we don't get hidden fields for them.
|
283
315
|
my_params.delete(:action)
|
284
316
|
my_params.delete(:controller)
|
@@ -293,12 +325,12 @@ module Blacklight::BlacklightHelperBehavior
|
|
293
325
|
|
294
326
|
def link_to_previous_document(previous_document)
|
295
327
|
return if previous_document == nil
|
296
|
-
|
328
|
+
link_to '« Previous', previous_document, :class => "previous", :'data-counter' => session[:search][:counter].to_i - 1
|
297
329
|
end
|
298
330
|
|
299
331
|
def link_to_next_document(next_document)
|
300
332
|
return if next_document == nil
|
301
|
-
|
333
|
+
link_to 'Next »', next_document, :class => "next", :'data-counter' => session[:search][:counter].to_i + 1
|
302
334
|
end
|
303
335
|
|
304
336
|
# Use case, you want to render an html partial from an XML (say, atom)
|
@@ -313,79 +345,6 @@ module Blacklight::BlacklightHelperBehavior
|
|
313
345
|
return result
|
314
346
|
end
|
315
347
|
|
316
|
-
|
317
|
-
# This is an updated +link_to+ that allows you to pass a +data+ hash along with the +html_options+
|
318
|
-
# which are then written to the generated form for non-GET requests. The key is the form element name
|
319
|
-
# and the value is the value:
|
320
|
-
#
|
321
|
-
# link_to_with_data('Name', some_path(some_id), :method => :post, :html)
|
322
|
-
def link_to_with_data(*args, &block)
|
323
|
-
if block_given?
|
324
|
-
options = args.first || {}
|
325
|
-
html_options = args.second
|
326
|
-
concat(link_to(capture(&block), options, html_options))
|
327
|
-
else
|
328
|
-
name = args.first
|
329
|
-
options = args.second || {}
|
330
|
-
html_options = args.third
|
331
|
-
|
332
|
-
url = url_for(options)
|
333
|
-
|
334
|
-
if html_options
|
335
|
-
html_options = html_options.stringify_keys
|
336
|
-
href = html_options['href']
|
337
|
-
convert_options_to_javascript_with_data!(html_options, url)
|
338
|
-
tag_options = tag_options(html_options)
|
339
|
-
else
|
340
|
-
tag_options = nil
|
341
|
-
end
|
342
|
-
|
343
|
-
href_attr = "href=\"#{url}\"" unless href
|
344
|
-
"<a #{href_attr}#{tag_options}>#{h(name) || h(url)}</a>".html_safe
|
345
|
-
end
|
346
|
-
end
|
347
|
-
|
348
|
-
# This is derived from +convert_options_to_javascript+ from module Blacklight::+UrlHelperBehavior+ in +url_helper.rb+
|
349
|
-
def convert_options_to_javascript_with_data!(html_options, url = '')
|
350
|
-
confirm, popup = html_options.delete("confirm"), html_options.delete("popup")
|
351
|
-
|
352
|
-
method, href = html_options.delete("method"), html_options['href']
|
353
|
-
data = html_options.delete("data")
|
354
|
-
data = data.stringify_keys if data
|
355
|
-
|
356
|
-
html_options["onclick"] = case
|
357
|
-
when method
|
358
|
-
"#{method_javascript_function_with_data(method, url, href, data)}return false;"
|
359
|
-
else
|
360
|
-
html_options["onclick"]
|
361
|
-
end
|
362
|
-
end
|
363
|
-
|
364
|
-
# This is derived from +method_javascript_function+ from module Blacklight::+UrlHelperBehavior+ in +url_helper.rb+
|
365
|
-
def method_javascript_function_with_data(method, url = '', href = nil, data=nil)
|
366
|
-
action = (href && url.size > 0) ? "'#{url}'" : 'this.href'
|
367
|
-
submit_function =
|
368
|
-
"var f = document.createElement('form'); f.style.display = 'none'; " +
|
369
|
-
"this.parentNode.appendChild(f); f.method = 'POST'; f.action = #{action};"+
|
370
|
-
"if(event.metaKey || event.ctrlKey){f.target = '_blank';};" # if the command or control key is being held down while the link is clicked set the form's target to _blank
|
371
|
-
if data
|
372
|
-
data.each_pair do |key, value|
|
373
|
-
submit_function << "var d = document.createElement('input'); d.setAttribute('type', 'hidden'); "
|
374
|
-
submit_function << "d.setAttribute('name', '#{key}'); d.setAttribute('value', '#{escape_javascript(value.to_s)}'); f.appendChild(d);"
|
375
|
-
end
|
376
|
-
end
|
377
|
-
unless method == :post
|
378
|
-
submit_function << "var m = document.createElement('input'); m.setAttribute('type', 'hidden'); "
|
379
|
-
submit_function << "m.setAttribute('name', '_method'); m.setAttribute('value', '#{method}'); f.appendChild(m);"
|
380
|
-
end
|
381
|
-
|
382
|
-
if protect_against_forgery?
|
383
|
-
submit_function << "var s = document.createElement('input'); s.setAttribute('type', 'hidden'); "
|
384
|
-
submit_function << "s.setAttribute('name', '#{request_forgery_protection_token}'); s.setAttribute('value', '#{escape_javascript form_authenticity_token}'); f.appendChild(s);"
|
385
|
-
end
|
386
|
-
submit_function << "f.submit();"
|
387
|
-
end
|
388
|
-
|
389
348
|
# determines if the given document id is in the folder
|
390
349
|
def item_in_folder?(doc_id)
|
391
350
|
session[:folder_document_ids] && session[:folder_document_ids].include?(doc_id) ? true : false
|
@@ -413,4 +372,5 @@ module Blacklight::BlacklightHelperBehavior
|
|
413
372
|
val
|
414
373
|
end
|
415
374
|
|
375
|
+
|
416
376
|
end
|
@@ -63,18 +63,18 @@ module Blacklight::CatalogHelperBehavior
|
|
63
63
|
end
|
64
64
|
|
65
65
|
# Look up search field user-displayable label
|
66
|
-
# based on params[:qt] and
|
66
|
+
# based on params[:qt] and blacklight_configuration.
|
67
67
|
def search_field_label(params)
|
68
|
-
h(
|
68
|
+
h( label_for_search_field(params[:search_field]) )
|
69
69
|
end
|
70
70
|
|
71
71
|
# Export to Refworks URL, called in _show_tools
|
72
72
|
def refworks_export_url(document = @document)
|
73
|
-
"http://www.refworks.com/express/expressimport.asp?vendor=#{CGI.escape(application_name)}&filter=MARC%20Format&encoding=65001&url=#{CGI.escape(catalog_path(document
|
73
|
+
"http://www.refworks.com/express/expressimport.asp?vendor=#{CGI.escape(application_name)}&filter=MARC%20Format&encoding=65001&url=#{CGI.escape(catalog_path(document, :format => 'refworks_marc_txt', :only_path => false))}"
|
74
74
|
end
|
75
75
|
|
76
76
|
def render_document_class(document = @document)
|
77
|
-
'blacklight-' + document.get(
|
77
|
+
'blacklight-' + document.get(blacklight_config.index.record_display_type).parameterize rescue nil
|
78
78
|
end
|
79
79
|
|
80
80
|
def render_document_sidebar_partial(document = @document)
|
@@ -1,25 +1,72 @@
|
|
1
1
|
module Blacklight::FacetsHelperBehavior
|
2
2
|
|
3
3
|
#
|
4
|
-
#
|
4
|
+
# blacklight_config based helpers ->
|
5
5
|
#
|
6
6
|
|
7
|
+
def facet_configuration_for_field(field)
|
8
|
+
blacklight_config.facet_fields[field] || Blacklight::Configuration::FacetField.new(:field => field)
|
9
|
+
end
|
10
|
+
|
7
11
|
# used in the catalog/_facets partial
|
8
12
|
def facet_field_labels
|
9
|
-
|
13
|
+
# DEPRECATED
|
14
|
+
Hash[*blacklight_config.facet_fields.map { |key, facet| [key, facet.label] }.flatten]
|
10
15
|
end
|
11
16
|
|
12
17
|
# used in the catalog/_facets partial
|
13
18
|
def facet_field_names
|
14
|
-
|
19
|
+
blacklight_config.facet_fields.keys
|
20
|
+
end
|
21
|
+
|
22
|
+
# Render a collection of facet fields
|
23
|
+
def render_facet_partials fields = facet_field_names, options = {}
|
24
|
+
solr_fields = fields.map do |solr_field|
|
25
|
+
case solr_field
|
26
|
+
when String, Symbol
|
27
|
+
@response.facet_by_field_name(solr_field)
|
28
|
+
when Blacklight::Configuration::FacetField
|
29
|
+
@response.facet_by_field_name(solr_field.field)
|
30
|
+
else
|
31
|
+
solr_field
|
32
|
+
end
|
33
|
+
end.compact
|
34
|
+
|
35
|
+
solr_fields.map do |display_facet|
|
36
|
+
next if display_facet.items.blank?
|
37
|
+
render_facet_limit(display_facet, options)
|
38
|
+
end.compact.join("\n").html_safe
|
15
39
|
end
|
16
40
|
|
17
41
|
# used in the catalog/_facets partial and elsewhere
|
18
42
|
# Renders a single section for facet limit with a specified
|
19
43
|
# solr field used for faceting. Can be over-ridden for custom
|
20
44
|
# display on a per-facet basis.
|
21
|
-
|
22
|
-
|
45
|
+
#
|
46
|
+
# @param [RSolr::Ext::Response::Facets::FacetField] facet_field
|
47
|
+
# @param [Hash] options parameters to use for rendering the facet limit partial
|
48
|
+
#
|
49
|
+
def render_facet_limit(display_facet, options = {})
|
50
|
+
if display_facet.is_a? String or display_facet.is_a? Symbol
|
51
|
+
$stderr.puts "DEPRECATION WARNING: Blacklight::FacetsHelper#render_facet_limit: use #render_facet_partials to render facets by field name"
|
52
|
+
return render_facet_partials([display_facet])
|
53
|
+
end
|
54
|
+
options = options.dup
|
55
|
+
options[:partial] ||= facet_partial_name(display_facet)
|
56
|
+
options[:layout] ||= "facet_layout"
|
57
|
+
options[:locals] ||= {}
|
58
|
+
options[:locals][:solr_field] ||= display_facet.name
|
59
|
+
options[:locals][:facet_field] ||= facet_configuration_for_field(display_facet.name)
|
60
|
+
options[:locals][:display_facet] ||= display_facet
|
61
|
+
|
62
|
+
render(options)
|
63
|
+
end
|
64
|
+
|
65
|
+
# the name of the partial to use to render a facet field. Can be over-ridden for custom
|
66
|
+
# display on a per-facet basis.
|
67
|
+
def facet_partial_name(display_facet = nil)
|
68
|
+
name = facet_configuration_for_field(display_facet.name).try(:partial)
|
69
|
+
name ||= "facet_limit"
|
23
70
|
end
|
24
71
|
|
25
72
|
#
|