arclight 0.4.0 → 1.6.2
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.
- checksums.yaml +4 -4
- data/.eslintrc +11 -4
- data/.github/workflows/ruby.yml +37 -15
- data/.gitignore +1 -0
- data/.rspec +0 -1
- data/.rubocop.yml +498 -21
- data/.rubocop_todo.yml +69 -86
- data/.solr_wrapper +2 -1
- data/CONTRIBUTING.md +5 -5
- data/CONTRIBUTORS.md +1 -1
- data/Gemfile +15 -10
- data/README.md +20 -16
- data/app/assets/javascripts/arclight/arclight.js +4 -8
- data/app/assets/javascripts/arclight/oembed_controller.js +58 -0
- data/app/assets/javascripts/arclight/truncate_controller.js +27 -0
- data/app/assets/stylesheets/arclight/application.scss +2 -5
- data/app/assets/stylesheets/arclight/build.scss +4 -0
- data/app/assets/stylesheets/arclight/modules/hierarchy_and_online_contents.scss +108 -130
- data/app/assets/stylesheets/arclight/modules/icons.scss +19 -3
- data/app/assets/stylesheets/arclight/modules/layout.scss +129 -99
- data/app/assets/stylesheets/arclight/modules/mastheads.scss +23 -96
- data/app/assets/stylesheets/arclight/modules/repositories.scss +2 -2
- data/app/assets/stylesheets/arclight/modules/repository_card.scss +4 -48
- data/app/assets/stylesheets/arclight/modules/search_form.scss +9 -0
- data/app/assets/stylesheets/arclight/modules/search_results.scss +95 -45
- data/app/assets/stylesheets/arclight/modules/show_collection.scss +5 -32
- data/app/assets/stylesheets/arclight/modules/truncator.scss +58 -0
- data/app/assets/stylesheets/arclight/variables.scss +7 -4
- data/app/components/arclight/access_component.html.erb +14 -0
- data/app/components/arclight/access_component.rb +25 -0
- data/app/components/arclight/bookmark_component.html.erb +25 -0
- data/app/components/arclight/bookmark_component.rb +9 -0
- data/app/components/arclight/breadcrumb_component.rb +50 -0
- data/app/components/arclight/breadcrumbs_hierarchy_component.html.erb +34 -0
- data/app/components/arclight/breadcrumbs_hierarchy_component.rb +25 -0
- data/app/components/arclight/collection_context_component.html.erb +12 -0
- data/app/components/arclight/collection_context_component.rb +27 -0
- data/app/components/arclight/collection_info_component.html.erb +28 -0
- data/app/components/arclight/collection_info_component.rb +26 -0
- data/app/components/arclight/collection_sidebar_component.html.erb +15 -0
- data/app/components/arclight/collection_sidebar_component.rb +39 -0
- data/app/{views/catalog/_search_results_repository.html.erb → components/arclight/constraints_component.html.erb} +2 -1
- data/app/components/arclight/constraints_component.rb +17 -0
- data/app/components/arclight/document_collection_context_component.html.erb +29 -0
- data/app/components/arclight/document_collection_context_component.rb +28 -0
- data/app/components/arclight/document_collection_hierarchy_component.html.erb +50 -0
- data/app/components/arclight/document_collection_hierarchy_component.rb +62 -0
- data/app/components/arclight/document_component.html.erb +39 -0
- data/app/components/arclight/document_component.rb +49 -0
- data/app/components/arclight/document_components_hierarchy_component.html.erb +20 -0
- data/app/components/arclight/document_components_hierarchy_component.rb +34 -0
- data/app/components/arclight/document_download_component.html.erb +24 -0
- data/app/components/arclight/document_download_component.rb +71 -0
- data/app/components/arclight/embed_component.html.erb +10 -0
- data/app/components/arclight/embed_component.rb +43 -0
- data/app/components/arclight/expand_hierarchy_button_component.html.erb +5 -0
- data/app/components/arclight/expand_hierarchy_button_component.rb +16 -0
- data/app/components/arclight/group_component.html.erb +34 -0
- data/app/components/arclight/group_component.rb +23 -0
- data/app/components/arclight/header_component.html.erb +5 -0
- data/app/components/arclight/header_component.rb +10 -0
- data/app/components/arclight/index_metadata_field_component.html.erb +16 -0
- data/app/components/arclight/index_metadata_field_component.rb +20 -0
- data/app/components/arclight/masthead_component.html.erb +17 -0
- data/app/components/arclight/masthead_component.rb +10 -0
- data/app/components/arclight/metadata_section_component.html.erb +13 -0
- data/app/components/arclight/metadata_section_component.rb +22 -0
- data/app/components/arclight/oembed_viewer_component.html.erb +5 -0
- data/app/components/arclight/oembed_viewer_component.rb +16 -0
- data/app/components/arclight/online_content_filter_component.html.erb +15 -0
- data/app/components/arclight/online_content_filter_component.rb +17 -0
- data/app/components/arclight/online_status_indicator_component.rb +19 -0
- data/app/components/arclight/repository_breadcrumb_component.html.erb +10 -0
- data/app/components/arclight/repository_breadcrumb_component.rb +17 -0
- data/app/components/arclight/repository_location_component.html.erb +20 -0
- data/app/components/arclight/repository_location_component.rb +10 -0
- data/app/components/arclight/search_bar_component.html.erb +27 -0
- data/app/components/arclight/search_bar_component.rb +32 -0
- data/app/components/arclight/search_result_breadcrumbs_component.html.erb +6 -0
- data/app/components/arclight/search_result_breadcrumbs_component.rb +37 -0
- data/app/components/arclight/search_result_component.html.erb +20 -0
- data/app/components/arclight/search_result_component.rb +18 -0
- data/app/components/arclight/search_result_title_component.html.erb +15 -0
- data/app/components/arclight/search_result_title_component.rb +15 -0
- data/app/components/arclight/sidebar_component.html.erb +9 -0
- data/app/components/arclight/sidebar_component.rb +19 -0
- data/app/components/arclight/upper_metadata_layout_component.rb +10 -0
- data/app/components/blacklight/icons/bookmark_component.rb +12 -0
- data/app/components/blacklight/icons/collection_component.rb +14 -0
- data/app/components/blacklight/icons/compact_component.rb +12 -0
- data/app/components/blacklight/icons/container_component.rb +14 -0
- data/app/components/blacklight/icons/ead_component.rb +12 -0
- data/app/components/blacklight/icons/file_component.rb +14 -0
- data/app/components/blacklight/icons/folder_component.rb +12 -0
- data/app/components/blacklight/icons/online_component.rb +15 -0
- data/app/components/blacklight/icons/pdf_component.rb +12 -0
- data/app/components/blacklight/icons/repository_component.rb +12 -0
- data/app/controllers/arclight/repositories_controller.rb +4 -4
- data/app/{controllers/concerns → helpers}/arclight/ead_format_helpers.rb +91 -7
- data/app/helpers/arclight/field_config_helpers.rb +26 -0
- data/app/helpers/arclight_helper.rb +24 -251
- data/app/models/arclight/document_downloads.rb +12 -15
- data/app/models/arclight/parent.rb +6 -8
- data/app/models/arclight/parents.rb +7 -4
- data/app/models/arclight/requests/aeon_external_request.rb +1 -1
- data/app/models/arclight/requests/aeon_web_ead.rb +8 -3
- data/app/models/arclight/requests/google_form.rb +8 -3
- data/app/models/concerns/arclight/catalog.rb +25 -15
- data/app/models/concerns/arclight/search_behavior.rb +12 -26
- data/app/models/concerns/arclight/solr_document.rb +80 -73
- data/app/presenters/arclight/show_presenter.rb +34 -7
- data/app/views/arclight/_requests.html.erb +2 -2
- data/app/views/arclight/repositories/_repository.html.erb +21 -40
- data/app/views/arclight/repositories/index.html.erb +3 -1
- data/app/views/arclight/repositories/show.html.erb +4 -6
- data/app/views/arclight/requests/_aeon_external_request_endpoint.html.erb +4 -5
- data/app/views/arclight/requests/_aeon_web_ead.html.erb +3 -4
- data/app/views/arclight/requests/_google_form.html.erb +4 -6
- data/app/views/catalog/_document_list.html.erb +8 -0
- data/app/views/catalog/_group.html.erb +2 -19
- data/app/views/catalog/_group_toggle.html.erb +1 -1
- data/app/views/catalog/_search_results_header.html.erb +3 -0
- data/app/views/catalog/hierarchy.html.erb +19 -0
- data/app/views/catalog/index.html.erb +16 -7
- data/app/views/shared/_breadcrumbs.html.erb +2 -14
- data/app/views/shared/_main_menu_links.html.erb +1 -1
- data/arclight.gemspec +16 -14
- data/config/breadcrumbs.rb +24 -0
- data/config/i18n-tasks.yml +9 -8
- data/config/importmap.rb +3 -0
- data/config/locales/arclight.en.yml +31 -30
- data/config/routes.rb +1 -1
- data/docker-compose.yml +16 -0
- data/lib/arclight/digital_object.rb +2 -1
- data/lib/arclight/engine.rb +18 -37
- data/lib/arclight/exceptions.rb +1 -0
- data/lib/arclight/hash_absolute_xpath.rb +2 -1
- data/lib/arclight/normalized_date.rb +5 -10
- data/lib/arclight/normalized_id.rb +6 -2
- data/lib/arclight/normalized_title.rb +2 -0
- data/lib/arclight/repository.rb +46 -57
- data/lib/arclight/routes/hierarchy.rb +19 -0
- data/lib/arclight/routes.rb +8 -0
- data/lib/arclight/traject/ead2_component_config.rb +335 -0
- data/lib/arclight/traject/ead2_config.rb +120 -299
- data/lib/arclight/version.rb +1 -1
- data/lib/arclight/year_range.rb +4 -3
- data/lib/arclight.rb +6 -1
- data/lib/generators/arclight/install_generator.rb +94 -21
- data/lib/generators/arclight/templates/arclight.scss +6 -3
- data/lib/generators/arclight/templates/catalog_controller.rb +193 -165
- data/lib/generators/arclight/templates/config/locales/arclight.en.yml +61 -0
- data/lib/generators/arclight/templates/config/repositories.yml +22 -29
- data/lib/tasks/index.rake +14 -17
- data/package.json +13 -14
- data/solr/conf/schema.xml +49 -39
- data/solr/conf/solrconfig.xml +78 -58
- data/tasks/arclight.rake +17 -9
- data/template.rb +6 -7
- metadata +149 -123
- data/.babelrc +0 -3
- data/app/assets/javascripts/arclight/collection_navigation.js +0 -100
- data/app/assets/javascripts/arclight/collection_scrollspy.js +0 -6
- data/app/assets/javascripts/arclight/context_navigation.js +0 -351
- data/app/assets/javascripts/arclight/oembed_viewer.js +0 -46
- data/app/assets/javascripts/arclight/truncator.js.erb +0 -29
- data/app/assets/stylesheets/arclight/bootstrap_overrides.scss +0 -26
- data/app/assets/stylesheets/arclight/modules/context_navigation.scss +0 -75
- data/app/controllers/concerns/arclight/field_config_helpers.rb +0 -102
- data/app/factories/blacklight_field_configuration_factory.rb +0 -30
- data/app/views/arclight/repositories/_in_person_repository.html.erb +0 -19
- data/app/views/arclight/repositories/_repository_contact.html.erb +0 -9
- data/app/views/arclight/viewers/_oembed.html.erb +0 -8
- data/app/views/catalog/_access_contents.html.erb +0 -15
- data/app/views/catalog/_arclight_abstract_or_scope.html.erb +0 -5
- data/app/views/catalog/_arclight_bookmark_control.html.erb +0 -38
- data/app/views/catalog/_arclight_document_header_icon.html.erb +0 -1
- data/app/views/catalog/_arclight_document_index_header.html.erb +0 -13
- data/app/views/catalog/_arclight_document_index_header_hierarchy_default.html.erb +0 -0
- data/app/views/catalog/_arclight_document_index_header_online_contents_default.html.erb +0 -0
- data/app/views/catalog/_arclight_index_compact_default.html.erb +0 -22
- data/app/views/catalog/_arclight_index_default.html.erb +0 -45
- data/app/views/catalog/_arclight_index_group_document_compact_default.html.erb +0 -19
- data/app/views/catalog/_arclight_index_group_document_default.html.erb +0 -18
- data/app/views/catalog/_arclight_online_content_indicator.html.erb +0 -3
- data/app/views/catalog/_arclight_rangelimit.html.erb +0 -24
- data/app/views/catalog/_arclight_viewer_default.html.erb +0 -1
- data/app/views/catalog/_collection_contents.html.erb +0 -4
- data/app/views/catalog/_collection_context.html.erb +0 -15
- data/app/views/catalog/_collection_context_nav.html.erb +0 -12
- data/app/views/catalog/_collection_online_contents.html.erb +0 -17
- data/app/views/catalog/_component_context.html.erb +0 -5
- data/app/views/catalog/_containers.html.erb +0 -3
- data/app/views/catalog/_context_card.html.erb +0 -27
- data/app/views/catalog/_context_sidebar.html.erb +0 -8
- data/app/views/catalog/_custom_metadata.html.erb +0 -16
- data/app/views/catalog/_document_downloads.html.erb +0 -14
- data/app/views/catalog/_group_header_compact_default.html.erb +0 -15
- data/app/views/catalog/_group_header_default.html.erb +0 -20
- data/app/views/catalog/_home.html.erb +0 -1
- data/app/views/catalog/_index_breadcrumb_default.html.erb +0 -6
- data/app/views/catalog/_index_collection_context_default.html.erb +0 -53
- data/app/views/catalog/_index_default.html.erb +0 -17
- data/app/views/catalog/_index_header.html.erb +0 -7
- data/app/views/catalog/_index_header_online_contents_default.html.erb +0 -1
- data/app/views/catalog/_index_online_contents_default.html.erb +0 -6
- data/app/views/catalog/_online_content_label.html.erb +0 -5
- data/app/views/catalog/_search_form.html.erb +0 -34
- data/app/views/catalog/_search_results.html.erb +0 -28
- data/app/views/catalog/_show_actions_box_default.html.erb +0 -27
- data/app/views/catalog/_show_breadcrumbs_default.html.erb +0 -6
- data/app/views/catalog/_show_collection.html.erb +0 -66
- data/app/views/catalog/_show_default.html.erb +0 -70
- data/app/views/catalog/_show_upper_metadata_collection.html.erb +0 -1
- data/app/views/catalog/_show_upper_metadata_default.html.erb +0 -14
- data/app/views/catalog/_sort_and_per_page.html.erb +0 -8
- data/app/views/catalog/_within_collection_dropdown.html.erb +0 -26
- data/app/views/layouts/catalog_result.html.erb +0 -7
- data/app/views/shared/_context_sidebar.html.erb +0 -8
- data/app/views/shared/_header_navbar.html.erb +0 -61
- data/app/views/shared/_show_breadcrumbs.html.erb +0 -27
- data/lib/arclight/viewer.rb +0 -45
- data/lib/arclight/viewers/oembed.rb +0 -57
- data/solr/conf/scripts.conf +0 -24
- data/vendor/assets/javascripts/responsiveTruncator.js +0 -69
- data/vendor/assets/javascripts/stickyfill.js +0 -480
- /data/app/assets/images/{blacklight → arclight}/logo.png +0 -0
|
@@ -1,351 +0,0 @@
|
|
|
1
|
-
class NavigationDocument {
|
|
2
|
-
constructor(el) {
|
|
3
|
-
this.el = $(el);
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
get id() {
|
|
7
|
-
return this.el.find('[data-document-id]').data().documentId;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
setAsHighlighted() {
|
|
11
|
-
this.el.find('li.al-collection-context').addClass('al-hierarchy-highlight');
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
makeCollapsible() {
|
|
15
|
-
this.el.find('li.al-collection-context').addClass('collapsible');
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
collapse() {
|
|
19
|
-
this.el.find('li.al-collection-context').addClass('collapsed');
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
render() {
|
|
23
|
-
return this.el.html();
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Models the "Expand"/"Collapse" button, and provides an onClick event handler
|
|
29
|
-
* for the jQuery element
|
|
30
|
-
* @class
|
|
31
|
-
*/
|
|
32
|
-
class ExpandButton {
|
|
33
|
-
/**
|
|
34
|
-
* This retrieves the <li> elements which are hidden/rendered in response to
|
|
35
|
-
* clicking the <button> element
|
|
36
|
-
* @param {jQuery} $li - the <button> element
|
|
37
|
-
* @return {jQuery} - a jQuery object containing the targeted <li>
|
|
38
|
-
*/
|
|
39
|
-
findCollapsibleSiblings() {
|
|
40
|
-
const $siblings = this.$el.parent().children('li.collapsible');
|
|
41
|
-
return $siblings;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* This adds a "collapsed" class to all of the <li> children, as well as
|
|
46
|
-
* updates the text for the <button> element
|
|
47
|
-
* @param {Event} event - the event propagated in response to clicking on the
|
|
48
|
-
* <button> element
|
|
49
|
-
*/
|
|
50
|
-
handleClick() {
|
|
51
|
-
const $targeted = this.findCollapsibleSiblings();
|
|
52
|
-
|
|
53
|
-
$targeted.toggleClass('collapsed');
|
|
54
|
-
this.$el.toggleClass('collapsed');
|
|
55
|
-
|
|
56
|
-
const containerText = this.$el.hasClass('collapsed') ? this.collapseText : this.expandText;
|
|
57
|
-
this.$el.text(containerText);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* @constructor
|
|
62
|
-
*/
|
|
63
|
-
constructor(data) {
|
|
64
|
-
this.collapseText = data.collapse;
|
|
65
|
-
this.expandText = data.expand;
|
|
66
|
-
|
|
67
|
-
this.$el = $(`<button class="my-3 btn btn-secondary btn-sm">${this.expandText}</button>`);
|
|
68
|
-
this.handleClick = this.handleClick.bind(this);
|
|
69
|
-
this.$el.click(this.handleClick);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Models the placeholder display elements for content loading from AJAX
|
|
75
|
-
* requests
|
|
76
|
-
* @class
|
|
77
|
-
*/
|
|
78
|
-
class Placeholder {
|
|
79
|
-
/*
|
|
80
|
-
* Builds the element set which contains the placeholder markup
|
|
81
|
-
* classes
|
|
82
|
-
*/
|
|
83
|
-
/* eslint-disable class-methods-use-this */
|
|
84
|
-
buildElement() {
|
|
85
|
-
const elementMarkup = '<div class="al-hierarchy-placeholder">' +
|
|
86
|
-
'<h3 class="col-md-9"></h3>' +
|
|
87
|
-
'<p class="col-md-6"></p>' +
|
|
88
|
-
'<p class="col-md-12"></p>' +
|
|
89
|
-
'<p class="col-md-3"></p>' +
|
|
90
|
-
'</div>';
|
|
91
|
-
const markup = Array(3).join(elementMarkup);
|
|
92
|
-
|
|
93
|
-
return $(markup);
|
|
94
|
-
}
|
|
95
|
-
/* eslint-enable class-methods-use-this */
|
|
96
|
-
|
|
97
|
-
/*
|
|
98
|
-
* @constructor
|
|
99
|
-
*/
|
|
100
|
-
constructor() {
|
|
101
|
-
this.$el = this.buildElement();
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
class ContextNavigation {
|
|
106
|
-
constructor(el, originalParents = null, originalDocument = null) {
|
|
107
|
-
this.el = $(el);
|
|
108
|
-
this.data = this.el.data();
|
|
109
|
-
this.parentLi = this.el.parent();
|
|
110
|
-
this.eadid = this.data.arclight.eadid;
|
|
111
|
-
this.originalParents = originalParents; // let originalParents stay null
|
|
112
|
-
this.originalDocument = originalDocument || this.data.arclight.originalDocument;
|
|
113
|
-
this.ul = $('<ul class="al-context-nav-parent"></ul>');
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
// Gets the targetId to select, based off of parents and current level
|
|
117
|
-
get targetId() {
|
|
118
|
-
if (this.originalParents && this.originalParents[this.data.arclight.level]) {
|
|
119
|
-
return `${this.eadid}${this.originalParents[this.data.arclight.level]}`;
|
|
120
|
-
}
|
|
121
|
-
return this.data.arclight.originalDocument;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
get requestParent() {
|
|
125
|
-
// Cases where you're viewing a component page (use its ancestor trail)...
|
|
126
|
-
if (this.originalParents && this.originalParents[this.data.arclight.level - 1]) {
|
|
127
|
-
return this.originalParents[this.data.arclight.level - 1];
|
|
128
|
-
}
|
|
129
|
-
// Cases where there are no parents provided...
|
|
130
|
-
// 1) when on a top-level collection page
|
|
131
|
-
// 2) when +/- gets clicked
|
|
132
|
-
return this.data.arclight.originalDocument.replace(this.eadid, '');
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
getData() {
|
|
136
|
-
const that = this;
|
|
137
|
-
// Add a placeholder so flashes of text are not as significant
|
|
138
|
-
const placeholder = new Placeholder();
|
|
139
|
-
this.el.after(placeholder.$el);
|
|
140
|
-
$.ajax({
|
|
141
|
-
url: this.data.arclight.path,
|
|
142
|
-
data: {
|
|
143
|
-
'f[component_level_isim][]': this.data.arclight.level,
|
|
144
|
-
'f[has_online_content_ssim][]': this.data.arclight.access,
|
|
145
|
-
'f[collection_sim][]': this.data.arclight.name,
|
|
146
|
-
'f[parent_ssi][]': this.requestParent,
|
|
147
|
-
search_field: this.data.arclight.search_field,
|
|
148
|
-
original_parents: this.data.arclight.originalParents,
|
|
149
|
-
original_document: this.originalDocument,
|
|
150
|
-
view: 'collection_context'
|
|
151
|
-
}
|
|
152
|
-
}).done((response) => that.updateView(response));
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
/**
|
|
156
|
-
* Constructs a <ul> container element with an ElementButton instance appended
|
|
157
|
-
* within it
|
|
158
|
-
* @returns {jQuery}
|
|
159
|
-
*/
|
|
160
|
-
buildExpandList() {
|
|
161
|
-
const $ul = $('<ul></ul>');
|
|
162
|
-
$ul.addClass('pl-0');
|
|
163
|
-
$ul.addClass('prev-siblings');
|
|
164
|
-
const button = new ExpandButton(this.data);
|
|
165
|
-
$ul.append(button.$el);
|
|
166
|
-
return $ul;
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
/**
|
|
170
|
-
* Highlights the <li> element for the current Document and appends <li> the
|
|
171
|
-
* sibling documents for a given Document element
|
|
172
|
-
* @param {NavigationDocument[]} newDocs - the NavigationDocument objects for
|
|
173
|
-
* each resulting Solr Document
|
|
174
|
-
* @param {number} originalDocumentIndex
|
|
175
|
-
*/
|
|
176
|
-
updateSiblings(newDocs, originalDocumentIndex) {
|
|
177
|
-
newDocs[originalDocumentIndex].setAsHighlighted();
|
|
178
|
-
|
|
179
|
-
// Hide all but the first previous sibling
|
|
180
|
-
const prevSiblingDocs = newDocs.slice(0, originalDocumentIndex);
|
|
181
|
-
let nextSiblingDocs = [];
|
|
182
|
-
|
|
183
|
-
if (prevSiblingDocs.length > 1 && originalDocumentIndex > 0) {
|
|
184
|
-
const hiddenPrevSiblingDocs = prevSiblingDocs.slice(0, -1);
|
|
185
|
-
hiddenPrevSiblingDocs.forEach(siblingDoc => {
|
|
186
|
-
siblingDoc.makeCollapsible();
|
|
187
|
-
siblingDoc.collapse();
|
|
188
|
-
});
|
|
189
|
-
|
|
190
|
-
const prevSiblingList = this.buildExpandList();
|
|
191
|
-
const renderedPrevSiblingItems = prevSiblingDocs.map(doc => doc.render()).join('');
|
|
192
|
-
|
|
193
|
-
prevSiblingList.append(renderedPrevSiblingItems);
|
|
194
|
-
this.ul.append(prevSiblingList);
|
|
195
|
-
|
|
196
|
-
nextSiblingDocs = newDocs.slice(originalDocumentIndex);
|
|
197
|
-
} else {
|
|
198
|
-
nextSiblingDocs = newDocs;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
const renderedNextSiblingItems = nextSiblingDocs.map(newDoc => newDoc.render()).join('');
|
|
202
|
-
|
|
203
|
-
// Insert the rendered sibling documents before the <li> elements
|
|
204
|
-
this.ul.append(renderedNextSiblingItems);
|
|
205
|
-
this.el.html(this.ul);
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
/**
|
|
209
|
-
* Inserts <li> elements for parents (e. g. components or collections) for the
|
|
210
|
-
* current Document and appends <li> for each of these
|
|
211
|
-
* @param {NavigationDocument[]} newDocs - the NavigationDocument objects for
|
|
212
|
-
* each resulting Solr Document
|
|
213
|
-
*/
|
|
214
|
-
updateParents(newDocs) {
|
|
215
|
-
const that = this;
|
|
216
|
-
// Case where this is a parent list and needs to be filed correctly
|
|
217
|
-
//
|
|
218
|
-
// Otherwise, retrieve the parent...
|
|
219
|
-
let newDocIndex = newDocs.findIndex(doc => doc.id === this.targetId);
|
|
220
|
-
|
|
221
|
-
if (newDocIndex === -1) {
|
|
222
|
-
const renderedDocs = newDocs.map(newDoc => newDoc.render()).join('');
|
|
223
|
-
this.ul.append(renderedDocs);
|
|
224
|
-
this.el.html(this.ul);
|
|
225
|
-
return;
|
|
226
|
-
}
|
|
227
|
-
// Update the docs before the item
|
|
228
|
-
// Retrieves the documents up to and including the "new document"
|
|
229
|
-
const beforeDocs = newDocs.slice(0, newDocIndex);
|
|
230
|
-
let prevParentList = null;
|
|
231
|
-
let renderedBeforeDocs;
|
|
232
|
-
if (beforeDocs.length > 1) {
|
|
233
|
-
beforeDocs.forEach(function (parentDoc) {
|
|
234
|
-
parentDoc.makeCollapsible();
|
|
235
|
-
parentDoc.collapse();
|
|
236
|
-
});
|
|
237
|
-
renderedBeforeDocs = beforeDocs.map(newDoc => newDoc.render()).join('');
|
|
238
|
-
prevParentList = this.buildExpandList();
|
|
239
|
-
prevParentList.append(renderedBeforeDocs);
|
|
240
|
-
} else {
|
|
241
|
-
renderedBeforeDocs = beforeDocs.map(newDoc => newDoc.render()).join('');
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
// Silly but works for now
|
|
245
|
-
this.ul.append(prevParentList || renderedBeforeDocs);
|
|
246
|
-
|
|
247
|
-
let itemDoc = newDocs.slice(newDocIndex, newDocIndex + 1);
|
|
248
|
-
let renderedItemDoc = itemDoc.map(doc => doc.render()).join('');
|
|
249
|
-
|
|
250
|
-
// Update the item
|
|
251
|
-
const $itemDoc = $(renderedItemDoc);
|
|
252
|
-
this.ul.append($itemDoc);
|
|
253
|
-
|
|
254
|
-
// Update the docs after the item
|
|
255
|
-
const afterDocs = newDocs.slice(newDocIndex + 1, newDocs.length);
|
|
256
|
-
const renderedAfterDocs = afterDocs.map(newDoc => newDoc.render()).join('');
|
|
257
|
-
|
|
258
|
-
// Insert the documents after the current
|
|
259
|
-
this.ul.append(renderedAfterDocs);
|
|
260
|
-
this.el.html(this.ul);
|
|
261
|
-
|
|
262
|
-
// Initialize additional things
|
|
263
|
-
$itemDoc.find('.context-navigator').each(function (i, e) {
|
|
264
|
-
const contextNavigation = new ContextNavigation(
|
|
265
|
-
e, that.originalParents, that.originalDocument
|
|
266
|
-
);
|
|
267
|
-
contextNavigation.getData();
|
|
268
|
-
});
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
/**
|
|
272
|
-
* This updates the elements in the View DOM using an AJAX response containing
|
|
273
|
-
* the HTML of a server-rendered View template.
|
|
274
|
-
* It is this which is primarily used to populate the <ul> element with
|
|
275
|
-
* children for the navigation context, containing <li> elements for
|
|
276
|
-
* collections, components, and containers.
|
|
277
|
-
* @param {string} response - the AJAX response body
|
|
278
|
-
*/
|
|
279
|
-
updateView(response) {
|
|
280
|
-
const that = this;
|
|
281
|
-
var resp = $.parseHTML(response);
|
|
282
|
-
var $doc = $(resp);
|
|
283
|
-
var newDocs = $doc.find('#documents')
|
|
284
|
-
.find('article')
|
|
285
|
-
.toArray().map(el => new NavigationDocument(el));
|
|
286
|
-
|
|
287
|
-
// See if the original document is located in the returned documents
|
|
288
|
-
const originalDocumentIndex = newDocs
|
|
289
|
-
.findIndex(doc => doc.id === that.originalDocument);
|
|
290
|
-
that.parentLi.find('.al-hierarchy-placeholder').remove();
|
|
291
|
-
|
|
292
|
-
// If the original document in the results, update it. If not update with a
|
|
293
|
-
// more complex procedure
|
|
294
|
-
if (originalDocumentIndex !== -1) {
|
|
295
|
-
this.updateSiblings(newDocs, originalDocumentIndex);
|
|
296
|
-
} else {
|
|
297
|
-
this.updateParents(
|
|
298
|
-
newDocs,
|
|
299
|
-
that.data.arclight.originalParents,
|
|
300
|
-
that.data.arclight.parent,
|
|
301
|
-
that.parentLi
|
|
302
|
-
);
|
|
303
|
-
}
|
|
304
|
-
this.el.parent().data('resolved', true);
|
|
305
|
-
this.addListenersForPlusMinus();
|
|
306
|
-
this.enablebuttons();
|
|
307
|
-
Blacklight.doBookmarkToggleBehavior();
|
|
308
|
-
this.el.trigger('navigation.contains.elements');
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
// eslint-disable-next-line class-methods-use-this
|
|
312
|
-
enablebuttons() {
|
|
313
|
-
var toEnable = $('[data-hierarchy-enable-me]');
|
|
314
|
-
var srOnly = $('h2[data-sr-enable-me]');
|
|
315
|
-
toEnable.removeClass('disabled');
|
|
316
|
-
toEnable.text(srOnly.data('hasContents'));
|
|
317
|
-
srOnly.text(srOnly.data('hasContents'));
|
|
318
|
-
}
|
|
319
|
-
|
|
320
|
-
addListenersForPlusMinus() {
|
|
321
|
-
const that = this;
|
|
322
|
-
this.ul.find('.al-toggle-view-children').on('click', (e) => {
|
|
323
|
-
e.preventDefault();
|
|
324
|
-
const targetArea = $($(e.currentTarget).attr('href'));
|
|
325
|
-
if (!targetArea.data('resolved') === true) {
|
|
326
|
-
targetArea.find('.context-navigator').each((i, ee) => {
|
|
327
|
-
const contextNavigation = new ContextNavigation(
|
|
328
|
-
// Send null for originalParents. We want to disregard the original
|
|
329
|
-
// component's ancestor trail and instead use the current ID as the
|
|
330
|
-
// parent in the query to populate the navigator.
|
|
331
|
-
ee, null, that.originalDocument
|
|
332
|
-
);
|
|
333
|
-
contextNavigation.getData();
|
|
334
|
-
});
|
|
335
|
-
}
|
|
336
|
-
});
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
/**
|
|
341
|
-
* Integrate the behavior into the DOM using the Blacklight#onLoad callback
|
|
342
|
-
*
|
|
343
|
-
*/
|
|
344
|
-
Blacklight.onLoad(function () {
|
|
345
|
-
$('.context-navigator').each(function (i, e) {
|
|
346
|
-
const contextNavigation = new ContextNavigation(
|
|
347
|
-
e, $(this).data('arclight').originalParents, $(this).data('arclight').originalDocument
|
|
348
|
-
);
|
|
349
|
-
contextNavigation.getData();
|
|
350
|
-
});
|
|
351
|
-
});
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
Blacklight.onLoad(function () {
|
|
2
|
-
'use strict';
|
|
3
|
-
|
|
4
|
-
var onlineContentTabSelector = '[data-arclight-online-content-tab="true"]';
|
|
5
|
-
var oEmbedViewerSelector = '[data-arclight-oembed="true"]';
|
|
6
|
-
|
|
7
|
-
$(onlineContentTabSelector).on('shown.bs.tab', function () {
|
|
8
|
-
var $viewerElements = $(oEmbedViewerSelector);
|
|
9
|
-
if ($viewerElements.length === 0) {
|
|
10
|
-
return;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
$viewerElements.each(function (i, element) {
|
|
14
|
-
var $el = $(element);
|
|
15
|
-
var loadedAttr = $el.attr('loaded');
|
|
16
|
-
var data = $el.data();
|
|
17
|
-
var resourceUrl = data.arclightOembedUrl;
|
|
18
|
-
if (loadedAttr && loadedAttr === 'loaded') {
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
$.ajax({
|
|
23
|
-
url: resourceUrl,
|
|
24
|
-
dataType: 'html'
|
|
25
|
-
}).done(function (response) {
|
|
26
|
-
var links = $('<div>' + response.match(/<link .*>/g).join('') + '</div>'); // Parse out link elements so image assets are not loaded
|
|
27
|
-
var oEmbedEndPoint = links.find('link[rel="alternate"][type="application/json+oembed"]').prop('href');
|
|
28
|
-
|
|
29
|
-
if (!oEmbedEndPoint || oEmbedEndPoint.length === 0) {
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
$.ajax({
|
|
34
|
-
url: oEmbedEndPoint
|
|
35
|
-
}).done(function (oEmbedResponse) {
|
|
36
|
-
if (oEmbedResponse.html) {
|
|
37
|
-
$el.hide()
|
|
38
|
-
.html(oEmbedResponse.html)
|
|
39
|
-
.fadeIn(500);
|
|
40
|
-
$el.attr('loaded', 'loaded');
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
});
|
|
44
|
-
});
|
|
45
|
-
});
|
|
46
|
-
});
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
Blacklight.onLoad(function () {
|
|
2
|
-
'use strict';
|
|
3
|
-
|
|
4
|
-
// Any element on page load
|
|
5
|
-
$('[data-arclight-truncate="true"]').each(function (i, e) {
|
|
6
|
-
$(e).responsiveTruncate({
|
|
7
|
-
more: "<%= I18n.t 'arclight.truncation.view_more' %>",
|
|
8
|
-
less: "<%= I18n.t 'arclight.truncation.view_less' %>"
|
|
9
|
-
});
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
// When elements get loaded from hierarchy
|
|
13
|
-
$('.al-contents, .context-navigator').on('navigation.contains.elements', function (e) {
|
|
14
|
-
$('a[data-toggle="tab"]').on('shown.bs.tab', function () {
|
|
15
|
-
$('[data-arclight-truncate="true"]').each(function (_, el) {
|
|
16
|
-
$(el).responsiveTruncate({
|
|
17
|
-
more: "<%= I18n.t 'arclight.truncation.view_more' %>",
|
|
18
|
-
less: "<%= I18n.t 'arclight.truncation.view_less' %>"
|
|
19
|
-
});
|
|
20
|
-
});
|
|
21
|
-
});
|
|
22
|
-
$(e.target).find('[data-arclight-truncate="true"]').each(function (_, el) {
|
|
23
|
-
$(el).responsiveTruncate({
|
|
24
|
-
more: "<%= I18n.t 'arclight.truncation.view_more' %>",
|
|
25
|
-
less: "<%= I18n.t 'arclight.truncation.view_less' %>"
|
|
26
|
-
});
|
|
27
|
-
});
|
|
28
|
-
});
|
|
29
|
-
});
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
.nav.nav-pills {
|
|
2
|
-
margin-bottom: $spacer;
|
|
3
|
-
}
|
|
4
|
-
|
|
5
|
-
.nav.nav-tabs {
|
|
6
|
-
margin-bottom: 0;
|
|
7
|
-
flex-wrap: nowrap;
|
|
8
|
-
& .nav-item .nav-link:not(.active) {
|
|
9
|
-
background: $gray-100;
|
|
10
|
-
border-color: $nav-tabs-border-color;
|
|
11
|
-
}
|
|
12
|
-
& .nav-item .nav-link {
|
|
13
|
-
height: 100%;
|
|
14
|
-
}
|
|
15
|
-
& .nav-item {
|
|
16
|
-
overflow-wrap: break-word;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
.tab-pane {
|
|
21
|
-
border-style: solid;
|
|
22
|
-
border-width: 0 1px 1px 1px;
|
|
23
|
-
border-color: $nav-tabs-border-color;
|
|
24
|
-
border-radius: 0px 0px $nav-tabs-border-radius $nav-tabs-border-radius;
|
|
25
|
-
padding: $spacer*2;
|
|
26
|
-
}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
#contents > .context-navigator,
|
|
2
|
-
#collection-context > .context-navigator {
|
|
3
|
-
padding-left: $spacer;
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
ul.al-context-nav-parent {
|
|
7
|
-
padding-left: 0px;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
li.al-collection-context {
|
|
11
|
-
flex-grow: 1;
|
|
12
|
-
margin-right: 0;
|
|
13
|
-
margin-left: 0;
|
|
14
|
-
padding-left: 15px;
|
|
15
|
-
max-width: 100%;
|
|
16
|
-
|
|
17
|
-
.al-collection-context-collapsible {
|
|
18
|
-
width: 100%;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
.blacklight-icons {
|
|
22
|
-
padding-top: $spacer * .25;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
.al-number-of-children-badge {
|
|
26
|
-
font-size: 12px;
|
|
27
|
-
vertical-align: middle;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
.documentHeader {
|
|
31
|
-
flex-grow: 1;
|
|
32
|
-
margin-bottom: $spacer;
|
|
33
|
-
width: 100%;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
.document-title-heading {
|
|
37
|
-
font-size: 1.25rem;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
.col.col-no-left-padding.d-flex.flex-wrap {
|
|
41
|
-
flex-grow: 1;
|
|
42
|
-
}
|
|
43
|
-
.order-2 .row {
|
|
44
|
-
margin-left: 0;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
.al-document-abstract-or-scope {
|
|
48
|
-
max-width: 45em;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
.blacklight-icons svg {
|
|
52
|
-
fill: $gray-600;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
.al-online-content-icon svg {
|
|
56
|
-
fill: $green;
|
|
57
|
-
}
|
|
58
|
-
@media (max-width: 767px) {
|
|
59
|
-
padding-left: 0;
|
|
60
|
-
.al-document-abstract-or-scope {
|
|
61
|
-
max-width: 25em;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
@media (max-width: 767px) {
|
|
67
|
-
.blacklight-catalog.blacklight-catalog-show {
|
|
68
|
-
#context {
|
|
69
|
-
padding: 10px;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
ul.al-context-nav-parent {
|
|
73
|
-
padding-left: 40px;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Arclight
|
|
4
|
-
##
|
|
5
|
-
# A module to add configuration helpers for certain fields used by Arclight
|
|
6
|
-
module FieldConfigHelpers
|
|
7
|
-
extend ActiveSupport::Concern
|
|
8
|
-
include ActionView::Helpers::OutputSafetyHelper
|
|
9
|
-
include ActionView::Helpers::TagHelper
|
|
10
|
-
include Arclight::EadFormatHelpers
|
|
11
|
-
|
|
12
|
-
included do
|
|
13
|
-
if respond_to?(:helper_method)
|
|
14
|
-
helper_method :repository_config_present
|
|
15
|
-
helper_method :request_config_present
|
|
16
|
-
helper_method :context_access_tab_repository
|
|
17
|
-
helper_method :access_repository_contact
|
|
18
|
-
helper_method :before_you_visit_note_present
|
|
19
|
-
helper_method :context_access_tab_visit_note
|
|
20
|
-
helper_method :highlight_terms
|
|
21
|
-
helper_method :context_sidebar_containers_request
|
|
22
|
-
helper_method :item_requestable?
|
|
23
|
-
helper_method :paragraph_separator
|
|
24
|
-
helper_method :link_to_name_facet
|
|
25
|
-
helper_method :render_html_tags
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def repository_config_present(_, document)
|
|
30
|
-
document.repository_config.present?
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def item_requestable?(_, options)
|
|
34
|
-
document = options[:document]
|
|
35
|
-
request_config_present('', document)
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def request_config_present(var, document)
|
|
39
|
-
repository_config_present(var, document) &&
|
|
40
|
-
document.repository_config.request_config_present?
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
def context_access_tab_repository(args)
|
|
44
|
-
document = args[:document]
|
|
45
|
-
ApplicationController.renderer.render(
|
|
46
|
-
'arclight/repositories/_in_person_repository',
|
|
47
|
-
layout: false,
|
|
48
|
-
locals: { repository: document.repository_config }
|
|
49
|
-
)
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
def access_repository_contact(args)
|
|
53
|
-
document = args[:document]
|
|
54
|
-
ApplicationController.renderer.render(
|
|
55
|
-
'arclight/repositories/_repository_contact',
|
|
56
|
-
layout: false,
|
|
57
|
-
locals: { repository: document.repository_config }
|
|
58
|
-
)
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
def before_you_visit_note_present(_, document)
|
|
62
|
-
document.repository_config && document.repository_config.visit_note.present?
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
def context_access_tab_visit_note(args)
|
|
66
|
-
document = args[:document]
|
|
67
|
-
document.repository_config.visit_note
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
def highlight_terms(args)
|
|
71
|
-
safe_join(args[:value].map { |value| content_tag(:span, value, class: 'bg-info') })
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
def context_sidebar_containers_request(args)
|
|
75
|
-
document = args[:document]
|
|
76
|
-
presenter = Arclight::ShowPresenter.new(document, view_context)
|
|
77
|
-
ApplicationController.renderer.render(
|
|
78
|
-
'arclight/requests/_google_form',
|
|
79
|
-
layout: false,
|
|
80
|
-
locals: {
|
|
81
|
-
google_form: Arclight::Requests::GoogleForm.new(document, presenter, solr_document_url(document))
|
|
82
|
-
}
|
|
83
|
-
)
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
def paragraph_separator(args)
|
|
87
|
-
safe_join(args[:value].map { |paragraph| content_tag(:p, paragraph) })
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
def link_to_name_facet(args)
|
|
91
|
-
options = args[:config].try(:separator_options) || {}
|
|
92
|
-
values = args[:value] || []
|
|
93
|
-
|
|
94
|
-
values.map do |value|
|
|
95
|
-
view_context.link_to(
|
|
96
|
-
value,
|
|
97
|
-
view_context.search_action_path(f: { names_ssim: [value] })
|
|
98
|
-
)
|
|
99
|
-
end.to_sentence(options).html_safe
|
|
100
|
-
end
|
|
101
|
-
end
|
|
102
|
-
end
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
##
|
|
4
|
-
# A factory to return blacklight field configurations given a field key
|
|
5
|
-
# that represents a field group (e.g. summary_fields, access_fields, etc)
|
|
6
|
-
class BlacklightFieldConfigurationFactory
|
|
7
|
-
def self.for(config:, field:, field_group:)
|
|
8
|
-
new(config: config, field: field, field_group: field_group).field_config
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def initialize(config:, field:, field_group:)
|
|
12
|
-
@config = config
|
|
13
|
-
@field = field
|
|
14
|
-
@field_group = field_group
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def field_config
|
|
18
|
-
return null_field unless config.respond_to?(:"#{field_group}s")
|
|
19
|
-
|
|
20
|
-
config.send(:"#{field_group}s").fetch(field) { null_field }
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
private
|
|
24
|
-
|
|
25
|
-
attr_reader :config, :field, :field_group
|
|
26
|
-
|
|
27
|
-
def null_field
|
|
28
|
-
Blacklight::Configuration::NullField.new(field)
|
|
29
|
-
end
|
|
30
|
-
end
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
<div class='al-in-person-repository-name'>
|
|
2
|
-
<% if repository.thumbnail_url %>
|
|
3
|
-
<%= image_tag repository.thumbnail_url, alt: '', class: 'img-fluid float-left' %>
|
|
4
|
-
<% end %>
|
|
5
|
-
<div>
|
|
6
|
-
<%= link_to(repository.name, arclight_engine.repository_path(repository.slug)) %>
|
|
7
|
-
</div>
|
|
8
|
-
</div>
|
|
9
|
-
<div class='al-in-person-repository-location'>
|
|
10
|
-
<address>
|
|
11
|
-
<% %i[building address1 address2 city_state_zip_country].each do |f| %>
|
|
12
|
-
<% if repository.send(f).present? %>
|
|
13
|
-
<div class='al-repository-contact-<%= f %>'>
|
|
14
|
-
<%= repository.send(f) %>
|
|
15
|
-
</div>
|
|
16
|
-
<% end %>
|
|
17
|
-
<% end %>
|
|
18
|
-
</address>
|
|
19
|
-
</div>
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
<% parents = Arclight::Parents.from_solr_document(viewer.document).as_parents %>
|
|
2
|
-
<% viewer.resources.each do |resource| %>
|
|
3
|
-
<%= content_tag(:div, viewer.attributes_for(resource)) do %>
|
|
4
|
-
<div class="al-digital-object media breadcrumb-item breadcrumb-item-<%= parents.length + 6 %>">
|
|
5
|
-
<%= link_to(resource.label, resource.href) %>
|
|
6
|
-
</div>
|
|
7
|
-
<% end %>
|
|
8
|
-
<% end %>
|