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.
Files changed (153) hide show
  1. package/LICENSE +13 -0
  2. package/README.md +114 -0
  3. package/app/assets/images/blacklight/arrow-alt-circle-left.svg +1 -0
  4. package/app/assets/images/blacklight/arrow-alt-circle-right.svg +1 -0
  5. package/app/assets/images/blacklight/arrow_back_ios.svg +1 -0
  6. package/app/assets/images/blacklight/arrow_forward_ios.svg +1 -0
  7. package/app/assets/images/blacklight/check.svg +1 -0
  8. package/app/assets/images/blacklight/check_circle.svg +1 -0
  9. package/app/assets/images/blacklight/chevron_right.svg +1 -0
  10. package/app/assets/images/blacklight/close.svg +1 -0
  11. package/app/assets/images/blacklight/edit.svg +1 -0
  12. package/app/assets/images/blacklight/error.svg +1 -0
  13. package/app/assets/images/blacklight/highlight_off.svg +1 -0
  14. package/app/assets/images/blacklight/info.svg +1 -0
  15. package/app/assets/images/blacklight/warning.svg +1 -0
  16. package/app/assets/images/blacklight/zoom_in.svg +1 -0
  17. package/app/assets/images/blacklight/zoom_out.svg +1 -0
  18. package/app/assets/images/spotlight/.keep +0 -0
  19. package/app/assets/images/spotlight/blocks/sir-trevor-icons.svg +320 -0
  20. package/app/assets/images/spotlight/default_browse_thumbnail.jpg +0 -0
  21. package/app/assets/images/spotlight/default_thumbnail.jpg +0 -0
  22. package/app/assets/images/spotlight/fallback/default.png +0 -0
  23. package/app/assets/javascripts/spotlight/admin/add_another.js +22 -0
  24. package/app/assets/javascripts/spotlight/admin/add_new_button.js +81 -0
  25. package/app/assets/javascripts/spotlight/admin/appearance.js +24 -0
  26. package/app/assets/javascripts/spotlight/admin/attachments.js +2 -0
  27. package/app/assets/javascripts/spotlight/admin/blacklight_configuration.js +63 -0
  28. package/app/assets/javascripts/spotlight/admin/block_mixins/autocompleteable.js +72 -0
  29. package/app/assets/javascripts/spotlight/admin/block_mixins/formable.js +78 -0
  30. package/app/assets/javascripts/spotlight/admin/block_mixins/plustextable.js +57 -0
  31. package/app/assets/javascripts/spotlight/admin/blocks/block.js +23 -0
  32. package/app/assets/javascripts/spotlight/admin/blocks/browse_block.js +87 -0
  33. package/app/assets/javascripts/spotlight/admin/blocks/browse_group_categories_block.js +88 -0
  34. package/app/assets/javascripts/spotlight/admin/blocks/iframe_block.js +34 -0
  35. package/app/assets/javascripts/spotlight/admin/blocks/link_to_search_block.js +16 -0
  36. package/app/assets/javascripts/spotlight/admin/blocks/oembed_block.js +40 -0
  37. package/app/assets/javascripts/spotlight/admin/blocks/pages_block.js +22 -0
  38. package/app/assets/javascripts/spotlight/admin/blocks/resources_block.js +145 -0
  39. package/app/assets/javascripts/spotlight/admin/blocks/rule_block.js +25 -0
  40. package/app/assets/javascripts/spotlight/admin/blocks/search_result_block.js +44 -0
  41. package/app/assets/javascripts/spotlight/admin/blocks/solr_documents_base_block.js +108 -0
  42. package/app/assets/javascripts/spotlight/admin/blocks/solr_documents_block.js +25 -0
  43. package/app/assets/javascripts/spotlight/admin/blocks/solr_documents_carousel_block.js +103 -0
  44. package/app/assets/javascripts/spotlight/admin/blocks/solr_documents_embed_block.js +17 -0
  45. package/app/assets/javascripts/spotlight/admin/blocks/solr_documents_features_block.js +41 -0
  46. package/app/assets/javascripts/spotlight/admin/blocks/solr_documents_grid_block.js +14 -0
  47. package/app/assets/javascripts/spotlight/admin/blocks/uploaded_items_block.js +145 -0
  48. package/app/assets/javascripts/spotlight/admin/catalog_edit.js +16 -0
  49. package/app/assets/javascripts/spotlight/admin/copy_email_addresses.js +9 -0
  50. package/app/assets/javascripts/spotlight/admin/crop.es6 +310 -0
  51. package/app/assets/javascripts/spotlight/admin/croppable.js +25 -0
  52. package/app/assets/javascripts/spotlight/admin/edit_in_place.js +54 -0
  53. package/app/assets/javascripts/spotlight/admin/exhibit_tag_autocomplete.js +37 -0
  54. package/app/assets/javascripts/spotlight/admin/exhibits.js +58 -0
  55. package/app/assets/javascripts/spotlight/admin/form_observer.js +86 -0
  56. package/app/assets/javascripts/spotlight/admin/iiif.es6 +54 -0
  57. package/app/assets/javascripts/spotlight/admin/index.js +16 -0
  58. package/app/assets/javascripts/spotlight/admin/locks.js +12 -0
  59. package/app/assets/javascripts/spotlight/admin/multi_image_selector.js +158 -0
  60. package/app/assets/javascripts/spotlight/admin/pages.js.erb +40 -0
  61. package/app/assets/javascripts/spotlight/admin/progress_monitor.js +148 -0
  62. package/app/assets/javascripts/spotlight/admin/readonly_checkbox.js +6 -0
  63. package/app/assets/javascripts/spotlight/admin/search_typeahead.js +108 -0
  64. package/app/assets/javascripts/spotlight/admin/select_related_input.js +34 -0
  65. package/app/assets/javascripts/spotlight/admin/sir-trevor/block_controls.js +120 -0
  66. package/app/assets/javascripts/spotlight/admin/sir-trevor/block_limits.js +37 -0
  67. package/app/assets/javascripts/spotlight/admin/sir-trevor/locales.js +120 -0
  68. package/app/assets/javascripts/spotlight/admin/spotlight_nestable.js +72 -0
  69. package/app/assets/javascripts/spotlight/admin/tabs.js +6 -0
  70. package/app/assets/javascripts/spotlight/admin/translation_progress.js +23 -0
  71. package/app/assets/javascripts/spotlight/admin/users.js +79 -0
  72. package/app/assets/javascripts/spotlight/application.js +14 -0
  73. package/app/assets/javascripts/spotlight/spotlight.js +23 -0
  74. package/app/assets/javascripts/spotlight/user/analytics.js +9 -0
  75. package/app/assets/javascripts/spotlight/user/browse_group_categories.js +59 -0
  76. package/app/assets/javascripts/spotlight/user/carousel.js +3 -0
  77. package/app/assets/javascripts/spotlight/user/clear_form_button.js +27 -0
  78. package/app/assets/javascripts/spotlight/user/index.js +8 -0
  79. package/app/assets/javascripts/spotlight/user/report_a_problem.js +39 -0
  80. package/app/assets/javascripts/spotlight/user/zpr_links.js.erb +45 -0
  81. package/app/assets/stylesheets/spotlight/_accessibility.scss +8 -0
  82. package/app/assets/stylesheets/spotlight/_attachments.css +4 -0
  83. package/app/assets/stylesheets/spotlight/_blacklight_configuration.scss +82 -0
  84. package/app/assets/stylesheets/spotlight/_blacklight_overrides.scss +21 -0
  85. package/app/assets/stylesheets/spotlight/_bootstrap_overrides.scss +105 -0
  86. package/app/assets/stylesheets/spotlight/_breadcrumbs.scss +6 -0
  87. package/app/assets/stylesheets/spotlight/_browse.scss +158 -0
  88. package/app/assets/stylesheets/spotlight/_catalog.scss +161 -0
  89. package/app/assets/stylesheets/spotlight/_collapse_toggle.scss +14 -0
  90. package/app/assets/stylesheets/spotlight/_croppable.scss +4 -0
  91. package/app/assets/stylesheets/spotlight/_curation.scss +224 -0
  92. package/app/assets/stylesheets/spotlight/_edit_in_place.scss +9 -0
  93. package/app/assets/stylesheets/spotlight/_exhibit_admin.scss +81 -0
  94. package/app/assets/stylesheets/spotlight/_exhibit_navbar.scss +10 -0
  95. package/app/assets/stylesheets/spotlight/_exhibits_index.scss +147 -0
  96. package/app/assets/stylesheets/spotlight/_featured_browse_categories_block.scss +269 -0
  97. package/app/assets/stylesheets/spotlight/_footer.scss +12 -0
  98. package/app/assets/stylesheets/spotlight/_header.scss +155 -0
  99. package/app/assets/stylesheets/spotlight/_item_text_block.scss +50 -0
  100. package/app/assets/stylesheets/spotlight/_mixins.scss +17 -0
  101. package/app/assets/stylesheets/spotlight/_modals.scss +3 -0
  102. package/app/assets/stylesheets/spotlight/_multi_image_selector.scss +22 -0
  103. package/app/assets/stylesheets/spotlight/_multi_up_item_grid.scss +63 -0
  104. package/app/assets/stylesheets/spotlight/_nestable.scss +124 -0
  105. package/app/assets/stylesheets/spotlight/_pages.scss +282 -0
  106. package/app/assets/stylesheets/spotlight/_report_a_problem.scss +14 -0
  107. package/app/assets/stylesheets/spotlight/_sir-trevor_overrides.scss +87 -0
  108. package/app/assets/stylesheets/spotlight/_slideshow_block.scss +87 -0
  109. package/app/assets/stylesheets/spotlight/_spotlight.scss +49 -0
  110. package/app/assets/stylesheets/spotlight/_translations.scss +86 -0
  111. package/app/assets/stylesheets/spotlight/_upload.scss +0 -0
  112. package/app/assets/stylesheets/spotlight/_uploaded_items_block.scss +7 -0
  113. package/app/assets/stylesheets/spotlight/_utilities.scss +7 -0
  114. package/app/assets/stylesheets/spotlight/_variables.scss +42 -0
  115. package/app/assets/stylesheets/spotlight/_variables_bootstrap.scss +7 -0
  116. package/app/assets/stylesheets/spotlight/_view_larger.scss +22 -0
  117. package/app/assets/stylesheets/spotlight/browse_group_categories_block.scss +92 -0
  118. package/app/assets/stylesheets/spotlight/typeahead.css +77 -0
  119. package/package.json +29 -0
  120. package/vendor/assets/images/sir-trevor-icons.svg +263 -0
  121. package/vendor/assets/javascripts/Leaflet.Editable.js +1917 -0
  122. package/vendor/assets/javascripts/MutationObserver.js +625 -0
  123. package/vendor/assets/javascripts/Path.Drag.js +137 -0
  124. package/vendor/assets/javascripts/bootstrap-tagsinput.js +530 -0
  125. package/vendor/assets/javascripts/eventable.js +205 -0
  126. package/vendor/assets/javascripts/jquery.serializejson.js +234 -0
  127. package/vendor/assets/javascripts/jquery.waitforimages.min.js +2 -0
  128. package/vendor/assets/javascripts/leaflet-iiif.js +323 -0
  129. package/vendor/assets/javascripts/nestable.js +645 -0
  130. package/vendor/assets/javascripts/parameterize.js +137 -0
  131. package/vendor/assets/javascripts/polyfill.min.js +4 -0
  132. package/vendor/assets/javascripts/sir-trevor.js +21639 -0
  133. package/vendor/assets/javascripts/tiny-slider.js +3218 -0
  134. package/vendor/assets/javascripts/typeahead.bundle.min.js +7 -0
  135. package/vendor/assets/stylesheets/bootstrap-tagsinput.css +46 -0
  136. package/vendor/assets/stylesheets/leaflet-areaselect.css +15 -0
  137. package/vendor/assets/stylesheets/sir-trevor/_icons.scss +6 -0
  138. package/vendor/assets/stylesheets/sir-trevor/_variables.scss +22 -0
  139. package/vendor/assets/stylesheets/sir-trevor/base.scss +17 -0
  140. package/vendor/assets/stylesheets/sir-trevor/block-addition-top.scss +95 -0
  141. package/vendor/assets/stylesheets/sir-trevor/block-addition.scss +72 -0
  142. package/vendor/assets/stylesheets/sir-trevor/block-controls.scss +34 -0
  143. package/vendor/assets/stylesheets/sir-trevor/block-positioner.scss +34 -0
  144. package/vendor/assets/stylesheets/sir-trevor/block-replacer.scss +43 -0
  145. package/vendor/assets/stylesheets/sir-trevor/block-ui.scss +120 -0
  146. package/vendor/assets/stylesheets/sir-trevor/block.scss +300 -0
  147. package/vendor/assets/stylesheets/sir-trevor/errors.scss +21 -0
  148. package/vendor/assets/stylesheets/sir-trevor/format-bar.scss +65 -0
  149. package/vendor/assets/stylesheets/sir-trevor/inputs.scss +45 -0
  150. package/vendor/assets/stylesheets/sir-trevor/main.scss +24 -0
  151. package/vendor/assets/stylesheets/sir-trevor/patterns/ui-popup.scss +38 -0
  152. package/vendor/assets/stylesheets/sir-trevor/utils.scss +10 -0
  153. 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>&nbsp;&nbsp;{{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>&nbsp;&nbsp;{{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
+ })();