blacklight 3.1.2 → 3.2.0pre1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
#
|