blacklight_marc 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/.travis.yml +12 -0
- data/Gemfile +15 -0
- data/README.md +7 -7
- data/Rakefile +67 -0
- data/app/views/catalog/_marc_view.html.erb +32 -0
- data/app/views/catalog/librarian_view.html.erb +10 -0
- data/blacklight_marc.gemspec +4 -2
- data/config/jetty.yml +4 -0
- data/config/locales/blacklight.en.yml +13 -0
- data/config/locales/blacklight.fr.yml +13 -0
- data/config/routes.rb +17 -0
- data/lib/blacklight/solr/document/marc.rb +1 -0
- data/lib/blacklight/solr/document/marc_export.rb +7 -22
- data/lib/blacklight_marc.rb +10 -9
- data/lib/blacklight_marc/catalog.rb +12 -0
- data/lib/blacklight_marc/engine.rb +8 -0
- data/lib/blacklight_marc/railtie.rb +17 -0
- data/lib/blacklight_marc/routes.rb +41 -0
- data/lib/blacklight_marc/version.rb +1 -1
- data/lib/generators/blacklight_marc/marc_generator.rb +17 -21
- data/spec/features/librarian_view_spec.rb +13 -0
- data/spec/integration/solr_document_spec.rb +59 -0
- data/spec/lib/blacklight_solr_document_marc_spec.rb +89 -0
- data/spec/lib/marc_export_spec.rb +743 -0
- data/spec/lib/tasks/solr_marc_task_spec.rb +60 -0
- data/spec/spec_helper.rb +27 -0
- data/spec/test_app_templates/Gemfile.extra +26 -0
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +34 -0
- data/spec/test_app_templates/lib/tasks/blacklight_test_app.rake +14 -0
- metadata +77 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 37e22ed6ab9f48e7660d6ff4e7fc96842dce788f
|
4
|
+
data.tar.gz: ef49ae16306b08c3264829b6376e1f87a5ac7e90
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6976d71575ef6834d2cfab14a6f650266b7c9bd31c9aff9be72e2925108925c78769f72cb0722099803923ca12a01da2dca583bfc4de49e998e652a634e2a9dd
|
7
|
+
data.tar.gz: 853de50d49f2d36e9acfae99b6f1e21cbb06418a504879d404e6fc1ba92cc058e4195ede550d64136186b2fa4af69c117cc1e05208e655bbcd3c3f9ba633a662
|
data/.gitignore
CHANGED
data/.travis.yml
ADDED
data/Gemfile
CHANGED
@@ -2,3 +2,18 @@ source 'https://rubygems.org'
|
|
2
2
|
|
3
3
|
# Specify your gem's dependencies in blacklight_marc.gemspec
|
4
4
|
gemspec
|
5
|
+
|
6
|
+
gem 'simplecov', :platform => :mri
|
7
|
+
|
8
|
+
group :test do
|
9
|
+
gem 'devise'
|
10
|
+
gem 'devise-guests'
|
11
|
+
gem "bootstrap-sass"
|
12
|
+
gem 'turbolinks'
|
13
|
+
gem "unicode", :platforms => [:mri_18, :mri_19]
|
14
|
+
gem 'activerecord-jdbcsqlite3-adapter', :platforms => :jruby
|
15
|
+
end
|
16
|
+
|
17
|
+
if File.exists?('spec/test_app_templates/Gemfile.extra')
|
18
|
+
eval File.read('spec/test_app_templates/Gemfile.extra'), nil, 'spec/test_app_templates/Gemfile.extra'
|
19
|
+
end
|
data/README.md
CHANGED
@@ -1,6 +1,8 @@
|
|
1
|
+
[![Build Status](https://travis-ci.org/projectblacklight/blacklight_marc.png?branch=master)](https://travis-ci.org/projectblacklight/blacklight_marc)
|
2
|
+
|
1
3
|
# BlacklightMarc
|
2
4
|
|
3
|
-
|
5
|
+
MARC-specific enhancements for [Blacklight](https://github.com/projectblacklight/blacklight)
|
4
6
|
|
5
7
|
## Installation
|
6
8
|
|
@@ -12,13 +14,11 @@ And then execute:
|
|
12
14
|
|
13
15
|
$ bundle
|
14
16
|
|
15
|
-
|
16
|
-
|
17
|
-
$ gem install blacklight_marc
|
18
|
-
|
19
|
-
## Usage
|
17
|
+
## Documentation, Information and Support
|
20
18
|
|
21
|
-
|
19
|
+
* [Project Homepage](http://projectblacklight.org)
|
20
|
+
* [Developer Documentation](https://github.com/projectblacklight/blacklight/wiki)
|
21
|
+
* [Quickstart Guide](https://github.com/projectblacklight/blacklight/wiki/Quickstart)
|
22
22
|
|
23
23
|
## Contributing
|
24
24
|
|
data/Rakefile
CHANGED
@@ -1 +1,68 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
|
+
ZIP_URL = "https://github.com/projectblacklight/blacklight-jetty/archive/v4.0.0.zip"
|
3
|
+
APP_ROOT = File.expand_path("..", __FILE__)
|
4
|
+
|
5
|
+
TEST_APP_TEMPLATES = 'spec/test_app_templates'
|
6
|
+
TEST_APP = 'spec/internal'
|
7
|
+
|
8
|
+
require 'jettywrapper'
|
9
|
+
require 'rspec/core/rake_task'
|
10
|
+
|
11
|
+
RSpec::Core::RakeTask.new(:spec)
|
12
|
+
|
13
|
+
task :default => [:ci]
|
14
|
+
|
15
|
+
task :ci => ['blacklight_marc:generate', 'jetty:clean'] do
|
16
|
+
ENV['environment'] = "test"
|
17
|
+
jetty_params = Jettywrapper.load_config
|
18
|
+
jetty_params[:startup_wait]= 60
|
19
|
+
error = Jettywrapper.wrap(jetty_params) do
|
20
|
+
Rake::Task["blacklight_marc:fixtures"].invoke
|
21
|
+
Rake::Task['spec'].invoke
|
22
|
+
end
|
23
|
+
raise "test failures: #{error}" if error
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
namespace :blacklight_marc do
|
28
|
+
|
29
|
+
desc "Load fixtures"
|
30
|
+
task :fixtures => [:generate] do
|
31
|
+
within_test_app do
|
32
|
+
system "rake solr:marc:index_test_data RAILS_ENV=test"
|
33
|
+
abort "Error running fixtures" unless $?.success?
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
desc "Create the test rails app"
|
38
|
+
task :generate do
|
39
|
+
unless File.exists?('spec/internal/Rakefile')
|
40
|
+
puts "Generating rails app"
|
41
|
+
`rails new #{TEST_APP}`
|
42
|
+
puts "Copying gemfile"
|
43
|
+
open("#{TEST_APP}/Gemfile", 'a') do |f|
|
44
|
+
f.write File.read(TEST_APP_TEMPLATES + "/Gemfile.extra")
|
45
|
+
f.write "gem 'blacklight_marc', :path => '../../'"
|
46
|
+
end
|
47
|
+
puts "Copying generator"
|
48
|
+
`cp -r #{TEST_APP_TEMPLATES}/lib/generators #{TEST_APP}/lib`
|
49
|
+
within_test_app do
|
50
|
+
puts "Bundle install"
|
51
|
+
`bundle install`
|
52
|
+
puts "running test_app_generator"
|
53
|
+
system "rails generate test_app"
|
54
|
+
|
55
|
+
puts "running migrations"
|
56
|
+
puts `rake db:migrate db:test:prepare`
|
57
|
+
end
|
58
|
+
end
|
59
|
+
puts "Done generating test app"
|
60
|
+
end
|
61
|
+
end
|
62
|
+
def within_test_app
|
63
|
+
FileUtils.cd(TEST_APP)
|
64
|
+
Bundler.with_clean_env do
|
65
|
+
yield
|
66
|
+
end
|
67
|
+
FileUtils.cd(APP_ROOT)
|
68
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
<div id="marc_view">
|
2
|
+
<% fields = @document.to_marc.find_all{|f| ('000'..'999') === f.tag } %>
|
3
|
+
<div class="field"><%= t('blacklight.search.librarian_view.leader', :leader => @document.to_marc.leader) %></div>
|
4
|
+
<%- fields.each do |field| -%>
|
5
|
+
<%- unless field.tag.to_s == "940" -%>
|
6
|
+
<div class="field">
|
7
|
+
<div class="tag_ind">
|
8
|
+
<span class="tag">
|
9
|
+
<%= h(field.tag) %>
|
10
|
+
</span>
|
11
|
+
<%- if field.is_a?(MARC::ControlField) -%>
|
12
|
+
<span class="control_field_values">
|
13
|
+
<%= h(field.value) %>
|
14
|
+
</span>
|
15
|
+
<%- else -%>
|
16
|
+
<div class="ind1">
|
17
|
+
<%= !field.indicator1.blank? ? field.indicator1 : " ".html_safe -%>
|
18
|
+
</div>
|
19
|
+
<div class="ind2">
|
20
|
+
<%= !field.indicator2.blank? ? field.indicator2 : " ".html_safe -%>
|
21
|
+
</div>
|
22
|
+
</div>
|
23
|
+
<div class="subfields">
|
24
|
+
<%- field.each do |sub| -%>
|
25
|
+
<span class="sub_code"><%= h(sub.code) %>|</span> <%= h(sub.value) %>
|
26
|
+
<%- end -%>
|
27
|
+
<%- end -%>
|
28
|
+
</div>
|
29
|
+
</div>
|
30
|
+
<%- end-%>
|
31
|
+
<%- end -%>
|
32
|
+
</div>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
|
2
|
+
<div class="modal-header">
|
3
|
+
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
4
|
+
<h1 class="modal-title"><%= t('blacklight.search.librarian_view.title') %></h1>
|
5
|
+
</div>
|
6
|
+
<%- if @document.respond_to?(:to_marc) -%>
|
7
|
+
<%= render "marc_view" %>
|
8
|
+
<%- else %>
|
9
|
+
<%= t('blacklight.search.librarian_view.empty') %>
|
10
|
+
<%- end -%>
|
data/blacklight_marc.gemspec
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
lib = File.expand_path('../lib', __FILE__)
|
3
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
3
|
require 'blacklight_marc/version'
|
@@ -20,7 +19,10 @@ Gem::Specification.new do |spec|
|
|
20
19
|
|
21
20
|
spec.add_development_dependency "bundler", "~> 1.3"
|
22
21
|
spec.add_development_dependency "rake"
|
23
|
-
spec.
|
22
|
+
spec.add_development_dependency "rspec"
|
23
|
+
spec.add_development_dependency "rspec-rails"
|
24
|
+
spec.add_development_dependency "jettywrapper"
|
25
|
+
spec.add_dependency "rails"
|
24
26
|
# Let's allow future versions of marc, count on
|
25
27
|
# them to be backwards compat until 1.1
|
26
28
|
spec.add_dependency "marc", ">= 0.4.3", "< 1.1" # Marc record parser.
|
data/config/jetty.yml
ADDED
data/config/routes.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
Rails.application.routes.draw do
|
3
|
+
# A Note on User Sessions:
|
4
|
+
# Blacklight expects the following named routes or at least the associated path helper methods to be defined.
|
5
|
+
# new_user_session (for logging in) - pages that require a log in will redirect users here.
|
6
|
+
# destroy_user_session (for logging out)
|
7
|
+
|
8
|
+
# Routes for the Blacklight application are defined in Blacklight::Routes
|
9
|
+
#
|
10
|
+
# These routes can be injected into your Rails application by adding
|
11
|
+
# Blacklight.add_routes(self)
|
12
|
+
# to the application's ./config/routes.rb. The injected routes can be
|
13
|
+
# customized as well, e.g.:
|
14
|
+
# Blacklight.add_routes(self, :only => [:bookmarks]) # will only look bookmark routes
|
15
|
+
# Blacklight.add_routes(self, :except => [:catalog]) # will not load catalog routes
|
16
|
+
end
|
17
|
+
|
@@ -17,6 +17,7 @@
|
|
17
17
|
# SolrDocument.extension_paramters[:marc_source_field] = "name_of_solr_stored_field"
|
18
18
|
# SolrDocument.extension_parameters[:marc_format_type] = :marc21 # or :marcxml
|
19
19
|
require 'marc'
|
20
|
+
|
20
21
|
module Blacklight::Solr::Document::Marc
|
21
22
|
|
22
23
|
include Blacklight::Solr::Document::MarcExport # All our export_as stuff based on to_marc.
|
@@ -104,14 +104,6 @@ module Blacklight::Solr::Document::MarcExport
|
|
104
104
|
# proprietary marc-ish in text/plain format. See
|
105
105
|
# http://robotlibrarian.billdueber.com/sending-marcish-data-to-refworks/
|
106
106
|
def export_as_refworks_marc_txt
|
107
|
-
# plugin/gem weirdness means we do need to manually require
|
108
|
-
# here.
|
109
|
-
# As of 11 May 2010, Refworks has a problem with UTF-8 if it's decomposed,
|
110
|
-
# it seems to want C form normalization, although RefWorks support
|
111
|
-
# couldn't tell me that. -jrochkind
|
112
|
-
# DHF: moved this require a little lower in the method.
|
113
|
-
# require 'unicode'
|
114
|
-
|
115
107
|
fields = to_marc.find_all { |f| ('000'..'999') === f.tag }
|
116
108
|
text = "LEADER #{to_marc.leader}"
|
117
109
|
fields.each do |field|
|
@@ -129,19 +121,12 @@ module Blacklight::Solr::Document::MarcExport
|
|
129
121
|
end
|
130
122
|
end
|
131
123
|
|
132
|
-
if
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
require 'unicode'
|
139
|
-
Unicode.normalize_C(text)
|
140
|
-
rescue LoadError
|
141
|
-
Blacklight.logger.warn "Unable to load unicode library in #export_as_refworks_marc_txt; skipping unicode normalization"
|
142
|
-
text
|
143
|
-
end
|
144
|
-
end
|
124
|
+
# As of 11 May 2010, Refworks has a problem with UTF-8 if it's decomposed,
|
125
|
+
# it seems to want C form normalization, although RefWorks support
|
126
|
+
# couldn't tell me that. -jrochkind
|
127
|
+
text = ActiveSupport::Multibyte::Unicode.normalize(text, :c)
|
128
|
+
|
129
|
+
return text
|
145
130
|
end
|
146
131
|
|
147
132
|
# Endnote Import Format. See the EndNote User Guide at:
|
@@ -599,4 +584,4 @@ module Blacklight::Solr::Document::MarcExport
|
|
599
584
|
return temp_name.last + " " + temp_name.first
|
600
585
|
end
|
601
586
|
|
602
|
-
end
|
587
|
+
end
|
data/lib/blacklight_marc.rb
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
require "blacklight_marc/version"
|
2
|
-
|
2
|
+
require 'blacklight'
|
3
3
|
module BlacklightMarc
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
Blacklight::Solr::Document.autoload :Marc, 'blacklight/solr/document/marc'
|
5
|
+
Blacklight::Solr::Document.autoload :MarcExport, 'blacklight/solr/document/marc_export'
|
6
|
+
|
7
|
+
require 'blacklight_marc/engine'
|
8
|
+
require 'blacklight_marc/railtie'
|
9
|
+
autoload :Routes, 'blacklight_marc/routes'
|
10
|
+
autoload :Catalog, 'blacklight_marc/catalog'
|
8
11
|
|
9
|
-
|
10
|
-
|
11
|
-
Blacklight::Solr::Document.autoload :MarcExport, 'blacklight/solr/document/marc_export'
|
12
|
-
end
|
12
|
+
def self.add_routes(router, options = {})
|
13
|
+
BlacklightMarc::Routes.new(router, options).draw
|
13
14
|
end
|
14
15
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module BlacklightMarc
|
2
|
+
class Railtie < Rails::Railtie
|
3
|
+
rake_tasks do
|
4
|
+
load "railties/solr_marc.rake"
|
5
|
+
end
|
6
|
+
|
7
|
+
initializer 'blacklight_marc.initialize' do |app|
|
8
|
+
Mime::Type.register_alias "text/plain", :refworks_marc_txt
|
9
|
+
Mime::Type.register_alias "text/plain", :openurl_kev
|
10
|
+
Mime::Type.register "application/x-endnote-refer", :endnote
|
11
|
+
Mime::Type.register "application/marc", :marc
|
12
|
+
Mime::Type.register "application/marcxml+xml", :marcxml,
|
13
|
+
["application/x-marc+xml", "application/x-marcxml+xml",
|
14
|
+
"application/marc+xml"]
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
module BlacklightMarc
|
3
|
+
class Routes
|
4
|
+
|
5
|
+
def initialize(router, options)
|
6
|
+
@router = router
|
7
|
+
@options = options
|
8
|
+
end
|
9
|
+
|
10
|
+
def draw
|
11
|
+
route_sets.each do |r|
|
12
|
+
self.send(r)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
protected
|
17
|
+
|
18
|
+
def add_routes &blk
|
19
|
+
@router.instance_exec(@options, &blk)
|
20
|
+
end
|
21
|
+
|
22
|
+
def route_sets
|
23
|
+
(@options[:only] || default_route_sets) - (@options[:except] || [])
|
24
|
+
end
|
25
|
+
|
26
|
+
def default_route_sets
|
27
|
+
[:catalog]
|
28
|
+
end
|
29
|
+
|
30
|
+
module RouteSets
|
31
|
+
def catalog
|
32
|
+
add_routes do |options|
|
33
|
+
# Catalog stuff.
|
34
|
+
get 'catalog/:id/librarian_view', :to => "catalog#librarian_view", :as => "librarian_view_catalog"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
include RouteSets
|
40
|
+
end
|
41
|
+
end
|