arclight 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.all-contributorsrc +450 -0
- data/.babelrc +3 -0
- data/.codeclimate.yml +5 -0
- data/.eslintrc +3 -0
- data/.rubocop.yml +19 -0
- data/.rubocop_todo.yml +15 -135
- data/.travis.yml +2 -2
- data/CONTRIBUTORS.md +79 -0
- data/README.md +21 -24
- data/Rakefile +0 -1
- data/app/assets/images/blacklight/bookmark.svg +1 -0
- data/app/assets/images/blacklight/collection.svg +5 -0
- data/app/assets/images/blacklight/compact.svg +1 -25
- data/app/assets/images/blacklight/container.svg +5 -0
- data/app/assets/images/blacklight/ead.svg +1 -0
- data/app/assets/images/blacklight/file.svg +5 -0
- data/app/assets/images/blacklight/folder.svg +1 -0
- data/app/assets/images/blacklight/list.svg +1 -0
- data/app/assets/images/blacklight/minus.svg +1 -0
- data/app/assets/images/blacklight/online.svg +5 -0
- data/app/assets/images/blacklight/pdf.svg +1 -0
- data/app/assets/images/blacklight/plus.svg +1 -0
- data/app/assets/images/blacklight/repository.svg +1 -0
- data/app/assets/javascripts/arclight/arclight.js +1 -3
- data/app/assets/javascripts/arclight/collection_navigation.js +36 -53
- data/app/assets/javascripts/arclight/collection_scrollspy.js +1 -1
- data/app/assets/javascripts/arclight/context_navigation.js +374 -0
- data/app/assets/javascripts/arclight/truncator.js.erb +8 -2
- data/app/assets/stylesheets/arclight/application.scss +3 -1
- data/app/assets/stylesheets/arclight/bootstrap_overrides.scss +23 -0
- data/app/assets/stylesheets/arclight/modules/context_navigation.scss +75 -0
- data/app/assets/stylesheets/arclight/modules/hierarchy_and_online_contents.scss +28 -35
- data/app/assets/stylesheets/arclight/modules/highlights.scss +2 -1
- data/app/assets/stylesheets/arclight/modules/layout.scss +128 -14
- data/app/assets/stylesheets/arclight/modules/mastheads.scss +27 -5
- data/app/assets/stylesheets/arclight/modules/repositories.scss +1 -5
- data/app/assets/stylesheets/arclight/modules/repository_card.scss +6 -7
- data/app/assets/stylesheets/arclight/modules/search_results.scss +145 -24
- data/app/assets/stylesheets/arclight/modules/show_collection.scss +38 -59
- data/app/assets/stylesheets/arclight/responsive.scss +13 -0
- data/app/assets/stylesheets/arclight/variables.scss +21 -1
- data/app/controllers/concerns/arclight/ead_format_helpers.rb +225 -0
- data/app/controllers/concerns/arclight/field_config_helpers.rb +23 -7
- data/app/factories/blacklight_field_configuration_factory.rb +1 -0
- data/app/helpers/arclight_helper.rb +197 -35
- data/app/models/arclight/document_downloads.rb +125 -0
- data/app/models/arclight/parent.rb +4 -2
- data/app/models/arclight/parents.rb +6 -4
- data/app/models/arclight/requests/aeon_external_request.rb +42 -0
- data/app/models/arclight/requests/aeon_web_ead.rb +47 -0
- data/app/models/arclight/requests/google_form.rb +2 -2
- data/app/models/concerns/arclight/catalog.rb +14 -2
- data/app/models/concerns/arclight/search_behavior.rb +27 -12
- data/app/models/concerns/arclight/solr_document.rb +29 -7
- data/app/views/arclight/_requests.html.erb +7 -0
- data/app/views/arclight/repositories/_in_person_repository.html.erb +1 -1
- data/app/views/arclight/repositories/_repository.html.erb +2 -2
- data/app/views/arclight/repositories/_repository_contact.html.erb +9 -0
- data/app/views/arclight/repositories/index.html.erb +3 -0
- data/app/views/arclight/repositories/show.html.erb +5 -4
- data/app/views/arclight/requests/_aeon_external_request_endpoint.html.erb +9 -0
- data/app/views/arclight/requests/_aeon_web_ead.html.erb +7 -0
- data/app/views/arclight/requests/_google_form.html.erb +2 -1
- data/app/views/arclight/viewers/_oembed.html.erb +2 -1
- data/app/views/catalog/_access_contents.html.erb +15 -0
- data/app/views/catalog/_arclight_abstract_or_scope.html.erb +5 -0
- data/app/views/catalog/_arclight_bookmark_control.html.erb +38 -0
- data/app/views/catalog/_arclight_document_header_icon.html.erb +1 -0
- data/app/views/catalog/_arclight_index_compact_default.html.erb +18 -11
- data/app/views/catalog/_arclight_index_default.html.erb +45 -0
- data/app/views/catalog/_arclight_index_group_document_compact_default.html.erb +19 -0
- data/app/views/catalog/_arclight_index_group_document_default.html.erb +18 -0
- data/app/views/catalog/_arclight_online_content_indicator.html.erb +1 -3
- data/app/views/catalog/_collection_contents.html.erb +2 -10
- data/app/views/catalog/_collection_context.html.erb +15 -0
- data/app/views/catalog/_collection_context_nav.html.erb +12 -0
- data/app/views/catalog/_collection_online_contents.html.erb +3 -3
- data/app/views/catalog/_component_context.html.erb +5 -0
- data/app/views/catalog/_containers.html.erb +3 -0
- data/app/views/catalog/_context_sidebar.html.erb +2 -2
- data/app/views/catalog/_document_downloads.html.erb +14 -0
- data/app/views/catalog/_group.html.erb +21 -0
- data/app/views/catalog/_group_header_compact_default.html.erb +15 -0
- data/app/views/catalog/_group_header_default.html.erb +20 -0
- data/app/views/catalog/_group_toggle.html.erb +10 -0
- data/app/views/catalog/_home.html.erb +1 -1
- data/app/views/catalog/_index_breadcrumb_default.html.erb +5 -2
- data/app/views/catalog/_index_collection_context_default.html.erb +53 -0
- data/app/views/catalog/_index_header.html.erb +3 -3
- data/app/views/catalog/_index_online_contents_default.html.erb +1 -1
- data/app/views/catalog/_online_content_label.html.erb +5 -0
- data/app/views/catalog/_search_form.html.erb +34 -0
- data/app/views/catalog/_search_results.html.erb +1 -4
- data/app/views/catalog/_show_actions_box_default.html.erb +27 -0
- data/app/views/catalog/_show_breadcrumbs_default.html.erb +5 -20
- data/app/views/catalog/_show_collection.html.erb +42 -24
- data/app/views/catalog/_show_default.html.erb +63 -35
- data/app/views/catalog/_show_upper_metadata_default.html.erb +1 -1
- data/app/views/catalog/_sort_and_per_page.html.erb +8 -0
- data/app/views/catalog/_within_collection_dropdown.html.erb +26 -0
- data/app/views/shared/_breadcrumbs.html.erb +4 -4
- data/app/views/shared/_context_sidebar.html.erb +2 -2
- data/app/views/shared/_header_navbar.html.erb +13 -17
- data/app/views/shared/_show_breadcrumbs.html.erb +27 -0
- data/arclight.gemspec +5 -6
- data/config/i18n-tasks.yml +2 -1
- data/config/locales/arclight.en.yml +54 -21
- data/config/repositories.yml +0 -0
- data/lib/arclight/engine.rb +22 -12
- data/lib/arclight/hash_absolute_xpath.rb +11 -7
- data/lib/arclight/level_label.rb +46 -0
- data/lib/arclight/normalized_date.rb +2 -2
- data/lib/arclight/normalized_id.rb +1 -0
- data/lib/arclight/normalized_title.rb +1 -0
- data/lib/arclight/repository.rb +58 -5
- data/lib/arclight/traject/ead2_config.rb +178 -159
- data/lib/arclight/traject/nokogiri_namespaceless_reader.rb +22 -0
- data/lib/arclight/version.rb +1 -1
- data/lib/arclight/viewers/oembed.rb +1 -0
- data/lib/arclight/year_range.rb +9 -1
- data/lib/generators/arclight/install_generator.rb +5 -1
- data/lib/generators/arclight/templates/catalog_controller.rb +128 -100
- data/lib/generators/arclight/templates/config/downloads.yml +12 -0
- data/lib/generators/arclight/templates/config/repositories.yml +20 -2
- data/lib/generators/arclight/update_generator.rb +1 -1
- data/lib/tasks/index.rake +18 -20
- data/package.json +8 -1
- data/solr/conf/schema.xml +51 -292
- data/solr/conf/solrconfig.xml +40 -125
- data/tasks/arclight.rake +1 -0
- data/vendor/assets/javascripts/responsiveTruncator.js +2 -2
- metadata +71 -44
- data/app/assets/javascripts/arclight/collection_context.js +0 -18
- data/app/assets/javascripts/arclight/component_ancestors.js +0 -56
- data/app/assets/javascripts/arclight/search_results.js +0 -15
- data/app/assets/stylesheets/arclight/modules/sidebar.scss +0 -21
- data/app/views/catalog/_collection_count.html.erb +0 -7
- data/app/views/catalog/_collection_downloads.html.erb +0 -15
- data/app/views/catalog/_collection_overview.html.erb +0 -7
- data/app/views/catalog/_component_contents.html.erb +0 -16
- data/app/views/catalog/_component_overview.html.erb +0 -40
- data/app/views/catalog/_index_header_hierarchy_default.html.erb +0 -42
- data/app/views/catalog/_index_hierarchy_default.html.erb +0 -28
- data/app/views/catalog/_results_histogram.html.erb +0 -15
- data/app/views/catalog/_show_component_sidebar.html.erb +0 -12
- data/app/views/catalog/_show_sidebar.html.erb +0 -22
- data/lib/arclight/custom_component.rb +0 -99
- data/lib/arclight/custom_document.rb +0 -93
- data/lib/arclight/indexer.rb +0 -9
- data/lib/arclight/shared_indexing_behavior.rb +0 -97
- data/lib/arclight/shared_terminology_behavior.rb +0 -65
- data/lib/arclight/solr_ead_indexer_ext.rb +0 -155
@@ -1,18 +0,0 @@
|
|
1
|
-
Blacklight.onLoad(function () {
|
2
|
-
'use strict';
|
3
|
-
|
4
|
-
$('[data-arclight-collection-context="true"]').each(function (i, element) {
|
5
|
-
var $el = $(element);
|
6
|
-
var data = $el.data();
|
7
|
-
$.ajax({
|
8
|
-
url: data.arclightCollectionContextUrl
|
9
|
-
}).done(function (response) {
|
10
|
-
var resp = $.parseHTML(response);
|
11
|
-
var $doc = $(resp);
|
12
|
-
var link = $('<a></a>').attr('href', data.arclightCollectionContextUrl);
|
13
|
-
var addedSection = $doc.find('.al-show-header-section');
|
14
|
-
addedSection.find('h1').wrapInner(link);
|
15
|
-
$el.hide().html(addedSection).fadeIn(500);
|
16
|
-
});
|
17
|
-
});
|
18
|
-
});
|
@@ -1,56 +0,0 @@
|
|
1
|
-
(function (global) {
|
2
|
-
var ComponentAncestors = {
|
3
|
-
init: function (el) {
|
4
|
-
var $el = $(el);
|
5
|
-
var data = $el.data();
|
6
|
-
var ancestors = $('<div>');
|
7
|
-
var collectionId = data.arclightAncestors.shift();
|
8
|
-
var allDone = $.Deferred();
|
9
|
-
|
10
|
-
data.arclightAncestors.forEach(function (id, i) {
|
11
|
-
var requestId = collectionId + id;
|
12
|
-
var currentDiv = $('<div class="documents-hierarchy extra-indent al-hierarchy-level-' + (i) + '">');
|
13
|
-
ancestors.append(currentDiv);
|
14
|
-
|
15
|
-
$.ajax({
|
16
|
-
url: data.arclightPath,
|
17
|
-
data: {
|
18
|
-
q: 'id:' + requestId,
|
19
|
-
search_field: 'all_fields',
|
20
|
-
view: 'hierarchy'
|
21
|
-
}
|
22
|
-
}).done(function (response) {
|
23
|
-
var resp = $.parseHTML(response);
|
24
|
-
var $doc = $(resp);
|
25
|
-
var thisAncestor = $doc.find('article.document-position-0');
|
26
|
-
|
27
|
-
// Remove collapsible stuff
|
28
|
-
thisAncestor.find('.al-toggle-view-more').remove();
|
29
|
-
thisAncestor.find('.collapse').remove();
|
30
|
-
thisAncestor.find('hr').remove();
|
31
|
-
|
32
|
-
currentDiv.append(thisAncestor);
|
33
|
-
if (i + 1 === data.arclightAncestors.length) {
|
34
|
-
allDone.resolve();
|
35
|
-
}
|
36
|
-
});
|
37
|
-
});
|
38
|
-
|
39
|
-
// Wait for all requests to finish
|
40
|
-
allDone.done(function () {
|
41
|
-
$el.html(ancestors);
|
42
|
-
});
|
43
|
-
}
|
44
|
-
};
|
45
|
-
|
46
|
-
global.ComponentAncestors = ComponentAncestors;
|
47
|
-
}(this));
|
48
|
-
|
49
|
-
|
50
|
-
Blacklight.onLoad(function () {
|
51
|
-
'use strict';
|
52
|
-
|
53
|
-
$('[data-arclight-ancestors]').each(function (i, e) {
|
54
|
-
ComponentAncestors.init(e); // eslint-disable-line no-undef
|
55
|
-
});
|
56
|
-
});
|
@@ -1,15 +0,0 @@
|
|
1
|
-
Blacklight.onLoad(function () {
|
2
|
-
'use strict';
|
3
|
-
|
4
|
-
var histogramContent = $('#al-date-range-histogram-content');
|
5
|
-
var showSpan = $('#al-date-range-histogram-show');
|
6
|
-
var hideSpan = $('#al-date-range-histogram-hide');
|
7
|
-
histogramContent.on('show.bs.collapse', function () {
|
8
|
-
showSpan.attr('hidden', 'hidden');
|
9
|
-
hideSpan.removeAttr('hidden');
|
10
|
-
});
|
11
|
-
histogramContent.on('hide.bs.collapse', function () {
|
12
|
-
hideSpan.attr('hidden', 'hidden');
|
13
|
-
showSpan.removeAttr('hidden');
|
14
|
-
});
|
15
|
-
});
|
@@ -1,21 +0,0 @@
|
|
1
|
-
.al-in-person-repository-location {
|
2
|
-
clear: left;
|
3
|
-
}
|
4
|
-
|
5
|
-
.al-digital-object {
|
6
|
-
margin-bottom: $spacer;
|
7
|
-
|
8
|
-
.al-digital-object-label {
|
9
|
-
margin-bottom: ($spacer / 2);
|
10
|
-
}
|
11
|
-
}
|
12
|
-
|
13
|
-
// Hiding this from display since we don't need it.
|
14
|
-
dt.blacklight-digital_objects_ssm {
|
15
|
-
display: none;
|
16
|
-
}
|
17
|
-
|
18
|
-
.al-sticky-sidebar .al-request-button {
|
19
|
-
border: 0;
|
20
|
-
padding-left: 0;
|
21
|
-
}
|
@@ -1,15 +0,0 @@
|
|
1
|
-
<% if downloads.present? && (downloads[:pdf].present? || downloads[:ead].present?) %>
|
2
|
-
<div class='dropdown al-collection-actions-menu'>
|
3
|
-
<button class='btn btn-secondary btn-sm dropdown-toggle' type="button" id="download-dropdown" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
4
|
-
<%= t 'arclight.views.show.download.default' %>
|
5
|
-
</button>
|
6
|
-
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="download-dropdown">
|
7
|
-
<% if downloads[:pdf].present? %>
|
8
|
-
<a class="dropdown-item" href="<%= downloads[:pdf][:href] %>"><%= t('arclight.views.show.download.pdf', size: downloads[:pdf][:size]) %></a>
|
9
|
-
<% end %>
|
10
|
-
<% if downloads[:ead].present? %>
|
11
|
-
<a class="dropdown-item" href="<%= downloads[:ead][:href] %>"><%= t('arclight.views.show.download.ead', size: downloads[:ead][:size]) %></a>
|
12
|
-
<% end %>
|
13
|
-
</div>
|
14
|
-
</div>
|
15
|
-
<% end %>
|
@@ -1,7 +0,0 @@
|
|
1
|
-
<h2 class="sr-only">Collection description</h2>
|
2
|
-
<% unless blacklight_config.show.metadata_partials.nil? %>
|
3
|
-
<% blacklight_config.show.metadata_partials.each do |metadata| %>
|
4
|
-
<% next unless fields_have_content?(@document, metadata) %>
|
5
|
-
<%= render partial: 'custom_metadata', locals: { document: @document, field_accessor: metadata } %>
|
6
|
-
<% end %>
|
7
|
-
<% end %>
|
@@ -1,16 +0,0 @@
|
|
1
|
-
<% document ||= @document %>
|
2
|
-
<% @sub_level ||= document.component_level + 1 %>
|
3
|
-
|
4
|
-
|
5
|
-
<h2 class="sr-only">Component inventory</h2>
|
6
|
-
<div class="component-level-only">
|
7
|
-
<%= content_tag(
|
8
|
-
:div, '',
|
9
|
-
class: 'al-contents',
|
10
|
-
data: {
|
11
|
-
arclight: {
|
12
|
-
hierarchy: true, level: @sub_level, path: search_catalog_path, name: document.collection_name, parent: document.reference
|
13
|
-
}
|
14
|
-
}
|
15
|
-
) %>
|
16
|
-
</div>
|
@@ -1,40 +0,0 @@
|
|
1
|
-
<h2 class="sr-only">Component description</h2>
|
2
|
-
<!-- Section below will be moved into its own partial later -->
|
3
|
-
<%= content_tag(:div, id: t("arclight.views.show.sections.collection_context_field").parameterize) do %>
|
4
|
-
<h3 class='al-show-sub-heading'>
|
5
|
-
<%= t("arclight.views.show.sections.collection_context_field") %>
|
6
|
-
</h3>
|
7
|
-
<%= content_tag(
|
8
|
-
:div, '',
|
9
|
-
class: 'al-context',
|
10
|
-
data: {
|
11
|
-
arclight_collection_context: true,
|
12
|
-
arclight_collection_context_url: solr_document_path(
|
13
|
-
normalize_id(@document.eadid)
|
14
|
-
)
|
15
|
-
}
|
16
|
-
) %>
|
17
|
-
<%= content_tag(
|
18
|
-
:div, '',
|
19
|
-
class: 'al-ancestors',
|
20
|
-
data: {
|
21
|
-
arclight_ancestors: @document.parent_ids,
|
22
|
-
arclight_path: search_catalog_path(hierarchy_context: 'component')
|
23
|
-
}
|
24
|
-
) %>
|
25
|
-
<%= content_tag(
|
26
|
-
:div, '',
|
27
|
-
class: "al-contents al-hierarchy-level-#{@document.component_level} extra-indent documents-hierarchy",
|
28
|
-
data: {
|
29
|
-
arclight: {
|
30
|
-
hierarchy: true,
|
31
|
-
level: @document.component_level,
|
32
|
-
path: search_catalog_path(hierarchy_context: 'component'),
|
33
|
-
name: @document.collection_name,
|
34
|
-
parent: @document.parent_ids.last,
|
35
|
-
highlightId: @document.id
|
36
|
-
}
|
37
|
-
}
|
38
|
-
) %>
|
39
|
-
|
40
|
-
<% end %>
|
@@ -1,42 +0,0 @@
|
|
1
|
-
<div class="documentHeader row" data-document-id="<%= document.id %>">
|
2
|
-
<% requestable = item_requestable?('', { document: document }) %>
|
3
|
-
<h3 class="index_title document-title-heading col-md-8">
|
4
|
-
<% if document.containers.present? %>
|
5
|
-
<span class="document-title-containers">
|
6
|
-
<%= document.containers.join(', ') %>:
|
7
|
-
</span>
|
8
|
-
<% end %>
|
9
|
-
<% counter = document_counter_with_offset(document_counter) %>
|
10
|
-
<%= link_to_document document, document_show_link_field(document), counter: counter %>
|
11
|
-
<%= render_document_partial(document, 'arclight_online_content_indicator') %>
|
12
|
-
<% if document.children? %>
|
13
|
-
<div class='al-hierarchy-children-status'>
|
14
|
-
<span class='badge badge-default al-number-of-children-badge'>
|
15
|
-
<%= t(:'arclight.views.index.number_of_children', count: document.number_of_children) %>
|
16
|
-
<% unless hierarchy_component_context? %>
|
17
|
-
<%= link_to(
|
18
|
-
t('arclight.hierarchy.view_all'),
|
19
|
-
"##{document.reference}-collapsible-hierarchy",
|
20
|
-
class: 'al-toggle-view-all',
|
21
|
-
data: {
|
22
|
-
toggle: 'collapse'
|
23
|
-
}
|
24
|
-
)
|
25
|
-
%>
|
26
|
-
<% end %>
|
27
|
-
</span>
|
28
|
-
</div>
|
29
|
-
<% end %>
|
30
|
-
</h3>
|
31
|
-
|
32
|
-
<div class="al-hierarchy-side-content float-right col">
|
33
|
-
<% unless hierarchy_component_context? %>
|
34
|
-
<div class="index-document-functions">
|
35
|
-
<%= render partial: 'catalog/bookmark_control', locals: { document: document } %>
|
36
|
-
</div>
|
37
|
-
<% end %>
|
38
|
-
<% if requestable %>
|
39
|
-
<%= render partial: 'arclight/requests/google_form', locals: { document: document } %>
|
40
|
-
<% end %>
|
41
|
-
</div>
|
42
|
-
</div>
|
@@ -1,28 +0,0 @@
|
|
1
|
-
<%= content_tag('div', class: 'al-document-abstract-or-scope') do %>
|
2
|
-
<%= content_tag(:h4, I18n.t('arclight.hierarchy.scope_and_contents'), class: 'al-hierarchy-sub-heading') %>
|
3
|
-
<%= content_tag('div', 'data-arclight-truncate' => true) do %>
|
4
|
-
<%= document.abstract_or_scope %>
|
5
|
-
<% end %>
|
6
|
-
<% end if document.abstract_or_scope %>
|
7
|
-
|
8
|
-
<% if document.number_of_children > 0 %>
|
9
|
-
<%= content_tag(:div, id: "#{document.reference}-collapsible-hierarchy",
|
10
|
-
class: "collapse al-hierarchy-level-#{document.component_level}",
|
11
|
-
) do %>
|
12
|
-
|
13
|
-
<%= content_tag(
|
14
|
-
:div, '',
|
15
|
-
class: 'al-contents',
|
16
|
-
data: {
|
17
|
-
arclight: {
|
18
|
-
hierarchy: true,
|
19
|
-
level: document.component_level + 1,
|
20
|
-
path: search_catalog_path,
|
21
|
-
name: document.collection_name,
|
22
|
-
parent: document.reference
|
23
|
-
}
|
24
|
-
}
|
25
|
-
) %>
|
26
|
-
|
27
|
-
<% end %>
|
28
|
-
<% end %>
|
@@ -1,15 +0,0 @@
|
|
1
|
-
<div class='al-data-range-histogram row'>
|
2
|
-
<div class='col-md-12'>
|
3
|
-
<div id='al-date-range-histogram-content' class='collapse facet-content'>
|
4
|
-
<%= render partial: 'arclight_rangelimit', locals: { field_name: :date_range_sim, solr_field: :date_range_sim } %>
|
5
|
-
</div>
|
6
|
-
<a class='float-right' data-toggle='collapse' href='#al-date-range-histogram-content' aria-expanded='false' aria-controls='al-date-range-histogram-content'>
|
7
|
-
<span id="al-date-range-histogram-show">
|
8
|
-
<%= t('arclight.date_range_histogram.show') %>
|
9
|
-
</span>
|
10
|
-
<span id="al-date-range-histogram-hide" hidden="hidden">
|
11
|
-
<%= t('arclight.date_range_histogram.hide') %>
|
12
|
-
</span>
|
13
|
-
</a>
|
14
|
-
</div>
|
15
|
-
</div>
|
@@ -1,12 +0,0 @@
|
|
1
|
-
<div class='al-sticky-sidebar'>
|
2
|
-
<h2 class="sr-only">Sidebar</h2>
|
3
|
-
|
4
|
-
<% unless blacklight_config.show.component_sidebar_items.nil? %>
|
5
|
-
<div id="accordion" role="tablist" aria-multiselectable="true">
|
6
|
-
<% items = blacklight_config.show.component_sidebar_items.select { |i| fields_have_content?(@document, i) } %>
|
7
|
-
<% items.each_with_index do |item, index| %>
|
8
|
-
<%= render partial: 'context_card', locals: { document: @document, field_accessor: item, card_index: index} %>
|
9
|
-
<% end %>
|
10
|
-
</div>
|
11
|
-
<% end %>
|
12
|
-
</div>
|
@@ -1,22 +0,0 @@
|
|
1
|
-
<div class='al-sticky-sidebar'>
|
2
|
-
<h2 class="sr-only">Sidebar</h2>
|
3
|
-
<div class='al-sidebar-navigation-overview card'>
|
4
|
-
<div class='card-header'>
|
5
|
-
<h3 class="mb-0"><%= t('arclight.views.show.navigation_sidebar.title') %></h3>
|
6
|
-
</div>
|
7
|
-
<div class='card-body'>
|
8
|
-
<ul class='nav nav-pills flex-column'>
|
9
|
-
<% unless blacklight_config.show.metadata_partials.nil? %>
|
10
|
-
<% blacklight_config.show.metadata_partials.each do |item| %>
|
11
|
-
<% next unless fields_have_content?(@document, item) %>
|
12
|
-
<li class='nav-item'>
|
13
|
-
<%= link_to t("arclight.views.show.sections.#{item}"), "##{t("arclight.views.show.sections.#{item}").parameterize}", class: 'nav-link' %>
|
14
|
-
</li>
|
15
|
-
<% end %>
|
16
|
-
<% end %>
|
17
|
-
</ul>
|
18
|
-
</div>
|
19
|
-
</div>
|
20
|
-
|
21
|
-
<%= render 'shared/context_sidebar' %>
|
22
|
-
</div>
|
@@ -1,99 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Arclight
|
4
|
-
##
|
5
|
-
# An Arclight custom component indexing code
|
6
|
-
class CustomComponent < SolrEad::Component
|
7
|
-
extend Arclight::SharedTerminologyBehavior
|
8
|
-
include Arclight::SharedIndexingBehavior
|
9
|
-
use_terminology SolrEad::Component
|
10
|
-
|
11
|
-
# we extend the terminology to provide additional fields and/or indexing strategies
|
12
|
-
# than `solr_ead` provides as-is. in many cases we're doing redundant indexing, but
|
13
|
-
# we're trying to modify the `solr_ead` gem as little as possible
|
14
|
-
extend_terminology do |t|
|
15
|
-
# identifiers
|
16
|
-
t.level(path: 'c/@level', index_as: %i[displayable]) # machine-readable for string `level_ssm`
|
17
|
-
t.otherlevel(path: 'c/@otherlevel', index_as: %i[displayable])
|
18
|
-
t.ref_(path: '/c/@id', index_as: %i[displayable])
|
19
|
-
|
20
|
-
# facets
|
21
|
-
t.creator(path: "c/did/origination[@label='creator']/*/text()", index_as: %i[displayable facetable symbol])
|
22
|
-
t.places(path: 'c/controlaccess/geogname/text()', index_as: %i[displayable facetable symbol])
|
23
|
-
|
24
|
-
add_unitid(t, 'c/')
|
25
|
-
add_extent(t, 'c/')
|
26
|
-
add_dates(t, 'c/')
|
27
|
-
add_searchable_notes(t, 'c/')
|
28
|
-
end
|
29
|
-
|
30
|
-
def to_solr(solr_doc = {})
|
31
|
-
super
|
32
|
-
solr_doc['id'] = Arclight::NormalizedId.new(solr_doc['id']).to_s
|
33
|
-
solr_doc['creator_sort'] = creator.to_a.join(', ') if creator.present?
|
34
|
-
add_component_fields(solr_doc)
|
35
|
-
solr_doc
|
36
|
-
end
|
37
|
-
|
38
|
-
private
|
39
|
-
|
40
|
-
def add_component_fields(solr_doc)
|
41
|
-
component_field_definitions.each do |field|
|
42
|
-
# we want to use `set_field` rather than `insert_field` since we may be overriding fields
|
43
|
-
Solrizer.set_field(solr_doc, field[:name], field[:value], field[:index_as])
|
44
|
-
end
|
45
|
-
add_date_ranges(solr_doc)
|
46
|
-
add_normalized_title(solr_doc)
|
47
|
-
resolve_repository(solr_doc)
|
48
|
-
add_digital_content(prefix: 'c', solr_doc: solr_doc)
|
49
|
-
add_digital_content(prefix: 'c/did', solr_doc: solr_doc)
|
50
|
-
end
|
51
|
-
|
52
|
-
def component_field_definitions
|
53
|
-
[
|
54
|
-
{ name: 'level', value: formatted_level, index_as: :facetable },
|
55
|
-
{ name: 'names', value: names, index_as: :symbol },
|
56
|
-
{ name: 'access_subjects', value: access_subjects, index_as: :symbol },
|
57
|
-
{ name: 'containers', value: containers, index_as: :symbol },
|
58
|
-
{ name: 'has_online_content', value: online_content?, index_as: :symbol }
|
59
|
-
]
|
60
|
-
end
|
61
|
-
|
62
|
-
def resolve_repository(solr_doc)
|
63
|
-
repository = solr_doc[Solrizer.solr_name('repository', :displayable)]
|
64
|
-
%i[displayable facetable].each do |index_as|
|
65
|
-
Solrizer.set_field(solr_doc, 'repository', repository_as_configured(repository), index_as)
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
# @see http://eadiva.com/2/c/
|
70
|
-
def formatted_level
|
71
|
-
# terminology definitions for level yield Arrays and in this case single values
|
72
|
-
# TODO: OM changes the behavior of `level = level.first` such that it always returns `nil`
|
73
|
-
# so need our own local variable here
|
74
|
-
actual_level = level.first.to_s if level.respond_to? :first
|
75
|
-
|
76
|
-
if actual_level == 'otherlevel'
|
77
|
-
alternative_level = otherlevel.first.to_s if otherlevel.respond_to? :first
|
78
|
-
alternative_level.present? ? alternative_level : 'Other'
|
79
|
-
elsif actual_level.present?
|
80
|
-
actual_level.capitalize
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
def names
|
85
|
-
names_array(%w[corpname famname name persname], parent: 'c')
|
86
|
-
end
|
87
|
-
|
88
|
-
def access_subjects
|
89
|
-
subjects_array(%w[subject function occupation genreform], parent: 'c')
|
90
|
-
end
|
91
|
-
|
92
|
-
def containers
|
93
|
-
contains = search('//container').to_a
|
94
|
-
contains.map do |c|
|
95
|
-
"#{c.attributes['type'].try(:value)} #{c.text}".strip
|
96
|
-
end
|
97
|
-
end
|
98
|
-
end
|
99
|
-
end
|
@@ -1,93 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Arclight
|
4
|
-
##
|
5
|
-
# An Arclight custom document indexing code
|
6
|
-
class CustomDocument < SolrEad::Document
|
7
|
-
extend Arclight::SharedTerminologyBehavior
|
8
|
-
include Arclight::SharedIndexingBehavior
|
9
|
-
use_terminology SolrEad::Document
|
10
|
-
|
11
|
-
# we extend the terminology to provide additional fields and/or indexing strategies
|
12
|
-
# than `solr_ead` provides as-is. in many cases we're doing redundant indexing, but
|
13
|
-
# we're trying to modify the `solr_ead` gem as little as possible
|
14
|
-
extend_terminology do |t|
|
15
|
-
# facets
|
16
|
-
t.repository(path: 'archdesc/did/repository/corpname/text() | archdesc/did/repository/name/text()', index_as: %i[displayable facetable])
|
17
|
-
t.creator(path: "archdesc/did/origination[@label='creator']/*/text()", index_as: %i[displayable facetable symbol])
|
18
|
-
t.creator_persname(path: "archdesc/did/origination[@label='creator']/persname/text()", index_as: %i[displayable facetable symbol])
|
19
|
-
t.creator_corpname(path: "archdesc/did/origination[@label='creator']/corpname/text()", index_as: %i[displayable facetable symbol])
|
20
|
-
t.creator_famname(path: "archdesc/did/origination[@label='creator']/famname/text()", index_as: %i[displayable facetable symbol])
|
21
|
-
t.function(path: 'archdesc/controlaccess/function/text()', index_as: %i[displayable facetable])
|
22
|
-
t.occupation(path: 'archdesc/controlaccess/occupation/text()', index_as: %i[displayable facetable])
|
23
|
-
t.places(path: 'archdesc/controlaccess/geogname/text()', index_as: %i[displayable facetable symbol])
|
24
|
-
|
25
|
-
add_unitid(t, 'archdesc/')
|
26
|
-
add_extent(t, 'archdesc/')
|
27
|
-
add_dates(t, 'archdesc/')
|
28
|
-
add_searchable_notes(t, 'archdesc/')
|
29
|
-
end
|
30
|
-
|
31
|
-
def to_solr(solr_doc = {})
|
32
|
-
super
|
33
|
-
solr_doc['id'] = Arclight::NormalizedId.new(eadid.first).to_s
|
34
|
-
solr_doc['creator_sort'] = creator.to_a.join(', ') if creator.present?
|
35
|
-
add_document_fields(solr_doc)
|
36
|
-
solr_doc
|
37
|
-
end
|
38
|
-
|
39
|
-
private
|
40
|
-
|
41
|
-
def add_document_fields(solr_doc)
|
42
|
-
arclight_field_definitions.each do |field|
|
43
|
-
# we want to use `set_field` rather than `insert_field` since we may be overriding fields
|
44
|
-
Solrizer.set_field(solr_doc, field[:name], field[:value], field[:index_as])
|
45
|
-
end
|
46
|
-
|
47
|
-
add_date_ranges(solr_doc)
|
48
|
-
add_digital_content(prefix: 'ead/archdesc', solr_doc: solr_doc)
|
49
|
-
add_normalized_titles(solr_doc)
|
50
|
-
end
|
51
|
-
|
52
|
-
def add_normalized_titles(solr_doc)
|
53
|
-
title = add_normalized_title(solr_doc)
|
54
|
-
Solrizer.set_field(solr_doc, 'collection', title, :facetable)
|
55
|
-
Solrizer.set_field(solr_doc, 'collection', title, :displayable)
|
56
|
-
end
|
57
|
-
|
58
|
-
def arclight_field_definitions
|
59
|
-
[
|
60
|
-
{ name: 'level', value: 'collection', index_as: :displayable },
|
61
|
-
{ name: 'level', value: 'Collection', index_as: :facetable },
|
62
|
-
{ name: 'names', value: names, index_as: :symbol },
|
63
|
-
{ name: 'access_subjects', value: access_subjects, index_as: :symbol },
|
64
|
-
{ name: 'creators', value: creators, index_as: :symbol },
|
65
|
-
{ name: 'has_online_content', value: online_content?, index_as: :symbol },
|
66
|
-
{ name: 'repository', value: repository_as_configured(repository), index_as: :displayable },
|
67
|
-
{ name: 'repository', value: repository_as_configured(repository), index_as: :facetable },
|
68
|
-
{ name: 'names_coll', value: names_coll, index_as: :symbol }
|
69
|
-
]
|
70
|
-
end
|
71
|
-
|
72
|
-
def names
|
73
|
-
[corpname, famname, name, persname].flatten.compact.uniq - repository
|
74
|
-
end
|
75
|
-
|
76
|
-
def names_coll
|
77
|
-
names_array(%w[corpname famname name persname], parent: 'archdesc')
|
78
|
-
end
|
79
|
-
|
80
|
-
def creators
|
81
|
-
[creator_persname, creator_corpname, creator_famname].flatten.compact.uniq - repository
|
82
|
-
end
|
83
|
-
|
84
|
-
# Combine subjets into one group from
|
85
|
-
# <controlaccess/><subject></subject>
|
86
|
-
# <controlaccess/><function></function>
|
87
|
-
# <controlaccess/><genreform></genreform>
|
88
|
-
# <controlaccess/><occupation></occupation>
|
89
|
-
def access_subjects
|
90
|
-
subjects_array(%w[subject function occupation genreform], parent: 'archdesc')
|
91
|
-
end
|
92
|
-
end
|
93
|
-
end
|