blacklight-spotlight 4.5.0 → 4.6.1
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/app/assets/images/spotlight/blocks/sir-trevor-icons.svg +1 -1
- data/app/assets/javascripts/spotlight/spotlight.esm.js +19 -22
- data/app/assets/javascripts/spotlight/spotlight.esm.js.map +1 -1
- data/app/assets/javascripts/spotlight/spotlight.js +19 -22
- data/app/assets/javascripts/spotlight/spotlight.js.map +1 -1
- data/app/assets/stylesheets/spotlight/_blacklight_configuration.scss +5 -4
- data/app/assets/stylesheets/spotlight/_browse.scss +27 -12
- data/app/components/spotlight/bulk_action_component.html.erb +8 -0
- data/app/components/spotlight/bulk_action_component.rb +20 -0
- data/app/components/spotlight/header_navigation_link_component.html.erb +1 -0
- data/app/components/spotlight/header_navigation_link_component.rb +14 -0
- data/app/components/spotlight/save_search_component.html.erb +25 -0
- data/app/components/spotlight/save_search_component.rb +25 -0
- data/app/components/spotlight/translations/subheading_component.html.erb +3 -0
- data/app/components/spotlight/translations/subheading_component.rb +17 -0
- data/app/controllers/spotlight/accessibility_controller.rb +1 -3
- data/app/helpers/spotlight/application_helper.rb +6 -7
- data/app/helpers/spotlight/main_app_helpers.rb +1 -1
- data/app/javascript/spotlight/admin/blacklight_configuration.js +18 -21
- data/app/javascript/spotlight/admin/blocks/uploaded_items_block.js +2 -2
- data/app/models/spotlight/page_configurations.rb +2 -1
- data/app/views/catalog/_bulk_actions.html.erb +1 -10
- data/app/views/catalog/_save_search.html.erb +1 -25
- data/app/views/shared/_about_navbar.html.erb +1 -1
- data/app/views/shared/_browse_navbar.html.erb +1 -1
- data/app/views/shared/_curated_features_navbar.html.erb +4 -1
- data/app/views/spotlight/accessibility/alt_text.html.erb +1 -7
- data/app/views/spotlight/admin_users/index.html.erb +2 -2
- data/app/views/spotlight/metadata_configurations/edit.html.erb +12 -2
- data/app/views/spotlight/translations/_general.html.erb +2 -6
- data/app/views/spotlight/translations/_metadata.html.erb +1 -3
- data/app/views/spotlight/translations/_pages.html.erb +4 -9
- data/app/views/spotlight/translations/_search_fields.html.erb +3 -9
- data/config/locales/spotlight.en.yml +1 -1
- data/lib/generators/spotlight/templates/spotlight.scss +0 -1
- data/lib/spotlight/engine.rb +7 -0
- data/lib/spotlight/version.rb +1 -1
- metadata +10 -3
- data/app/assets/stylesheets/spotlight/_variables_bootstrap.scss +0 -7
@@ -11,13 +11,11 @@
|
|
11
11
|
@include edit-in-place-highlighting;
|
12
12
|
}
|
13
13
|
|
14
|
-
// the effect of position: relative on table elements is undefined, so put a div in there.
|
15
|
-
// this fix is for Firefox
|
16
14
|
.handle-wrap {
|
17
|
-
position: relative;
|
18
15
|
padding: 0.75rem 0.75rem 0.75rem 40px;
|
19
16
|
margin: 0;
|
20
17
|
margin-top: -1px;
|
18
|
+
height: 100%;
|
21
19
|
}
|
22
20
|
|
23
21
|
.dd3-handle:before {
|
@@ -77,7 +75,10 @@
|
|
77
75
|
.metadata-select {
|
78
76
|
display: inline-block;
|
79
77
|
text-wrap: nowrap;
|
80
|
-
|
78
|
+
}
|
79
|
+
|
80
|
+
.select-label {
|
81
|
+
font-weight: normal;
|
81
82
|
}
|
82
83
|
}
|
83
84
|
|
@@ -42,7 +42,7 @@ $image-overlay-max-height: 300px;
|
|
42
42
|
margin-bottom: $spacer;
|
43
43
|
|
44
44
|
.nav-link {
|
45
|
-
margin-bottom: $spacer * .75;
|
45
|
+
margin-bottom: $spacer * 0.75;
|
46
46
|
}
|
47
47
|
}
|
48
48
|
|
@@ -61,8 +61,13 @@ $image-overlay-max-height: 300px;
|
|
61
61
|
overflow: hidden;
|
62
62
|
position: relative;
|
63
63
|
|
64
|
-
img {
|
64
|
+
.img-responsive {
|
65
|
+
transition: all 0.5s ease;
|
65
66
|
width: 100%;
|
67
|
+
|
68
|
+
&:hover {
|
69
|
+
filter: brightness(70%);
|
70
|
+
}
|
66
71
|
}
|
67
72
|
}
|
68
73
|
|
@@ -71,7 +76,11 @@ $image-overlay-max-height: 300px;
|
|
71
76
|
bottom: 0;
|
72
77
|
left: 0;
|
73
78
|
width: 100%;
|
74
|
-
background: linear-gradient(
|
79
|
+
background: linear-gradient(
|
80
|
+
0deg,
|
81
|
+
rgba(46, 45, 41, 0.7) 70%,
|
82
|
+
rgba(46, 45, 41, 0) 100%
|
83
|
+
);
|
75
84
|
color: $white;
|
76
85
|
padding: 50px 20px 20px 20px;
|
77
86
|
text-align: center;
|
@@ -93,10 +102,6 @@ $image-overlay-max-height: 300px;
|
|
93
102
|
text-transform: uppercase;
|
94
103
|
}
|
95
104
|
}
|
96
|
-
|
97
|
-
&:hover {
|
98
|
-
background: linear-gradient(to bottom, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.7));
|
99
|
-
}
|
100
105
|
}
|
101
106
|
|
102
107
|
@media screen and (max-width: breakpoint-max("sm")) {
|
@@ -106,19 +111,29 @@ $image-overlay-max-height: 300px;
|
|
106
111
|
max-height: $image-overlay-max-height;
|
107
112
|
max-width: 350px;
|
108
113
|
}
|
109
|
-
.text-overlay .browse-category-title {
|
114
|
+
.text-overlay .browse-category-title {
|
115
|
+
font-size: $h3-font-size;
|
116
|
+
}
|
110
117
|
}
|
111
118
|
@media screen and (min-width: breakpoint-min("sm")) and (max-width: breakpoint-max("md")) {
|
112
119
|
$image-overlay-max-height: 240px;
|
113
|
-
.image-overlay {
|
120
|
+
.image-overlay {
|
121
|
+
max-height: $image-overlay-max-height;
|
122
|
+
}
|
114
123
|
}
|
115
124
|
@media screen and (min-width: breakpoint-min("md")) and (max-width: breakpoint-max("lg")) {
|
116
125
|
$image-overlay-max-height: 250px;
|
117
|
-
.text-overlay .browse-category-title {
|
118
|
-
|
126
|
+
.text-overlay .browse-category-title {
|
127
|
+
font-size: $h4-font-size;
|
128
|
+
}
|
129
|
+
.image-overlay {
|
130
|
+
max-height: $image-overlay-max-height;
|
131
|
+
}
|
119
132
|
}
|
120
133
|
@media screen and (min-width: breakpoint-min("lg")) {
|
121
|
-
.image-overlay {
|
134
|
+
.image-overlay {
|
135
|
+
max-height: $image-overlay-max-height;
|
136
|
+
}
|
122
137
|
}
|
123
138
|
}
|
124
139
|
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<div class="dropdown bulk-actions-dropdown">
|
2
|
+
<%= button %>
|
3
|
+
<div class="dropdown-menu" aria-labelledby="bulk-actions-button">
|
4
|
+
<% bulk_actions.each do |key, _config| %>
|
5
|
+
<%= link_to t("spotlight.bulk_actions.#{key}.heading"), '#', class: 'dropdown-item', data: { toggle: "modal", "bs-toggle": "modal", target: "##{key.to_s.dasherize}-modal", "bs-target": "##{key.to_s.dasherize}-modal" } %>
|
6
|
+
<% end %>
|
7
|
+
</div>
|
8
|
+
</div>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Spotlight
|
4
|
+
# Displays the "Bulk actions" button and dropdown
|
5
|
+
class BulkActionComponent < ViewComponent::Base
|
6
|
+
def initialize(bulk_actions:, button_classes: 'btn btn-secondary dropdown-toggle')
|
7
|
+
@bulk_actions = bulk_actions
|
8
|
+
@button_classes = button_classes
|
9
|
+
super
|
10
|
+
end
|
11
|
+
|
12
|
+
attr_reader :button_classes, :bulk_actions
|
13
|
+
|
14
|
+
def button
|
15
|
+
button_tag t(:'spotlight.bulk_actions.label'), id: 'bulk-actions-button', class: button_classes,
|
16
|
+
data: { toggle: 'dropdown', 'bs-toggle': 'dropdown' },
|
17
|
+
aria: { haspopup: true, expanded: false }
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
<li class="nav-item <%= "active" if @active %>"><%= link_to @label, @path, class: 'nav-link' %></li>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Spotlight
|
4
|
+
# This draws a navigation link in the header.
|
5
|
+
# A downstream application may switch out the implementation to use different styles, etc.
|
6
|
+
class HeaderNavigationLinkComponent < ViewComponent::Base
|
7
|
+
def initialize(path:, active:, label:)
|
8
|
+
@path = path
|
9
|
+
@active = active
|
10
|
+
@label = label
|
11
|
+
super
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
<%= button %>
|
2
|
+
<div class="modal fade" id="save-modal" tabindex="-1" role="dialog" aria-labelledby="save-modal-label" aria-hidden="true">
|
3
|
+
<div class="modal-dialog">
|
4
|
+
<%= bootstrap_form_for form_path, html: { novalidate: true } do |f| %>
|
5
|
+
<div class="modal-content">
|
6
|
+
<div class="modal-header">
|
7
|
+
<h4 class="modal-title" id="save-modal-label"><%= t(:'spotlight.saved_search.label') %></h4>
|
8
|
+
<button type="button" class="blacklight-modal-close close btn-close" data-dismiss="modal" data-bs-dismiss="modal" aria-label="<%= t('blacklight.modal.close') %>">
|
9
|
+
<span aria-hidden="true" class="visually-hidden">×</span>
|
10
|
+
</button>
|
11
|
+
</div>
|
12
|
+
<div class="modal-body">
|
13
|
+
<%= f.text_field :title, label: t(:'spotlight.saved_search.title') %>
|
14
|
+
<%= label_tag :id, t(:'spotlight.saved_search.id'), class: 'col-form-label' %>
|
15
|
+
<%= select_tag :id, options_for_select(searches.map { |s| [s.full_title, s.id] }), include_blank: true, class: 'form-control' %>
|
16
|
+
<%= render Blacklight::HiddenSearchStateComponent.new(params: search_state.params_for_search.except(:qt, :page)) %>
|
17
|
+
</div>
|
18
|
+
<div class="modal-footer d-flex flex-row-reverse justify-content-start">
|
19
|
+
<%= f.submit nil, class: 'btn btn-primary' %>
|
20
|
+
<button type="button" class="btn btn-link" data-dismiss="modal" data-bs-dismiss="modal"><%= t :cancel %></button>
|
21
|
+
</div>
|
22
|
+
</div>
|
23
|
+
<% end %>
|
24
|
+
</div>
|
25
|
+
</div>
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Spotlight
|
4
|
+
# Displays the "Save this search" button and modal
|
5
|
+
class SaveSearchComponent < ViewComponent::Base
|
6
|
+
def initialize(button_classes: 'btn btn-secondary')
|
7
|
+
@button_classes = button_classes
|
8
|
+
super
|
9
|
+
end
|
10
|
+
|
11
|
+
attr_reader :button_classes
|
12
|
+
|
13
|
+
delegate :search_state, :current_exhibit, to: :helpers
|
14
|
+
delegate :searches, to: :current_exhibit
|
15
|
+
|
16
|
+
def button
|
17
|
+
button_tag t(:'spotlight.saved_search.label'), id: 'save-this-search', class: button_classes,
|
18
|
+
data: { toggle: 'modal', 'bs-toggle': 'modal', target: '#save-modal', 'bs-target': '#save-modal' }
|
19
|
+
end
|
20
|
+
|
21
|
+
def form_path
|
22
|
+
[helpers.spotlight, current_exhibit, Spotlight::Search.new]
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Spotlight
|
4
|
+
module Translations
|
5
|
+
# Draws a sub-heading for a translation.
|
6
|
+
class SubheadingComponent < ViewComponent::Base
|
7
|
+
def initialize(key:)
|
8
|
+
@key = key
|
9
|
+
super
|
10
|
+
end
|
11
|
+
|
12
|
+
def text
|
13
|
+
t(@key, scope: 'spotlight.translations')
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -8,11 +8,9 @@ module Spotlight
|
|
8
8
|
load_and_authorize_resource :exhibit, class: Spotlight::Exhibit
|
9
9
|
|
10
10
|
def alt_text
|
11
|
-
@limit = 5
|
12
11
|
# Sort by newest except for the homepage, which is always first
|
13
12
|
pages_with_alt = @exhibit.pages.order(Arel.sql('id = 1 DESC, created_at DESC')).select { |elem| elem.content.any?(&:alt_text?) }
|
14
|
-
pages =
|
15
|
-
@pages = pages.map { |page| get_alt_info(page) }
|
13
|
+
@pages = pages_with_alt.map { |page| get_alt_info(page) }
|
16
14
|
@has_alt_text = @pages.sum { |page| page[:has_alt_text] }
|
17
15
|
@total_alt_items = @pages.sum { |page| page[:can_have_alt_text] }
|
18
16
|
|
@@ -124,14 +124,13 @@ module Spotlight
|
|
124
124
|
end.keys.map(&:to_s)
|
125
125
|
end
|
126
126
|
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
127
|
+
# Create checkbox for selecting/deselecting metadata fields for a given view in metadata configuration
|
128
|
+
def select_deselect_action(id)
|
129
|
+
check_box_tag(
|
130
|
+
id,
|
131
|
+
class: 'metadata-select',
|
131
132
|
data: {
|
132
|
-
behavior: 'metadata-select'
|
133
|
-
'deselect-text' => t(:'.deselect_all'),
|
134
|
-
'select-text' => t(:'.select_all')
|
133
|
+
behavior: 'metadata-select'
|
135
134
|
}
|
136
135
|
)
|
137
136
|
end
|
@@ -46,7 +46,7 @@ module Spotlight
|
|
46
46
|
if current_exhibit_theme && current_exhibit&.theme != 'default'
|
47
47
|
stylesheet_link_tag "#{tag}_#{current_exhibit_theme}"
|
48
48
|
else
|
49
|
-
Rails.logger.
|
49
|
+
Rails.logger.debug { "Exhibit theme '#{current_exhibit_theme}' not in the list of available themes: #{current_exhibit&.themes}" }
|
50
50
|
stylesheet_link_tag(tag)
|
51
51
|
end
|
52
52
|
end
|
@@ -1,53 +1,50 @@
|
|
1
1
|
export default class {
|
2
2
|
connect() {
|
3
|
-
// Add Select/Deselect all
|
3
|
+
// Add Select/Deselect all input behavior
|
4
4
|
this.addCheckboxToggleBehavior();
|
5
5
|
this.addEnableToggleBehavior();
|
6
6
|
}
|
7
7
|
|
8
|
-
// Add Select/Deselect all
|
8
|
+
// Add Select/Deselect all behavior for metadata field names for a given view e.g. Item details.
|
9
9
|
addCheckboxToggleBehavior() {
|
10
10
|
$("[data-behavior='metadata-select']").each(function(){
|
11
|
-
var
|
12
|
-
var parentCell =
|
11
|
+
var selectCheckbox = $(this);
|
12
|
+
var parentCell = selectCheckbox.parents("th");
|
13
13
|
var table = parentCell.closest("table");
|
14
14
|
var columnRows = $("tr td:nth-child(" + (parentCell.index() + 1) + ")", table);
|
15
15
|
var checkboxes = $("input[type='checkbox']", columnRows);
|
16
|
-
|
17
|
-
// Add the check/uncheck behavior to the
|
18
|
-
|
19
|
-
button.on('click', function(e){
|
20
|
-
e.preventDefault();
|
16
|
+
updateSelectAllInput(selectCheckbox, columnRows);
|
17
|
+
// Add the check/uncheck behavior to the select/deselect all checkbox
|
18
|
+
selectCheckbox.on('click', function(e){
|
21
19
|
var allChecked = allCheckboxesChecked(columnRows);
|
22
20
|
columnRows.each(function(){
|
23
21
|
$("input[type='checkbox']", $(this)).prop('checked', !allChecked);
|
24
|
-
swapSelectAllButtonText(button, columnRows);
|
25
22
|
});
|
26
23
|
});
|
27
|
-
//
|
24
|
+
// When a single checkbox is selected/unselected, the "All" checkbox should be updated accordingly.
|
28
25
|
checkboxes.each(function(){
|
29
26
|
$(this).on('change', function(){
|
30
|
-
|
27
|
+
updateSelectAllInput(selectCheckbox, columnRows);
|
31
28
|
});
|
32
|
-
});
|
29
|
+
});
|
33
30
|
});
|
31
|
+
|
34
32
|
// Check number of checkboxes against the number of checked
|
35
33
|
// checkboxes to determine if all of them are checked or not
|
36
34
|
function allCheckboxesChecked(elements) {
|
37
35
|
return ($("input[type='checkbox']", elements).length == $("input[type='checkbox']:checked", elements).length)
|
38
36
|
}
|
39
|
-
|
40
|
-
//
|
41
|
-
|
42
|
-
function swapSelectAllButtonText(button, elements) {
|
37
|
+
|
38
|
+
// Check or uncheck the "All" checkbox for each view column, e.g. Item details, List, etc.
|
39
|
+
function updateSelectAllInput(checkbox, elements) {
|
43
40
|
if ( allCheckboxesChecked(elements) ) {
|
44
|
-
|
41
|
+
checkbox.prop('checked', true);
|
45
42
|
} else {
|
46
|
-
|
43
|
+
checkbox.prop('checked', false);
|
47
44
|
}
|
48
45
|
}
|
49
46
|
}
|
50
|
-
|
47
|
+
|
51
48
|
addEnableToggleBehavior() {
|
52
49
|
$("[data-behavior='enable-feature']").each(function(){
|
53
50
|
var checkbox = $(this);
|
@@ -62,4 +59,4 @@ export default class {
|
|
62
59
|
});
|
63
60
|
});
|
64
61
|
}
|
65
|
-
}
|
62
|
+
}
|
@@ -137,8 +137,8 @@ SirTrevor.Blocks.UploadedItems = (function(){
|
|
137
137
|
</div>
|
138
138
|
<div class="col-md-4">
|
139
139
|
<input name="${this.zpr_key}" type="hidden" value="false" />
|
140
|
-
<input name="${this.zpr_key}" id="${this.formId(this.zpr_key)}" data-key
|
141
|
-
<label for="${this.formId(this.zpr_key)}">${
|
140
|
+
<input name="${this.zpr_key}" id="${this.formId(this.zpr_key)}" data-key="${this.zpr_key}" type="checkbox" value="true" />
|
141
|
+
<label for="${this.formId(this.zpr_key)}">${i18n.t("blocks:solr_documents:zpr:title")}</label>
|
142
142
|
</div>
|
143
143
|
</div>
|
144
144
|
${this.text_area()}
|
@@ -40,7 +40,8 @@ module Spotlight
|
|
40
40
|
'autocomplete-exhibit-pages-path': page_autocomplete_endpoint,
|
41
41
|
'autocomplete-exhibit-browse-groups-path': browse_groups_autocomplete_endpoint,
|
42
42
|
'autocomplete-exhibit-searches-path': search_autocomplete_endpoint,
|
43
|
-
'preview-url': page_preview_url
|
43
|
+
'preview-url': page_preview_url,
|
44
|
+
'exhibit-path': spotlight.exhibit_path(current_exhibit)
|
44
45
|
}.merge(downstream_parameters)
|
45
46
|
end
|
46
47
|
|
@@ -1,12 +1,3 @@
|
|
1
|
-
|
2
|
-
<button class="btn btn-secondary dropdown-toggle" type="button" id="bulk-actions-button" data-toggle="dropdown" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
3
|
-
<%= t(:'spotlight.bulk_actions.label') %>
|
4
|
-
</button>
|
5
|
-
<div class="dropdown-menu" aria-labelledby="bulk-actions-button">
|
6
|
-
<% blacklight_config.bulk_actions.each do |key, _config| %>
|
7
|
-
<%= link_to t("spotlight.bulk_actions.#{key}.heading"), '#', class: 'dropdown-item', data: { toggle: "modal", "bs-toggle": "modal", target: "##{key.to_s.dasherize}-modal", "bs-target": "##{key.to_s.dasherize}-modal" } %>
|
8
|
-
<% end %>
|
9
|
-
</div>
|
10
|
-
</div>
|
1
|
+
<%= render Spotlight::BulkActionComponent.new(bulk_actions: blacklight_config.bulk_actions) %>
|
11
2
|
|
12
3
|
<%= render_filtered_partials(blacklight_config.bulk_actions) %>
|
@@ -1,25 +1 @@
|
|
1
|
-
<%=
|
2
|
-
<div class="modal fade" id="save-modal" tabindex="-1" role="dialog" aria-labelledby="save-modal-label" aria-hidden="true">
|
3
|
-
<div class="modal-dialog">
|
4
|
-
<%= bootstrap_form_for [spotlight, current_exhibit, Spotlight::Search.new], html: { novalidate: true } do |f| %>
|
5
|
-
<div class="modal-content">
|
6
|
-
<div class="modal-header">
|
7
|
-
<h4 class="modal-title" id="save-modal-label"><%= t(:'spotlight.saved_search.label') %></h4>
|
8
|
-
<button type="button" class="blacklight-modal-close close btn-close" data-dismiss="modal" data-bs-dismiss="modal" aria-label="<%= t('blacklight.modal.close') %>">
|
9
|
-
<span aria-hidden="true" class="visually-hidden">×</span>
|
10
|
-
</button>
|
11
|
-
</div>
|
12
|
-
<div class="modal-body">
|
13
|
-
<%= f.text_field :title, label: t(:'spotlight.saved_search.title') %>
|
14
|
-
<%= label_tag :id, t(:'spotlight.saved_search.id'), class: 'col-form-label' %>
|
15
|
-
<%= select_tag :id, options_for_select(current_exhibit.searches.map { |s| [s.full_title, s.id] }), include_blank: true, class: 'form-control' %>
|
16
|
-
<%= render Blacklight::HiddenSearchStateComponent.new(params: search_state.params_for_search.except(:qt, :page)) %>
|
17
|
-
</div>
|
18
|
-
<div class="modal-footer d-flex flex-row-reverse justify-content-start">
|
19
|
-
<%= f.submit nil, class: 'btn btn-primary' %>
|
20
|
-
<button type="button" class="btn btn-link" data-dismiss="modal" data-bs-dismiss="modal"><%= t :cancel %></button>
|
21
|
-
</div>
|
22
|
-
</div>
|
23
|
-
<% end %>
|
24
|
-
</div>
|
25
|
-
</div>
|
1
|
+
<%= render Spotlight::SaveSearchComponent.new %>
|
@@ -1,3 +1,3 @@
|
|
1
1
|
<% if current_exhibit.main_about_page %>
|
2
|
-
|
2
|
+
<%= render Spotlight::Engine.config.spotlight.header_navigation_link_component.new(active: on_about_page?, label: navigation.label_or_default, path: [spotlight, current_exhibit, current_exhibit.main_about_page]) %>
|
3
3
|
<% end %>
|
@@ -1,3 +1,3 @@
|
|
1
1
|
<% if current_exhibit.browse_categories? %>
|
2
|
-
|
2
|
+
<%= render Spotlight::Engine.config.spotlight.header_navigation_link_component.new(active: on_browse_page?, label: navigation.label_or_default, path: spotlight.exhibit_browse_index_path(current_exhibit)) %>
|
3
3
|
<% end %>
|
@@ -10,6 +10,9 @@
|
|
10
10
|
</ul>
|
11
11
|
</li>
|
12
12
|
<% else %>
|
13
|
-
|
13
|
+
<%= render Spotlight::Engine.config.spotlight.header_navigation_link_component.new(active: current_page?(url_for([spotlight, published_top_level_feature_pages.first.exhibit, published_top_level_feature_pages.first])),
|
14
|
+
label: published_top_level_feature_pages.first.title,
|
15
|
+
path: [spotlight, published_top_level_feature_pages.first.exhibit, published_top_level_feature_pages.first]) %>
|
16
|
+
|
14
17
|
<% end %>
|
15
18
|
<% end %>
|
@@ -53,7 +53,7 @@
|
|
53
53
|
<div class="mb-4">
|
54
54
|
<h3 class="instructions"><%= t :'.admins_curators' %></h3>
|
55
55
|
<div id="admins_curators" class="card card-body bg-light">
|
56
|
-
<div class='btn-toolbar float-right
|
56
|
+
<div class='btn-toolbar float-right align-self-end'>
|
57
57
|
<button class="btn btn-sm btn-secondary copy-email-addresses" data-clipboard-target="#admins_curators">
|
58
58
|
<%= t('.copy') %>
|
59
59
|
</button>
|
@@ -87,7 +87,7 @@
|
|
87
87
|
data: { method: :delete, turbo_method: :delete },
|
88
88
|
class: 'btn btn-sm btn-danger') unless user == current_user %>
|
89
89
|
<% else %>
|
90
|
-
<%= link_to(t('.update'), admin_user_path(user),
|
90
|
+
<%= link_to(t('.update'), admin_user_path(user),
|
91
91
|
data: { method: :patch, turbo_method: :patch },
|
92
92
|
class: 'btn btn-sm btn-secondary') %>
|
93
93
|
<% end %>
|
@@ -16,14 +16,24 @@
|
|
16
16
|
<div>
|
17
17
|
<%= t :'.view.show' %>
|
18
18
|
</div>
|
19
|
-
|
19
|
+
<div class="text-center">
|
20
|
+
<%= label_tag 'item_details', class: 'select-label' do %>
|
21
|
+
<%= select_deselect_action(t :'.view.select_id') %>
|
22
|
+
<%= t(:'.select_all') %>
|
23
|
+
<% end %>
|
24
|
+
</div>
|
20
25
|
</th>
|
21
26
|
<% available_view_fields.keys.each do |type| %>
|
22
27
|
<th class="text-center">
|
23
28
|
<div>
|
24
29
|
<%= t :".view.#{type}", default: t("blacklight.search.view.#{type}", default: type.to_s.humanize.titleize) %>
|
25
30
|
</div>
|
26
|
-
|
31
|
+
<div class="text-center">
|
32
|
+
<%= label_tag t(:'.deselect_all') + type.to_s, class: 'select-label' do %>
|
33
|
+
<%= select_deselect_action(t(:'.deselect_all') + type.to_s) %>
|
34
|
+
<%= t(:'.select_all') %>
|
35
|
+
<% end %>
|
36
|
+
</div>
|
27
37
|
</th>
|
28
38
|
<% end %>
|
29
39
|
<th class="text-center"><%= t :'.type_label' %></th>
|
@@ -4,9 +4,7 @@
|
|
4
4
|
<%= hidden_field_tag :language, @language %>
|
5
5
|
|
6
6
|
<div class='translation-basic-settings'>
|
7
|
-
|
8
|
-
<%= t('.basic_settings.label') %>
|
9
|
-
</h2>
|
7
|
+
<%= render Spotlight::Translations::SubheadingComponent.new(key: 'general.basic_settings.label') %>
|
10
8
|
|
11
9
|
<% translation = Translation.find_or_initialize_by(exhibit: current_exhibit, key: "#{current_exhibit.slug}.title", locale: @language) %>
|
12
10
|
<%= f.fields_for :translations, translation do |translation_fields| %>
|
@@ -73,9 +71,7 @@
|
|
73
71
|
<% end %>
|
74
72
|
</div>
|
75
73
|
<div class='translation-main-menu'>
|
76
|
-
|
77
|
-
<%= t('.main_menu.label') %>
|
78
|
-
</h2>
|
74
|
+
<%= render Spotlight::Translations::SubheadingComponent.new(key: 'general.main_menu.label') %>
|
79
75
|
|
80
76
|
<% translation = Translation.find_or_initialize_by(exhibit: current_exhibit, key: "spotlight.curation.nav.home", locale: @language) %>
|
81
77
|
<%= f.fields_for :translations, translation do |translation_fields| %>
|
@@ -31,9 +31,7 @@
|
|
31
31
|
|
32
32
|
<% if current_exhibit.custom_fields.any? %>
|
33
33
|
<div class='translation-exhibit-specific-fields'>
|
34
|
-
|
35
|
-
<%= t('.exhibit_specific_fields.label') %>
|
36
|
-
</h2>
|
34
|
+
<%= render Spotlight::Translations::SubheadingComponent.new(key: 'metadata.exhibit_specific_fields.label') %>
|
37
35
|
|
38
36
|
<% current_exhibit.custom_fields.each do |custom_field| %>
|
39
37
|
<% translation = Translation.find_or_initialize_by(exhibit: current_exhibit, key: "blacklight.search.fields.#{custom_field.field}", locale: @language) %>
|
@@ -3,17 +3,14 @@
|
|
3
3
|
|
4
4
|
<%= bootstrap_form_for @exhibit, url: polymorphic_path([:update_all, @exhibit, :pages]), layout: :horizontal, control_col: 'col-sm-10', html: {:'data-form-observer' => true} do |f| %>
|
5
5
|
<div class="translation-home-page-settings">
|
6
|
-
|
7
|
-
|
8
|
-
</h2>
|
6
|
+
<%= render Spotlight::Translations::SubheadingComponent.new(key: 'pages.home_page.label') %>
|
7
|
+
|
9
8
|
<%= render 'pages_table', pages: [current_exhibit.home_page], f: f %>
|
10
9
|
</div>
|
11
10
|
|
12
11
|
<% if current_exhibit.feature_pages.any? %>
|
13
12
|
<div class="translation-feature-page-settings">
|
14
|
-
|
15
|
-
<%= t('.feature_pages.label') %>
|
16
|
-
</h2>
|
13
|
+
<%= render Spotlight::Translations::SubheadingComponent.new(key: 'pages.feature_pages.label') %>
|
17
14
|
|
18
15
|
<%= render 'pages_table', pages: current_exhibit.feature_pages.for_default_locale, f: f %>
|
19
16
|
</div>
|
@@ -21,9 +18,7 @@
|
|
21
18
|
|
22
19
|
<% if current_exhibit.about_pages.any? %>
|
23
20
|
<div class="translation-about-page-settings">
|
24
|
-
|
25
|
-
<%= t('.about_pages.label') %>
|
26
|
-
</h2>
|
21
|
+
<%= render Spotlight::Translations::SubheadingComponent.new(key: 'pages.about_pages.label') %>
|
27
22
|
|
28
23
|
<%= render 'pages_table', pages: current_exhibit.about_pages.for_default_locale, f: f %>
|
29
24
|
</div>
|
@@ -5,9 +5,7 @@
|
|
5
5
|
<%= hidden_field_tag :tab, 'search_fields', id: nil %>
|
6
6
|
|
7
7
|
<div class='translation-field-based-search-fields'>
|
8
|
-
|
9
|
-
<%= t('.field_based_search_fields.label') %>
|
10
|
-
</h2>
|
8
|
+
<%= render Spotlight::Translations::SubheadingComponent.new(key: 'search_fields.field_based_search_fields.label') %>
|
11
9
|
|
12
10
|
<% current_exhibit.blacklight_config.search_fields.select { |_, config| config.if }.each do |key, search_config| %>
|
13
11
|
<% translation = Translation.find_or_initialize_by(exhibit: current_exhibit, key: "blacklight.search.fields.search.#{key}", locale: @language) %>
|
@@ -35,9 +33,7 @@
|
|
35
33
|
</div>
|
36
34
|
|
37
35
|
<div class='translation-facet-fields'>
|
38
|
-
|
39
|
-
<%= t('.facet_fields.label') %>
|
40
|
-
</h2>
|
36
|
+
<%= render Spotlight::Translations::SubheadingComponent.new(key: 'search_fields.facet_fields.label') %>
|
41
37
|
|
42
38
|
<% current_exhibit.blacklight_config.facet_fields.each do |key, facet_config| %>
|
43
39
|
<% translation = Translation.find_or_initialize_by(exhibit: current_exhibit, key: "blacklight.search.fields.facet.#{key}", locale: @language) %>
|
@@ -65,9 +61,7 @@
|
|
65
61
|
</div>
|
66
62
|
|
67
63
|
<div class='translation-sort-fields'>
|
68
|
-
|
69
|
-
<%= t('.sort_fields.label') %>
|
70
|
-
</h2>
|
64
|
+
<%= render Spotlight::Translations::SubheadingComponent.new(key: 'search_fields.sort_fields.label') %>
|
71
65
|
|
72
66
|
<% current_exhibit.blacklight_config.sort_fields.each do |key, sort_config| %>
|
73
67
|
<% translation = Translation.find_or_initialize_by(exhibit: current_exhibit, key: "blacklight.search.fields.sort.#{key}", locale: @language) %>
|
@@ -720,7 +720,7 @@ en:
|
|
720
720
|
header: Metadata
|
721
721
|
instructions: Select metadata fields to display on each type of page. Select a field name to edit its display label. Drag and drop fields to specify the order in which they are displayed.
|
722
722
|
order_header: Display and order metadata fields
|
723
|
-
select_all:
|
723
|
+
select_all: All
|
724
724
|
type_label: Type
|
725
725
|
view:
|
726
726
|
show: Item details
|