arclight 0.1.4 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. checksums.yaml +5 -5
  2. data/.all-contributorsrc +450 -0
  3. data/.babelrc +3 -0
  4. data/.codeclimate.yml +5 -0
  5. data/.eslintrc +3 -0
  6. data/.gitignore +1 -0
  7. data/.rubocop.yml +20 -42
  8. data/.rubocop_todo.yml +139 -0
  9. data/.travis.yml +24 -20
  10. data/CONTRIBUTORS.md +79 -0
  11. data/README.md +34 -23
  12. data/Rakefile +0 -1
  13. data/app/assets/images/blacklight/bookmark.svg +1 -0
  14. data/app/assets/images/blacklight/collection.svg +5 -0
  15. data/app/assets/images/blacklight/compact.svg +1 -25
  16. data/app/assets/images/blacklight/container.svg +5 -0
  17. data/app/assets/images/blacklight/ead.svg +1 -0
  18. data/app/assets/images/blacklight/file.svg +5 -0
  19. data/app/assets/images/blacklight/folder.svg +1 -0
  20. data/app/assets/images/blacklight/list.svg +1 -0
  21. data/app/assets/images/blacklight/minus.svg +1 -0
  22. data/app/assets/images/blacklight/online.svg +5 -0
  23. data/app/assets/images/blacklight/pdf.svg +1 -0
  24. data/app/assets/images/blacklight/plus.svg +1 -0
  25. data/app/assets/images/blacklight/repository.svg +1 -0
  26. data/app/assets/javascripts/arclight/arclight.js +1 -2
  27. data/app/assets/javascripts/arclight/collection_navigation.js +36 -50
  28. data/app/assets/javascripts/arclight/collection_scrollspy.js +1 -1
  29. data/app/assets/javascripts/arclight/context_navigation.js +386 -0
  30. data/app/assets/javascripts/arclight/oembed_viewer.js +11 -4
  31. data/app/assets/javascripts/arclight/truncator.js.erb +8 -2
  32. data/app/assets/stylesheets/arclight/application.scss +4 -1
  33. data/app/assets/stylesheets/arclight/bootstrap_overrides.scss +23 -0
  34. data/app/assets/stylesheets/arclight/modules/context_navigation.scss +75 -0
  35. data/app/assets/stylesheets/arclight/modules/hierarchy_and_online_contents.scss +34 -38
  36. data/app/assets/stylesheets/arclight/modules/highlights.scss +2 -1
  37. data/app/assets/stylesheets/arclight/modules/icons.scss +4 -0
  38. data/app/assets/stylesheets/arclight/modules/layout.scss +149 -11
  39. data/app/assets/stylesheets/arclight/modules/mastheads.scss +60 -5
  40. data/app/assets/stylesheets/arclight/modules/repositories.scss +1 -5
  41. data/app/assets/stylesheets/arclight/modules/repository_card.scss +6 -7
  42. data/app/assets/stylesheets/arclight/modules/search_results.scss +145 -24
  43. data/app/assets/stylesheets/arclight/modules/show_collection.scss +38 -59
  44. data/app/assets/stylesheets/arclight/responsive.scss +13 -0
  45. data/app/assets/stylesheets/arclight/variables.scss +21 -1
  46. data/app/controllers/concerns/arclight/ead_format_helpers.rb +225 -0
  47. data/app/controllers/concerns/arclight/field_config_helpers.rb +23 -7
  48. data/app/factories/blacklight_field_configuration_factory.rb +1 -0
  49. data/app/helpers/arclight_helper.rb +198 -36
  50. data/app/models/arclight/document_downloads.rb +125 -0
  51. data/app/models/arclight/parent.rb +4 -2
  52. data/app/models/arclight/parents.rb +6 -4
  53. data/app/models/arclight/requests/aeon_external_request.rb +42 -0
  54. data/app/models/arclight/requests/aeon_web_ead.rb +47 -0
  55. data/app/models/arclight/requests/google_form.rb +2 -2
  56. data/app/models/concerns/arclight/catalog.rb +14 -2
  57. data/app/models/concerns/arclight/search_behavior.rb +27 -12
  58. data/app/models/concerns/arclight/solr_document.rb +29 -7
  59. data/app/views/arclight/_requests.html.erb +7 -0
  60. data/app/views/arclight/repositories/_in_person_repository.html.erb +2 -2
  61. data/app/views/arclight/repositories/_repository.html.erb +2 -2
  62. data/app/views/arclight/repositories/_repository_contact.html.erb +9 -0
  63. data/app/views/arclight/repositories/index.html.erb +3 -0
  64. data/app/views/arclight/repositories/show.html.erb +5 -4
  65. data/app/views/arclight/requests/_aeon_external_request_endpoint.html.erb +9 -0
  66. data/app/views/arclight/requests/_aeon_web_ead.html.erb +7 -0
  67. data/app/views/arclight/requests/_google_form.html.erb +2 -1
  68. data/app/views/arclight/viewers/_oembed.html.erb +2 -1
  69. data/app/views/catalog/_access_contents.html.erb +15 -0
  70. data/app/views/catalog/_arclight_abstract_or_scope.html.erb +5 -0
  71. data/app/views/catalog/_arclight_bookmark_control.html.erb +38 -0
  72. data/app/views/catalog/_arclight_document_header_icon.html.erb +1 -0
  73. data/app/views/catalog/_arclight_index_compact_default.html.erb +18 -11
  74. data/app/views/catalog/_arclight_index_default.html.erb +45 -0
  75. data/app/views/catalog/_arclight_index_group_document_compact_default.html.erb +19 -0
  76. data/app/views/catalog/_arclight_index_group_document_default.html.erb +18 -0
  77. data/app/views/catalog/_arclight_online_content_indicator.html.erb +1 -3
  78. data/app/views/catalog/_collection_contents.html.erb +2 -10
  79. data/app/views/catalog/_collection_context.html.erb +15 -0
  80. data/app/views/catalog/_collection_context_nav.html.erb +12 -0
  81. data/app/views/catalog/_collection_online_contents.html.erb +3 -3
  82. data/app/views/catalog/_component_context.html.erb +5 -0
  83. data/app/views/catalog/_containers.html.erb +3 -0
  84. data/app/views/catalog/_context_card.html.erb +1 -1
  85. data/app/views/catalog/_context_sidebar.html.erb +2 -2
  86. data/app/views/catalog/_custom_metadata.html.erb +1 -1
  87. data/app/views/catalog/_document_downloads.html.erb +14 -0
  88. data/app/views/catalog/_group.html.erb +21 -0
  89. data/app/views/catalog/_group_header_compact_default.html.erb +15 -0
  90. data/app/views/catalog/_group_header_default.html.erb +20 -0
  91. data/app/views/catalog/_group_toggle.html.erb +10 -0
  92. data/app/views/catalog/_home.html.erb +1 -1
  93. data/app/views/catalog/_index_breadcrumb_default.html.erb +5 -2
  94. data/app/views/catalog/_index_collection_context_default.html.erb +53 -0
  95. data/app/views/catalog/_index_default.html.erb +1 -1
  96. data/app/views/catalog/_index_header.html.erb +3 -3
  97. data/app/views/catalog/_index_online_contents_default.html.erb +1 -1
  98. data/app/views/catalog/_online_content_label.html.erb +5 -0
  99. data/app/views/catalog/_search_form.html.erb +34 -0
  100. data/app/views/catalog/_search_results.html.erb +1 -4
  101. data/app/views/catalog/_show_actions_box_default.html.erb +27 -0
  102. data/app/views/catalog/_show_breadcrumbs_default.html.erb +5 -6
  103. data/app/views/catalog/_show_collection.html.erb +42 -24
  104. data/app/views/catalog/_show_default.html.erb +64 -26
  105. data/app/views/catalog/_show_upper_metadata_collection.html.erb +1 -0
  106. data/app/views/catalog/_show_upper_metadata_default.html.erb +14 -0
  107. data/app/views/catalog/_sort_and_per_page.html.erb +8 -0
  108. data/app/views/catalog/_within_collection_dropdown.html.erb +26 -0
  109. data/app/views/shared/_breadcrumbs.html.erb +4 -4
  110. data/app/views/shared/_context_sidebar.html.erb +2 -2
  111. data/app/views/shared/_header_navbar.html.erb +51 -43
  112. data/app/views/shared/_main_menu_links.html.erb +1 -1
  113. data/app/views/shared/_show_breadcrumbs.html.erb +27 -0
  114. data/arclight.gemspec +15 -12
  115. data/config/i18n-tasks.yml +133 -0
  116. data/config/locales/arclight.en.yml +89 -55
  117. data/config/repositories.yml +0 -0
  118. data/lib/arclight/engine.rb +23 -12
  119. data/lib/arclight/hash_absolute_xpath.rb +61 -0
  120. data/lib/arclight/level_label.rb +46 -0
  121. data/lib/arclight/missing_id_strategy.rb +21 -0
  122. data/lib/arclight/normalized_date.rb +21 -12
  123. data/lib/arclight/normalized_id.rb +1 -0
  124. data/lib/arclight/normalized_title.rb +1 -0
  125. data/lib/arclight/repository.rb +61 -25
  126. data/lib/arclight/traject/ead2_config.rb +495 -0
  127. data/lib/arclight/traject/nokogiri_namespaceless_reader.rb +22 -0
  128. data/lib/arclight/version.rb +1 -1
  129. data/lib/arclight/viewers/oembed.rb +1 -0
  130. data/lib/arclight/year_range.rb +9 -1
  131. data/lib/generators/arclight/install_generator.rb +34 -3
  132. data/lib/generators/arclight/templates/catalog_controller.rb +162 -131
  133. data/lib/generators/arclight/templates/config/downloads.yml +12 -0
  134. data/lib/generators/arclight/templates/config/repositories.yml +20 -2
  135. data/lib/generators/arclight/update_generator.rb +1 -1
  136. data/lib/tasks/index.rake +19 -19
  137. data/package.json +8 -1
  138. data/solr/conf/schema.xml +56 -292
  139. data/solr/conf/solrconfig.xml +40 -125
  140. data/tasks/arclight.rake +6 -1
  141. data/template.rb +1 -1
  142. data/vendor/assets/javascripts/responsiveTruncator.js +2 -2
  143. metadata +159 -60
  144. data/app/assets/javascripts/arclight/collection_context.js +0 -18
  145. data/app/assets/javascripts/arclight/component_ancestors.js +0 -56
  146. data/app/assets/stylesheets/arclight/modules/sidebar.scss +0 -21
  147. data/app/views/catalog/_arclight_document_show_header.html.erb +0 -15
  148. data/app/views/catalog/_arclight_document_show_header_collection.html.erb +0 -12
  149. data/app/views/catalog/_collection_count.html.erb +0 -7
  150. data/app/views/catalog/_collection_downloads.html.erb +0 -15
  151. data/app/views/catalog/_collection_overview.html.erb +0 -7
  152. data/app/views/catalog/_component_overview.html.erb +0 -46
  153. data/app/views/catalog/_index_header_hierarchy_default.html.erb +0 -42
  154. data/app/views/catalog/_index_hierarchy_default.html.erb +0 -28
  155. data/app/views/catalog/_results_histogram.html.erb +0 -10
  156. data/app/views/catalog/_search_within_form.html.erb +0 -16
  157. data/app/views/catalog/_show_component_sidebar.html.erb +0 -12
  158. data/app/views/catalog/_show_header.html.erb +0 -5
  159. data/app/views/catalog/_show_sidebar.html.erb +0 -30
  160. data/lib/arclight/custom_component.rb +0 -99
  161. data/lib/arclight/custom_document.rb +0 -93
  162. data/lib/arclight/indexer.rb +0 -9
  163. data/lib/arclight/shared_indexing_behavior.rb +0 -97
  164. data/lib/arclight/shared_terminology_behavior.rb +0 -65
  165. data/lib/arclight/solr_ead_indexer_ext.rb +0 -159
  166. data/lib/generators/arclight/templates/arclight.js +0 -2
@@ -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,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
- <% document_actions = capture do %>
2
- <% # bookmark functions for items/docs -%>
3
- <%= render_show_doc_actions document %>
4
- <% end %>
5
-
6
- <div class='al-document-title-bar'>
7
- <div class='row'>
8
- <div class='col-7 col-sm-9'>
9
- <%= document.repository_and_unitid %>
10
- </div>
11
- <div class='col-5 col-sm-3 text-right'>
12
- <%= document_actions %>
13
- </div>
14
- </div>
15
- </div>
@@ -1,12 +0,0 @@
1
- <div class='al-document-title-bar'>
2
- <div class='row'>
3
- <div class='col-8'>
4
- <%= document.repository %>
5
- </div>
6
- <% if document.unitid %>
7
- <div class='col-4 text-right'>
8
- <%= t(:'arclight.views.show.collection_id', id: document.unitid) %>
9
- </div>
10
- <% end %>
11
- </div>
12
- </div>
@@ -1,7 +0,0 @@
1
- <% if collection_active? %>
2
- <div class='al-collection-count'>
3
- <p class='lead'>
4
- <%= pluralize(number_with_delimiter(collection_count), t('arclight.views.index.collection_search.count')) %>
5
- </p>
6
- </div>
7
- <% end %>
@@ -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,46 +0,0 @@
1
- <h2 class="sr-only">Component description</h2>
2
- <% unless blacklight_config.show.component_metadata_partials.nil? %>
3
- <% blacklight_config.show.component_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 %>
8
- <!-- Section below will be moved into its own partial later -->
9
- <%= content_tag(:div, id: t("arclight.views.show.sections.collection_context_field").parameterize) do %>
10
- <h3 class='al-show-sub-heading'>
11
- <%= t("arclight.views.show.sections.collection_context_field") %>
12
- </h3>
13
- <%= content_tag(
14
- :div, '',
15
- class: 'al-context',
16
- data: {
17
- arclight_collection_context: true,
18
- arclight_collection_context_url: solr_document_path(
19
- normalize_id(@document.eadid)
20
- )
21
- }
22
- ) %>
23
- <%= content_tag(
24
- :div, '',
25
- class: 'al-ancestors',
26
- data: {
27
- arclight_ancestors: @document.parent_ids,
28
- arclight_path: search_catalog_path(hierarchy_context: 'component')
29
- }
30
- ) %>
31
- <%= content_tag(
32
- :div, '',
33
- class: "al-contents al-hierarchy-level-#{@document.component_level} extra-indent documents-hierarchy",
34
- data: {
35
- arclight: {
36
- hierarchy: true,
37
- level: @document.component_level,
38
- path: search_catalog_path(hierarchy_context: 'component'),
39
- name: @document.collection_name,
40
- parent: @document.parent_ids.last,
41
- highlightId: @document.id
42
- }
43
- }
44
- ) %>
45
-
46
- <% end %>
@@ -1,42 +0,0 @@
1
- <header 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
- </header>
@@ -1,28 +0,0 @@
1
- <%= content_tag('div', class: 'al-document-abstract-or-scope', title: 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,10 +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
- <%= t('arclight.date_range_histogram.show_hide') %>
8
- </a>
9
- </div>
10
- </div>
@@ -1,16 +0,0 @@
1
- <%= form_tag search_action_url, method: :get, class: 'search-query-form', role: 'search' do %>
2
- <%= render_hash_as_hidden_fields({f: {collection_sim: [@document.collection_name]}}) %>
3
- <div class='input-group'>
4
- <%= hidden_field_tag :search_field, search_fields.first.last %>
5
- <%= hidden_field_tag :search_field, 'within_collection' %>
6
-
7
- <label for='q' class='sr-only'><%= t('arclight.views.show.search_within') %></label>
8
- <%= text_field_tag :q, params[:q], class: 'search_q q form-control', id: 'q', autofocus: should_autofocus_on_search_box? %>
9
-
10
- <span class='input-group-btn'>
11
- <button type='submit' class='btn btn-primary search-btn' id='search'>
12
- <%= blacklight_icon :search %>
13
- </button>
14
- </span>
15
- </div>
16
- <% end %>
@@ -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,5 +0,0 @@
1
- <div class='al-show-header-section'>
2
- <%= render_document_partial(document, 'arclight_document_show_header') %>
3
- <%= render_document_partial(document, 'arclight_online_content_indicator') %>
4
- <%= render_document_heading(document, :tag => :h1) %>
5
- </div>
@@ -1,30 +0,0 @@
1
- <div class='al-sticky-sidebar'>
2
- <h2 class="sr-only">Sidebar</h2>
3
- <div class='card'>
4
- <div class='card-header'>
5
- <h3 class="mb-0">Search within this collection</h3>
6
- </div>
7
- <div class='card-body'>
8
- <%= render 'search_within_form' %>
9
- </div>
10
- </div>
11
- <div class='al-sidebar-navigation-overview card'>
12
- <div class='card-header'>
13
- <h3 class="mb-0"><%= t('arclight.views.show.navigation_sidebar.title') %></h3>
14
- </div>
15
- <div class='card-body'>
16
- <ul class='nav nav-pills flex-column'>
17
- <% unless blacklight_config.show.metadata_partials.nil? %>
18
- <% blacklight_config.show.metadata_partials.each do |item| %>
19
- <% next unless fields_have_content?(@document, item) %>
20
- <li class='nav-item'>
21
- <%= link_to t("arclight.views.show.sections.#{item}"), "##{t("arclight.views.show.sections.#{item}").parameterize}", class: 'nav-link' %>
22
- </li>
23
- <% end %>
24
- <% end %>
25
- </ul>
26
- </div>
27
- </div>
28
-
29
- <%= render 'shared/context_sidebar' %>
30
- </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