blacklight 7.0.1 → 7.1.0.alpha

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 (40) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop_todo.yml +30 -49
  3. data/.travis.yml +4 -4
  4. data/VERSION +1 -1
  5. data/app/assets/javascripts/blacklight/blacklight.js +51 -65
  6. data/app/assets/stylesheets/blacklight/_pagination.scss +6 -0
  7. data/app/controllers/concerns/blacklight/bookmarks.rb +1 -0
  8. data/app/controllers/concerns/blacklight/catalog.rb +2 -9
  9. data/app/controllers/concerns/blacklight/facet.rb +7 -2
  10. data/app/controllers/concerns/blacklight/searchable.rb +17 -0
  11. data/app/helpers/blacklight/catalog_helper_behavior.rb +1 -1
  12. data/app/helpers/blacklight/component_helper_behavior.rb +2 -2
  13. data/app/helpers/blacklight/facets_helper_behavior.rb +1 -1
  14. data/app/helpers/blacklight/render_partials_helper_behavior.rb +12 -0
  15. data/app/helpers/blacklight/url_helper_behavior.rb +2 -2
  16. data/app/models/concerns/blacklight/document/email.rb +4 -4
  17. data/app/models/concerns/blacklight/document/sms.rb +2 -2
  18. data/app/models/search.rb +1 -1
  19. data/app/services/blacklight/search_service.rb +4 -3
  20. data/app/views/catalog/_facet_group.html.erb +19 -0
  21. data/app/views/catalog/_facets.html.erb +3 -18
  22. data/app/views/catalog/index.atom.builder +14 -13
  23. data/app/views/catalog/index.rss.builder +1 -1
  24. data/app/views/shared/_flash_msg.html.erb +5 -3
  25. data/blacklight.gemspec +2 -3
  26. data/lib/blacklight/configuration.rb +2 -1
  27. data/lib/blacklight/solr/search_builder_behavior.rb +2 -2
  28. data/lib/generators/blacklight/assets_generator.rb +0 -1
  29. data/lib/generators/blacklight/install_generator.rb +0 -8
  30. data/lib/generators/blacklight/templates/solr/conf/solrconfig.xml +1 -1
  31. data/package-lock.json +2210 -1612
  32. data/package.json +5 -4
  33. data/spec/controllers/bookmarks_controller_spec.rb +4 -0
  34. data/spec/features/search_formats_spec.rb +3 -4
  35. data/spec/helpers/blacklight/url_helper_behavior_spec.rb +5 -0
  36. data/spec/helpers/catalog_helper_spec.rb +11 -2
  37. data/spec/services/blacklight/search_service_spec.rb +8 -1
  38. data/spec/spec_helper.rb +1 -0
  39. data/spec/views/catalog/_facets.html.erb_spec.rb +30 -7
  40. metadata +12 -24
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1b48d282f24a3086daabbb88b766b5a1d76ff4230a6e6abff9d419b23b01289e
4
- data.tar.gz: 31da35fbd6535f17a16803af0058b3734e5eb37c44352cc0fbacad8a7bf45142
3
+ metadata.gz: 9fe756dbe6e6b38431044bba1b30657153080d460efc11c93b834292a90997dc
4
+ data.tar.gz: 458c1152d21f9a2efde59f4ac97f6ceb569ccd7eeb1916d33563c95492f76ebd
5
5
  SHA512:
6
- metadata.gz: c27bcde35299dcc9468f3684459664fe048d2e4c284701d30128e9f842fb18575905b934c806fb55290ac9eaaf434461b680b1ea3f2f7a626e627c05787391a5
7
- data.tar.gz: 8478b902a2878b30091fc944dd3be890322a530eca1559f78c9867c03838f575bf46fd4cff2f7b88b00d035deaa0cc51274bc8b253c97626c9af059be7572fda
6
+ metadata.gz: 163e004de0439fc7d94c0beea0bf32f946987730c683e737f5dd4ee99914eaf9493f4b7d7af966101ddadb08dd2b5f905973f2e959677da566261024d50fe391
7
+ data.tar.gz: 9e49bb0e02d04074076f24c05be20d03c58803f12aea81faa80fa69cfe9ab9d7a1d2f82d44ab3fb6928cfd56284747a3449de53b299113f4cf540c78e0ab24fa
@@ -1,12 +1,13 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2018-10-31 21:34:01 -0500 using RuboCop version 0.60.0.
3
+ # on 2019-01-18 23:13:39 -0600 using RuboCop version 0.63.0.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
7
7
  # versions of RuboCop, may require this file to be generated again.
8
8
 
9
9
  # Offense count: 4
10
+ # Cop supports --auto-correct.
10
11
  Capybara/CurrentPathExpectation:
11
12
  Exclude:
12
13
  - 'spec/features/alternate_controller_spec.rb'
@@ -126,12 +127,11 @@ Layout/SpaceInsideParens:
126
127
  - 'app/views/catalog/_document.rss.builder'
127
128
  - 'app/views/catalog/index.atom.builder'
128
129
 
129
- # Offense count: 27
130
+ # Offense count: 13
130
131
  # Cop supports --auto-correct.
131
132
  # Configuration parameters: AllowInHeredoc.
132
133
  Layout/TrailingWhitespace:
133
134
  Exclude:
134
- - 'app/views/catalog/_document.atom.builder'
135
135
  - 'app/views/catalog/_document.rss.builder'
136
136
  - 'app/views/catalog/index.atom.builder'
137
137
 
@@ -151,7 +151,7 @@ Lint/AmbiguousOperator:
151
151
  - 'spec/models/blacklight/solr/search_builder_spec.rb'
152
152
  - 'spec/services/blacklight/search_service_spec.rb'
153
153
 
154
- # Offense count: 58
154
+ # Offense count: 55
155
155
  Lint/AmbiguousRegexpLiteral:
156
156
  Exclude:
157
157
  - 'spec/controllers/catalog_controller_spec.rb'
@@ -211,7 +211,7 @@ Metrics/ClassLength:
211
211
  Metrics/CyclomaticComplexity:
212
212
  Max: 12
213
213
 
214
- # Offense count: 46
214
+ # Offense count: 47
215
215
  # Configuration parameters: CountComments, ExcludedMethods.
216
216
  Metrics/MethodLength:
217
217
  Max: 35
@@ -271,11 +271,10 @@ Performance/TimesMap:
271
271
  Exclude:
272
272
  - 'spec/views/catalog/index.atom.builder_spec.rb'
273
273
 
274
- # Offense count: 3
274
+ # Offense count: 2
275
275
  Performance/UnfreezeString:
276
276
  Exclude:
277
277
  - 'lib/generators/blacklight/install_generator.rb'
278
- - 'spec/helpers/blacklight/url_helper_behavior_spec.rb'
279
278
  - 'spec/helpers/blacklight_helper_spec.rb'
280
279
 
281
280
  # Offense count: 9
@@ -309,7 +308,7 @@ RSpec/EmptyExampleGroup:
309
308
  Exclude:
310
309
  - 'spec/models/blacklight/solr/search_builder_spec.rb'
311
310
 
312
- # Offense count: 126
311
+ # Offense count: 127
313
312
  # Configuration parameters: Max.
314
313
  RSpec/ExampleLength:
315
314
  Enabled: false
@@ -352,18 +351,33 @@ RSpec/MessageChain:
352
351
  - 'spec/presenters/blacklight/show_presenter_spec.rb'
353
352
  - 'spec/views/shared/_user_util_links.html.erb_spec.rb'
354
353
 
355
- # Offense count: 62
356
- # Configuration parameters: .
354
+ # Offense count: 67
355
+ # Configuration parameters: EnforcedStyle.
357
356
  # SupportedStyles: have_received, receive
358
357
  RSpec/MessageSpies:
359
- Enabled: false
358
+ Exclude:
359
+ - 'spec/controllers/catalog_controller_spec.rb'
360
+ - 'spec/helpers/blacklight/configuration_helper_behavior_spec.rb'
361
+ - 'spec/helpers/blacklight/facets_helper_behavior_spec.rb'
362
+ - 'spec/helpers/blacklight/render_constraints_helper_behavior_spec.rb'
363
+ - 'spec/helpers/blacklight/suggest_helper_behavior_spec.rb'
364
+ - 'spec/helpers/blacklight/url_helper_behavior_spec.rb'
365
+ - 'spec/helpers/blacklight_helper_spec.rb'
366
+ - 'spec/helpers/catalog_helper_spec.rb'
367
+ - 'spec/lib/blacklight/configuration/facet_field_spec.rb'
368
+ - 'spec/models/blacklight/search_builder_spec.rb'
369
+ - 'spec/models/blacklight/suggest_search_spec.rb'
370
+ - 'spec/presenters/blacklight/index_presenter_spec.rb'
371
+ - 'spec/presenters/blacklight/show_presenter_spec.rb'
372
+ - 'spec/presenters/thumbnail_presenter_spec.rb'
360
373
 
361
- # Offense count: 339
374
+ # Offense count: 345
362
375
  # Configuration parameters: AggregateFailuresByDefault.
363
376
  RSpec/MultipleExpectations:
364
377
  Max: 16
365
378
 
366
- # Offense count: 326
379
+ # Offense count: 328
380
+ # Configuration parameters: IgnoreSharedExamples.
367
381
  RSpec/NamedSubject:
368
382
  Enabled: false
369
383
 
@@ -398,7 +412,7 @@ RSpec/SubjectStub:
398
412
  - 'spec/lib/blacklight/search_state_spec.rb'
399
413
  - 'spec/services/blacklight/search_service_spec.rb'
400
414
 
401
- # Offense count: 117
415
+ # Offense count: 118
402
416
  # Configuration parameters: IgnoreNameless, IgnoreSymbolicNames.
403
417
  RSpec/VerifiedDoubles:
404
418
  Enabled: false
@@ -408,13 +422,6 @@ RSpec/VoidExpect:
408
422
  Exclude:
409
423
  - 'spec/lib/blacklight/configuration/facet_field_spec.rb'
410
424
 
411
- # Offense count: 1
412
- # Cop supports --auto-correct.
413
- # Configuration parameters: NilOrEmpty, NotPresent, UnlessPresent.
414
- Rails/Blank:
415
- Exclude:
416
- - 'lib/blacklight/solr/search_builder_behavior.rb'
417
-
418
425
  # Offense count: 4
419
426
  # Configuration parameters: EnforcedStyle.
420
427
  # SupportedStyles: strict, flexible
@@ -422,18 +429,6 @@ Rails/Date:
422
429
  Exclude:
423
430
  - 'spec/models/search_spec.rb'
424
431
 
425
- # Offense count: 13
426
- # Cop supports --auto-correct.
427
- # Configuration parameters: NotNilAndNotEmpty, NotBlank, UnlessBlank.
428
- Rails/Present:
429
- Exclude:
430
- - 'app/controllers/concerns/blacklight/catalog.rb'
431
- - 'app/helpers/blacklight/component_helper_behavior.rb'
432
- - 'app/helpers/blacklight/facets_helper_behavior.rb'
433
- - 'app/models/concerns/blacklight/document/email.rb'
434
- - 'app/models/concerns/blacklight/document/sms.rb'
435
- - 'lib/blacklight/solr/search_builder_behavior.rb'
436
-
437
432
  # Offense count: 1
438
433
  # Configuration parameters: EnforcedStyle.
439
434
  # SupportedStyles: strict, flexible
@@ -502,12 +497,6 @@ Style/ConditionalAssignment:
502
497
  Exclude:
503
498
  - 'lib/blacklight/solr/response/spelling.rb'
504
499
 
505
- # Offense count: 1
506
- # Configuration parameters: AllowCoercion.
507
- Style/DateTime:
508
- Exclude:
509
- - 'spec/models/blacklight/solr/search_builder_spec.rb'
510
-
511
500
  # Offense count: 93
512
501
  Style/Documentation:
513
502
  Enabled: false
@@ -548,15 +537,7 @@ Style/GuardClause:
548
537
  - 'app/helpers/blacklight/catalog_helper_behavior.rb'
549
538
  - 'lib/blacklight/solr/search_builder_behavior.rb'
550
539
 
551
- # Offense count: 1
552
- # Cop supports --auto-correct.
553
- # Configuration parameters: EnforcedStyle, UseHashRocketsWithSymbolValues, PreferHashRocketsForNonAlnumEndingSymbols.
554
- # SupportedStyles: ruby19, hash_rockets, no_mixed_keys, ruby19_no_mixed_keys
555
- Style/HashSyntax:
556
- Exclude:
557
- - 'app/helpers/blacklight/url_helper_behavior.rb'
558
-
559
- # Offense count: 39
540
+ # Offense count: 40
560
541
  # Cop supports --auto-correct.
561
542
  Style/IfUnlessModifier:
562
543
  Enabled: false
@@ -652,7 +633,7 @@ Style/Semicolon:
652
633
  - 'spec/models/blacklight/solr/repository_spec.rb'
653
634
  - 'spec/views/catalog/_paginate_compact.html.erb_spec.rb'
654
635
 
655
- # Offense count: 32
636
+ # Offense count: 31
656
637
  # Cop supports --auto-correct.
657
638
  # Configuration parameters: MinSize.
658
639
  # SupportedStyles: percent, brackets
@@ -1,4 +1,4 @@
1
- dist: trusty
1
+ dist: xenial
2
2
  addons:
3
3
  chrome: stable
4
4
  language: ruby
@@ -27,8 +27,8 @@ matrix:
27
27
  fast_finish: true
28
28
 
29
29
  before_install:
30
- - gem update --system
31
- - gem install bundler
30
+ - gem install chromedriver-helper --no-document
31
+ - chromedriver-update 73.0.3683.68
32
32
  - google-chrome-stable --headless --disable-gpu --no-sandbox --remote-debugging-port=9222 http://localhost &
33
33
 
34
34
  notifications:
@@ -41,7 +41,7 @@ global_env:
41
41
  - ENGINE_CART_RAILS_OPTIONS='--skip-git --skip-bundle --skip-listen --skip-spring --skip-yarn --skip-keeps --skip-action-cable --skip-coffee --skip-test'
42
42
  - CC_TEST_REPORTER_ID=5042c7358c96b0b926088a4cda3e132fffe7a66ce8047cdb1dc6f0b4b6676b79
43
43
 
44
- jdk: oraclejdk9
44
+ jdk: openjdk11
45
45
 
46
46
  before_script:
47
47
  - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
data/VERSION CHANGED
@@ -1 +1 @@
1
- 7.0.1
1
+ 7.1.0.alpha
@@ -4,15 +4,14 @@ Blacklight = function () {
4
4
  onLoad: function (func) {
5
5
  buffer.push(func);
6
6
  },
7
-
8
7
  activate: function () {
9
8
  for (var i = 0; i < buffer.length; i++) {
10
9
  buffer[i].call();
11
10
  }
12
11
  },
13
-
14
12
  listeners: function () {
15
13
  var listeners = [];
14
+
16
15
  if (typeof Turbolinks !== 'undefined' && Turbolinks.supported) {
17
16
  // Turbolinks 5
18
17
  if (Turbolinks.BrowserAdapter) {
@@ -28,16 +27,15 @@ Blacklight = function () {
28
27
  return listeners;
29
28
  }
30
29
  };
31
- }();
32
-
33
- // turbolinks triggers page:load events on page transition
30
+ }(); // turbolinks triggers page:load events on page transition
34
31
  // If app isn't using turbolinks, this event will never be triggered, no prob.
32
+
33
+
35
34
  Blacklight.listeners().forEach(function (listener) {
36
35
  document.addEventListener(listener, function () {
37
36
  Blacklight.activate();
38
37
  });
39
38
  });
40
-
41
39
  $('.no-js').removeClass('no-js').addClass('js');
42
40
  /*global Bloodhound */
43
41
 
@@ -46,11 +44,12 @@ Blacklight.onLoad(function () {
46
44
 
47
45
  $('[data-autocomplete-enabled="true"]').each(function () {
48
46
  var $el = $(this);
47
+
49
48
  if ($el.hasClass('tt-hint')) {
50
49
  return;
51
50
  }
52
- var suggestUrl = $el.data().autocompletePath;
53
51
 
52
+ var suggestUrl = $el.data().autocompletePath;
54
53
  var terms = new Bloodhound({
55
54
  datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
56
55
  queryTokenizer: Bloodhound.tokenizers.whitespace,
@@ -59,9 +58,7 @@ Blacklight.onLoad(function () {
59
58
  wildcard: '%QUERY'
60
59
  }
61
60
  });
62
-
63
61
  terms.initialize();
64
-
65
62
  $el.typeahead({
66
63
  hint: true,
67
64
  highlight: true,
@@ -73,6 +70,7 @@ Blacklight.onLoad(function () {
73
70
  });
74
71
  });
75
72
  });
73
+
76
74
  (function ($) {
77
75
  //change form submit toggle to checkbox
78
76
  Blacklight.doBookmarkToggleBehavior = function () {
@@ -80,6 +78,7 @@ Blacklight.onLoad(function () {
80
78
  console.warn("do_bookmark_toggle_behavior is deprecated. Use doBookmarkToggleBehavior instead.");
81
79
  return Blacklight.do_bookmark_toggle_behavior();
82
80
  }
81
+
83
82
  $(Blacklight.doBookmarkToggleBehavior.selector).blCheckboxSubmit({
84
83
  // cssClass is added to elements added, plus used for id base
85
84
  cssClass: 'toggle-bookmark',
@@ -90,8 +89,8 @@ Blacklight.onLoad(function () {
90
89
  }
91
90
  });
92
91
  };
93
- Blacklight.doBookmarkToggleBehavior.selector = 'form.bookmark-toggle';
94
92
 
93
+ Blacklight.doBookmarkToggleBehavior.selector = 'form.bookmark-toggle';
95
94
  Blacklight.onLoad(function () {
96
95
  Blacklight.doBookmarkToggleBehavior();
97
96
  });
@@ -126,39 +125,37 @@ Blacklight.onLoad(function () {
126
125
  }
127
126
  });
128
127
  */
128
+
129
+
129
130
  (function ($) {
130
131
  $.fn.blCheckboxSubmit = function (argOpts) {
131
132
  this.each(function () {
132
133
  var options = $.extend({}, $.fn.blCheckboxSubmit.defaults, argOpts);
133
-
134
134
  var form = $(this);
135
- form.children().hide();
136
- //We're going to use the existing form to actually send our add/removes
135
+ form.children().hide(); //We're going to use the existing form to actually send our add/removes
137
136
  //This works conveneintly because the exact same action href is used
138
137
  //for both bookmarks/$doc_id. But let's take out the irrelevant parts
139
138
  //of the form to avoid any future confusion.
140
- form.find('input[type=submit]').remove();
141
139
 
142
- //View needs to set data-doc-id so we know a unique value
140
+ form.find('input[type=submit]').remove(); //View needs to set data-doc-id so we know a unique value
143
141
  //for making DOM id
144
- var uniqueId = form.attr('data-doc-id') || Math.random();
145
- // if form is currently using method delete to change state,
142
+
143
+ var uniqueId = form.attr('data-doc-id') || Math.random(); // if form is currently using method delete to change state,
146
144
  // then checkbox is currently checked
147
- var checked = form.find('input[name=_method][value=delete]').length != 0;
148
145
 
146
+ var checked = form.find('input[name=_method][value=delete]').length != 0;
149
147
  var checkbox = $('<input type="checkbox">').addClass(options.cssClass).attr('id', options.cssClass + '_' + uniqueId);
150
148
  var label = $('<label>').addClass(options.cssClass).attr('for', options.cssClass + '_' + uniqueId).attr('title', form.attr('title') || '');
151
149
  var span = $('<span>');
152
-
153
150
  label.append(checkbox);
154
151
  label.append(' ');
155
152
  label.append(span);
156
-
157
153
  var checkboxDiv = $('<div class="checkbox" />').addClass(options.cssClass).append(label);
158
154
 
159
155
  function updateStateFor(state) {
160
156
  checkbox.prop('checked', state);
161
157
  label.toggleClass('checked', state);
158
+
162
159
  if (state) {
163
160
  //Set the Rails hidden field that fakes an HTTP verb
164
161
  //properly for current state action.
@@ -172,12 +169,10 @@ Blacklight.onLoad(function () {
172
169
 
173
170
  form.append(checkboxDiv);
174
171
  updateStateFor(checked);
175
-
176
172
  checkbox.click(function () {
177
173
  span.text(form.attr('data-inprogress'));
178
174
  label.attr('disabled', 'disabled');
179
175
  checkbox.attr('disabled', 'disabled');
180
-
181
176
  $.ajax({
182
177
  url: form.attr('action'),
183
178
  dataType: 'json',
@@ -204,11 +199,10 @@ Blacklight.onLoad(function () {
204
199
  }
205
200
  }
206
201
  });
207
-
208
202
  return false;
209
203
  }); //checkbox.click
210
-
211
204
  }); //this.each
205
+
212
206
  return this;
213
207
  };
214
208
 
@@ -219,8 +213,10 @@ Blacklight.onLoad(function () {
219
213
  alert("Error");
220
214
  },
221
215
  success: function () {} //callback
216
+
222
217
  };
223
218
  })(jQuery);
219
+
224
220
  (function ($) {
225
221
  Blacklight.onLoad(function () {
226
222
  // when clicking on a link that toggles the collapsing behavior, don't do anything
@@ -232,6 +228,7 @@ Blacklight.onLoad(function () {
232
228
  })(jQuery);
233
229
  /*global Blacklight */
234
230
 
231
+
235
232
  (function ($) {
236
233
  'use strict';
237
234
 
@@ -327,37 +324,33 @@ Blacklight.onLoad(function () {
327
324
 
328
325
  The data-blacklight-modal=close behavior is implemented with this event, see for example.
329
326
  */
330
-
331
327
  // We keep all our data in Blacklight.modal object.
332
328
  // Create lazily if someone else created first.
329
+
330
+
333
331
  if (Blacklight.modal === undefined) {
334
332
  Blacklight.modal = {};
335
- }
333
+ } // a Bootstrap modal div that should be already on the page hidden
336
334
 
337
- // a Bootstrap modal div that should be already on the page hidden
338
- Blacklight.modal.modalSelector = '#blacklight-modal';
339
335
 
340
- // Trigger selectors identify forms or hyperlinks that should open
336
+ Blacklight.modal.modalSelector = '#blacklight-modal'; // Trigger selectors identify forms or hyperlinks that should open
341
337
  // inside a modal dialog.
342
- Blacklight.modal.triggerLinkSelector = 'a[data-blacklight-modal~=trigger]';
343
- Blacklight.modal.triggerFormSelector = 'form[data-blacklight-modal~=trigger]';
344
338
 
345
- // preserve selectors identify forms or hyperlinks that, if activated already
339
+ Blacklight.modal.triggerLinkSelector = 'a[data-blacklight-modal~=trigger]';
340
+ Blacklight.modal.triggerFormSelector = 'form[data-blacklight-modal~=trigger]'; // preserve selectors identify forms or hyperlinks that, if activated already
346
341
  // inside a modal dialog, should have destinations remain inside the modal -- but
347
342
  // won't trigger a modal if not already in one.
348
343
  //
349
344
  // No need to repeat selectors from trigger selectors, those will already
350
345
  // be preserved. MUST be manually prefixed with the modal selector,
351
346
  // so they only apply to things inside a modal.
352
- Blacklight.modal.preserveLinkSelector = Blacklight.modal.modalSelector + ' a[data-blacklight-modal~=preserve]';
353
347
 
348
+ Blacklight.modal.preserveLinkSelector = Blacklight.modal.modalSelector + ' a[data-blacklight-modal~=preserve]';
354
349
  Blacklight.modal.containerSelector = '[data-blacklight-modal~=container]';
355
-
356
- Blacklight.modal.modalCloseSelector = '[data-blacklight-modal~=close]';
357
-
358
- // Called on fatal failure of ajax load, function returns content
350
+ Blacklight.modal.modalCloseSelector = '[data-blacklight-modal~=close]'; // Called on fatal failure of ajax load, function returns content
359
351
  // to show to user in modal. Right now called only for extreme
360
352
  // network errors.
353
+
361
354
  Blacklight.modal.onFailure = function (data) {
362
355
  var contents = '<div class="modal-header">' + '<div class="modal-title">Network Error</div>' + '<button type="button" class="blacklight-modal-close close" data-dismiss="modal" aria-label="Close">' + ' <span aria-hidden="true">&times;</span>' + '</button>';
363
356
  $(Blacklight.modal.modalSelector).find('.modal-content').html(contents);
@@ -369,24 +362,22 @@ Blacklight.modal.receiveAjax = function (contents) {
369
362
  // important we don't execute script tags, we shouldn't.
370
363
  // code modelled off of JQuery ajax.load. https://github.com/jquery/jquery/blob/master/src/ajax/load.js?source=c#L62
371
364
  var container = $('<div>').append(jQuery.parseHTML(contents)).find(Blacklight.modal.containerSelector).first();
365
+
372
366
  if (container.length !== 0) {
373
367
  contents = container.html();
374
368
  }
375
369
 
376
- $(Blacklight.modal.modalSelector).find('.modal-content').html(contents);
370
+ $(Blacklight.modal.modalSelector).find('.modal-content').html(contents); // send custom event with the modal dialog div as the target
377
371
 
378
- // send custom event with the modal dialog div as the target
379
372
  var e = $.Event('loaded.blacklight.blacklight-modal');
380
- $(Blacklight.modal.modalSelector).trigger(e);
381
- // if they did preventDefault, don't show the dialog
382
- if (e.isDefaultPrevented()) return;
373
+ $(Blacklight.modal.modalSelector).trigger(e); // if they did preventDefault, don't show the dialog
383
374
 
375
+ if (e.isDefaultPrevented()) return;
384
376
  $(Blacklight.modal.modalSelector).modal('show');
385
377
  };
386
378
 
387
379
  Blacklight.modal.modalAjaxLinkClick = function (e) {
388
380
  e.preventDefault();
389
-
390
381
  $.ajax({
391
382
  url: $(this).attr('href')
392
383
  }).fail(Blacklight.modal.onFailure).done(Blacklight.modal.receiveAjax);
@@ -394,11 +385,11 @@ Blacklight.modal.modalAjaxLinkClick = function (e) {
394
385
 
395
386
  Blacklight.modal.modalAjaxFormSubmit = function (e) {
396
387
  e.preventDefault();
397
-
398
388
  $.ajax({
399
389
  url: $(this).attr('action'),
400
390
  data: $(this).serialize(),
401
391
  type: $(this).attr('method') // POST
392
+
402
393
  }).fail(Blacklight.modal.onFailure).done(Blacklight.modal.receiveAjax);
403
394
  };
404
395
 
@@ -408,34 +399,29 @@ Blacklight.modal.setupModal = function () {
408
399
  // setup.
409
400
  var e = $.Event('setup.blacklight.blacklight-modal');
410
401
  $('body').trigger(e);
411
- if (e.isDefaultPrevented()) return;
412
-
413
- // Register both trigger and preserve selectors in ONE event handler, combining
402
+ if (e.isDefaultPrevented()) return; // Register both trigger and preserve selectors in ONE event handler, combining
414
403
  // into one selector with a comma, so if something matches BOTH selectors, it
415
404
  // still only gets the event handler called once.
416
- $('body').on('click', Blacklight.modal.triggerLinkSelector + ', ' + Blacklight.modal.preserveLinkSelector, Blacklight.modal.modalAjaxLinkClick);
417
- $('body').on('submit', Blacklight.modal.triggerFormSelector + ', ' + Blacklight.modal.preserveFormSelector, Blacklight.modal.modalAjaxFormSubmit);
418
405
 
419
- // Catch our own custom loaded event to implement data-blacklight-modal=closed
420
- $('body').on('loaded.blacklight.blacklight-modal', Blacklight.modal.checkCloseModal);
406
+ $('body').on('click', Blacklight.modal.triggerLinkSelector + ', ' + Blacklight.modal.preserveLinkSelector, Blacklight.modal.modalAjaxLinkClick);
407
+ $('body').on('submit', Blacklight.modal.triggerFormSelector + ', ' + Blacklight.modal.preserveFormSelector, Blacklight.modal.modalAjaxFormSubmit); // Catch our own custom loaded event to implement data-blacklight-modal=closed
421
408
 
422
- // we support doing data-dismiss=modal on a <a> with a href for non-ajax
409
+ $('body').on('loaded.blacklight.blacklight-modal', Blacklight.modal.checkCloseModal); // we support doing data-dismiss=modal on a <a> with a href for non-ajax
423
410
  // use, we need to suppress following the a's href that's there for
424
411
  // non-JS contexts.
412
+
425
413
  $('body').on('click', Blacklight.modal.modalSelector + ' a[data-dismiss~=modal]', function (e) {
426
414
  e.preventDefault();
427
415
  });
428
- };
429
-
430
- // A function used as an event handler on loaded.blacklight.blacklight-modal
416
+ }; // A function used as an event handler on loaded.blacklight.blacklight-modal
431
417
  // to catch contained data-blacklight-modal=closed directions
418
+
419
+
432
420
  Blacklight.modal.checkCloseModal = function (event) {
433
421
  if ($(event.target).find(Blacklight.modal.modalCloseSelector).length) {
434
422
  var modalFlashes = $(this).find('.flash_messages');
435
-
436
423
  $(event.target).modal('hide');
437
424
  event.preventDefault();
438
-
439
425
  var mainFlashes = $('#main-flashes');
440
426
  mainFlashes.append(modalFlashes);
441
427
  modalFlashes.fadeIn(500);
@@ -445,25 +431,27 @@ Blacklight.modal.checkCloseModal = function (event) {
445
431
  Blacklight.onLoad(function () {
446
432
  Blacklight.modal.setupModal();
447
433
  });
434
+
448
435
  (function ($) {
449
436
  Blacklight.doSearchContextBehavior = function () {
450
437
  if (typeof Blacklight.do_search_context_behavior == 'function') {
451
438
  console.warn("do_search_context_behavior is deprecated. Use doSearchContextBehavior instead.");
452
439
  return Blacklight.do_search_context_behavior();
453
440
  }
454
- $('a[data-context-href]').on('click.search-context', Blacklight.handleSearchContextMethod);
455
- };
456
441
 
457
- // this is the $.rails.handleMethod with a couple adjustments, described inline:
442
+ $('a[data-context-href]').on('click.search-context', Blacklight.handleSearchContextMethod);
443
+ }; // this is the $.rails.handleMethod with a couple adjustments, described inline:
458
444
  // first, we're attaching this directly to the event handler, so we can check for meta-keys
445
+
446
+
459
447
  Blacklight.handleSearchContextMethod = function (event) {
460
448
  if (typeof Blacklight.handle_search_context_method == 'function') {
461
449
  console.warn("handle_search_context_method is deprecated. Use handleSearchContextMethod instead.");
462
450
  return Blacklight.handle_search_context_method(event);
463
451
  }
464
- var link = $(this);
465
452
 
466
- // instead of using the normal href, we need to use the context href instead
453
+ var link = $(this); // instead of using the normal href, we need to use the context href instead
454
+
467
455
  var href = link.data('context-href'),
468
456
  method = 'post',
469
457
  target = link.attr('target'),
@@ -471,9 +459,8 @@ Blacklight.onLoad(function () {
471
459
  csrfParam = $('meta[name=csrf-param]').attr('content'),
472
460
  form = $('<form method="post" action="' + href + '"></form>'),
473
461
  metadataInput = '<input name="_method" value="' + method + '" type="hidden" />',
474
- redirectHref = '<input name="redirect" value="' + link.attr('href') + '" type="hidden" />';
462
+ redirectHref = '<input name="redirect" value="' + link.attr('href') + '" type="hidden" />'; // check for meta keys.. if set, we should open in a new tab
475
463
 
476
- // check for meta keys.. if set, we should open in a new tab
477
464
  if (event.metaKey || event.ctrlKey) {
478
465
  target = '_blank';
479
466
  }
@@ -488,7 +475,6 @@ Blacklight.onLoad(function () {
488
475
 
489
476
  form.hide().append(metadataInput).append(redirectHref).appendTo('body');
490
477
  form.submit();
491
-
492
478
  return false;
493
479
  };
494
480