curation_concerns 1.4.0 → 1.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +2 -0
- data/Gemfile +4 -0
- data/Rakefile +2 -2
- data/app/actors/curation_concerns/actors/file_actor.rb +2 -3
- data/app/assets/javascripts/curation_concerns/file_manager.es6 +32 -1
- data/app/assets/javascripts/curation_concerns/file_manager/member.es6 +6 -0
- data/app/assets/stylesheets/curation_concerns/_positioning.scss +3 -2
- data/app/assets/stylesheets/curation_concerns/modules/file_manager.scss +14 -0
- data/app/controllers/concerns/curation_concerns/curation_concern_controller.rb +3 -3
- data/app/controllers/concerns/curation_concerns/single_use_links_controller_behavior.rb +2 -2
- data/app/indexers/curation_concerns/admin_set_indexer.rb +13 -0
- data/app/indexers/curation_concerns/file_set_indexer.rb +5 -0
- data/app/indexers/curation_concerns/work_indexer.rb +3 -0
- data/app/models/admin_set.rb +3 -0
- data/app/models/concerns/curation_concerns/admin_set_behavior.rb +29 -0
- data/app/models/concerns/curation_concerns/file_set/characterization.rb +2 -1
- data/app/models/concerns/curation_concerns/in_admin_set.rb +9 -0
- data/app/models/concerns/curation_concerns/publishable.rb +19 -0
- data/app/models/concerns/curation_concerns/solr_behavior/characterization.rb +106 -0
- data/app/models/concerns/curation_concerns/solr_document_behavior.rb +5 -0
- data/app/models/concerns/curation_concerns/work_behavior.rb +2 -0
- data/app/models/curation_concerns/state_workflow.rb +13 -0
- data/app/models/vocab/fedora_resource_status.rb +6 -0
- data/app/presenters/curation_concerns/characterization_behavior.rb +84 -0
- data/app/presenters/curation_concerns/file_set_presenter.rb +1 -0
- data/app/presenters/curation_concerns/work_show_presenter.rb +1 -1
- data/app/search_builders/curation_concerns/admin_set_search_builder.rb +22 -0
- data/app/services/curation_concerns/admin_set_service.rb +26 -0
- data/app/services/curation_concerns/indexes_thumbnails.rb +1 -0
- data/app/services/curation_concerns/license_service.rb +8 -0
- data/app/services/curation_concerns/qa_select_service.rb +33 -0
- data/app/services/curation_concerns/rights_statements.rb +8 -0
- data/app/services/rights_service.rb +9 -2
- data/app/views/collections/_button_create_collection.html.erb +1 -1
- data/app/views/collections/_button_for_update_collection.html.erb +1 -1
- data/app/views/curation_concerns/base/_file_manager_actions.html.erb +1 -0
- data/app/views/curation_concerns/base/_file_manager_member.html.erb +24 -23
- data/app/views/curation_concerns/base/_file_manager_member_resource_options.html.erb +6 -0
- data/app/views/curation_concerns/base/_file_manager_resource_form.html.erb +5 -0
- data/app/views/curation_concerns/base/_form_rights.html.erb +1 -1
- data/app/views/curation_concerns/file_sets/media_display/_default.html.erb +18 -9
- data/app/views/curation_concerns/file_sets/media_display/_image.html.erb +18 -13
- data/app/views/curation_concerns/file_sets/media_display/_office_document.html.erb +18 -13
- data/app/views/curation_concerns/file_sets/media_display/_pdf.html.erb +18 -13
- data/config/locales/curation_concerns.en.yml +6 -0
- data/curation_concerns.gemspec +2 -2
- data/lib/curation_concerns/version.rb +1 -1
- data/lib/generators/curation_concerns/install_generator.rb +6 -9
- data/lib/generators/curation_concerns/templates/config/authorities/{rights.yml → licenses.yml} +0 -0
- data/lib/generators/curation_concerns/templates/config/authorities/rights_statements.yml +37 -0
- data/spec/abilities/admin_set_abilities_spec.rb +15 -0
- data/spec/actors/curation_concerns/file_actor_spec.rb +1 -2
- data/spec/controllers/catalog_controller_spec.rb +9 -11
- data/spec/controllers/curation_concerns/classify_concerns_controller_spec.rb +2 -2
- data/spec/controllers/curation_concerns/collections_controller_spec.rb +39 -33
- data/spec/controllers/curation_concerns/file_sets_controller_json_spec.rb +10 -10
- data/spec/controllers/curation_concerns/file_sets_controller_spec.rb +54 -35
- data/spec/controllers/curation_concerns/generic_works_controller_json_spec.rb +6 -6
- data/spec/controllers/curation_concerns/generic_works_controller_spec.rb +30 -35
- data/spec/controllers/curation_concerns/operations_controller_spec.rb +2 -2
- data/spec/controllers/curation_concerns/permissions_controller_spec.rb +2 -2
- data/spec/controllers/curation_concerns/single_use_links_controller_spec.rb +10 -10
- data/spec/controllers/curation_concerns/single_use_links_viewer_controller_spec.rb +7 -12
- data/spec/controllers/downloads_controller_spec.rb +15 -19
- data/spec/controllers/embargoes_controller_spec.rb +6 -6
- data/spec/controllers/leases_controller_spec.rb +6 -6
- data/spec/factories/admin_sets.rb +9 -0
- data/spec/indexers/file_set_indexer_spec.rb +11 -2
- data/spec/indexers/work_indexer_spec.rb +41 -20
- data/spec/models/admin_set_spec.rb +78 -0
- data/spec/models/curation_concerns/file_set/characterization_spec.rb +1 -1
- data/spec/models/file_set_spec.rb +4 -1
- data/spec/models/generic_work_spec.rb +24 -1
- data/spec/models/solr_document_spec.rb +30 -0
- data/spec/presenters/curation_concerns/file_set_presenter_spec.rb +131 -6
- data/spec/renderers/curation_concerns/renderers/attribute_renderer_spec.rb +1 -4
- data/spec/search_builders/curation_concerns/admin_set_search_builder_spec.rb +17 -0
- data/spec/services/curation_concerns/admin_set_service_spec.rb +37 -0
- data/spec/services/curation_concerns/license_service_spec.rb +36 -0
- data/spec/services/curation_concerns/rights_statements_spec.rb +11 -0
- data/spec/services/rights_service_spec.rb +2 -0
- data/spec/spec_helper.rb +44 -0
- data/spec/support/backport_test.rb +14 -0
- data/spec/support/curation_concerns/factory_helpers.rb +3 -1
- data/spec/test_app_templates/Gemfile.extra +0 -2
- data/spec/views/curation_concerns/base/file_manager.html.erb_spec.rb +13 -1
- data/spec/views/curation_concerns/file_sets/show.html.erb_spec.rb +8 -8
- metadata +40 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c3c778b10ded8ecbde18b513c114091bd5db0f03
|
4
|
+
data.tar.gz: 7665059aa1ca3e90ac806048ec6e5d05d9336514
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ce3acb4259faa827a4c98563a10f13d492388ae5815f5160a5505a053b8a18ed655928dacbb298a8b2e4cf701ec9280c41efd1d28d05a9a0abc57fb78f65751e
|
7
|
+
data.tar.gz: 7d4ccf6d0e886559560ffc178cba90eeb27d6654d6871905f5bdd79128b688d6a3eff8c1414bf8c89d138d8ecc90e1c34a435c3770c39e540a0c31c4d7382696
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
@@ -3,6 +3,10 @@ source 'https://rubygems.org'
|
|
3
3
|
# Specify your gem's dependencies in curation_concerns.gemspec
|
4
4
|
gemspec
|
5
5
|
|
6
|
+
if ENV['RDF_VERSION']
|
7
|
+
gem 'rdf', ENV['RDF_VERSION']
|
8
|
+
end
|
9
|
+
|
6
10
|
group :development, :test do
|
7
11
|
gem 'simplecov', '~> 0.9', require: false
|
8
12
|
gem 'coveralls', require: false
|
data/Rakefile
CHANGED
@@ -28,10 +28,10 @@ namespace :curation_concerns do
|
|
28
28
|
end
|
29
29
|
|
30
30
|
desc 'Run test suite and style checker'
|
31
|
-
task spec: ['curation_concerns:
|
31
|
+
task spec: ['curation_concerns:spec']
|
32
32
|
|
33
33
|
desc 'Spin up Solr & Fedora and run the test suite'
|
34
|
-
task ci: ['engine_cart:generate'] do
|
34
|
+
task ci: ['curation_concerns:rubocop', 'engine_cart:generate'] do
|
35
35
|
Rake::Task['spec'].invoke
|
36
36
|
end
|
37
37
|
|
@@ -34,9 +34,8 @@ module CurationConcerns
|
|
34
34
|
|
35
35
|
CurationConcerns::VersioningService.create(repository_file, user)
|
36
36
|
|
37
|
-
#
|
38
|
-
|
39
|
-
CharacterizeJob.perform_later(file_set, working_file)
|
37
|
+
# Characterize the original file from the repository
|
38
|
+
CharacterizeJob.perform_later(file_set, repository_file.id)
|
40
39
|
true
|
41
40
|
end
|
42
41
|
end
|
@@ -1,12 +1,14 @@
|
|
1
1
|
import SaveManager from 'curation_concerns/file_manager/save_manager'
|
2
2
|
import SortManager from 'curation_concerns/file_manager/sorting'
|
3
|
-
import {FileManagerMember} from 'curation_concerns/file_manager/member'
|
3
|
+
import {InputTracker, FileManagerMember} from 'curation_concerns/file_manager/member'
|
4
4
|
export default class FileManager {
|
5
5
|
constructor() {
|
6
6
|
this.save_manager = this.initialize_save_manager()
|
7
7
|
this.sorting()
|
8
8
|
this.save_affix()
|
9
9
|
this.member_tracking()
|
10
|
+
this.sortable_placeholder()
|
11
|
+
this.resource_form()
|
10
12
|
}
|
11
13
|
|
12
14
|
initialize_save_manager() {
|
@@ -38,4 +40,33 @@ export default class FileManager {
|
|
38
40
|
$(element).data("file_manager_member", manager_member)
|
39
41
|
})
|
40
42
|
}
|
43
|
+
|
44
|
+
// Initialize a form that represents the parent resource as a whole.
|
45
|
+
// For the purpose of CC, this only comes with a thumbnail_id hidden field
|
46
|
+
// which is synchronized with the radio buttons on each member and then
|
47
|
+
// submitted with the SaveManager.
|
48
|
+
resource_form() {
|
49
|
+
let manager = new FileManagerMember($("#resource-form").parent(), this.save_manager)
|
50
|
+
$("#resource-form").parent().data("file_manager_member", manager)
|
51
|
+
// Track thumbnail ID hidden field
|
52
|
+
new InputTracker($("*[data-member-link=thumbnail_id]"), manager)
|
53
|
+
$("#sortable *[name=thumbnail_id]").change(function() {
|
54
|
+
let val = $("#sortable *[name=thumbnail_id]:checked").val()
|
55
|
+
$("*[data-member-link=thumbnail_id]").val(val)
|
56
|
+
$("*[data-member-link=thumbnail_id]").change()
|
57
|
+
})
|
58
|
+
}
|
59
|
+
|
60
|
+
// Keep the ui/sortable placeholder the right size.
|
61
|
+
// This keeps the grid a consistent height so when the
|
62
|
+
// last row contains 1 object,
|
63
|
+
// - an element can be moved into the last spot, and
|
64
|
+
// - the footer doesn't jump up.
|
65
|
+
sortable_placeholder() {
|
66
|
+
$( "#sortable" ).on( "sortstart", function( event, ui ) {
|
67
|
+
let found_element = $("#sortable").children("li[data-reorder-id]").first()
|
68
|
+
ui.placeholder.width(found_element.width())
|
69
|
+
ui.placeholder.height(found_element.height())
|
70
|
+
})
|
71
|
+
}
|
41
72
|
}
|
@@ -75,6 +75,12 @@ export class FileManagerMember {
|
|
75
75
|
this.element.removeClass("success")
|
76
76
|
this.element.removeClass("pending")
|
77
77
|
})
|
78
|
+
// unset the callbacks after they've run so they don't build up
|
79
|
+
// and consume memory
|
80
|
+
deferred.always(function() {
|
81
|
+
form.off('ajax:success')
|
82
|
+
form.off('ajax:error')
|
83
|
+
})
|
78
84
|
form.submit()
|
79
85
|
return deferred
|
80
86
|
} else {
|
@@ -35,6 +35,13 @@
|
|
35
35
|
.attributes {
|
36
36
|
@extend .col-xs-12;
|
37
37
|
}
|
38
|
+
.member_resource_options {
|
39
|
+
@extend .col-xs-12;
|
40
|
+
float: none;
|
41
|
+
input[type=radio] {
|
42
|
+
margin-left: 1px;
|
43
|
+
}
|
44
|
+
}
|
38
45
|
.order-title {
|
39
46
|
width: 85%;
|
40
47
|
}
|
@@ -59,6 +66,13 @@
|
|
59
66
|
.attributes {
|
60
67
|
@extend .col-xs-6;
|
61
68
|
}
|
69
|
+
.member_resource_options {
|
70
|
+
@extend .col-xs-12;
|
71
|
+
float: none;
|
72
|
+
input[type=radio] {
|
73
|
+
margin-left: 1px;
|
74
|
+
}
|
75
|
+
}
|
62
76
|
.order-title {
|
63
77
|
width: 49%;
|
64
78
|
display: inline-block;
|
@@ -62,13 +62,13 @@ module CurationConcerns::CurationConcernController
|
|
62
62
|
end
|
63
63
|
additional_response_formats(wants)
|
64
64
|
wants.ttl do
|
65
|
-
render
|
65
|
+
render body: presenter.export_as_ttl, content_type: 'text/turtle'
|
66
66
|
end
|
67
67
|
wants.jsonld do
|
68
|
-
render
|
68
|
+
render body: presenter.export_as_jsonld, content_type: 'application/ld+json'
|
69
69
|
end
|
70
70
|
wants.nt do
|
71
|
-
render
|
71
|
+
render body: presenter.export_as_nt, content_type: 'application/n-triples'
|
72
72
|
end
|
73
73
|
end
|
74
74
|
end
|
@@ -20,12 +20,12 @@ module CurationConcerns
|
|
20
20
|
|
21
21
|
def create_download
|
22
22
|
@su = SingleUseLink.create itemId: params[:id], path: main_app.download_path(id: params[:id])
|
23
|
-
render
|
23
|
+
render plain: curation_concerns.download_single_use_link_url(@su.downloadKey)
|
24
24
|
end
|
25
25
|
|
26
26
|
def create_show
|
27
27
|
@su = SingleUseLink.create(itemId: params[:id], path: asset_show_path)
|
28
|
-
render
|
28
|
+
render plain: curation_concerns.show_single_use_link_url(@su.downloadKey)
|
29
29
|
end
|
30
30
|
|
31
31
|
def index
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module CurationConcerns
|
2
|
+
class AdminSetIndexer < ActiveFedora::IndexingService
|
3
|
+
include IndexesThumbnails
|
4
|
+
|
5
|
+
def generate_solr_document
|
6
|
+
super.tap do |solr_doc|
|
7
|
+
# Makes Admin Sets show under the "Admin Sets" tab
|
8
|
+
Solrizer.set_field(solr_doc, 'generic_type', 'Admin Set', :facetable)
|
9
|
+
solr_doc['thumbnail_path_ss'] = thumbnail_path
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -22,6 +22,11 @@ module CurationConcerns
|
|
22
22
|
# between files on disk (in fcrepo.binary-store-path) and objects
|
23
23
|
# in the repository.
|
24
24
|
solr_doc[Solrizer.solr_name('digest', :symbol)] = digest_from_content
|
25
|
+
solr_doc[Solrizer.solr_name('page_count')] = object.page_count
|
26
|
+
solr_doc[Solrizer.solr_name('file_title')] = object.file_title
|
27
|
+
solr_doc[Solrizer.solr_name('duration')] = object.duration
|
28
|
+
solr_doc[Solrizer.solr_name('sample_rate')] = object.sample_rate
|
29
|
+
solr_doc[Solrizer.solr_name('original_checksum')] = object.original_checksum
|
25
30
|
end
|
26
31
|
end
|
27
32
|
|
@@ -1,10 +1,13 @@
|
|
1
1
|
module CurationConcerns
|
2
2
|
class WorkIndexer < ActiveFedora::IndexingService
|
3
3
|
include IndexesThumbnails
|
4
|
+
STORED_BOOL = Solrizer::Descriptor.new(:boolean, :stored, :indexed)
|
5
|
+
|
4
6
|
def generate_solr_document
|
5
7
|
super.tap do |solr_doc|
|
6
8
|
solr_doc[Solrizer.solr_name('member_ids', :symbol)] = object.member_ids
|
7
9
|
Solrizer.set_field(solr_doc, 'generic_type', 'Work', :facetable)
|
10
|
+
solr_doc[Solrizer.solr_name('suppressed', STORED_BOOL)] = object.suppressed?
|
8
11
|
end
|
9
12
|
end
|
10
13
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module CurationConcerns
|
2
|
+
module AdminSetBehavior
|
3
|
+
extend ActiveSupport::Concern
|
4
|
+
|
5
|
+
include Hydra::AccessControls::WithAccessRight
|
6
|
+
include CurationConcerns::Noid
|
7
|
+
include CurationConcerns::HumanReadableType
|
8
|
+
include CurationConcerns::HasRepresentative
|
9
|
+
|
10
|
+
included do
|
11
|
+
validates_with HasOneTitleValidator
|
12
|
+
class_attribute :human_readable_short_description, :indexer
|
13
|
+
self.indexer = CurationConcerns::AdminSetIndexer
|
14
|
+
property :title, predicate: ::RDF::Vocab::DC.title do |index|
|
15
|
+
index.as :stored_searchable, :facetable
|
16
|
+
end
|
17
|
+
property :description, predicate: ::RDF::Vocab::DC.description do |index|
|
18
|
+
index.as :stored_searchable
|
19
|
+
end
|
20
|
+
has_many :members,
|
21
|
+
predicate: ::RDF::Vocab::DC.isPartOf,
|
22
|
+
class_name: 'ActiveFedora::Base'
|
23
|
+
end
|
24
|
+
|
25
|
+
def to_s
|
26
|
+
title.present? ? title : 'No Title'
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -19,7 +19,8 @@ module CurationConcerns
|
|
19
19
|
class_attribute :characterization_terms, :characterization_proxy
|
20
20
|
self.characterization_terms = [
|
21
21
|
:format_label, :file_size, :height, :width, :filename, :well_formed,
|
22
|
-
:page_count, :file_title, :last_modified, :original_checksum, :mime_type
|
22
|
+
:page_count, :file_title, :last_modified, :original_checksum, :mime_type,
|
23
|
+
:duration, :sample_rate
|
23
24
|
]
|
24
25
|
self.characterization_proxy = :original_file
|
25
26
|
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module CurationConcerns
|
2
|
+
module Publishable
|
3
|
+
extend ActiveSupport::Concern
|
4
|
+
|
5
|
+
included do
|
6
|
+
# This holds the workflow state
|
7
|
+
property :state, predicate: Vocab::FedoraResourceStatus.objState, multiple: false
|
8
|
+
|
9
|
+
class_attribute :state_workflow, instance_writer: false
|
10
|
+
self.state_workflow = StateWorkflow
|
11
|
+
end
|
12
|
+
|
13
|
+
# Override this method if you have some critera by which records should not
|
14
|
+
# display in the search results.
|
15
|
+
def suppressed?
|
16
|
+
state_workflow.new(state).pending?
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,106 @@
|
|
1
|
+
module CurationConcerns
|
2
|
+
module SolrBehavior
|
3
|
+
# TODO: aside from height and width, I don't think any of these other terms are indexed by default. - Justin 3/2016
|
4
|
+
module Characterization
|
5
|
+
def format_label
|
6
|
+
self[Solrizer.solr_name("format_label")]
|
7
|
+
end
|
8
|
+
|
9
|
+
def file_size
|
10
|
+
self[Solrizer.solr_name("file_size")]
|
11
|
+
end
|
12
|
+
|
13
|
+
def filename
|
14
|
+
self[Solrizer.solr_name("filename")]
|
15
|
+
end
|
16
|
+
|
17
|
+
def well_formed
|
18
|
+
self[Solrizer.solr_name("well_formed")]
|
19
|
+
end
|
20
|
+
|
21
|
+
def byte_order
|
22
|
+
self[Solrizer.solr_name("byte_order")]
|
23
|
+
end
|
24
|
+
|
25
|
+
def capture_device
|
26
|
+
self[Solrizer.solr_name("capture_device")]
|
27
|
+
end
|
28
|
+
|
29
|
+
def color_map
|
30
|
+
self[Solrizer.solr_name("color_map")]
|
31
|
+
end
|
32
|
+
|
33
|
+
def color_space
|
34
|
+
self[Solrizer.solr_name("color_space")]
|
35
|
+
end
|
36
|
+
|
37
|
+
def compression
|
38
|
+
self[Solrizer.solr_name("compression")]
|
39
|
+
end
|
40
|
+
|
41
|
+
def gps_timestamp
|
42
|
+
self[Solrizer.solr_name("gps_timestamp")]
|
43
|
+
end
|
44
|
+
|
45
|
+
def height
|
46
|
+
self['height_is']
|
47
|
+
end
|
48
|
+
|
49
|
+
def image_producer
|
50
|
+
self[Solrizer.solr_name("image_producer")]
|
51
|
+
end
|
52
|
+
|
53
|
+
def latitude
|
54
|
+
self[Solrizer.solr_name("latitude")]
|
55
|
+
end
|
56
|
+
|
57
|
+
def longitude
|
58
|
+
self[Solrizer.solr_name("longitude")]
|
59
|
+
end
|
60
|
+
|
61
|
+
def orientation
|
62
|
+
self[Solrizer.solr_name("orientation")]
|
63
|
+
end
|
64
|
+
|
65
|
+
def profile_name
|
66
|
+
self[Solrizer.solr_name("profile_name")]
|
67
|
+
end
|
68
|
+
|
69
|
+
def profile_version
|
70
|
+
self[Solrizer.solr_name("profile_version")]
|
71
|
+
end
|
72
|
+
|
73
|
+
def scanning_software
|
74
|
+
self[Solrizer.solr_name("scanning_software")]
|
75
|
+
end
|
76
|
+
|
77
|
+
def width
|
78
|
+
self['width_is']
|
79
|
+
end
|
80
|
+
|
81
|
+
def page_count
|
82
|
+
self[Solrizer.solr_name("page_count")]
|
83
|
+
end
|
84
|
+
|
85
|
+
def file_title
|
86
|
+
self[Solrizer.solr_name("file_title")]
|
87
|
+
end
|
88
|
+
|
89
|
+
def duration
|
90
|
+
self[Solrizer.solr_name("duration")]
|
91
|
+
end
|
92
|
+
|
93
|
+
def sample_rate
|
94
|
+
self[Solrizer.solr_name("sample_rate")]
|
95
|
+
end
|
96
|
+
|
97
|
+
def last_modified
|
98
|
+
self[Solrizer.solr_name("last_modified")]
|
99
|
+
end
|
100
|
+
|
101
|
+
def original_checksum
|
102
|
+
self[Solrizer.solr_name("original_checksum")]
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
@@ -2,6 +2,7 @@ module CurationConcerns
|
|
2
2
|
module SolrDocumentBehavior
|
3
3
|
extend ActiveSupport::Concern
|
4
4
|
include Hydra::Works::MimeTypes
|
5
|
+
include CurationConcerns::SolrBehavior::Characterization
|
5
6
|
|
6
7
|
def title_or_label
|
7
8
|
return label if title.blank?
|
@@ -64,6 +65,10 @@ module CurationConcerns
|
|
64
65
|
first(Solrizer.solr_name('hasRelatedMediaFragment', :symbol))
|
65
66
|
end
|
66
67
|
|
68
|
+
def thumbnail_id
|
69
|
+
first(Solrizer.solr_name('thumbnail_id', :symbol))
|
70
|
+
end
|
71
|
+
|
67
72
|
# Date created is indexed as a string. This allows users to enter values like: 'Circa 1840-1844'
|
68
73
|
def date_created
|
69
74
|
first(Solrizer.solr_name("date_created"))
|