spotlight-frontend 3.5.0-beta.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.
- package/LICENSE +13 -0
- package/README.md +114 -0
- package/app/assets/images/blacklight/arrow-alt-circle-left.svg +1 -0
- package/app/assets/images/blacklight/arrow-alt-circle-right.svg +1 -0
- package/app/assets/images/blacklight/arrow_back_ios.svg +1 -0
- package/app/assets/images/blacklight/arrow_forward_ios.svg +1 -0
- package/app/assets/images/blacklight/check.svg +1 -0
- package/app/assets/images/blacklight/check_circle.svg +1 -0
- package/app/assets/images/blacklight/chevron_right.svg +1 -0
- package/app/assets/images/blacklight/close.svg +1 -0
- package/app/assets/images/blacklight/edit.svg +1 -0
- package/app/assets/images/blacklight/error.svg +1 -0
- package/app/assets/images/blacklight/highlight_off.svg +1 -0
- package/app/assets/images/blacklight/info.svg +1 -0
- package/app/assets/images/blacklight/warning.svg +1 -0
- package/app/assets/images/blacklight/zoom_in.svg +1 -0
- package/app/assets/images/blacklight/zoom_out.svg +1 -0
- package/app/assets/images/spotlight/.keep +0 -0
- package/app/assets/images/spotlight/blocks/sir-trevor-icons.svg +320 -0
- package/app/assets/images/spotlight/default_browse_thumbnail.jpg +0 -0
- package/app/assets/images/spotlight/default_thumbnail.jpg +0 -0
- package/app/assets/images/spotlight/fallback/default.png +0 -0
- package/app/assets/javascripts/spotlight/admin/add_another.js +22 -0
- package/app/assets/javascripts/spotlight/admin/add_new_button.js +81 -0
- package/app/assets/javascripts/spotlight/admin/appearance.js +24 -0
- package/app/assets/javascripts/spotlight/admin/attachments.js +2 -0
- package/app/assets/javascripts/spotlight/admin/blacklight_configuration.js +63 -0
- package/app/assets/javascripts/spotlight/admin/block_mixins/autocompleteable.js +72 -0
- package/app/assets/javascripts/spotlight/admin/block_mixins/formable.js +78 -0
- package/app/assets/javascripts/spotlight/admin/block_mixins/plustextable.js +57 -0
- package/app/assets/javascripts/spotlight/admin/blocks/block.js +23 -0
- package/app/assets/javascripts/spotlight/admin/blocks/browse_block.js +87 -0
- package/app/assets/javascripts/spotlight/admin/blocks/browse_group_categories_block.js +88 -0
- package/app/assets/javascripts/spotlight/admin/blocks/iframe_block.js +34 -0
- package/app/assets/javascripts/spotlight/admin/blocks/link_to_search_block.js +16 -0
- package/app/assets/javascripts/spotlight/admin/blocks/oembed_block.js +40 -0
- package/app/assets/javascripts/spotlight/admin/blocks/pages_block.js +22 -0
- package/app/assets/javascripts/spotlight/admin/blocks/resources_block.js +145 -0
- package/app/assets/javascripts/spotlight/admin/blocks/rule_block.js +25 -0
- package/app/assets/javascripts/spotlight/admin/blocks/search_result_block.js +44 -0
- package/app/assets/javascripts/spotlight/admin/blocks/solr_documents_base_block.js +108 -0
- package/app/assets/javascripts/spotlight/admin/blocks/solr_documents_block.js +25 -0
- package/app/assets/javascripts/spotlight/admin/blocks/solr_documents_carousel_block.js +103 -0
- package/app/assets/javascripts/spotlight/admin/blocks/solr_documents_embed_block.js +17 -0
- package/app/assets/javascripts/spotlight/admin/blocks/solr_documents_features_block.js +41 -0
- package/app/assets/javascripts/spotlight/admin/blocks/solr_documents_grid_block.js +14 -0
- package/app/assets/javascripts/spotlight/admin/blocks/uploaded_items_block.js +145 -0
- package/app/assets/javascripts/spotlight/admin/catalog_edit.js +16 -0
- package/app/assets/javascripts/spotlight/admin/copy_email_addresses.js +9 -0
- package/app/assets/javascripts/spotlight/admin/crop.es6 +310 -0
- package/app/assets/javascripts/spotlight/admin/croppable.js +25 -0
- package/app/assets/javascripts/spotlight/admin/edit_in_place.js +54 -0
- package/app/assets/javascripts/spotlight/admin/exhibit_tag_autocomplete.js +37 -0
- package/app/assets/javascripts/spotlight/admin/exhibits.js +58 -0
- package/app/assets/javascripts/spotlight/admin/form_observer.js +86 -0
- package/app/assets/javascripts/spotlight/admin/iiif.es6 +54 -0
- package/app/assets/javascripts/spotlight/admin/index.js +16 -0
- package/app/assets/javascripts/spotlight/admin/locks.js +12 -0
- package/app/assets/javascripts/spotlight/admin/multi_image_selector.js +158 -0
- package/app/assets/javascripts/spotlight/admin/pages.js.erb +40 -0
- package/app/assets/javascripts/spotlight/admin/progress_monitor.js +148 -0
- package/app/assets/javascripts/spotlight/admin/readonly_checkbox.js +6 -0
- package/app/assets/javascripts/spotlight/admin/search_typeahead.js +108 -0
- package/app/assets/javascripts/spotlight/admin/select_related_input.js +34 -0
- package/app/assets/javascripts/spotlight/admin/sir-trevor/block_controls.js +120 -0
- package/app/assets/javascripts/spotlight/admin/sir-trevor/block_limits.js +37 -0
- package/app/assets/javascripts/spotlight/admin/sir-trevor/locales.js +120 -0
- package/app/assets/javascripts/spotlight/admin/spotlight_nestable.js +72 -0
- package/app/assets/javascripts/spotlight/admin/tabs.js +6 -0
- package/app/assets/javascripts/spotlight/admin/translation_progress.js +23 -0
- package/app/assets/javascripts/spotlight/admin/users.js +79 -0
- package/app/assets/javascripts/spotlight/application.js +14 -0
- package/app/assets/javascripts/spotlight/spotlight.js +23 -0
- package/app/assets/javascripts/spotlight/user/analytics.js +9 -0
- package/app/assets/javascripts/spotlight/user/browse_group_categories.js +59 -0
- package/app/assets/javascripts/spotlight/user/carousel.js +3 -0
- package/app/assets/javascripts/spotlight/user/clear_form_button.js +27 -0
- package/app/assets/javascripts/spotlight/user/index.js +8 -0
- package/app/assets/javascripts/spotlight/user/report_a_problem.js +39 -0
- package/app/assets/javascripts/spotlight/user/zpr_links.js.erb +45 -0
- package/app/assets/stylesheets/spotlight/_accessibility.scss +8 -0
- package/app/assets/stylesheets/spotlight/_attachments.css +4 -0
- package/app/assets/stylesheets/spotlight/_blacklight_configuration.scss +82 -0
- package/app/assets/stylesheets/spotlight/_blacklight_overrides.scss +21 -0
- package/app/assets/stylesheets/spotlight/_bootstrap_overrides.scss +105 -0
- package/app/assets/stylesheets/spotlight/_breadcrumbs.scss +6 -0
- package/app/assets/stylesheets/spotlight/_browse.scss +158 -0
- package/app/assets/stylesheets/spotlight/_catalog.scss +161 -0
- package/app/assets/stylesheets/spotlight/_collapse_toggle.scss +14 -0
- package/app/assets/stylesheets/spotlight/_croppable.scss +4 -0
- package/app/assets/stylesheets/spotlight/_curation.scss +224 -0
- package/app/assets/stylesheets/spotlight/_edit_in_place.scss +9 -0
- package/app/assets/stylesheets/spotlight/_exhibit_admin.scss +81 -0
- package/app/assets/stylesheets/spotlight/_exhibit_navbar.scss +10 -0
- package/app/assets/stylesheets/spotlight/_exhibits_index.scss +147 -0
- package/app/assets/stylesheets/spotlight/_featured_browse_categories_block.scss +269 -0
- package/app/assets/stylesheets/spotlight/_footer.scss +12 -0
- package/app/assets/stylesheets/spotlight/_header.scss +155 -0
- package/app/assets/stylesheets/spotlight/_item_text_block.scss +50 -0
- package/app/assets/stylesheets/spotlight/_mixins.scss +17 -0
- package/app/assets/stylesheets/spotlight/_modals.scss +3 -0
- package/app/assets/stylesheets/spotlight/_multi_image_selector.scss +22 -0
- package/app/assets/stylesheets/spotlight/_multi_up_item_grid.scss +63 -0
- package/app/assets/stylesheets/spotlight/_nestable.scss +124 -0
- package/app/assets/stylesheets/spotlight/_pages.scss +282 -0
- package/app/assets/stylesheets/spotlight/_report_a_problem.scss +14 -0
- package/app/assets/stylesheets/spotlight/_sir-trevor_overrides.scss +87 -0
- package/app/assets/stylesheets/spotlight/_slideshow_block.scss +87 -0
- package/app/assets/stylesheets/spotlight/_spotlight.scss +49 -0
- package/app/assets/stylesheets/spotlight/_translations.scss +86 -0
- package/app/assets/stylesheets/spotlight/_upload.scss +0 -0
- package/app/assets/stylesheets/spotlight/_uploaded_items_block.scss +7 -0
- package/app/assets/stylesheets/spotlight/_utilities.scss +7 -0
- package/app/assets/stylesheets/spotlight/_variables.scss +42 -0
- package/app/assets/stylesheets/spotlight/_variables_bootstrap.scss +7 -0
- package/app/assets/stylesheets/spotlight/_view_larger.scss +22 -0
- package/app/assets/stylesheets/spotlight/browse_group_categories_block.scss +92 -0
- package/app/assets/stylesheets/spotlight/typeahead.css +77 -0
- package/package.json +29 -0
- package/vendor/assets/images/sir-trevor-icons.svg +263 -0
- package/vendor/assets/javascripts/Leaflet.Editable.js +1917 -0
- package/vendor/assets/javascripts/MutationObserver.js +625 -0
- package/vendor/assets/javascripts/Path.Drag.js +137 -0
- package/vendor/assets/javascripts/bootstrap-tagsinput.js +530 -0
- package/vendor/assets/javascripts/eventable.js +205 -0
- package/vendor/assets/javascripts/jquery.serializejson.js +234 -0
- package/vendor/assets/javascripts/jquery.waitforimages.min.js +2 -0
- package/vendor/assets/javascripts/leaflet-iiif.js +323 -0
- package/vendor/assets/javascripts/nestable.js +645 -0
- package/vendor/assets/javascripts/parameterize.js +137 -0
- package/vendor/assets/javascripts/polyfill.min.js +4 -0
- package/vendor/assets/javascripts/sir-trevor.js +21639 -0
- package/vendor/assets/javascripts/tiny-slider.js +3218 -0
- package/vendor/assets/javascripts/typeahead.bundle.min.js +7 -0
- package/vendor/assets/stylesheets/bootstrap-tagsinput.css +46 -0
- package/vendor/assets/stylesheets/leaflet-areaselect.css +15 -0
- package/vendor/assets/stylesheets/sir-trevor/_icons.scss +6 -0
- package/vendor/assets/stylesheets/sir-trevor/_variables.scss +22 -0
- package/vendor/assets/stylesheets/sir-trevor/base.scss +17 -0
- package/vendor/assets/stylesheets/sir-trevor/block-addition-top.scss +95 -0
- package/vendor/assets/stylesheets/sir-trevor/block-addition.scss +72 -0
- package/vendor/assets/stylesheets/sir-trevor/block-controls.scss +34 -0
- package/vendor/assets/stylesheets/sir-trevor/block-positioner.scss +34 -0
- package/vendor/assets/stylesheets/sir-trevor/block-replacer.scss +43 -0
- package/vendor/assets/stylesheets/sir-trevor/block-ui.scss +120 -0
- package/vendor/assets/stylesheets/sir-trevor/block.scss +300 -0
- package/vendor/assets/stylesheets/sir-trevor/errors.scss +21 -0
- package/vendor/assets/stylesheets/sir-trevor/format-bar.scss +65 -0
- package/vendor/assets/stylesheets/sir-trevor/inputs.scss +45 -0
- package/vendor/assets/stylesheets/sir-trevor/main.scss +24 -0
- package/vendor/assets/stylesheets/sir-trevor/patterns/ui-popup.scss +38 -0
- package/vendor/assets/stylesheets/sir-trevor/utils.scss +10 -0
- package/vendor/assets/stylesheets/tiny-slider.css +1 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Sir Trevor ItemText Block.
|
|
3
|
+
This block takes an ID,
|
|
4
|
+
fetches the record from solr,
|
|
5
|
+
displays the image, title,
|
|
6
|
+
and any provided text
|
|
7
|
+
and displays them.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
SirTrevor.Blocks.Oembed = (function(){
|
|
11
|
+
|
|
12
|
+
return Spotlight.Block.extend({
|
|
13
|
+
plustextable: true,
|
|
14
|
+
|
|
15
|
+
id_key:"url",
|
|
16
|
+
|
|
17
|
+
type: "oembed",
|
|
18
|
+
|
|
19
|
+
title: function() { return i18n.t('blocks:oembed:title'); },
|
|
20
|
+
description: function() { return i18n.t('blocks:oembed:description'); },
|
|
21
|
+
|
|
22
|
+
icon_name: "oembed",
|
|
23
|
+
show_heading: false,
|
|
24
|
+
|
|
25
|
+
template: [
|
|
26
|
+
'<div class="form oembed-text-admin clearfix">',
|
|
27
|
+
'<div class="widget-header">',
|
|
28
|
+
'<%= description() %>',
|
|
29
|
+
'</div>',
|
|
30
|
+
'<div class="row">',
|
|
31
|
+
'<div class="form-group col-md-8">',
|
|
32
|
+
'<label for="<%= formId(id_key) %>"><%= i18n.t("blocks:oembed:url") %></label>',
|
|
33
|
+
'<input name="<%= id_key %>" class="form-control col-md-6" type="text" id="<%= formId(id_key) %>" />',
|
|
34
|
+
'</div>',
|
|
35
|
+
'</div>',
|
|
36
|
+
'<%= text_area() %>',
|
|
37
|
+
'</div>'
|
|
38
|
+
].join("\n")
|
|
39
|
+
});
|
|
40
|
+
})();
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//= require spotlight/admin/blocks/resources_block
|
|
2
|
+
|
|
3
|
+
SirTrevor.Blocks.FeaturedPages = (function(){
|
|
4
|
+
|
|
5
|
+
return Spotlight.Block.Resources.extend({
|
|
6
|
+
type: "featured_pages",
|
|
7
|
+
|
|
8
|
+
icon_name: "pages",
|
|
9
|
+
|
|
10
|
+
autocomplete_url: function() { return $(this.inner).closest('form[data-autocomplete-exhibit-pages-path]').data('autocomplete-exhibit-pages-path').replace("%25QUERY", "%QUERY"); },
|
|
11
|
+
autocomplete_template: function() { return '<div class="autocomplete-item{{#unless published}} blacklight-private{{/unless}}">{{#if thumbnail_image_url}}<div class="document-thumbnail"><img class="img-thumbnail" src="{{thumbnail_image_url}}" /></div>{{/if}}<span class="autocomplete-title">{{title}}</span><br/><small> {{description}}</small></div>' },
|
|
12
|
+
bloodhoundOptions: function() {
|
|
13
|
+
return {
|
|
14
|
+
prefetch: {
|
|
15
|
+
url: this.autocomplete_url(),
|
|
16
|
+
ttl: 0
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
})();
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
Spotlight.Block.Resources = (function(){
|
|
2
|
+
|
|
3
|
+
return Spotlight.Block.extend({
|
|
4
|
+
type: "resources",
|
|
5
|
+
formable: true,
|
|
6
|
+
autocompleteable: true,
|
|
7
|
+
show_heading: true,
|
|
8
|
+
|
|
9
|
+
title: function() { return i18n.t("blocks:" + this.type + ":title"); },
|
|
10
|
+
description: function() { return i18n.t("blocks:" + this.type + ":description"); },
|
|
11
|
+
|
|
12
|
+
icon_name: "resources",
|
|
13
|
+
blockGroup: function() { return i18n.t("blocks:group:items") },
|
|
14
|
+
|
|
15
|
+
primary_field_key: "primary-caption-field",
|
|
16
|
+
show_primary_field_key: "show-primary-caption",
|
|
17
|
+
secondary_field_key: "secondary-caption-field",
|
|
18
|
+
show_secondary_field_key: "show-secondary-caption",
|
|
19
|
+
|
|
20
|
+
display_checkbox: "display-checkbox",
|
|
21
|
+
|
|
22
|
+
globalIndex: 0,
|
|
23
|
+
|
|
24
|
+
_itemPanelIiifFields: function(index, data) {
|
|
25
|
+
return [];
|
|
26
|
+
},
|
|
27
|
+
|
|
28
|
+
_itemPanel: function(data) {
|
|
29
|
+
var index = "item_" + this.globalIndex++;
|
|
30
|
+
var checked;
|
|
31
|
+
if (data.display == "true") {
|
|
32
|
+
checked = "checked='checked'"
|
|
33
|
+
} else {
|
|
34
|
+
checked = "";
|
|
35
|
+
}
|
|
36
|
+
var resource_id = data.slug || data.id;
|
|
37
|
+
var markup = [
|
|
38
|
+
'<li class="field form-inline dd-item dd3-item" data-resource-id="' + resource_id + '" data-id="' + index + '" id="' + this.formId("item_" + data.id) + '">',
|
|
39
|
+
'<input type="hidden" name="item[' + index + '][id]" value="' + resource_id + '" />',
|
|
40
|
+
'<input type="hidden" name="item[' + index + '][title]" value="' + data.title + '" />',
|
|
41
|
+
this._itemPanelIiifFields(index, data),
|
|
42
|
+
'<input data-property="weight" type="hidden" name="item[' + index + '][weight]" value="' + data.weight + '" />',
|
|
43
|
+
'<div class="card d-flex dd3-content">',
|
|
44
|
+
'<div class="dd-handle dd3-handle"><%= i18n.t("blocks:resources:panel:drag") %></div>',
|
|
45
|
+
'<div class="card-header item-grid">',
|
|
46
|
+
'<div class="d-flex">',
|
|
47
|
+
'<div class="checkbox">',
|
|
48
|
+
'<input name="item[' + index + '][display]" type="hidden" value="false" />',
|
|
49
|
+
'<input name="item[' + index + '][display]" id="'+ this.formId(this.display_checkbox + '_' + data.id) + '" type="checkbox" ' + checked + ' class="item-grid-checkbox" value="true" />',
|
|
50
|
+
'<label class="sr-only" for="'+ this.formId(this.display_checkbox + '_' + data.id) +'"><%= i18n.t("blocks:resources:panel:display") %></label>',
|
|
51
|
+
'</div>',
|
|
52
|
+
'<div class="pic">',
|
|
53
|
+
'<img class="img-thumbnail" src="' + (data.thumbnail_image_url || ((data.iiif_tilesource || "").replace("/info.json", "/full/!100,100/0/default.jpg"))) + '" />',
|
|
54
|
+
'</div>',
|
|
55
|
+
'<div class="main">',
|
|
56
|
+
'<div class="title card-title">' + data.title + '</div>',
|
|
57
|
+
'<div>' + (data.slug || data.id) + '</div>',
|
|
58
|
+
'</div>',
|
|
59
|
+
'<div class="remove float-right">',
|
|
60
|
+
'<a data-item-grid-panel-remove="true" href="#"><%= i18n.t("blocks:resources:panel:remove") %></a>',
|
|
61
|
+
'</div>',
|
|
62
|
+
'</div>',
|
|
63
|
+
'<div data-panel-image-pagination="true"></div>',
|
|
64
|
+
'</div>',
|
|
65
|
+
'</div>',
|
|
66
|
+
'</li>'
|
|
67
|
+
].join("\n");
|
|
68
|
+
|
|
69
|
+
var panel = $(_.template(markup)(this));
|
|
70
|
+
var context = this;
|
|
71
|
+
|
|
72
|
+
$('.remove a', panel).on('click', function(e) {
|
|
73
|
+
e.preventDefault();
|
|
74
|
+
$(this).closest('.field').remove();
|
|
75
|
+
context.afterPanelDelete();
|
|
76
|
+
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
this.afterPanelRender(data, panel);
|
|
80
|
+
|
|
81
|
+
return panel;
|
|
82
|
+
},
|
|
83
|
+
|
|
84
|
+
afterPanelRender: function(data, panel) {
|
|
85
|
+
|
|
86
|
+
},
|
|
87
|
+
|
|
88
|
+
afterPanelDelete: function() {
|
|
89
|
+
|
|
90
|
+
},
|
|
91
|
+
|
|
92
|
+
createItemPanel: function(data) {
|
|
93
|
+
var panel = this._itemPanel(data);
|
|
94
|
+
$(panel).appendTo($('.panels > ol', this.inner));
|
|
95
|
+
$('[data-behavior="nestable"]', this.inner).trigger('change');
|
|
96
|
+
},
|
|
97
|
+
|
|
98
|
+
item_options: function() { return ""; },
|
|
99
|
+
|
|
100
|
+
content: function() {
|
|
101
|
+
var templates = [this.items_selector()];
|
|
102
|
+
if (this.plustextable) {
|
|
103
|
+
templates.push(this.text_area());
|
|
104
|
+
}
|
|
105
|
+
return _.template(templates.join("<hr />\n"))(this);
|
|
106
|
+
},
|
|
107
|
+
|
|
108
|
+
items_selector: function() { return [
|
|
109
|
+
'<div class="row">',
|
|
110
|
+
'<div class="col-md-8">',
|
|
111
|
+
'<div class="form-group">',
|
|
112
|
+
'<div class="panels dd nestable-item-grid" data-behavior="nestable" data-max-depth="1"><ol class="dd-list"></ol></div>',
|
|
113
|
+
this.autocomplete_control(),
|
|
114
|
+
'</div>',
|
|
115
|
+
'</div>',
|
|
116
|
+
'<div class="col-md-4">',
|
|
117
|
+
this.item_options(),
|
|
118
|
+
'</div>',
|
|
119
|
+
'</div>'].join("\n")
|
|
120
|
+
},
|
|
121
|
+
|
|
122
|
+
template: [
|
|
123
|
+
'<div class="form resources-admin clearfix">',
|
|
124
|
+
'<div class="widget-header">',
|
|
125
|
+
'<%= description() %>',
|
|
126
|
+
'</div>',
|
|
127
|
+
'<%= content() %>',
|
|
128
|
+
'</div>'
|
|
129
|
+
].join("\n"),
|
|
130
|
+
|
|
131
|
+
onBlockRender: function() {
|
|
132
|
+
SpotlightNestable.init($('[data-behavior="nestable"]', this.inner));
|
|
133
|
+
|
|
134
|
+
$('[data-input-select-target]', this.inner).selectRelatedInput();
|
|
135
|
+
},
|
|
136
|
+
|
|
137
|
+
afterLoadData: function(data) {
|
|
138
|
+
var context = this;
|
|
139
|
+
$.each(Object.keys(data.item || {}).map(function(k) { return data.item[k]}).sort(function(a,b) { return a.weight - b.weight; }), function(index, item) {
|
|
140
|
+
context.createItemPanel(item);
|
|
141
|
+
});
|
|
142
|
+
},
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
})();
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Sir Trevor ItemText Block.
|
|
3
|
+
This block takes an ID,
|
|
4
|
+
fetches the record from solr,
|
|
5
|
+
displays the image, title,
|
|
6
|
+
and any provided text
|
|
7
|
+
and displays them.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
SirTrevor.Blocks.Rule = (function(){
|
|
11
|
+
|
|
12
|
+
return SirTrevor.Block.extend({
|
|
13
|
+
type: "rule",
|
|
14
|
+
|
|
15
|
+
title: function() { return i18n.t('blocks:rule:title'); },
|
|
16
|
+
|
|
17
|
+
icon_name: "rule",
|
|
18
|
+
|
|
19
|
+
editorHTML: function() {
|
|
20
|
+
return _.template(this.template, this)(this);
|
|
21
|
+
},
|
|
22
|
+
|
|
23
|
+
template: '<hr />'
|
|
24
|
+
});
|
|
25
|
+
})();
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
//= require spotlight/admin/blocks/browse_block
|
|
2
|
+
|
|
3
|
+
SirTrevor.Blocks.SearchResults = (function(){
|
|
4
|
+
|
|
5
|
+
return SirTrevor.Blocks.Browse.extend({
|
|
6
|
+
|
|
7
|
+
type: "search_results",
|
|
8
|
+
|
|
9
|
+
icon_name: 'search_results',
|
|
10
|
+
|
|
11
|
+
searches_key: "slug",
|
|
12
|
+
view_key: "view",
|
|
13
|
+
plustextable: false,
|
|
14
|
+
|
|
15
|
+
content: function() {
|
|
16
|
+
return _.template([this.items_selector()].join("<hr />\n"))(this);
|
|
17
|
+
},
|
|
18
|
+
|
|
19
|
+
item_options: function() {
|
|
20
|
+
var block = this;
|
|
21
|
+
var fields = $('[data-blacklight-configuration-search-views]').data('blacklight-configuration-search-views');
|
|
22
|
+
|
|
23
|
+
return $.map(fields, function(field) {
|
|
24
|
+
checkbox = ""
|
|
25
|
+
checkbox += "<div>";
|
|
26
|
+
checkbox += "<label for='" + block.formId(block.view_key + field.key) + "'>";
|
|
27
|
+
checkbox += "<input id='" + block.formId(block.view_key + field.key) + "' name='" + block.view_key + "[]' type='checkbox' value='" + field.key + "' /> ";
|
|
28
|
+
checkbox += field.label;
|
|
29
|
+
checkbox += "</label>";
|
|
30
|
+
checkbox += "</div>";
|
|
31
|
+
return checkbox;
|
|
32
|
+
}).join("\n");
|
|
33
|
+
},
|
|
34
|
+
|
|
35
|
+
afterPanelRender: function(data, panel) {
|
|
36
|
+
$(this.inner).find('.item-input-field').attr("disabled", "disabled");
|
|
37
|
+
},
|
|
38
|
+
|
|
39
|
+
afterPanelDelete: function() {
|
|
40
|
+
$(this.inner).find('.item-input-field').removeAttr("disabled");
|
|
41
|
+
},
|
|
42
|
+
|
|
43
|
+
});
|
|
44
|
+
})();
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
//= require spotlight/admin/blocks/resources_block
|
|
2
|
+
|
|
3
|
+
SirTrevor.Blocks.SolrDocumentsBase = (function(){
|
|
4
|
+
|
|
5
|
+
return Spotlight.Block.Resources.extend({
|
|
6
|
+
plustextable: true,
|
|
7
|
+
autocomplete_url: function() { return this.$instance().closest('form[data-autocomplete-exhibit-catalog-path]').data('autocomplete-exhibit-catalog-path').replace("%25QUERY", "%QUERY"); },
|
|
8
|
+
autocomplete_template: function() { return '<div class="autocomplete-item{{#if private}} blacklight-private{{/if}}">{{#if thumbnail}}<div class="document-thumbnail"><img class="img-thumbnail" src="{{thumbnail}}" /></div>{{/if}}<span class="autocomplete-title">{{title}}</span><br/><small> {{description}}</small></div>' },
|
|
9
|
+
|
|
10
|
+
transform_autocomplete_results: function(response) {
|
|
11
|
+
return $.map(response['docs'], function(doc) {
|
|
12
|
+
return doc;
|
|
13
|
+
})
|
|
14
|
+
},
|
|
15
|
+
|
|
16
|
+
caption_option_values: function() {
|
|
17
|
+
var fields = $('[data-blacklight-configuration-index-fields]').data('blacklight-configuration-index-fields');
|
|
18
|
+
|
|
19
|
+
return $.map(fields, function(field) {
|
|
20
|
+
return $('<option />').val(field.key).text(field.label)[0].outerHTML;
|
|
21
|
+
}).join("\n");
|
|
22
|
+
},
|
|
23
|
+
|
|
24
|
+
item_options: function() { return this.caption_options(); },
|
|
25
|
+
|
|
26
|
+
caption_options: function() { return [
|
|
27
|
+
'<div class="field-select primary-caption" data-behavior="item-caption-admin">',
|
|
28
|
+
'<input name="<%= show_primary_field_key %>" type="hidden" value="false" />',
|
|
29
|
+
'<input data-input-select-target="#<%= formId(primary_field_key) %>" name="<%= show_primary_field_key %>" id="<%= formId(show_primary_field_key) %>" type="checkbox" value="true" />',
|
|
30
|
+
'<label for="<%= formId(show_primary_field_key) %>"><%= i18n.t("blocks:solr_documents:caption:primary") %></label>',
|
|
31
|
+
'<select data-input-select-target="#<%= formId(show_primary_field_key) %>" name="<%= primary_field_key %>" id="<%= formId(primary_field_key) %>">',
|
|
32
|
+
'<option value=""><%= i18n.t("blocks:solr_documents:caption:placeholder") %></option>',
|
|
33
|
+
'<%= caption_option_values() %>',
|
|
34
|
+
'</select>',
|
|
35
|
+
'</div>',
|
|
36
|
+
'<div class="field-select secondary-caption" data-behavior="item-caption-admin">',
|
|
37
|
+
'<input name="<%= show_secondary_field_key %>" type="hidden" value="false" />',
|
|
38
|
+
'<input data-input-select-target="#<%= formId(secondary_field_key) %>" name="<%= show_secondary_field_key %>" id="<%= formId(show_secondary_field_key) %>" type="checkbox" value="true" />',
|
|
39
|
+
'<label for="<%= formId(show_secondary_field_key) %>"><%= i18n.t("blocks:solr_documents:caption:secondary") %></label>',
|
|
40
|
+
'<select data-input-select-target="#<%= formId(show_secondary_field_key) %>" name="<%= secondary_field_key %>" id="<%= formId(secondary_field_key) %>">',
|
|
41
|
+
'<option value=""><%= i18n.t("blocks:solr_documents:caption:placeholder") %></option>',
|
|
42
|
+
'<%= caption_option_values() %>',
|
|
43
|
+
'</select>',
|
|
44
|
+
'</div>',
|
|
45
|
+
].join("\n") },
|
|
46
|
+
|
|
47
|
+
_itemPanelIiifFields: function(index, data) {
|
|
48
|
+
return [
|
|
49
|
+
// '<input type="hidden" name="item[' + index + '][iiif_region]" value="' + (data.iiif_region) + '"/>',
|
|
50
|
+
// for legacy compatiblity:
|
|
51
|
+
'<input type="hidden" name="item[' + index + '][thumbnail_image_url]" value="' + (data.thumbnail_image_url || data.thumbnail || "") + '"/>',
|
|
52
|
+
'<input type="hidden" name="item[' + index + '][full_image_url]" value="' + (data.full_image_url || data.thumbnail_image_url || data.thumbnail || "") + '"/>',
|
|
53
|
+
'<input type="hidden" name="item[' + index + '][iiif_tilesource]" value="' + (data.iiif_tilesource) + '"/>',
|
|
54
|
+
'<input type="hidden" name="item[' + index + '][iiif_manifest_url]" value="' + (data.iiif_manifest_url) + '"/>',
|
|
55
|
+
'<input type="hidden" name="item[' + index + '][iiif_canvas_id]" value="' + (data.iiif_canvas_id) + '"/>',
|
|
56
|
+
'<input type="hidden" name="item[' + index + '][iiif_image_id]" value="' + (data.iiif_image_id) + '"/>',
|
|
57
|
+
].join("\n");
|
|
58
|
+
},
|
|
59
|
+
setIiifFields: function(panel, data, initialize) {
|
|
60
|
+
var legacyThumbnailField = $(panel).find('[name$="[thumbnail_image_url]"]')
|
|
61
|
+
var legacyFullField = $(panel).find('[name$="[full_image_url]"]')
|
|
62
|
+
|
|
63
|
+
if (initialize && legacyThumbnailField.val().length > 0) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
legacyThumbnailField.val("");
|
|
68
|
+
legacyFullField.val("");
|
|
69
|
+
$(panel).find('[name$="[iiif_image_id]"]').val(data.imageId);
|
|
70
|
+
$(panel).find('[name$="[iiif_tilesource]"]').val(data.tilesource);
|
|
71
|
+
$(panel).find('[name$="[iiif_manifest_url]"]').val(data.manifest);
|
|
72
|
+
$(panel).find('[name$="[iiif_canvas_id]"]').val(data.canvasId);
|
|
73
|
+
$(panel).find('img.img-thumbnail').attr('src', data.thumbnail_image_url || data.tilesource.replace("/info.json", "/full/100,100/0/default.jpg"));
|
|
74
|
+
},
|
|
75
|
+
afterPanelRender: function(data, panel) {
|
|
76
|
+
var context = this;
|
|
77
|
+
var manifestUrl = data.iiif_manifest || data.iiif_manifest_url;
|
|
78
|
+
|
|
79
|
+
if (!manifestUrl) {
|
|
80
|
+
$(panel).find('[name$="[thumbnail_image_url]"]').val(data.thumbnail_image_url || data.thumbnail);
|
|
81
|
+
$(panel).find('[name$="[full_image_url]"]').val(data.full_image_url);
|
|
82
|
+
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
$.ajax(manifestUrl).done(
|
|
87
|
+
function(manifest) {
|
|
88
|
+
var Iiif = spotlightAdminIiif;
|
|
89
|
+
var iiifManifest = new Iiif(manifestUrl, manifest);
|
|
90
|
+
|
|
91
|
+
var thumbs = iiifManifest.imagesArray();
|
|
92
|
+
|
|
93
|
+
if (!data.iiif_image_id) {
|
|
94
|
+
context.setIiifFields(panel, thumbs[0], !!data.iiif_manifest_url);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
if(thumbs.length > 1) {
|
|
99
|
+
panel.multiImageSelector(thumbs, function(selectorImage) {
|
|
100
|
+
context.setIiifFields(panel, selectorImage, false);
|
|
101
|
+
}, data.iiif_image_id);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
})();
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
//= require spotlight/admin/blocks/solr_documents_base_block
|
|
2
|
+
|
|
3
|
+
SirTrevor.Blocks.SolrDocuments = (function(){
|
|
4
|
+
|
|
5
|
+
return SirTrevor.Blocks.SolrDocumentsBase.extend({
|
|
6
|
+
type: "solr_documents",
|
|
7
|
+
|
|
8
|
+
icon_name: "items",
|
|
9
|
+
|
|
10
|
+
item_options: function() { return this.caption_options() + this.zpr_option(); },
|
|
11
|
+
|
|
12
|
+
zpr_option: function() {
|
|
13
|
+
return [
|
|
14
|
+
'<div>',
|
|
15
|
+
'<input name="<%= zpr_key %>" type="hidden" value="false" />',
|
|
16
|
+
'<input name="<%= zpr_key %>" id="<%= formId(zpr_key) %>" data-key="<%= zpr_key %>" type="checkbox" value="true" />',
|
|
17
|
+
'<label for="<%= formId(zpr_key) %>"><%= i18n.t("blocks:solr_documents:zpr:title") %></label>',
|
|
18
|
+
'</div>'
|
|
19
|
+
].join("\n");
|
|
20
|
+
},
|
|
21
|
+
|
|
22
|
+
zpr_key: 'zpr_link'
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
})();
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
//= require spotlight/admin/blocks/solr_documents_base_block
|
|
2
|
+
|
|
3
|
+
SirTrevor.Blocks.SolrDocumentsCarousel = (function(){
|
|
4
|
+
|
|
5
|
+
return SirTrevor.Blocks.SolrDocumentsBase.extend({
|
|
6
|
+
plustextable: false,
|
|
7
|
+
type: "solr_documents_carousel",
|
|
8
|
+
|
|
9
|
+
icon_name: "item_carousel",
|
|
10
|
+
|
|
11
|
+
auto_play_images_key: "auto-play-images",
|
|
12
|
+
auto_play_images_interval_key: "auto-play-images-interval",
|
|
13
|
+
max_height_key: "max-height",
|
|
14
|
+
|
|
15
|
+
item_options: function() { return "" },
|
|
16
|
+
|
|
17
|
+
carouselCycleTimesInSeconds: {
|
|
18
|
+
values: [ 3, 5, 8, 12, 20 ],
|
|
19
|
+
selected: 5
|
|
20
|
+
},
|
|
21
|
+
|
|
22
|
+
carouselMaxHeights: {
|
|
23
|
+
values: { 'Small': 'small', 'Medium': 'medium', 'Large': 'large' },
|
|
24
|
+
selected: 'Medium'
|
|
25
|
+
},
|
|
26
|
+
|
|
27
|
+
item_options: function() {
|
|
28
|
+
return [this.caption_options(),
|
|
29
|
+
'<div class="field-select auto-cycle-images" data-behavior="auto-cycle-images">',
|
|
30
|
+
'<input name="<%= auto_play_images_key %>" type="hidden" value="false" />',
|
|
31
|
+
'<input name="<%= auto_play_images_key %>" id="<%= formId(auto_play_images_key) %>" data-key="<%= auto_play_images_key %>" type="checkbox" value="true" checked/>',
|
|
32
|
+
'<label for="<%= formId(auto_play_images_key) %>"><%= i18n.t("blocks:solr_documents_carousel:interval:title") %></label>',
|
|
33
|
+
'<select name="<%= auto_play_images_interval_key %>" id="<%= formId(auto_play_images_interval_key) %>" data=key="<%= auto_play_images_interval_key %>">',
|
|
34
|
+
'<option value=""><%= i18n.t("blocks:solr_documents_carousel:interval:placeholder") %></option>',
|
|
35
|
+
'<%= addCarouselCycleOptions(carouselCycleTimesInSeconds) %>',
|
|
36
|
+
'</select>',
|
|
37
|
+
'</div>',
|
|
38
|
+
'<div class="field-select max-heights" data-behavior="max-heights">',
|
|
39
|
+
'<label for="<%= formId(max_height_key) %>"><%= i18n.t("blocks:solr_documents_carousel:height:title") %></label><br/>',
|
|
40
|
+
'<%= addCarouselMaxHeightOptions(carouselMaxHeights) %>',
|
|
41
|
+
'</div>',
|
|
42
|
+
].join("\n");
|
|
43
|
+
},
|
|
44
|
+
|
|
45
|
+
addCarouselCycleOptions: function(options) {
|
|
46
|
+
var html = '';
|
|
47
|
+
|
|
48
|
+
$.each(options.values, function(index, interval) {
|
|
49
|
+
var selected = (interval === options.selected) ? 'selected' : '',
|
|
50
|
+
intervalInMilliSeconds = parseInt(interval, 10) * 1000;
|
|
51
|
+
|
|
52
|
+
html += '<option value="' + intervalInMilliSeconds + '" ' + selected + '>' + interval + ' seconds</option>';
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
return html;
|
|
56
|
+
},
|
|
57
|
+
|
|
58
|
+
addCarouselMaxHeightOptions: function(options) {
|
|
59
|
+
var html = '',
|
|
60
|
+
_this = this;
|
|
61
|
+
|
|
62
|
+
$.each(options.values, function(size, px) {
|
|
63
|
+
var checked = (size === options.selected) ? 'checked' : '',
|
|
64
|
+
id = _this.formId(_this.max_height_key)
|
|
65
|
+
|
|
66
|
+
html += '<input data-key="' + _this.max_height_key + '" type="radio" name="' + id + '" value="' + px + '" id="' + id + '" ' + checked + '>';
|
|
67
|
+
html += '<label class="carousel-size" for="' + id + '">' + size + '</label>';
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
return html;
|
|
71
|
+
},
|
|
72
|
+
|
|
73
|
+
afterPreviewLoad: function(options) {
|
|
74
|
+
$(this.inner).find('.carousel').carousel();
|
|
75
|
+
|
|
76
|
+
// the bootstrap carousel only initializes data-slide widgets on page load, so we need
|
|
77
|
+
// to initialize them ourselves..
|
|
78
|
+
var clickHandler = function (e) {
|
|
79
|
+
var href
|
|
80
|
+
var $this = $(this)
|
|
81
|
+
var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
|
|
82
|
+
if (!$target.hasClass('carousel')) return
|
|
83
|
+
var options = $.extend({}, $target.data(), $this.data())
|
|
84
|
+
var slideIndex = $this.attr('data-slide-to')
|
|
85
|
+
if (slideIndex) options.interval = false
|
|
86
|
+
|
|
87
|
+
$.fn.carousel.call($target, options)
|
|
88
|
+
|
|
89
|
+
if (slideIndex) {
|
|
90
|
+
$target.data('bs.carousel').to(slideIndex)
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
e.preventDefault()
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
$(this.inner).find('.carousel')
|
|
97
|
+
.on('click.bs.carousel.data-api', '[data-slide]', clickHandler)
|
|
98
|
+
.on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
})();
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
//= require spotlight/admin/blocks/solr_documents_base_block
|
|
2
|
+
|
|
3
|
+
SirTrevor.Blocks.SolrDocumentsEmbed = (function(){
|
|
4
|
+
|
|
5
|
+
return SirTrevor.Blocks.SolrDocumentsBase.extend({
|
|
6
|
+
type: "solr_documents_embed",
|
|
7
|
+
|
|
8
|
+
icon_name: "item_embed",
|
|
9
|
+
|
|
10
|
+
item_options: function() { return "" },
|
|
11
|
+
|
|
12
|
+
afterPreviewLoad: function(options) {
|
|
13
|
+
$(this.inner).find('picture[data-openseadragon]').openseadragon();
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
})();
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
//= require spotlight/admin/blocks/solr_documents_base_block
|
|
2
|
+
|
|
3
|
+
SirTrevor.Blocks.SolrDocumentsFeatures = (function(){
|
|
4
|
+
|
|
5
|
+
return SirTrevor.Blocks.SolrDocumentsBase.extend({
|
|
6
|
+
plustextable: false,
|
|
7
|
+
type: "solr_documents_features",
|
|
8
|
+
|
|
9
|
+
icon_name: "item_features",
|
|
10
|
+
|
|
11
|
+
afterPreviewLoad: function(options) {
|
|
12
|
+
$(this.inner).find('.carousel').carousel();
|
|
13
|
+
|
|
14
|
+
// the bootstrap carousel only initializes data-slide widgets on page load, so we need
|
|
15
|
+
// to initialize them ourselves..
|
|
16
|
+
var clickHandler = function (e) {
|
|
17
|
+
var href
|
|
18
|
+
var $this = $(this)
|
|
19
|
+
var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
|
|
20
|
+
if (!$target.hasClass('carousel')) return
|
|
21
|
+
var options = $.extend({}, $target.data(), $this.data())
|
|
22
|
+
var slideIndex = $this.attr('data-slide-to')
|
|
23
|
+
if (slideIndex) options.interval = false
|
|
24
|
+
|
|
25
|
+
$.fn.carousel.call($target, options)
|
|
26
|
+
|
|
27
|
+
if (slideIndex) {
|
|
28
|
+
$target.data('bs.carousel').to(slideIndex)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
e.preventDefault()
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
$(this.inner).find('.carousel')
|
|
35
|
+
.on('click.bs.carousel.data-api', '[data-slide]', clickHandler)
|
|
36
|
+
.on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
})();
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
//= require spotlight/admin/blocks/solr_documents_base_block
|
|
2
|
+
|
|
3
|
+
SirTrevor.Blocks.SolrDocumentsGrid = (function(){
|
|
4
|
+
|
|
5
|
+
return SirTrevor.Blocks.SolrDocumentsBase.extend({
|
|
6
|
+
type: "solr_documents_grid",
|
|
7
|
+
|
|
8
|
+
icon_name: "item_grid",
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
item_options: function() { return "" }
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
})();
|