blacklight 3.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 +17 -0
- data/.gitmodules +6 -0
- data/.yardopts +4 -0
- data/Gemfile +4 -0
- data/LICENSE +14 -0
- data/README.rdoc +168 -0
- data/Rakefile +9 -0
- data/app/controllers/bookmarks_controller.rb +98 -0
- data/app/controllers/feedback_controller.rb +37 -0
- data/app/controllers/folder_controller.rb +49 -0
- data/app/controllers/saved_searches_controller.rb +45 -0
- data/app/controllers/search_history_controller.rb +25 -0
- data/app/helpers/blacklight_helper.rb +606 -0
- data/app/helpers/bookmarks_helper.rb +3 -0
- data/app/helpers/catalog_helper.rb +65 -0
- data/app/helpers/feedback_helper.rb +2 -0
- data/app/helpers/hash_as_hidden_fields.rb +57 -0
- data/app/helpers/render_constraints_helper.rb +120 -0
- data/app/helpers/saved_searches_helper.rb +2 -0
- data/app/helpers/search_history_helper.rb +2 -0
- data/app/models/bookmark.rb +6 -0
- data/app/models/record_mailer.rb +43 -0
- data/app/models/search.rb +19 -0
- data/app/views/_flash_msg.html.erb +6 -0
- data/app/views/_user_util_links.html.erb +13 -0
- data/app/views/bookmarks/index.html.erb +33 -0
- data/app/views/catalog/_bookmark_control.html.erb +25 -0
- data/app/views/catalog/_bookmark_form.html.erb +8 -0
- data/app/views/catalog/_citation.html.erb +15 -0
- data/app/views/catalog/_constraints.html.erb +7 -0
- data/app/views/catalog/_constraints_element.html.erb +33 -0
- data/app/views/catalog/_did_you_mean.html.erb +10 -0
- data/app/views/catalog/_document_list.html.erb +30 -0
- data/app/views/catalog/_email_form.html.erb +11 -0
- data/app/views/catalog/_facet_limit.html.erb +33 -0
- data/app/views/catalog/_facet_pagination.html.erb +28 -0
- data/app/views/catalog/_facets.html.erb +9 -0
- data/app/views/catalog/_folder_control.html.erb +12 -0
- data/app/views/catalog/_home.html.erb +6 -0
- data/app/views/catalog/_home_text.html.erb +6 -0
- data/app/views/catalog/_index_partials/_default.erb +11 -0
- data/app/views/catalog/_marc_view.html.erb +33 -0
- data/app/views/catalog/_opensearch_response_metadata.html.erb +3 -0
- data/app/views/catalog/_previous_next_doc.html.erb +6 -0
- data/app/views/catalog/_refworks_form.html.erb +7 -0
- data/app/views/catalog/_results_pagination.html.erb +11 -0
- data/app/views/catalog/_search_form.html.erb +14 -0
- data/app/views/catalog/_show_partials/_default.html.erb +9 -0
- data/app/views/catalog/_show_sidebar.html.erb +1 -0
- data/app/views/catalog/_show_tools.html.erb +46 -0
- data/app/views/catalog/_sms_form.html.erb +23 -0
- data/app/views/catalog/_solr_request.html.erb +5 -0
- data/app/views/catalog/_sort_and_per_page.html.erb +20 -0
- data/app/views/catalog/_unapi_microformat.html.erb +1 -0
- data/app/views/catalog/citation.html.erb +1 -0
- data/app/views/catalog/email.erb +1 -0
- data/app/views/catalog/endnote.endnote.erb +1 -0
- data/app/views/catalog/facet.html.erb +28 -0
- data/app/views/catalog/index.atom.builder +108 -0
- data/app/views/catalog/index.html.erb +37 -0
- data/app/views/catalog/index.rss.builder +19 -0
- data/app/views/catalog/librarian_view.html.erb +3 -0
- data/app/views/catalog/opensearch.json.erb +0 -0
- data/app/views/catalog/opensearch.xml.erb +11 -0
- data/app/views/catalog/send_email_record.erb +0 -0
- data/app/views/catalog/show.endnote.erb +1 -0
- data/app/views/catalog/show.html.erb +42 -0
- data/app/views/catalog/show.refworks.erb +1 -0
- data/app/views/catalog/sms.erb +1 -0
- data/app/views/catalog/unapi.xml.builder +6 -0
- data/app/views/feedback/complete.html.erb +3 -0
- data/app/views/feedback/show.html.erb +20 -0
- data/app/views/folder/_tools.html.erb +23 -0
- data/app/views/folder/index.html.erb +44 -0
- data/app/views/layouts/blacklight.html.erb +49 -0
- data/app/views/record_mailer/email_record.erb +6 -0
- data/app/views/record_mailer/sms_record.erb +4 -0
- data/app/views/saved_searches/index.html.erb +27 -0
- data/app/views/search_history/index.html.erb +23 -0
- data/blacklight.gemspec +50 -0
- data/config.ru +4 -0
- data/config/routes.rb +54 -0
- data/db/seeds.rb +7 -0
- data/features/generators.feature +77 -0
- data/features/support/aruba.rb +9 -0
- data/install.rb +0 -0
- data/install/solr.yml +8 -0
- data/lib/blacklight.rb +121 -0
- data/lib/blacklight/catalog.rb +311 -0
- data/lib/blacklight/comma_link_renderer.rb +27 -0
- data/lib/blacklight/configurable.rb +46 -0
- data/lib/blacklight/controller.rb +121 -0
- data/lib/blacklight/engine.rb +32 -0
- data/lib/blacklight/exceptions.rb +13 -0
- data/lib/blacklight/marc.rb +46 -0
- data/lib/blacklight/marc/citation.rb +251 -0
- data/lib/blacklight/search_fields.rb +107 -0
- data/lib/blacklight/solr.rb +7 -0
- data/lib/blacklight/solr/document.rb +239 -0
- data/lib/blacklight/solr/document/dublin_core.rb +40 -0
- data/lib/blacklight/solr/document/email.rb +15 -0
- data/lib/blacklight/solr/document/marc.rb +84 -0
- data/lib/blacklight/solr/document/marc_export.rb +430 -0
- data/lib/blacklight/solr/document/sms.rb +13 -0
- data/lib/blacklight/solr/facet_paginator.rb +93 -0
- data/lib/blacklight/solr_helper.rb +413 -0
- data/lib/blacklight/user.rb +55 -0
- data/lib/blacklight/version.rb +3 -0
- data/lib/colorize.rb +196 -0
- data/lib/generators/blacklight/blacklight_generator.rb +134 -0
- data/lib/generators/blacklight/templates/SolrMarc.jar +0 -0
- data/lib/generators/blacklight/templates/catalog_controller.rb +8 -0
- data/lib/generators/blacklight/templates/config/SolrMarc/config-test.properties +37 -0
- data/lib/generators/blacklight/templates/config/SolrMarc/config.properties +37 -0
- data/lib/generators/blacklight/templates/config/SolrMarc/index.properties +97 -0
- data/lib/generators/blacklight/templates/config/SolrMarc/index_scripts/dewey.bsh +47 -0
- data/lib/generators/blacklight/templates/config/SolrMarc/index_scripts/format.bsh +126 -0
- data/lib/generators/blacklight/templates/config/SolrMarc/translation_maps/README_MAPS +1 -0
- data/lib/generators/blacklight/templates/config/SolrMarc/translation_maps/callnumber_map.properties +407 -0
- data/lib/generators/blacklight/templates/config/SolrMarc/translation_maps/composition_era_map.properties +56 -0
- data/lib/generators/blacklight/templates/config/SolrMarc/translation_maps/country_map.properties +379 -0
- data/lib/generators/blacklight/templates/config/SolrMarc/translation_maps/format_map.properties +50 -0
- data/lib/generators/blacklight/templates/config/SolrMarc/translation_maps/instrument_map.properties +101 -0
- data/lib/generators/blacklight/templates/config/SolrMarc/translation_maps/language_map.properties +490 -0
- data/lib/generators/blacklight/templates/config/blacklight_config.rb +245 -0
- data/lib/generators/blacklight/templates/config/solr.yml +6 -0
- data/lib/generators/blacklight/templates/migrations/add_user_types_to_bookmarks_searches.rb +11 -0
- data/lib/generators/blacklight/templates/migrations/create_bookmarks.rb +17 -0
- data/lib/generators/blacklight/templates/migrations/create_searches.rb +15 -0
- data/lib/generators/blacklight/templates/migrations/remove_editable_fields_from_bookmarks.rb +11 -0
- data/lib/generators/blacklight/templates/public/images/blacklight/bg.png +0 -0
- data/lib/generators/blacklight/templates/public/images/blacklight/border.png +0 -0
- data/lib/generators/blacklight/templates/public/images/blacklight/bul_sq_gry.gif +0 -0
- data/lib/generators/blacklight/templates/public/images/blacklight/checkmark.gif +0 -0
- data/lib/generators/blacklight/templates/public/images/blacklight/logo.png +0 -0
- data/lib/generators/blacklight/templates/public/images/blacklight/magnifying_glass.gif +0 -0
- data/lib/generators/blacklight/templates/public/images/blacklight/remove.gif +0 -0
- data/lib/generators/blacklight/templates/public/images/blacklight/separator.gif +0 -0
- data/lib/generators/blacklight/templates/public/images/blacklight/start_over.gif +0 -0
- data/lib/generators/blacklight/templates/public/javascripts/blacklight.js +485 -0
- data/lib/generators/blacklight/templates/public/javascripts/jquery-1.4.2.min.js +154 -0
- data/lib/generators/blacklight/templates/public/javascripts/jquery-ui-1.8.1.custom.min.js +756 -0
- data/lib/generators/blacklight/templates/public/stylesheets/blacklight.css +487 -0
- data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
- data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
- data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-bg_flat_10_000000_40x100.png +0 -0
- data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
- data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
- data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-bg_gloss-wave_35_558fd0_500x100.png +0 -0
- data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
- data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
- data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-icons_222222_256x240.png +0 -0
- data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-icons_228ef1_256x240.png +0 -0
- data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-icons_2e4f81_256x240.png +0 -0
- data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-icons_ffd27a_256x240.png +0 -0
- data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-icons_ffffff_256x240.png +0 -0
- data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/jquery-ui-1.8.1.custom.css +486 -0
- data/lib/generators/blacklight/templates/public/stylesheets/yui.css +31 -0
- data/lib/generators/blacklight/templates/solr_document.rb +30 -0
- data/lib/railties/blacklight.rake +66 -0
- data/lib/railties/cucumber.rake +53 -0
- data/lib/railties/rspec.rake +188 -0
- data/lib/railties/solr_marc.rake +148 -0
- data/lib/railties/test_solr_server.rb +130 -0
- data/spec/helpers/catalog_helper_spec.rb +111 -0
- data/spec/views/catalog/_sms_form.html.erb_spec.rb +19 -0
- data/tasks/blacklight_tasks.rake +4 -0
- data/uninstall.rb +1 -0
- metadata +431 -0
data/lib/colorize.rb
ADDED
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
# == colorize
|
|
2
|
+
# http://colorize.rubyforge.org
|
|
3
|
+
# http://fazibear.prv.pl
|
|
4
|
+
#
|
|
5
|
+
|
|
6
|
+
#
|
|
7
|
+
# Colorize String class extension.
|
|
8
|
+
#
|
|
9
|
+
class String
|
|
10
|
+
|
|
11
|
+
#
|
|
12
|
+
# Colors Hash
|
|
13
|
+
#
|
|
14
|
+
COLORS = {
|
|
15
|
+
:black => 0,
|
|
16
|
+
:red => 1,
|
|
17
|
+
:green => 2,
|
|
18
|
+
:yellow => 3,
|
|
19
|
+
:blue => 4,
|
|
20
|
+
:magenta => 5,
|
|
21
|
+
:cyan => 6,
|
|
22
|
+
:white => 7,
|
|
23
|
+
:default => 9,
|
|
24
|
+
|
|
25
|
+
:light_black => 10,
|
|
26
|
+
:light_red => 11,
|
|
27
|
+
:light_green => 12,
|
|
28
|
+
:light_yellow => 13,
|
|
29
|
+
:light_blue => 14,
|
|
30
|
+
:light_magenta => 15,
|
|
31
|
+
:light_cyan => 16,
|
|
32
|
+
:light_white => 17
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
#
|
|
36
|
+
# Modes Hash
|
|
37
|
+
#
|
|
38
|
+
MODES = {
|
|
39
|
+
:default => 0, # Turn off all attributes
|
|
40
|
+
#:bright => 1, # Set bright mode
|
|
41
|
+
:underline => 4, # Set underline mode
|
|
42
|
+
:blink => 5, # Set blink mode
|
|
43
|
+
:swap => 7, # Exchange foreground and background colors
|
|
44
|
+
:hide => 8 # Hide text (foreground color would be the same as background)
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
protected
|
|
48
|
+
|
|
49
|
+
#
|
|
50
|
+
# Set color values in new string intance
|
|
51
|
+
#
|
|
52
|
+
def set_color_parameters( params )
|
|
53
|
+
if (params.instance_of?(Hash))
|
|
54
|
+
@color = params[:color]
|
|
55
|
+
@background = params[:background]
|
|
56
|
+
@mode = params[:mode]
|
|
57
|
+
@uncolorized = params[:uncolorized]
|
|
58
|
+
self
|
|
59
|
+
else
|
|
60
|
+
nil
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
public
|
|
65
|
+
|
|
66
|
+
#
|
|
67
|
+
# Change color of string
|
|
68
|
+
#
|
|
69
|
+
# Examples:
|
|
70
|
+
#
|
|
71
|
+
# puts "This is blue".colorize( :blue )
|
|
72
|
+
# puts "This is light blue".colorize( :light_blue )
|
|
73
|
+
# puts "This is also blue".colorize( :color => :blue )
|
|
74
|
+
# puts "This is light blue with red background".colorize( :color => :light_blue, :background => :red )
|
|
75
|
+
# puts "This is light blue with red background".colorize( :light_blue ).colorize( :background => :red )
|
|
76
|
+
# puts "This is blue text on red".blue.on_red
|
|
77
|
+
# puts "This is red on blue".colorize( :red ).on_blue
|
|
78
|
+
# puts "This is red on blue and underline".colorize( :red ).on_blue.underline
|
|
79
|
+
# puts "This is blue text on red".blue.on_red.blink
|
|
80
|
+
# puts "This is uncolorized".blue.on_red.uncolorize
|
|
81
|
+
#
|
|
82
|
+
def colorize( params )
|
|
83
|
+
return self unless STDOUT.isatty
|
|
84
|
+
|
|
85
|
+
begin
|
|
86
|
+
require 'Win32/Console/ANSI' if RUBY_PLATFORM =~ /win32/
|
|
87
|
+
rescue LoadError
|
|
88
|
+
raise 'You must gem install win32console to use colorize on Windows'
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
color_parameters = {}
|
|
92
|
+
|
|
93
|
+
if (params.instance_of?(Hash))
|
|
94
|
+
color_parameters[:color] = COLORS[params[:color]]
|
|
95
|
+
color_parameters[:background] = COLORS[params[:background]]
|
|
96
|
+
color_parameters[:mode] = MODES[params[:mode]]
|
|
97
|
+
elsif (params.instance_of?(Symbol))
|
|
98
|
+
color_parameters[:color] = COLORS[params]
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
color_parameters[:color] ||= @color ||= COLORS[:default]
|
|
102
|
+
color_parameters[:background] ||= @background ||= COLORS[:default]
|
|
103
|
+
color_parameters[:mode] ||= @mode ||= MODES[:default]
|
|
104
|
+
|
|
105
|
+
color_parameters[:uncolorized] ||= @uncolorized ||= self.dup
|
|
106
|
+
|
|
107
|
+
# calculate bright mode
|
|
108
|
+
color_parameters[:color] += 50 if color_parameters[:color] > 10
|
|
109
|
+
|
|
110
|
+
color_parameters[:background] += 50 if color_parameters[:background] > 10
|
|
111
|
+
|
|
112
|
+
"\033[#{color_parameters[:mode]};#{color_parameters[:color]+30};#{color_parameters[:background]+40}m#{color_parameters[:uncolorized]}\033[0m".set_color_parameters( color_parameters )
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
#
|
|
116
|
+
# Return uncolorized string
|
|
117
|
+
#
|
|
118
|
+
def uncolorize
|
|
119
|
+
@uncolorized || self
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
#
|
|
123
|
+
# Return true if sting is colorized
|
|
124
|
+
#
|
|
125
|
+
def colorized?
|
|
126
|
+
!defined?(@uncolorized).nil?
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
#
|
|
130
|
+
# Make some color and on_color methods
|
|
131
|
+
#
|
|
132
|
+
COLORS.each_key do | key |
|
|
133
|
+
next if key == :default
|
|
134
|
+
|
|
135
|
+
define_method key do
|
|
136
|
+
self.colorize( :color => key )
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
define_method "on_#{key}" do
|
|
140
|
+
self.colorize( :background => key )
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
#
|
|
145
|
+
# Methods for modes
|
|
146
|
+
#
|
|
147
|
+
MODES.each_key do | key |
|
|
148
|
+
next if key == :default
|
|
149
|
+
|
|
150
|
+
define_method key do
|
|
151
|
+
self.colorize( :mode => key )
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
class << self
|
|
156
|
+
|
|
157
|
+
#
|
|
158
|
+
# Return array of available modes used by colorize method
|
|
159
|
+
#
|
|
160
|
+
def modes
|
|
161
|
+
keys = []
|
|
162
|
+
MODES.each_key do | key |
|
|
163
|
+
keys << key
|
|
164
|
+
end
|
|
165
|
+
keys
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
#
|
|
169
|
+
# Return array of available colors used by colorize method
|
|
170
|
+
#
|
|
171
|
+
def colors
|
|
172
|
+
keys = []
|
|
173
|
+
COLORS.each_key do | key |
|
|
174
|
+
keys << key
|
|
175
|
+
end
|
|
176
|
+
keys
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
#
|
|
180
|
+
# Display color matrix with color names.
|
|
181
|
+
#
|
|
182
|
+
def color_matrix( txt = "[X]" )
|
|
183
|
+
size = String.colors.length
|
|
184
|
+
String.colors.each do | color |
|
|
185
|
+
String.colors.each do | back |
|
|
186
|
+
print txt.colorize( :color => color, :background => back )
|
|
187
|
+
end
|
|
188
|
+
puts " < #{color}"
|
|
189
|
+
end
|
|
190
|
+
String.colors.reverse.each_with_index do | back, index |
|
|
191
|
+
puts "#{"|".rjust(txt.length)*(size-index)} < #{back}"
|
|
192
|
+
end
|
|
193
|
+
""
|
|
194
|
+
end
|
|
195
|
+
end
|
|
196
|
+
end
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
require 'rails/generators'
|
|
2
|
+
require 'rails/generators/migration'
|
|
3
|
+
|
|
4
|
+
class BlacklightGenerator < Rails::Generators::Base
|
|
5
|
+
include Rails::Generators::Migration
|
|
6
|
+
|
|
7
|
+
source_root File.expand_path('../templates', __FILE__)
|
|
8
|
+
|
|
9
|
+
argument :model_name, :type => :string , :default => "user"
|
|
10
|
+
class_option :devise , :type => :boolean, :default => false, :aliases => "-d", :desc => "Use Devise as authentication logic (this is default)."
|
|
11
|
+
|
|
12
|
+
desc """
|
|
13
|
+
This generator makes the following changes to your application:
|
|
14
|
+
1. Creates several database migrations if they do not exist in /db/migrate
|
|
15
|
+
2. Adds additional mime types to you application in the file '/config/initializers/mime_types.rb'
|
|
16
|
+
3. Creates config/initializers/blacklight_config.rb which you should then modify for your instance
|
|
17
|
+
4. Creates config/solr.yml with a default solr configuration that should work with standard marc records
|
|
18
|
+
5. Creates congig/SolrMarc/... with settings for SolrMarc
|
|
19
|
+
6. Creates a number of public assets, including images, stylesheets, and javascript
|
|
20
|
+
7. Adds a solr_marc.jar file to your lib/ directory
|
|
21
|
+
9. Injects behavior into your user application_controller.rb
|
|
22
|
+
9. Injects behavior into your user model
|
|
23
|
+
10. Creates a blacklight catalog controller in your /app/controllers directory
|
|
24
|
+
11. Creates a blacklight document in your /app/models directory
|
|
25
|
+
Thank you for Installing Blacklight.
|
|
26
|
+
"""
|
|
27
|
+
# Implement the required interface for Rails::Generators::Migration.
|
|
28
|
+
# taken from http://github.com/rails/rails/blob/master/activerecord/lib/generators/active_record.rb
|
|
29
|
+
def self.next_migration_number(path)
|
|
30
|
+
unless @prev_migration_nr
|
|
31
|
+
@prev_migration_nr = Time.now.utc.strftime("%Y%m%d%H%M%S").to_i
|
|
32
|
+
else
|
|
33
|
+
@prev_migration_nr += 1
|
|
34
|
+
end
|
|
35
|
+
@prev_migration_nr.to_s
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Content types used by Marc Document extension, possibly among others.
|
|
39
|
+
# Registering a unique content type with 'register' (rather than
|
|
40
|
+
# register_alias) will allow content-negotiation for the format.
|
|
41
|
+
def add_mime_types
|
|
42
|
+
puts "Updating Mime Types"
|
|
43
|
+
insert_into_file "config/initializers/mime_types.rb", :after => "# Be sure to restart your server when you modify this file." do <<EOF
|
|
44
|
+
Mime::Type.register_alias "text/plain", :refworks_marc_txt
|
|
45
|
+
Mime::Type.register_alias "text/plain", :openurl_kev
|
|
46
|
+
Mime::Type.register "application/x-endnote-refer", :endnote
|
|
47
|
+
Mime::Type.register "application/marc", :marc
|
|
48
|
+
Mime::Type.register "application/marcxml+xml", :marcxml,
|
|
49
|
+
["application/x-marc+xml", "application/x-marcxml+xml",
|
|
50
|
+
"application/marc+xml"]
|
|
51
|
+
EOF
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# Install Devise?
|
|
56
|
+
def generate_devise_assets
|
|
57
|
+
if options[:devise]
|
|
58
|
+
gem "devise"
|
|
59
|
+
run "bundle install"
|
|
60
|
+
generate "devise:install"
|
|
61
|
+
generate "devise", model_name.classify
|
|
62
|
+
generate "devise:views"
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# Copy all files in templates/config directory to host config
|
|
67
|
+
def create_configuration_files
|
|
68
|
+
copy_file "config/blacklight_config.rb", "config/initializers/blacklight_config.rb"
|
|
69
|
+
copy_file "config/solr.yml", "config/solr.yml"
|
|
70
|
+
directory("config/SolrMarc")
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
# Copy all files in templates/public/ directory to public/
|
|
74
|
+
def copy_public_assets
|
|
75
|
+
directory("public")
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
# Setup the database migrations
|
|
79
|
+
def copy_migrations
|
|
80
|
+
# Can't get this any more DRY, because we need this order.
|
|
81
|
+
better_migration_template "create_searches.rb"
|
|
82
|
+
better_migration_template "create_bookmarks.rb"
|
|
83
|
+
better_migration_template "remove_editable_fields_from_bookmarks.rb"
|
|
84
|
+
better_migration_template "add_user_types_to_bookmarks_searches.rb"
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
# Copy ocver the solr_marc.jar file
|
|
88
|
+
def copy_solr_marc
|
|
89
|
+
copy_file "SolrMarc.jar", "lib/SolrMarc.jar"
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
# Add Blacklight to the user model
|
|
93
|
+
def inject_blacklight_user_behavior
|
|
94
|
+
file_path = "app/models/#{model_name.underscore}.rb"
|
|
95
|
+
if File.exists?(file_path)
|
|
96
|
+
inject_into_class file_path, model_name.classify do
|
|
97
|
+
"# Connects this user object to Blacklights Bookmarks and Folders. " +
|
|
98
|
+
"\n include Blacklight::User\n"
|
|
99
|
+
end
|
|
100
|
+
else
|
|
101
|
+
puts " \e[31mFailure\e[0m Blacklight requires a user object in order to presist bookmarks and saved searches. This generators assumes that the model is defined in the file /app/models/user.rb, which does not exist. If you used a different name, please re-run the migration and provide that name as an argument. Such as \b rails -g blacklight client"
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
# Add Blacklight to the application controller
|
|
106
|
+
def inject_blacklight_controller_behavior
|
|
107
|
+
# prepend_file("app/controllers/application_controller.rb", "require 'blacklight/controller'\n\n")
|
|
108
|
+
inject_into_class "app/controllers/application_controller.rb", "ApplicationController" do
|
|
109
|
+
" # Adds a few additional behaviors into the application controller \n " +
|
|
110
|
+
" include Blacklight::Controller\n" +
|
|
111
|
+
" # Please be sure to impelement current_user and user_session. Blacklight depends on \n" +
|
|
112
|
+
" # these methods in order to perform user specific actions. \n\n"
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
# Generate blacklight document and the catalog controller
|
|
117
|
+
def create_blacklight_catalog_and_document
|
|
118
|
+
copy_file "solr_document.rb", "app/models/solr_document.rb"
|
|
119
|
+
copy_file "catalog_controller.rb", "app/controllers/catalog_controller.rb"
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
private
|
|
123
|
+
|
|
124
|
+
def better_migration_template (file)
|
|
125
|
+
begin
|
|
126
|
+
migration_template "migrations/#{file}", "db/migrate/#{file}"
|
|
127
|
+
sleep 1 # ensure scripts have different time stamps
|
|
128
|
+
rescue
|
|
129
|
+
puts " \e[1m\e[34mMigrations\e[0m " + $!.message
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
end
|
|
134
|
+
|
|
Binary file
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# If using the solr:marc:index task, you can define environment-specific
|
|
2
|
+
# config files that will be used instead of 'config.properties' for
|
|
3
|
+
# a specific environment. config-development.properties,
|
|
4
|
+
# config-production.properties, etc.
|
|
5
|
+
|
|
6
|
+
# Relative paths for solrmarc.solr.war.path and solr.path are relative
|
|
7
|
+
# to the location of SolrMarc.jar, which for blacklight is by default
|
|
8
|
+
# in blacklight/config/solr_marc.
|
|
9
|
+
|
|
10
|
+
# solrmarc.solr.war.path - must point to either a war file for the version of
|
|
11
|
+
# Solr that you want to use, or to a directory of jar files extracted from a
|
|
12
|
+
# Solr war files. If this is not provided, SolrMarc can only work by
|
|
13
|
+
# communicating with a running Solr server.
|
|
14
|
+
solrmarc.solr.war.path=../jetty/webapps/solr.war
|
|
15
|
+
# Path to your solr instance
|
|
16
|
+
solr.path = ../jetty/solr
|
|
17
|
+
|
|
18
|
+
# Relative paths for solr.indexer can be relative to the location of
|
|
19
|
+
# this config.properties file.
|
|
20
|
+
solr.indexer = org.solrmarc.index.SolrIndexer
|
|
21
|
+
solr.indexer.properties = index.properties
|
|
22
|
+
|
|
23
|
+
# URL of running solr search engine to cause updates to be recognized.
|
|
24
|
+
# * When solr.path and solrmarc.solr.war.path are defined, this is optional,
|
|
25
|
+
# but if defined SolrMarc will issue a 'commit' after it's done indexing.
|
|
26
|
+
# * Alternately, do not define solr.path or solrmarc.solr.war.path to have
|
|
27
|
+
# SolrMarc use HTTP Post to add documents.
|
|
28
|
+
# NOTE:
|
|
29
|
+
# When using the solr:marc:index rake task, this value will be automatically
|
|
30
|
+
# looked up from your solr.yml, and the value here will NOT be used.
|
|
31
|
+
solr.hosturl = http://localhost:8888/solr/update
|
|
32
|
+
|
|
33
|
+
# MARC handling parameters
|
|
34
|
+
marc.to_utf_8 = true
|
|
35
|
+
marc.permissive = true
|
|
36
|
+
marc.default_encoding = MARC8
|
|
37
|
+
marc.include_errors = false
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# If using the solr:marc:index task, you can define environment-specific
|
|
2
|
+
# config files that will be used instead of 'config.properties' for
|
|
3
|
+
# a specific environment. config-development.properties,
|
|
4
|
+
# config-production.properties, etc.
|
|
5
|
+
|
|
6
|
+
# Relative paths for solrmarc.solr.war.path and solr.path are relative
|
|
7
|
+
# to the location of SolrMarc.jar, which for blacklight is by default
|
|
8
|
+
# in blacklight/config/solr_marc.
|
|
9
|
+
|
|
10
|
+
# solrmarc.solr.war.path - must point to either a war file for the version of
|
|
11
|
+
# Solr that you want to use, or to a directory of jar files extracted from a
|
|
12
|
+
# Solr war files. If this is not provided, SolrMarc can only work by
|
|
13
|
+
# communicating with a running Solr server.
|
|
14
|
+
# solrmarc.solr.war.path= ../../../../jetty/webapps/solr.war
|
|
15
|
+
# Path to your solr instance
|
|
16
|
+
# solr.path = ../../../../jetty/solr
|
|
17
|
+
|
|
18
|
+
# Relative paths for solr.indexer can be relative to the location of
|
|
19
|
+
# this config.properties file.
|
|
20
|
+
solr.indexer = org.solrmarc.index.SolrIndexer
|
|
21
|
+
solr.indexer.properties = index.properties
|
|
22
|
+
|
|
23
|
+
# URL of running solr search engine to cause updates to be recognized.
|
|
24
|
+
# * When solr.path and solrmarc.solr.war.path are defined, this is optional,
|
|
25
|
+
# but if defined SolrMarc will issue a 'commit' after it's done indexing.
|
|
26
|
+
# * Alternately, do not define solr.path or solrmarc.solr.war.path to have
|
|
27
|
+
# SolrMarc use HTTP Post to add documents.
|
|
28
|
+
# NOTE:
|
|
29
|
+
# When using the solr:marc:index rake task, this value will be automatically
|
|
30
|
+
# looked up from your solr.yml, and the value here will NOT be used.
|
|
31
|
+
solr.hosturl = http://localhost:8983/solr/update
|
|
32
|
+
|
|
33
|
+
# MARC handling parameters
|
|
34
|
+
marc.to_utf_8 = true
|
|
35
|
+
marc.permissive = true
|
|
36
|
+
marc.default_encoding = MARC8
|
|
37
|
+
marc.include_errors = false
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# for more information on solrmarc mappings,
|
|
2
|
+
# see http://code.google.com/p/solrmarc/w/list
|
|
3
|
+
#
|
|
4
|
+
# GenericBlacklight uses these conventions, mostly.
|
|
5
|
+
# _t for indexed fields (for searching)
|
|
6
|
+
# _display for stored fields (for display in UI)
|
|
7
|
+
# _facet for facet fields
|
|
8
|
+
# _sort for sorting fields (fields used to sort results)
|
|
9
|
+
#
|
|
10
|
+
# see jetty/solr/conf/schema.xml in Blacklight demo project
|
|
11
|
+
# see http://blacklight.rubyforge.org/ DEMO_README file
|
|
12
|
+
|
|
13
|
+
id = 001, first
|
|
14
|
+
marc_display = FullRecordAsXML
|
|
15
|
+
text = custom, getAllSearchableFields(100, 900)
|
|
16
|
+
|
|
17
|
+
language_facet = 008[35-37]:041a:041d, language_map.properties
|
|
18
|
+
# format is for facet, display, and selecting partial for display in show view
|
|
19
|
+
format = 007[0-1]:000[6-7]:000[6], (map.format), first
|
|
20
|
+
isbn_t = 020a, (pattern_map.isbn_clean)
|
|
21
|
+
material_type_display = custom, removeTrailingPunct(300aa)
|
|
22
|
+
|
|
23
|
+
# Title fields
|
|
24
|
+
# primary title
|
|
25
|
+
title_t = custom, getLinkedFieldCombined(245a)
|
|
26
|
+
title_display = custom, removeTrailingPunct(245a)
|
|
27
|
+
title_vern_display = custom, getLinkedField(245a)
|
|
28
|
+
# subtitle
|
|
29
|
+
subtitle_t = custom, getLinkedFieldCombined(245b)
|
|
30
|
+
subtitle_display = custom, removeTrailingPunct(245b)
|
|
31
|
+
subtitle_vern_display = custom, getLinkedField(245b)
|
|
32
|
+
# additional title fields
|
|
33
|
+
title_addl_t = custom, getLinkedFieldCombined(245abnps:130[a-z]:240[a-gk-s]:210ab:222ab:242abnp:243[a-gk-s]:246[a-gnp]:247[a-gnp])
|
|
34
|
+
title_added_entry_t = custom, getLinkedFieldCombined(700[gk-pr-t]:710[fgk-t]:711fgklnpst:730[a-gk-t]:740anp)
|
|
35
|
+
title_series_t = custom, getLinkedFieldCombined(440anpv:490av)
|
|
36
|
+
title_sort = custom, getSortableTitle
|
|
37
|
+
|
|
38
|
+
# Author fields
|
|
39
|
+
author_t = custom, getLinkedFieldCombined(100abcegqu:110abcdegnu:111acdegjnqu)
|
|
40
|
+
author_addl_t = custom, getLinkedFieldCombined(700abcegqu:710abcdegnu:711acdegjnqu)
|
|
41
|
+
author_display = custom, removeTrailingPunct(100abcdq:110[a-z]:111[a-z])
|
|
42
|
+
author_vern_display = custom, getLinkedField(100abcdq:110[a-z]:111[a-z])
|
|
43
|
+
author_sort = custom, getSortableAuthor
|
|
44
|
+
|
|
45
|
+
# Subject fields
|
|
46
|
+
subject_t = custom, getLinkedFieldCombined(600[a-u]:610[a-u]:611[a-u]:630[a-t]:650[a-e]:651ae:653aa:654[a-e]:655[a-c])
|
|
47
|
+
subject_addl_t = custom, getLinkedFieldCombined(600[v-z]:610[v-z]:611[v-z]:630[v-z]:650[v-z]:651[v-z]:654[v-z]:655[v-z])
|
|
48
|
+
subject_topic_facet = custom, removeTrailingPunct(600abcdq:610ab:611ab:630aa:650aa:653aa:654ab:655ab)
|
|
49
|
+
subject_era_facet = custom, removeTrailingPunct(650y:651y:654y:655y)
|
|
50
|
+
subject_geo_facet = custom, removeTrailingPunct(651a:650z)
|
|
51
|
+
|
|
52
|
+
# Publication fields
|
|
53
|
+
published_display = custom, removeTrailingPunct(260a)
|
|
54
|
+
published_vern_display = custom, getLinkedField(260a)
|
|
55
|
+
# used for facet and display, and copied for sort
|
|
56
|
+
pub_date = custom, getDate
|
|
57
|
+
|
|
58
|
+
# Call Number fields
|
|
59
|
+
lc_callnum_display = 050ab, first
|
|
60
|
+
lc_1letter_facet = 050a[0], callnumber_map.properties, first
|
|
61
|
+
lc_alpha_facet = 050a, (pattern_map.lc_alpha), first
|
|
62
|
+
lc_b4cutter_facet = 050a, first
|
|
63
|
+
|
|
64
|
+
# URL Fields
|
|
65
|
+
url_fulltext_display = custom, getFullTextUrls
|
|
66
|
+
url_suppl_display = custom, getSupplUrls
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
# MAPPINGS
|
|
70
|
+
|
|
71
|
+
# format mapping
|
|
72
|
+
# leader 06-07
|
|
73
|
+
map.format.aa = Book
|
|
74
|
+
map.format.ab = Serial
|
|
75
|
+
map.format.am = Book
|
|
76
|
+
map.format.as = Serial
|
|
77
|
+
map.format.ta = Book
|
|
78
|
+
map.format.tm = Book
|
|
79
|
+
# leader 06
|
|
80
|
+
map.format.c = Musical Score
|
|
81
|
+
map.format.d = Musical Score
|
|
82
|
+
map.format.e = Map or Globe
|
|
83
|
+
map.format.f = Map or Globe
|
|
84
|
+
map.format.i = Non-musical Recording
|
|
85
|
+
map.format.j = Musical Recording
|
|
86
|
+
map.format.k = Image
|
|
87
|
+
map.format.m = Computer File
|
|
88
|
+
# 007[0] when it doesn't clash with above
|
|
89
|
+
map.format.h = Microform
|
|
90
|
+
map.format.q = Musical Score
|
|
91
|
+
map.format.v = Video
|
|
92
|
+
# none of the above
|
|
93
|
+
map.format = Unknown
|
|
94
|
+
|
|
95
|
+
pattern_map.lc_alpha.pattern_0 = ^([A-Z]{1,3})\\d+.*=>$1
|
|
96
|
+
|
|
97
|
+
pattern_map.isbn_clean.pattern_0 = ([- 0-9]*[0-9]).*=>$1
|