blacklight 3.0pre1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|