Skip to content

Commit 08bcbf4

Browse files
authored
feat: trigger warning added (CollectionBuilder#48)
* feat: trigger warning added * fix: add trigger warnings for browse * fix: more consitent layout
1 parent 531353e commit 08bcbf4

5 files changed

Lines changed: 47 additions & 3 deletions

File tree

_data/theme.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,12 @@ home-banner-image-position: center # Default is top
1919
#
2020
# see _data/metadata-config.csv to define the metadata fields that will display.
2121
browse-buttons: true # true / false, adds previous/next arrows to items, but increases build time
22+
trigger-warning: true # true / false, adds trigger warning to item pages
23+
trigger-warning-text: "This collection may contain sensitive content." # optional, if you want to override the default trigger warning text
24+
trigger-warning-text-item: "This item may contain sensitive content." # optional, if you want to override the default trigger warning text for individual items
25+
trigger-field: "subject" # field to trigger warning, e.g. "subject"
26+
trigger-terms: "Success,violence,sexuality,racism,discrimination" # set of subjects separated by , that will trigger warning, e.g. violence,sexuality,racism,discrimination
27+
2228

2329
##########
2430
# SUBJECTS PAGE
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
{% comment %}
2+
Adds Bootstrap styled trigger warning to page.
3+
By default the trigger warning is: "This item contains sensitive content."
4+
The trigger warning can be customized in the site.data.theme file.
5+
{% endcomment %}
6+
7+
{% if site.data.theme.trigger-warning %}
8+
{% assign trigger_field = site.data.theme.trigger-field | default: "subject" %}
9+
{% assign trigger_terms = site.data.theme.trigger-terms | split: "," %}
10+
{% assign terms = page[trigger_field] | split: ";" %}
11+
12+
<div class="alert alert-danger" role="alert" id="trigger-warning" style="display: none;">
13+
{{ site.data.theme.trigger-warning-text-item | default: "This item may contain sensitive content." }}
14+
</div>
15+
16+
<script>
17+
var triggerTerms = {{ trigger_terms | jsonify }};
18+
var terms = {{ terms | jsonify }};
19+
// strip whitespace from terms
20+
terms = terms.map(function(x) { return x.trim(); });
21+
22+
function doTwoArraysShareElement(arr1, arr2) {
23+
return arr1.some(item => arr2.includes(item));
24+
}
25+
26+
// Check if the arrays share an element and show the warning if they do
27+
if (doTwoArraysShareElement(terms, triggerTerms)) {
28+
document.getElementById("trigger-warning").style.display = "block";
29+
}
30+
</script>
31+
{% endif %}

_layouts/browse.html

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,12 @@
66

77
{{ content }}
88

9+
{% if site.data.theme.trigger-warning %}
10+
<div class="alert alert-danger" role="alert" id="trigger-warning">
11+
{{ site.data.theme.trigger-warning-text | default: "This collection may contain sensitive content." }}
12+
</div>
13+
{% endif %}
14+
915
<div class="row mb-3 justify-content-center">
1016
<div class="col-md-8 text-center">
1117
<form role="search" id="lunrSearch" onsubmit="submitFilter(); return false;">
@@ -31,7 +37,6 @@
3137
{% endfor %}
3238
</div>
3339
</div>
34-
</div>
3540
</div>
3641

3742
<div id="loadingIcon" class="text-center">

_layouts/item/item-page-base.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
---
22
# base layout for other item display_template layouts
3-
# adds breadcrumbs and title at top; citation box, rights box, and browse buttons at bottom
3+
# adds breadcrumbs, trigger-warning, and title at top; citation box, rights box, and browse buttons at bottom
44
layout: default
55
# item-meta adds rich meta markup to the page on production build
66
item-meta: true
77
---
88
<div class="container py-3">
99

1010
{% include item/breadcrumbs.html %}
11+
{% include item/trigger-warning.html %}
1112
<div class="my-0 h5 small">{{ page.display_template | replace: "_", " " | upcase }} {% if page.display_template == "compound_object" or page.display_template == "multiple" %}{% assign children = site.data[site.metadata] | where_exp: 'item','item.parentid == page.objectid' %} ({{ children | size }} {{ site.data.translations['_includes']['_layouts']['item']['item-page-base.html']['items'][site.lang] | default: 'Items'}}){% endif %}</div>
1213
<h2 class="mb-3">{{ page.title }}
1314
{% unless page.display_template == 'record' %}<a href="#metadata" class="ms-5 btn btn-sm btn-outline-dark small">{{ site.data.translations['_includes']['_layouts']['item']['item-page-base.html']['item-info'][site.lang] | default: 'Item Info'}}

_layouts/item/item-page-full-width.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
# base layout for full page item display_template layouts
3-
# adds breadcrumbs and title at top; citation box, rights box, and browse buttons at bottom
3+
# adds breadcrumbs, trigger-warning, and title at top; citation box, rights box, and browse buttons at bottom
44
layout: default
55
# item-meta adds rich meta markup in HTML <head> element to the page on production build for better SEO
66
item-meta: true
@@ -9,6 +9,7 @@
99
<div class="container-fluid py-3">
1010

1111
{% include item/breadcrumbs.html %}
12+
{% include item/trigger-warning.html %}
1213
<div class="my-0 h5 small">{{ page.display_template | replace: "_", " " | upcase }} {% if page.display_template == "compound_object" %} ({{ children | size }} Items){% endif %}</div>
1314
<h2 class="mb-3">{{ page.title }}
1415
{% unless page.display_template == 'record' %}<a href="#metadata" class="ms-5 btn btn-sm btn-outline-dark small">{{ site.data.translations['_includes']['_layouts']['item']['item-page-full-width.html']['item-info'][site.lang] | default: 'Item Info'}}

0 commit comments

Comments
 (0)