blacklight-spotlight 3.5.0.2 → 3.6.0.beta3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (218) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +20 -0
  3. data/Rakefile +6 -7
  4. data/app/assets/config/spotlight/manifest.js +1 -0
  5. data/app/assets/javascripts/spotlight/application.js +9 -14
  6. data/app/assets/javascripts/spotlight/spotlight.esm.js +7137 -0
  7. data/app/assets/javascripts/spotlight/spotlight.esm.js.map +1 -0
  8. data/app/assets/javascripts/spotlight/spotlight.js +7137 -15
  9. data/app/assets/javascripts/spotlight/spotlight.js.map +1 -0
  10. data/app/assets/stylesheets/spotlight/_browse.scss +1 -1
  11. data/app/assets/stylesheets/spotlight/_catalog.scss +16 -0
  12. data/app/assets/stylesheets/spotlight/_spotlight.scss +36 -38
  13. data/app/assets/stylesheets/spotlight/_variables.scss +0 -21
  14. data/app/assets/stylesheets/spotlight/browse_group_categories_block.scss +1 -1
  15. data/app/controllers/concerns/spotlight/base.rb +2 -1
  16. data/app/controllers/concerns/spotlight/controller.rb +10 -0
  17. data/app/controllers/spotlight/admin_users_controller.rb +4 -4
  18. data/app/controllers/spotlight/appearances_controller.rb +6 -6
  19. data/app/controllers/spotlight/browse_controller.rb +6 -2
  20. data/app/controllers/spotlight/catalog_controller.rb +25 -16
  21. data/app/controllers/spotlight/concerns/application_controller.rb +1 -0
  22. data/app/controllers/spotlight/concerns/catalog_search_context.rb +2 -2
  23. data/app/controllers/spotlight/contacts_controller.rb +6 -6
  24. data/app/controllers/spotlight/dashboards_controller.rb +7 -3
  25. data/app/controllers/spotlight/exhibits_controller.rb +19 -19
  26. data/app/controllers/spotlight/featured_images_controller.rb +1 -1
  27. data/app/controllers/spotlight/home_pages_controller.rb +7 -7
  28. data/app/controllers/spotlight/lock_controller.rb +1 -1
  29. data/app/controllers/spotlight/metadata_configurations_controller.rb +2 -2
  30. data/app/controllers/spotlight/pages_controller.rb +4 -3
  31. data/app/controllers/spotlight/search_configurations_controller.rb +6 -6
  32. data/app/controllers/spotlight/searches_controller.rb +22 -22
  33. data/app/controllers/spotlight/solr_controller.rb +1 -1
  34. data/app/controllers/spotlight/translations_controller.rb +8 -10
  35. data/app/controllers/spotlight/versions_controller.rb +2 -1
  36. data/app/helpers/spotlight/application_helper.rb +33 -17
  37. data/app/helpers/spotlight/crud_link_helpers.rb +12 -2
  38. data/app/helpers/spotlight/pages_helper.rb +1 -1
  39. data/app/helpers/spotlight/roles_helper.rb +2 -2
  40. data/app/helpers/spotlight/title_helper.rb +1 -1
  41. data/app/helpers/spotlight/translations_helper.rb +1 -3
  42. data/app/javascript/spotlight/admin/add_another.es6 +24 -0
  43. data/app/javascript/spotlight/admin/add_image_selector.es6 +38 -0
  44. data/app/javascript/spotlight/admin/add_new_button.es6 +77 -0
  45. data/app/javascript/spotlight/admin/appearance.es6 +22 -0
  46. data/app/javascript/spotlight/admin/blacklight_configuration.es6 +65 -0
  47. data/app/{assets/javascripts → javascript}/spotlight/admin/block_mixins/autocompleteable.js +8 -8
  48. data/app/{assets/javascripts → javascript}/spotlight/admin/block_mixins/formable.js +1 -1
  49. data/app/javascript/spotlight/admin/block_mixins/plustextable.js +58 -0
  50. data/app/{assets/javascripts → javascript}/spotlight/admin/blocks/block.js +2 -1
  51. data/app/javascript/spotlight/admin/blocks/browse_block.js +86 -0
  52. data/app/javascript/spotlight/admin/blocks/browse_group_categories_block.js +88 -0
  53. data/app/{assets/javascripts → javascript}/spotlight/admin/blocks/iframe_block.js +7 -11
  54. data/app/{assets/javascripts → javascript}/spotlight/admin/blocks/link_to_search_block.js +0 -2
  55. data/app/javascript/spotlight/admin/blocks/oembed_block.js +41 -0
  56. data/app/{assets/javascripts → javascript}/spotlight/admin/blocks/pages_block.js +1 -1
  57. data/app/{assets/javascripts → javascript}/spotlight/admin/blocks/resources_block.js +45 -42
  58. data/app/{assets/javascripts → javascript}/spotlight/admin/blocks/rule_block.js +2 -4
  59. data/app/{assets/javascripts → javascript}/spotlight/admin/blocks/search_result_block.js +7 -9
  60. data/app/{assets/javascripts → javascript}/spotlight/admin/blocks/solr_documents_base_block.js +22 -22
  61. data/app/{assets/javascripts → javascript}/spotlight/admin/blocks/solr_documents_block.js +7 -7
  62. data/app/{assets/javascripts → javascript}/spotlight/admin/blocks/solr_documents_carousel_block.js +14 -15
  63. data/app/javascript/spotlight/admin/blocks/uploaded_items_block.js +147 -0
  64. data/app/javascript/spotlight/admin/checkbox_submit.es6 +75 -0
  65. data/app/javascript/spotlight/admin/copy_email_addresses.es6 +5 -0
  66. data/app/{assets/javascripts/spotlight/admin/crop.es6 → javascript/spotlight/admin/crop.js} +5 -4
  67. data/app/javascript/spotlight/admin/croppable.es6 +10 -0
  68. data/app/{assets/javascripts/spotlight/admin/edit_in_place.js → javascript/spotlight/admin/edit_in_place.es6} +6 -13
  69. data/app/javascript/spotlight/admin/exhibit_tag_autocomplete.es6 +39 -0
  70. data/app/javascript/spotlight/admin/exhibits.es6 +59 -0
  71. data/app/{assets/javascripts/spotlight/admin/form_observer.js → javascript/spotlight/admin/form_observer.es6} +23 -21
  72. data/app/javascript/spotlight/admin/index.js +85 -0
  73. data/app/javascript/spotlight/admin/locks.es6 +12 -0
  74. data/app/{assets/javascripts → javascript}/spotlight/admin/multi_image_selector.js +2 -1
  75. data/app/javascript/spotlight/admin/pages.es6 +42 -0
  76. data/app/{assets/javascripts/spotlight/admin/progress_monitor.js → javascript/spotlight/admin/progress_monitor.es6} +5 -9
  77. data/app/javascript/spotlight/admin/readonly_checkbox.es6 +8 -0
  78. data/app/{assets/javascripts → javascript}/spotlight/admin/search_typeahead.js +3 -46
  79. data/app/{assets/javascripts/spotlight/admin/select_related_input.js → javascript/spotlight/admin/select_related_input.es6} +6 -3
  80. data/app/{assets/javascripts → javascript}/spotlight/admin/sir-trevor/block_controls.js +6 -4
  81. data/app/{assets/javascripts → javascript}/spotlight/admin/sir-trevor/block_limits.js +2 -0
  82. data/app/{assets/javascripts → javascript}/spotlight/admin/spotlight_nestable.js +4 -8
  83. data/app/javascript/spotlight/admin/tabs.es6 +8 -0
  84. data/app/{assets/javascripts/spotlight/admin/translation_progress.js → javascript/spotlight/admin/translation_progress.es6} +6 -13
  85. data/app/{assets/javascripts/spotlight/admin/users.js → javascript/spotlight/admin/users.es6} +7 -17
  86. data/app/javascript/spotlight/admin/visibility_toggle.es6 +23 -0
  87. data/app/javascript/spotlight/index.js +10 -0
  88. data/app/javascript/spotlight/spotlight.js +32 -0
  89. data/app/{assets/javascripts/spotlight/user/browse_group_categories.js → javascript/spotlight/user/browse_group_categories.es6} +4 -13
  90. data/app/javascript/spotlight/user/carousel.es6 +5 -0
  91. data/app/{assets/javascripts/spotlight/user/clear_form_button.js → javascript/spotlight/user/clear_form_button.es6} +5 -9
  92. data/app/javascript/spotlight/user/index.js +15 -0
  93. data/app/{assets/javascripts/spotlight/user/report_a_problem.js → javascript/spotlight/user/report_a_problem.es6} +6 -15
  94. data/app/javascript/spotlight/user/zpr_links.es6 +44 -0
  95. data/app/jobs/spotlight/add_uploads_from_csv.rb +1 -2
  96. data/app/models/concerns/spotlight/browse_category_search_builder.rb +7 -3
  97. data/app/models/concerns/spotlight/exhibit_defaults.rb +1 -1
  98. data/app/models/concerns/spotlight/exhibit_documents.rb +2 -2
  99. data/app/models/concerns/spotlight/resources/web.rb +1 -1
  100. data/app/models/concerns/spotlight/solr_document/atomic_updates.rb +1 -1
  101. data/app/models/concerns/spotlight/solr_document/finder.rb +2 -2
  102. data/app/models/concerns/spotlight/solr_document.rb +2 -2
  103. data/app/models/concerns/spotlight/translatables.rb +1 -1
  104. data/app/models/sir_trevor_rails/blocks/displayable.rb +2 -2
  105. data/app/models/sir_trevor_rails/blocks/solr_documents_block.rb +17 -6
  106. data/app/models/spotlight/analytics/ga.rb +5 -5
  107. data/app/models/spotlight/blacklight_configuration.rb +14 -14
  108. data/app/models/spotlight/bulk_update.rb +1 -0
  109. data/app/models/spotlight/contact_email.rb +1 -1
  110. data/app/models/spotlight/contact_form.rb +1 -1
  111. data/app/models/spotlight/exhibit.rb +1 -1
  112. data/app/models/spotlight/featured_image.rb +1 -2
  113. data/app/models/spotlight/lock.rb +1 -1
  114. data/app/models/spotlight/main_navigation.rb +1 -5
  115. data/app/models/spotlight/page.rb +1 -1
  116. data/app/models/spotlight/resources/iiif_manifest.rb +4 -4
  117. data/app/models/spotlight/resources/iiif_service.rb +1 -1
  118. data/app/models/spotlight/resources/upload.rb +3 -6
  119. data/app/models/spotlight/search.rb +2 -2
  120. data/app/models/translation.rb +2 -0
  121. data/app/presenters/spotlight/iiif_manifest_presenter.rb +2 -1
  122. data/app/services/spotlight/iiif_resource_resolver.rb +10 -10
  123. data/app/uploaders/spotlight/bulk_updates_uploader.rb +1 -0
  124. data/app/views/layouts/spotlight/base.html.erb +1 -0
  125. data/app/views/shared/_analytics.html.erb +10 -9
  126. data/app/views/shared/_exhibit_navbar.html.erb +6 -1
  127. data/app/views/spotlight/admin_users/index.html.erb +9 -3
  128. data/app/views/spotlight/browse/show.html.erb +2 -2
  129. data/app/views/spotlight/catalog/_admin_header.html.erb +3 -1
  130. data/app/views/spotlight/catalog/_document_visibility_control.html.erb +21 -2
  131. data/app/views/spotlight/catalog/_index_compact_default.html.erb +1 -1
  132. data/app/views/spotlight/exhibits/_confirmation_status.html.erb +3 -1
  133. data/app/views/spotlight/exhibits/_contact.html.erb +5 -1
  134. data/app/views/spotlight/shared/_exhibit_sidebar.html.erb +2 -0
  135. data/app/views/spotlight/shared/_report_a_problem.html.erb +1 -1
  136. data/app/views/spotlight/sir_trevor/blocks/_search_results_block.html.erb +2 -2
  137. data/app/views/spotlight/translations/_page.html.erb +6 -1
  138. data/config/locales/spotlight.en.yml +3 -8
  139. data/lib/generators/spotlight/install_generator.rb +15 -23
  140. data/lib/generators/spotlight/scaffold_resource_generator.rb +12 -12
  141. data/lib/generators/spotlight/templates/config/initializers/spotlight_initializer.rb +17 -7
  142. data/lib/generators/spotlight/templates/solr/conf/_rest_managed.json +3 -0
  143. data/lib/generators/spotlight/templates/solr/conf/admin-extra.html +31 -0
  144. data/lib/generators/spotlight/templates/solr/conf/elevate.xml +36 -0
  145. data/lib/generators/spotlight/templates/solr/conf/mapping-ISOLatin1Accent.txt +246 -0
  146. data/lib/generators/spotlight/templates/solr/conf/protwords.txt +21 -0
  147. data/lib/generators/spotlight/templates/solr/{config → conf}/schema.xml +17 -0
  148. data/lib/generators/spotlight/templates/solr/conf/scripts.conf +24 -0
  149. data/lib/generators/spotlight/templates/solr/{config → conf}/solrconfig.xml +55 -24
  150. data/lib/generators/spotlight/templates/solr/conf/spellings.txt +2 -0
  151. data/lib/generators/spotlight/templates/solr/conf/stopwords.txt +58 -0
  152. data/lib/generators/spotlight/templates/solr/conf/stopwords_en.txt +58 -0
  153. data/lib/generators/spotlight/templates/solr/conf/synonyms.txt +31 -0
  154. data/lib/generators/spotlight/templates/solr/conf/xslt/example.xsl +132 -0
  155. data/lib/generators/spotlight/templates/solr/conf/xslt/example_atom.xsl +67 -0
  156. data/lib/generators/spotlight/templates/solr/conf/xslt/example_rss.xsl +66 -0
  157. data/lib/generators/spotlight/templates/solr/conf/xslt/luke.xsl +337 -0
  158. data/lib/generators/spotlight/templates/spotlight.js +1 -1
  159. data/lib/migration/iiif.rb +3 -7
  160. data/lib/spotlight/engine.rb +39 -27
  161. data/lib/spotlight/riiif_service.rb +31 -0
  162. data/lib/spotlight/search_state.rb +19 -0
  163. data/lib/spotlight/upload_field_config.rb +1 -1
  164. data/lib/spotlight/version.rb +1 -1
  165. data/lib/tasks/spotlight_tasks.rake +1 -1
  166. data/spec/fixtures/iiif_responses.rb +64 -64
  167. data/vendor/assets/javascripts/nestable.js +1 -1
  168. data/vendor/assets/javascripts/parameterize.js +2 -2
  169. data/vendor/assets/javascripts/sir-trevor.js +22460 -20591
  170. data/vendor/assets/stylesheets/sir-trevor/_icons.scss +0 -0
  171. data/vendor/assets/stylesheets/sir-trevor/_variables.scss +16 -18
  172. data/vendor/assets/stylesheets/sir-trevor/base.scss +11 -0
  173. data/vendor/assets/stylesheets/sir-trevor/block-addition-top.scss +4 -1
  174. data/vendor/assets/stylesheets/sir-trevor/block-addition.scss +3 -2
  175. data/vendor/assets/stylesheets/sir-trevor/block-controls.scss +4 -0
  176. data/vendor/assets/stylesheets/sir-trevor/block-positioner.scss +0 -0
  177. data/vendor/assets/stylesheets/sir-trevor/block-replacer.scss +0 -0
  178. data/vendor/assets/stylesheets/sir-trevor/block-ui.scss +10 -0
  179. data/vendor/assets/stylesheets/sir-trevor/block.scss +19 -5
  180. data/vendor/assets/stylesheets/sir-trevor/errors.scss +0 -0
  181. data/vendor/assets/stylesheets/sir-trevor/format-bar.scss +0 -0
  182. data/vendor/assets/stylesheets/sir-trevor/inputs.scss +0 -0
  183. data/vendor/assets/stylesheets/sir-trevor/main.scss +0 -0
  184. data/vendor/assets/stylesheets/sir-trevor/patterns/ui-popup.scss +0 -0
  185. data/vendor/assets/stylesheets/sir-trevor/utils.scss +0 -0
  186. metadata +101 -129
  187. data/app/assets/javascripts/spotlight/admin/add_another.js +0 -22
  188. data/app/assets/javascripts/spotlight/admin/add_new_button.js +0 -81
  189. data/app/assets/javascripts/spotlight/admin/appearance.js +0 -24
  190. data/app/assets/javascripts/spotlight/admin/attachments.js +0 -2
  191. data/app/assets/javascripts/spotlight/admin/blacklight_configuration.js +0 -63
  192. data/app/assets/javascripts/spotlight/admin/block_mixins/plustextable.js +0 -57
  193. data/app/assets/javascripts/spotlight/admin/blocks/browse_block.js +0 -87
  194. data/app/assets/javascripts/spotlight/admin/blocks/browse_group_categories_block.js +0 -88
  195. data/app/assets/javascripts/spotlight/admin/blocks/oembed_block.js +0 -40
  196. data/app/assets/javascripts/spotlight/admin/blocks/uploaded_items_block.js +0 -145
  197. data/app/assets/javascripts/spotlight/admin/catalog_edit.js +0 -16
  198. data/app/assets/javascripts/spotlight/admin/copy_email_addresses.js +0 -9
  199. data/app/assets/javascripts/spotlight/admin/croppable.js +0 -25
  200. data/app/assets/javascripts/spotlight/admin/exhibit_tag_autocomplete.js +0 -37
  201. data/app/assets/javascripts/spotlight/admin/exhibits.js +0 -58
  202. data/app/assets/javascripts/spotlight/admin/index.js +0 -16
  203. data/app/assets/javascripts/spotlight/admin/locks.js +0 -12
  204. data/app/assets/javascripts/spotlight/admin/pages.js.erb +0 -40
  205. data/app/assets/javascripts/spotlight/admin/readonly_checkbox.js +0 -6
  206. data/app/assets/javascripts/spotlight/admin/tabs.js +0 -6
  207. data/app/assets/javascripts/spotlight/user/analytics.js +0 -9
  208. data/app/assets/javascripts/spotlight/user/carousel.js +0 -3
  209. data/app/assets/javascripts/spotlight/user/index.js +0 -8
  210. data/app/assets/javascripts/spotlight/user/zpr_links.js.erb +0 -45
  211. data/vendor/assets/javascripts/MutationObserver.js +0 -625
  212. data/vendor/assets/javascripts/eventable.js +0 -205
  213. data/vendor/assets/javascripts/polyfill.min.js +0 -4
  214. /data/app/{assets/javascripts → javascript}/spotlight/admin/blocks/solr_documents_embed_block.js +0 -0
  215. /data/app/{assets/javascripts → javascript}/spotlight/admin/blocks/solr_documents_features_block.js +0 -0
  216. /data/app/{assets/javascripts → javascript}/spotlight/admin/blocks/solr_documents_grid_block.js +0 -0
  217. /data/app/{assets/javascripts/spotlight/admin/iiif.es6 → javascript/spotlight/admin/iiif.js} +0 -0
  218. /data/app/{assets/javascripts → javascript}/spotlight/admin/sir-trevor/locales.js +0 -0
@@ -1,81 +0,0 @@
1
- (function($){
2
- $.fn.addNewPageButton = function( options ) {
3
- $.each(this, function(){
4
- addExpandBehaviorToButton($(this));
5
- });
6
- function addExpandBehaviorToButton(button){
7
- var settings = $.extend({
8
- speed: (button.data('speed') || 450),
9
- animate_width: (button.data('animate_width') || 425)
10
- }, options);
11
- var target = $(button.data('field-target'));
12
- var save = $("input[data-behavior='save']", target);
13
- var cancel = $("input[data-behavior='cancel']", target);
14
- var input = $("input[type='text']", target);
15
- var original_width = button.outerWidth();
16
- var expanded = false;
17
-
18
- // Animate button open when the mouse enters or
19
- // the button is given focus (i.e. clicked/tabbed)
20
- button.on("mouseenter focus", function(){
21
- expandButton();
22
- });
23
-
24
- // Don't allow blank titles
25
- save.on('click', function(){
26
- if ( inputEmpty() ) {
27
- return false;
28
- }
29
- });
30
-
31
- // Empty input and collapse
32
- // button on cancel click
33
- cancel.on('click', function(e){
34
- e.preventDefault();
35
- input.val('');
36
- collapseButton();
37
- });
38
-
39
- // Collapse the button on when
40
- // an empty input loses focus
41
- input.on("blur", function(){
42
- if ( inputEmpty() ) {
43
- collapseButton();
44
- }
45
- });
46
- function expandButton(){
47
- // If this has not yet been expanded, recalculate original_width to
48
- // handle things that may have been originally hidden.
49
- if (!expanded) {
50
- original_width = button.outerWidth();
51
- }
52
- if(button.outerWidth() <= (original_width + 5)) {
53
- expanded = true;
54
- button.animate(
55
- {width: settings.animate_width + 'px'}, settings.speed, function(){
56
- target.show(0, function(){
57
- input.focus();
58
- // Set the button to auto width to make
59
- // sure it has room for any inputs
60
- button.width("auto");
61
- // Explicitly set the width of the button
62
- // so the close animation works properly
63
- button.width(button.width());
64
- });
65
- }
66
- )
67
- }
68
- }
69
- function collapseButton(){
70
- target.hide();
71
- button.animate({width: original_width + 'px'}, settings.speed);
72
- }
73
- function inputEmpty(){
74
- return $.trim(input.val()) == "";
75
- }
76
- }
77
- }
78
- })( jQuery );
79
- Spotlight.onLoad(function() {
80
- $("[data-expanded-add-button]").addNewPageButton();
81
- });
@@ -1,24 +0,0 @@
1
- Spotlight.onLoad(function(){
2
- addRestoreDefaultBehavior();
3
- });
4
-
5
- function addRestoreDefaultBehavior(){
6
- $("[data-behavior='restore-default']").each(function(){
7
- var hidden = $("[data-default-value]", $(this));
8
- var value = $($("[data-in-place-edit-target]", $(this)).data('in-place-edit-target'), $(this));
9
- var button = $("[data-restore-default]", $(this));
10
- hidden.on('blur', function(){
11
- if( $(this).val() == $(this).data('default-value') ) {
12
- button.addClass('d-none');
13
- } else {
14
- button.removeClass('d-none');
15
- }
16
- });
17
- button.on('click', function(e){
18
- e.preventDefault();
19
- hidden.val(hidden.data('default-value'));
20
- value.text(hidden.data('default-value'));
21
- button.hide();
22
- });
23
- });
24
- }
@@ -1,2 +0,0 @@
1
- // Place all the behaviors and hooks related to the matching controller here.
2
- // All this logic will automatically be available in application.js.
@@ -1,63 +0,0 @@
1
- Spotlight.onLoad(function() {
2
- // Add Select/Deselect all button behavior
3
- addCheckboxToggleBehavior();
4
- addEnableToggleBehavior();
5
- });
6
-
7
- // Add Select/Deselect all button behavior
8
- function addCheckboxToggleBehavior() {
9
- $("[data-behavior='metadata-select']").each(function(){
10
- var button = $(this)
11
- var parentCell = button.parents("th");
12
- var table = parentCell.closest("table");
13
- var columnRows = $("tr td:nth-child(" + (parentCell.index() + 1) + ")", table);
14
- var checkboxes = $("input[type='checkbox']", columnRows);
15
- swapSelectAllButtonText(button, columnRows);
16
- // Add the check/uncheck behavior to the button
17
- // and swap the button text if necessary
18
- button.on('click', function(e){
19
- e.preventDefault();
20
- var allChecked = allCheckboxesChecked(columnRows);
21
- columnRows.each(function(){
22
- $("input[type='checkbox']", $(this)).prop('checked', !allChecked);
23
- swapSelectAllButtonText(button, columnRows);
24
- });
25
- });
26
- // Swap button text when a checkbox value changes
27
- checkboxes.each(function(){
28
- $(this).on('change', function(){
29
- swapSelectAllButtonText(button, columnRows);
30
- });
31
- });
32
- });
33
- // Check number of checkboxes against the number of checked
34
- // checkboxes to determine if all of them are checked or not
35
- function allCheckboxesChecked(elements) {
36
- return ($("input[type='checkbox']", elements).length == $("input[type='checkbox']:checked", elements).length)
37
- }
38
- // Swap the button text to "Deselect all"
39
- // when all the checkboxes are checked and
40
- // "Select all" when any are unchecked
41
- function swapSelectAllButtonText(button, elements) {
42
- if ( allCheckboxesChecked(elements) ) {
43
- button.text(button.data('deselect-text'));
44
- } else {
45
- button.text(button.data('select-text'));
46
- }
47
- }
48
- }
49
-
50
- function addEnableToggleBehavior() {
51
- $("[data-behavior='enable-feature']").each(function(){
52
- var checkbox = $(this);
53
- var target = $($(this).data('target'));
54
-
55
- checkbox.on('change', function() {
56
- if ($(this).is(':checked')) {
57
- target.find('input:checkbox').not("[data-behavior='enable-feature']").prop('checked', true).attr('disabled', false);
58
- } else {
59
- target.find('input:checkbox').not("[data-behavior='enable-feature']").prop('checked', false).attr('disabled', true);
60
- }
61
- });
62
- });
63
- }
@@ -1,57 +0,0 @@
1
- (function ($){
2
- SirTrevor.BlockMixins.Plustextable = {
3
- mixinName: "Textable",
4
- preload: true,
5
-
6
- initializeTextable: function() {
7
- if (_.isUndefined(this['formId'])) {
8
- this.withMixin(SirTrevor.BlockMixins.Formable);
9
- }
10
-
11
- if (_.isUndefined(this['show_heading'])) {
12
- this.show_heading = true;
13
- }
14
- },
15
-
16
- align_key:"text-align",
17
- text_key:"item-text",
18
- heading_key: "title",
19
-
20
- text_area: function() {
21
- return _.template([
22
- '<div class="row">',
23
- '<div class="col-md-8">',
24
- '<div class="form-group">',
25
- this.heading(),
26
- '<div class="field">',
27
- '<label for="<%= formId(text_key) %>" class="col-form-label"><%= i18n.t("blocks:textable:text") %></label>',
28
- '<div id="<%= formId(text_key) %>" class="st-text-block form-control" contenteditable="true"></div>',
29
- '</div>',
30
- '</div>',
31
- '</div>',
32
- '<div class="col-md-4">',
33
- '<div class="text-align">',
34
- '<p><%= i18n.t("blocks:textable:align:title") %></p>',
35
- '<input data-key="<%= align_key %>" type="radio" name="<%= formId(align_key) %>" id="<%= formId(align_key + "-left") %>" value="left" checked="true">',
36
- '<label for="<%= formId(align_key + "-left") %>"><%= i18n.t("blocks:textable:align:left") %></label>',
37
- '<input data-key="<%= align_key %>" type="radio" name="<%= formId(align_key) %>" id="<%= formId(align_key + "-right") %>" value="right">',
38
- '<label for="<%= formId(align_key + "-right") %>"><%= i18n.t("blocks:textable:align:right") %></label>',
39
- '</div>',
40
- '</div>',
41
- '</div>'].join("\n"))(this); },
42
-
43
- heading: function() {
44
- if(this.show_heading) {
45
- return ['<div class="field">',
46
- '<label for="<%= formId(heading_key) %>" class="col-form-label"><%= i18n.t("blocks:textable:heading") %></label>',
47
- '<input type="text" class="form-control" id="<%= formId(heading_key) %>" name="<%= heading_key %>" />',
48
- '</div>'].join("\n");
49
- } else {
50
- return "";
51
- }
52
- },
53
- };
54
-
55
-
56
- SirTrevor.Block.prototype.availableMixins.push("plustextable");
57
- })(jQuery);
@@ -1,87 +0,0 @@
1
- //= require spotlight/admin/blocks/resources_block
2
-
3
- SirTrevor.Blocks.Browse = (function(){
4
-
5
- return Spotlight.Block.Resources.extend({
6
- type: "browse",
7
-
8
- icon_name: "browse",
9
-
10
- autocomplete_url: function() {
11
- return $(this.inner).closest('form[data-autocomplete-exhibit-searches-path]').data('autocomplete-exhibit-searches-path').replace("%25QUERY", "%QUERY");
12
- },
13
- 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">{{full_title}}</span><br/><small>&nbsp;&nbsp;{{description}}</small></div>' },
14
-
15
- bloodhoundOptions: function() {
16
- return {
17
- prefetch: {
18
- url: this.autocomplete_url(),
19
- ttl: 0
20
- }
21
- };
22
- },
23
-
24
- _itemPanel: function(data) {
25
- var index = "item_" + this.globalIndex++;
26
- var checked;
27
- if (data.display == "true") {
28
- checked = "checked='checked'"
29
- } else {
30
- checked = "";
31
- }
32
- var resource_id = data.slug || data.id;
33
- var markup = [
34
- '<li class="field form-inline dd-item dd3-item" data-resource-id="' + resource_id + '" data-id="' + index + '" id="' + this.formId("item_" + data.id) + '">',
35
- '<input type="hidden" name="item[' + index + '][id]" value="' + resource_id + '" />',
36
- '<input type="hidden" name="item[' + index + '][full_title]" value="' + (data.full_title || data.title) + '" />',
37
- '<input data-property="weight" type="hidden" name="item[' + index + '][weight]" value="' + data.weight + '" />',
38
- '<div class="card d-flex dd3-content">',
39
- '<div class="dd-handle dd3-handle"><%= i18n.t("blocks:resources:panel:drag") %></div>',
40
- '<div class="card-header item-grid">',
41
- '<div class="d-flex">',
42
- '<div class="checkbox">',
43
- '<input name="item[' + index + '][display]" type="hidden" value="false" />',
44
- '<input name="item[' + index + '][display]" id="'+ this.formId(this.display_checkbox + '_' + data.id) + '" type="checkbox" ' + checked + ' class="item-grid-checkbox" value="true" />',
45
- '<label class="sr-only" for="'+ this.formId(this.display_checkbox + '_' + data.id) +'"><%= i18n.t("blocks:resources:panel:display") %></label>',
46
- '</div>',
47
- '<div class="pic">',
48
- '<img class="img-thumbnail" src="' + (data.thumbnail_image_url || ((data.iiif_tilesource || "").replace("/info.json", "/full/!100,100/0/default.jpg"))) + '" />',
49
- '</div>',
50
- '<div class="main">',
51
- '<div class="title card-title">' + (data.full_title || data.title) + '</div>',
52
- '<div>' + (data.slug || data.id) + '</div>',
53
- '</div>',
54
- '<div class="remove float-right">',
55
- '<a data-item-grid-panel-remove="true" href="#"><%= i18n.t("blocks:resources:panel:remove") %></a>',
56
- '</div>',
57
- '</div>',
58
- '</div>',
59
- '</div>',
60
- '</li>'
61
- ].join("\n");
62
-
63
- var panel = $(_.template(markup)(this));
64
- var context = this;
65
-
66
- $('.remove a', panel).on('click', function(e) {
67
- e.preventDefault();
68
- $(this).closest('.field').remove();
69
- context.afterPanelDelete();
70
-
71
- });
72
-
73
- this.afterPanelRender(data, panel);
74
-
75
- return panel;
76
- },
77
-
78
- item_options: function() { return [
79
- '<label>',
80
- '<input type="hidden" name="display-item-counts" value="false" />',
81
- '<input type="checkbox" name="display-item-counts" value="true" checked />',
82
- '<%= i18n.t("blocks:browse:item_counts") %>',
83
- '</label>'
84
- ].join("\n") },
85
- });
86
-
87
- })();
@@ -1,88 +0,0 @@
1
- /*
2
- Sir Trevor BrowseGroupCategories
3
- */
4
-
5
- SirTrevor.Blocks.BrowseGroupCategories = (function(){
6
-
7
- return Spotlight.Block.Resources.extend({
8
- type: "browse_group_categories",
9
- icon_name: "browse",
10
- bloodhoundOptions: function() {
11
- var that = this;
12
- return {
13
- prefetch: {
14
- url: this.autocomplete_url(),
15
- ttl: 0,
16
- filter: function(response) {
17
- // Let the dom know that the response has been returned
18
- $(that.inner).attr('data-browse-groups-fetched', true);
19
- return response;
20
- }
21
- }
22
- };
23
- },
24
-
25
- autocomplete_control: function() {
26
- return '<input type="text" class="st-input-string form-control item-input-field" data-twitter-typeahead="true" placeholder="<%= i18n.t("blocks:browse_group_categories:autocomplete")%>"/>';
27
- },
28
- autocomplete_template: function() { return '<div class="autocomplete-item{{#unless published}} blacklight-private{{/unless}}"><span class="autocomplete-title">{{title}}</span><br/></div>' },
29
- autocomplete_url: function() { return $(this.inner).closest('form[data-autocomplete-exhibit-browse-groups-path]').data('autocomplete-exhibit-browse-groups-path').replace("%25QUERY", "%QUERY"); },
30
- _itemPanel: function(data) {
31
- var index = "item_" + this.globalIndex++;
32
- var checked;
33
- if (data.display == "true") {
34
- checked = "checked='checked'"
35
- } else {
36
- checked = "";
37
- }
38
- var resource_id = data.slug || data.id;
39
- var markup = [
40
- '<li class="field form-inline dd-item dd3-item" data-resource-id="' + resource_id + '" data-id="' + index + '" id="' + this.formId("item_" + data.id) + '">',
41
- '<input type="hidden" name="item[' + index + '][id]" value="' + resource_id + '" />',
42
- '<input type="hidden" name="item[' + index + '][title]" value="' + data.title + '" />',
43
- '<input data-property="weight" type="hidden" name="item[' + index + '][weight]" value="' + data.weight + '" />',
44
- '<div class="card d-flex dd3-content">',
45
- '<div class="dd-handle dd3-handle"><%= i18n.t("blocks:resources:panel:drag") %></div>',
46
- '<div class="d-flex card-header item-grid justify-content-between">',
47
- '<div class="d-flex flex-grow-1">',
48
- '<div class="checkbox">',
49
- '<input name="item[' + index + '][display]" type="hidden" value="false" />',
50
- '<input name="item[' + index + '][display]" id="'+ this.formId(this.display_checkbox + '_' + data.id) + '" type="checkbox" ' + checked + ' class="item-grid-checkbox" value="true" />',
51
- '<label class="sr-only" for="'+ this.formId(this.display_checkbox + '_' + data.id) +'"><%= i18n.t("blocks:resources:panel:display") %></label>',
52
- '</div>',
53
- '<div class="main">',
54
- '<div class="title card-title">' + data.title + '</div>',
55
- '</div>',
56
- '</div>',
57
- '<div class="d-flex">',
58
- '<a data-item-grid-panel-remove="true" href="#"><%= i18n.t("blocks:resources:panel:remove") %></a>',
59
- '</div>',
60
- '</div>',
61
- '</div>',
62
- '</li>'
63
- ].join("\n");
64
-
65
- var panel = $(_.template(markup)(this));
66
- var context = this;
67
-
68
- $('a[data-item-grid-panel-remove]', panel).on('click', function(e) {
69
- e.preventDefault();
70
- $(this).closest('.field').remove();
71
- context.afterPanelDelete();
72
-
73
- });
74
-
75
- this.afterPanelRender(data, panel);
76
-
77
- return panel;
78
- },
79
-
80
- item_options: function() { return [
81
- '<label>',
82
- '<input type="hidden" name="display-item-counts" value="false" />',
83
- '<input type="checkbox" name="display-item-counts" value="true" checked />',
84
- '<%= i18n.t("blocks:browse_group_categories:item_counts") %>',
85
- '</label>'
86
- ].join("\n") },
87
- });
88
- })();
@@ -1,40 +0,0 @@
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
- })();
@@ -1,145 +0,0 @@
1
- SirTrevor.Blocks.UploadedItems = (function(){
2
- return Spotlight.Block.Resources.extend({
3
- plustextable: true,
4
- uploadable: true,
5
- autocompleteable: false,
6
-
7
- id_key: 'file',
8
-
9
- type: 'uploaded_items',
10
-
11
- icon_name: 'items',
12
-
13
- blockGroup: 'undefined',
14
-
15
- // Clear out the default Uploadable upload options
16
- // since we will be using our own custom controls
17
- upload_options: { html: '' },
18
-
19
- fileInput: function() { return $(this.inner).find('input[type="file"]'); },
20
-
21
- onBlockRender: function(){
22
- SpotlightNestable.init($(this.inner).find('[data-behavior="nestable"]'));
23
-
24
- this.fileInput().on('change', (function(ev) {
25
- this.onDrop(ev.currentTarget);
26
- }).bind(this));
27
- },
28
-
29
- onDrop: function(transferData){
30
- var file = transferData.files[0],
31
- urlAPI = (typeof URL !== "undefined") ? URL : (typeof webkitURL !== "undefined") ? webkitURL : null;
32
-
33
- // Handle one upload at a time
34
- if (/image/.test(file.type)) {
35
- this.loading();
36
-
37
- this.uploader(
38
- file,
39
- function(data) {
40
- this.createItemPanel(data);
41
- this.fileInput().val('');
42
- this.ready();
43
- },
44
- function(error) {
45
- this.addMessage(i18n.t('blocks:image:upload_error'));
46
- this.ready();
47
- }
48
- );
49
- }
50
- },
51
-
52
- title: function() { return i18n.t('blocks:uploaded_items:title'); },
53
- description: function() { return i18n.t('blocks:uploaded_items:description'); },
54
-
55
- globalIndex: 0,
56
-
57
- _itemPanel: function(data) {
58
- var index = "file_" + this.globalIndex++;
59
- var checked = 'checked="checked"';
60
-
61
- if (data.display == 'false') {
62
- checked = '';
63
- }
64
-
65
- var dataId = data.id || data.uid;
66
- var dataTitle = data.title || data.name;
67
- var dataUrl = data.url || data.file.url;
68
-
69
- var markup = [
70
- '<li class="field form-inline dd-item dd3-item" data-id="' + index + '" id="' + this.formId("item_" + dataId) + '">',
71
- '<input type="hidden" name="item[' + index + '][id]" value="' + dataId + '" />',
72
- '<input type="hidden" name="item[' + index + '][title]" value="' + dataTitle + '" />',
73
- '<input type="hidden" name="item[' + index + '][url]" data-item-grid-thumbnail="true" value="' + dataUrl + '"/>',
74
- '<input data-property="weight" type="hidden" name="item[' + index + '][weight]" value="' + data.weight + '" />',
75
- '<div class="card d-flex dd3-content">',
76
- '<div class="dd-handle dd3-handle"><%= i18n.t("blocks:resources:panel:drag") %></div>',
77
- '<div class="card-header d-flex item-grid">',
78
- '<div class="checkbox">',
79
- '<input name="item[' + index + '][display]" type="hidden" value="false" />',
80
- '<input name="item[' + index + '][display]" id="'+ this.formId(this.display_checkbox + '_' + dataId) + '" type="checkbox" ' + checked + ' class="item-grid-checkbox" value="true" />',
81
- '<label class="sr-only" for="'+ this.formId(this.display_checkbox + '_' + dataId) +'"><%= i18n.t("blocks:resources:panel:display") %></label>',
82
- '</div>',
83
- '<div class="pic">',
84
- '<img class="img-thumbnail" src="' + dataUrl + '" />',
85
- '</div>',
86
- '<div class="main form-horizontal">',
87
- '<div class="title card-title">' + dataTitle + '</div>',
88
- '<div class="field row mr-3">',
89
- '<label for="' + this.formId('caption_' + dataId) + '" class="col-form-label col-md-3"><%= i18n.t("blocks:uploaded_items:caption") %></label>',
90
- '<input type="text" class="form-control col" id="' + this.formId('caption_' + dataId) + '" name="item[' + index + '][caption]" data-field="caption"/>',
91
- '</div>',
92
- '<div class="field row mr-3">',
93
- '<label for="' + this.formId('link_' + dataId) + '" class="col-form-label col-md-3"><%= i18n.t("blocks:uploaded_items:link") %></label>',
94
- '<input type="text" class="form-control col" id="' + this.formId('link_' + dataId) + '" name="item[' + index + '][link]" data-field="link"/>',
95
- '</div>',
96
- '</div>',
97
- '<div class="remove float-right">',
98
- '<a data-item-grid-panel-remove="true" href="#"><%= i18n.t("blocks:resources:panel:remove") %></a>',
99
- '</div>',
100
- '</div>',
101
- '</li>'
102
- ].join("\n");
103
-
104
- var panel = $(_.template(markup)(this));
105
- panel.find('[data-field="caption"]').val(data.caption);
106
- panel.find('[data-field="link"]').val(data.link);
107
- var context = this;
108
-
109
- $('.remove a', panel).on('click', function(e) {
110
- e.preventDefault();
111
- $(this).closest('.field').remove();
112
- context.afterPanelDelete();
113
- });
114
-
115
- this.afterPanelRender(data, panel);
116
-
117
- return panel;
118
- },
119
-
120
- template: [
121
- '<div class="form oembed-text-admin clearfix">',
122
- '<div class="widget-header">',
123
- '<%= description() %>',
124
- '</div>',
125
- '<div class="row">',
126
- '<div class="form-group col-md-8">',
127
- '<div class="panels dd nestable-item-grid" data-behavior="nestable" data-max-depth="1">',
128
- '<ol class="dd-list">',
129
- '</ol>',
130
- '</div>',
131
- '<input type="file" id="uploaded_item_url" name="file[file_0][file_data]" />',
132
- '</div>',
133
- '<div class="col-md-4">',
134
- '<input name="<%= zpr_key %>" type="hidden" value="false" />',
135
- '<input name="<%= zpr_key %>" id="<%= formId(zpr_key) %>" data-key="<%= zpr_key %>" type="checkbox" value="true" />',
136
- '<label for="<%= formId(zpr_key) %>"><%= i18n.t("blocks:solr_documents:zpr:title") %></label>',
137
- '</div>',
138
- '</div>',
139
- '<%= text_area() %>',
140
- '</div>'
141
- ].join("\n"),
142
-
143
- zpr_key: 'zpr_link'
144
- });
145
- })();
@@ -1,16 +0,0 @@
1
- Spotlight.onLoad(function() {
2
- $(".visiblity_toggle").blCheckboxSubmit({
3
- //css_class is added to elements added, plus used for id base
4
- cssClass: "toggle_visibility",
5
- //success is called at the end of the ajax success callback
6
- success: function (isPublic){
7
- // We store the selector of the label to toggle in a data attribute in the form
8
- var docTarget = $($(this).data("label-toggle-target"));
9
- if ( isPublic ) {
10
- docTarget.removeClass("blacklight-private");
11
- } else {
12
- docTarget.addClass("blacklight-private");
13
- }
14
- }
15
- });
16
- });
@@ -1,9 +0,0 @@
1
- (function($) {
2
- $.fn.copyEmailAddresses = function( options ) {
3
- var clip = new Clipboard('.copy-email-addresses');
4
- };
5
- })( jQuery );
6
-
7
- Spotlight.onLoad(function() {
8
- $('.copy-email-addresses').copyEmailAddresses();
9
- });
@@ -1,25 +0,0 @@
1
- Spotlight.onLoad(function() {
2
- $('[data-behavior="iiif-cropper"]').croppable();
3
- });
4
-
5
-
6
- /*
7
- IIIF image cropping plugin
8
- Add iiif-crop data-attributes to file input (with data-behavior='iiif-cropper') to instantiate.
9
- */
10
-
11
- (function($) {
12
- $.fn.croppable = function() {
13
- var croppables = this;
14
-
15
- var Crop = spotlightAdminCrop;
16
- $(croppables).each(function() {
17
- var cropElement = $(this);
18
- var c = new Crop(cropElement);
19
-
20
- c.render();
21
- });
22
-
23
- return this;
24
- };
25
- })(jQuery);