blacklight 4.0.0 → 4.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: fd53955e7766d24bb6321e2f1c8276115ef7489f
4
+ data.tar.gz: 648c5e33395aa063a7b827e6c1418c12ab84aeae
5
+ !binary "U0hBNTEy":
6
+ metadata.gz: e73973c3a91c7dfbd0dabea81280af47be472a0c12a89dc37b3060db482d7325c3d564cd510ea006282dc1303838131e1c2bf1106f0a4b52fa983a0c1a660e27
7
+ data.tar.gz: 63b8d103ae752c8cb697eb7c831501bb1b535fccdb2df53bb49c77546dd6e2f756bd904fb54eedfa65fef735ba9e9a9ec205a887ada8090149f8826f022d3fef
data/VERSION CHANGED
@@ -1 +1 @@
1
- 4.0.0
1
+ 4.0.1
@@ -4,9 +4,6 @@ Blacklight.setup_modal = function(link_selector, form_selector, launch_modal) {
4
4
  link = $(this)
5
5
 
6
6
  e.preventDefault();
7
- if (launch_modal) {
8
- GlobalModalManager.loading();
9
- }
10
7
 
11
8
  var jqxhr = $.ajax({
12
9
  url: link.attr('href'),
@@ -1,5 +1,5 @@
1
1
  /* ===========================================================
2
- * bootstrap-modal.js
2
+ * bootstrap-modal.js v2.0
3
3
  * ===========================================================
4
4
  * Copyright 2012 Jordan Schroter
5
5
  *
@@ -32,7 +32,7 @@
32
32
 
33
33
  constructor: Modal,
34
34
 
35
- init: function(element, options){
35
+ init: function (element, options) {
36
36
  this.options = options;
37
37
 
38
38
  this.$element = $(element)
@@ -40,8 +40,13 @@
40
40
 
41
41
  this.options.remote && this.$element.find('.modal-body').load(this.options.remote);
42
42
 
43
- var manager = typeof this.options.manager === 'function' ? this.options.manager.call(this) : this.options.manager;
44
- manager && manager.appendModal && manager.appendModal(this);
43
+ var manager = typeof this.options.manager === 'function' ?
44
+ this.options.manager.call(this) : this.options.manager;
45
+
46
+ manager = manager.appendModal ?
47
+ manager : $(manager).modalmanager().data('modalmanager');
48
+
49
+ manager.appendModal(this);
45
50
  },
46
51
 
47
52
  toggle: function () {
@@ -52,6 +57,8 @@
52
57
  var that = this,
53
58
  e = $.Event('show');
54
59
 
60
+ if (this.isShown) return;
61
+
55
62
  this.$element.triggerHandler(e);
56
63
 
57
64
  if (e.isDefaultPrevented()) return;
@@ -60,7 +67,7 @@
60
67
  this.$element.css('width', this.options.width);
61
68
 
62
69
  var that = this;
63
- this.$element.css('margin-left', function(){
70
+ this.$element.css('margin-left', function () {
64
71
  if (/%/ig.test(that.options.width)){
65
72
  return -(parseInt(that.options.width) / 2) + '%';
66
73
  } else {
@@ -68,9 +75,9 @@
68
75
  }
69
76
  });
70
77
  }
71
-
72
78
 
73
79
  var prop = this.options.height ? 'height' : 'max-height';
80
+
74
81
  var value = this.options.height || this.options.maxHeight;
75
82
 
76
83
  if (value){
@@ -80,6 +87,8 @@
80
87
  }
81
88
 
82
89
  this.escape();
90
+
91
+ this.tab();
83
92
 
84
93
  this.options.loading && this.loading();
85
94
  },
@@ -87,8 +96,6 @@
87
96
  hide: function (e) {
88
97
  e && e.preventDefault();
89
98
 
90
- var that = this;
91
-
92
99
  e = $.Event('hide');
93
100
 
94
101
  this.$element.triggerHandler(e);
@@ -98,6 +105,8 @@
98
105
  this.isShown = false;
99
106
 
100
107
  this.escape();
108
+
109
+ this.tab();
101
110
 
102
111
  this.isLoading && this.loading();
103
112
 
@@ -105,6 +114,8 @@
105
114
 
106
115
  this.$element
107
116
  .removeClass('in')
117
+ .removeClass('animated')
118
+ .removeClass(this.options.attentionAnimation)
108
119
  .removeClass('modal-overflow')
109
120
  .attr('aria-hidden', true);
110
121
 
@@ -112,14 +123,47 @@
112
123
  this.hideWithTransition() :
113
124
  this.hideModal();
114
125
  },
126
+
127
+ tab: function () {
128
+ var that = this;
129
+
130
+ if (this.isShown && this.options.consumeTab) {
131
+ this.$element.on('keydown.tabindex.modal', '[data-tabindex]', function (e) {
132
+ if (e.keyCode && e.keyCode == 9){
133
+ var $next = $(this),
134
+ $rollover = $(this);
135
+
136
+ that.$element.find('[data-tabindex]:enabled:not([readonly])').each(function (e) {
137
+ if (!e.shiftKey){
138
+ $next = $next.data('tabindex') < $(this).data('tabindex') ?
139
+ $next = $(this) :
140
+ $rollover = $(this);
141
+ } else {
142
+ $next = $next.data('tabindex') > $(this).data('tabindex') ?
143
+ $next = $(this) :
144
+ $rollover = $(this);
145
+ }
146
+ });
147
+
148
+ $next[0] !== $(this)[0] ?
149
+ $next.focus() : $rollover.focus();
150
+
151
+ e.preventDefault();
152
+
153
+ }
154
+ });
155
+ } else if (!this.isShown) {
156
+ this.$element.off('keydown.tabindex.modal');
157
+ }
158
+ },
115
159
 
116
160
  escape: function () {
117
161
  var that = this;
118
162
  if (this.isShown && this.options.keyboard) {
119
163
  if (!this.$element.attr('tabindex')) this.$element.attr('tabindex', -1);
120
164
 
121
- this.$element.on('keyup.dismiss.modal', function ( e ) {
122
- e.which == 27 && that.hide()
165
+ this.$element.on('keyup.dismiss.modal', function (e) {
166
+ e.which == 27 && that.hide();
123
167
  });
124
168
  } else if (!this.isShown) {
125
169
  this.$element.off('keyup.dismiss.modal')
@@ -155,15 +199,15 @@
155
199
  }
156
200
 
157
201
  },
158
-
159
- removeLoading: function(){
202
+
203
+ removeLoading: function () {
160
204
  this.$loading.remove();
161
205
  this.$loading = null;
162
206
  this.isLoading = false;
163
207
  },
164
208
 
165
- loading: function(callback){
166
- callback = callback || function(){};
209
+ loading: function (callback) {
210
+ callback = callback || function () {};
167
211
 
168
212
  var animate = this.$element.hasClass('fade') ? 'fade' : '';
169
213
 
@@ -189,7 +233,7 @@
189
233
 
190
234
  var that = this;
191
235
  $.support.transition && this.$element.hasClass('fade')?
192
- this.$loading.one($.support.transition.end, function(){ that.removeLoading() }) :
236
+ this.$loading.one($.support.transition.end, function () { that.removeLoading() }) :
193
237
  that.removeLoading();
194
238
 
195
239
  } else if (callback) {
@@ -197,9 +241,37 @@
197
241
  }
198
242
  },
199
243
 
200
- toggleLoading: function(callback){ this.loading(callback); },
244
+ focus: function () {
245
+ var $focusElem = this.$element.find(this.options.focusOn);
246
+
247
+ $focusElem = $focusElem.length ? $focusElem : this.$element;
248
+
249
+ $focusElem.focus();
250
+ },
251
+
252
+ attention: function (){
253
+ // NOTE: transitionEnd with keyframes causes odd behaviour
254
+
255
+ if (this.options.attentionAnimation){
256
+ this.$element
257
+ .removeClass('animated')
258
+ .removeClass(this.options.attentionAnimation);
259
+
260
+ var that = this;
261
+
262
+ setTimeout(function () {
263
+ that.$element
264
+ .addClass('animated')
265
+ .addClass(that.options.attentionAnimation);
266
+ }, 0);
267
+ }
268
+
269
+
270
+ this.focus();
271
+ },
201
272
 
202
- destroy: function(){
273
+
274
+ destroy: function () {
203
275
  var e = $.Event('destroy');
204
276
  this.$element.triggerHandler(e);
205
277
  if (e.isDefaultPrevented()) return;
@@ -207,19 +279,17 @@
207
279
  this.teardown();
208
280
  },
209
281
 
210
- teardown: function(){
211
- var $parent = this.$parent;
212
-
213
- if (!$parent.length){
282
+ teardown: function () {
283
+ if (!this.$parent.length){
214
284
  this.$element.remove();
215
285
  this.$element = null;
216
286
  return;
217
287
  }
218
-
219
- if ($parent !== this.$element.parent()){
288
+
289
+ if (this.$parent !== this.$element.parent()){
220
290
  this.$element.appendTo(this.$parent);
221
291
  }
222
-
292
+
223
293
  this.$element.off('.modal');
224
294
  this.$element.removeData('modal');
225
295
  this.$element
@@ -253,7 +323,10 @@
253
323
  height: null,
254
324
  maxHeight: null,
255
325
  modalOverflow: false,
256
- manager: function(){ return GlobalModalManager },
326
+ consumeTab: true,
327
+ focusOn: null,
328
+ attentionAnimation: 'shake',
329
+ manager: 'body',
257
330
  spinner: '<div class="loading-spinner" style="width: 200px; margin-left: -100px;"><div class="progress progress-striped active"><div class="bar" style="width: 100%;"></div></div></div>'
258
331
  }
259
332
 
@@ -1,5 +1,5 @@
1
1
  /* ===========================================================
2
- * bootstrap-modalmanager.js
2
+ * bootstrap-modalmanager.js v2.0
3
3
  * ===========================================================
4
4
  * Copyright 2012 Jordan Schroter.
5
5
  *
@@ -16,31 +16,10 @@
16
16
  * limitations under the License.
17
17
  * ========================================================== */
18
18
 
19
- !function($){
19
+ !function ($) {
20
20
 
21
21
  "use strict"; // jshint ;_;
22
22
 
23
- var baseModalzIndex, baseModalAbszIndex, baseBackdropzIndex, baseBackdropAbszIndex, zIndexFactor;
24
-
25
- $(function(){
26
- var $baseModal = $('<div class="modal hide" />').appendTo('body'),
27
- $baseBackdrop = $('<div class="modal-backdrop hide" />').appendTo('body'),
28
- $baseModalAbs = $('<div class="modal modal-absolute hide" />').appendTo('body'),
29
- $baseBackdropAbs = $('<div class="modal-backdrop modal-absolute hide" />').appendTo('body');
30
-
31
- baseModalzIndex = +$baseModal.css('z-index'),
32
- baseModalAbszIndex = +$baseModalAbs.css('z-index'),
33
- baseBackdropzIndex = +$baseBackdrop.css('z-index'),
34
- baseBackdropAbszIndex = +$baseBackdropAbs.css('z-index'),
35
- zIndexFactor = baseModalzIndex - baseBackdropzIndex;
36
-
37
- $baseModal.remove();
38
- $baseBackdrop.remove();
39
- $baseModalAbs.remove();
40
- $baseBackdropAbs.remove();
41
- $baseBackdrop = $baseModal = $baseModalAbs = $baseBackdrop = null;
42
- });
43
-
44
23
  /* MODAL MANAGER CLASS DEFINITION
45
24
  * ====================== */
46
25
 
@@ -48,61 +27,44 @@
48
27
  this.init(element, options);
49
28
  }
50
29
 
51
- window.ModalManager = ModalManager;
52
-
53
30
  ModalManager.prototype = {
54
31
 
55
32
  constructor: ModalManager,
56
33
 
57
- init: function(element, options){
34
+ init: function (element, options) {
58
35
  this.$element = $(element);
59
36
  this.options = $.extend({}, $.fn.modalmanager.defaults, this.$element.data(), typeof options == 'object' && options);
60
37
  this.stack = [];
61
- this.isBody = this.$element[0] === $('body')[0];
62
-
63
- this.$container = this.$element.find('.modal-container');
64
- this.$parent = this.$container.length ? this.$container : this.$element;
65
-
66
- this.$element.toggleClass('has-modal-container', !!this.$container.length);
38
+ this.backdropCount = 0;
67
39
  },
68
40
 
69
- createModal: function(element, options){
41
+ createModal: function (element, options) {
70
42
  $(element).modal($.extend({ manager: this }, options));
71
43
  },
72
44
 
73
- appendModal: function(modal){
45
+ appendModal: function (modal) {
74
46
  this.stack.push(modal);
75
47
 
76
48
  var that = this;
77
49
 
78
- modal.$element.on('show.modalmanager', targetIsModal(function(e){
50
+ modal.$element.on('show.modalmanager', targetIsSelf(function (e) {
79
51
  modal.isShown = true;
80
52
 
53
+ var transition = $.support.transition && modal.$element.hasClass('fade');
54
+
81
55
  that.$element
82
56
  .toggleClass('modal-open', that.hasOpenModal())
83
57
  .toggleClass('page-overflow', $(window).height() < that.$element.height());
58
+
59
+ modal.$parent = modal.$element.parent();
84
60
 
61
+ modal.$container = that.createContainer(modal);
85
62
 
86
- var $scrollElement = (that.$container.length ? that.$container :
87
- (that.isBody ? $(window) : that.$element));
88
-
89
- var modalOverflow = $(window).height() < modal.$element.height() || modal.options.modalOverflow;
63
+ modal.$element.appendTo(modal.$container);
90
64
 
91
- modal.$element
92
- .toggleClass('modal-overflow', modalOverflow)
93
- .css('margin-top', $scrollElement.scrollTop() - (modalOverflow ? 0 : modal.$element.height()/2))
94
- .css('z-index', (!that.isBody ? baseModalAbszIndex : baseModalzIndex)
95
- + (zIndexFactor * that.getIndexOfModal(modal)));
65
+ var modalOverflow = $(window).height() < modal.$element.height() || modal.options.modalOverflow;
96
66
 
97
67
  that.backdrop(modal, function () {
98
- var transition = $.support.transition && modal.$element.hasClass('fade')
99
-
100
-
101
- modal.$parent = modal.$element.parent();
102
- if (!modal.$parent.length || modal.$parent[0] !== that.$parent[0]) {
103
- modal.$element.detach().appendTo(that.$parent);
104
- }
105
-
106
68
 
107
69
  modal.$element.show();
108
70
 
@@ -113,11 +75,12 @@
113
75
  }
114
76
 
115
77
  modal.$element
78
+ .toggleClass('modal-overflow', modalOverflow)
79
+ .css('margin-top', modalOverflow ? 0 : 0 - modal.$element.height()/2)
116
80
  .addClass('in')
117
- .attr('aria-hidden', false)
118
- .toggleClass('modal-absolute', !that.isBody);
81
+ .attr('aria-hidden', false);
119
82
 
120
- var complete = function(){
83
+ var complete = function () {
121
84
  that.setFocus();
122
85
  modal.$element.triggerHandler('shown');
123
86
  }
@@ -128,12 +91,13 @@
128
91
  });
129
92
  }));
130
93
 
131
- modal.$element.on('hidden.modalmanager', targetIsModal(function(e){
94
+ modal.$element.on('hidden.modalmanager', targetIsSelf(function (e) {
95
+
132
96
  that.backdrop(modal);
133
97
 
134
98
  if (modal.$backdrop){
135
99
  $.support.transition && modal.$element.hasClass('fade')?
136
- modal.$backdrop.one($.support.transition.end, function(){ that.destroyModal(modal) }) :
100
+ modal.$backdrop.one($.support.transition.end, function () { that.destroyModal(modal) }) :
137
101
  that.destroyModal(modal);
138
102
  } else {
139
103
  that.destroyModal(modal);
@@ -141,25 +105,33 @@
141
105
 
142
106
  }));
143
107
 
144
- modal.$element.on('destroy.modalmanager', targetIsModal(function(e){
108
+ modal.$element.on('destroy.modalmanager', targetIsSelf(function (e) {
145
109
  that.removeModal(modal);
146
110
  }));
147
111
  },
148
112
 
149
- destroyModal: function(modal){
113
+ destroyModal: function (modal) {
114
+
150
115
  modal.destroy();
116
+
151
117
  var hasOpenModal = this.hasOpenModal();
118
+
152
119
  this.$element.toggleClass('modal-open', hasOpenModal);
120
+
153
121
  if (!hasOpenModal){
154
122
  this.$element.removeClass('page-overflow');
155
123
  }
124
+
125
+ this.removeContainer(modal);
126
+
156
127
  this.setFocus();
157
128
  },
158
129
 
159
- hasOpenModal: function(){
130
+ hasOpenModal: function () {
160
131
  for (var i = 0; i < this.stack.length; i++){
161
132
  if (this.stack[i].isShown) return true;
162
133
  }
134
+
163
135
  return false;
164
136
  },
165
137
 
@@ -170,20 +142,23 @@
170
142
  if (this.stack[i].isShown) topModal = this.stack[i];
171
143
  }
172
144
 
173
- topModal && topModal.$element.focus();
145
+ if (!topModal) return;
146
+
147
+ topModal.focus();
148
+
174
149
  },
175
150
 
176
- removeModal: function(modal){
151
+ removeModal: function (modal) {
177
152
  modal.$element.off('.modalmanager');
178
153
  if (modal.$backdrop) this.removeBackdrop.call(modal);
179
154
  this.stack.splice(this.getIndexOfModal(modal), 1);
180
155
  },
181
156
 
182
- getModalAt: function(index){
157
+ getModalAt: function (index) {
183
158
  return this.stack[index];
184
159
  },
185
160
 
186
- getIndexOfModal: function(modal){
161
+ getIndexOfModal: function (modal) {
187
162
  for (var i = 0; i < this.stack.length; i++){
188
163
  if (modal === this.stack[i]) return i;
189
164
  }
@@ -194,13 +169,13 @@
194
169
  modal.$backdrop = null;
195
170
  },
196
171
 
197
- createBackdrop: function(animate){
172
+ createBackdrop: function (animate) {
198
173
  var $backdrop;
199
174
 
200
175
  if (!this.isLoading) {
201
- $backdrop = $('<div class="modal-backdrop ' + animate + '" />')
202
- .appendTo(this.$parent)
203
- .toggleClass('modal-absolute', !this.isBody);
176
+ $backdrop = $('<div class="modal-backdrop ' + animate + '" />')
177
+ .appendTo(this.$element);
178
+
204
179
  } else {
205
180
  $backdrop = this.$loading;
206
181
  $backdrop.off('.modalmanager');
@@ -212,9 +187,37 @@
212
187
  return $backdrop
213
188
  },
214
189
 
190
+ removeContainer: function (modal) {
191
+ modal.$container.remove();
192
+ modal.$container = null;
193
+ },
194
+
195
+ createContainer: function (modal) {
196
+ var $container;
197
+
198
+ $container = $('<div class="modal-scrollable">')
199
+ .css('z-index', getzIndex( 'modal',
200
+ modal ? this.getIndexOfModal(modal) : this.stack.length ))
201
+ .appendTo(this.$element);
202
+
203
+ if (modal && modal.options.backdrop != 'static') {
204
+ $container.on('click.modal', targetIsSelf(function (e) {
205
+ modal.hide();
206
+ }));
207
+ } else if (modal) {
208
+ $container.on('click.modal', targetIsSelf(function (e) {
209
+ modal.attention();
210
+ }));
211
+ }
212
+
213
+ return $container;
214
+
215
+ },
216
+
215
217
  backdrop: function (modal, callback) {
216
218
  var animate = modal.$element.hasClass('fade') ? 'fade' : '',
217
- showBackdrop = $.extend({}, this.options, modal.options).backdrop;
219
+ showBackdrop = modal.options.backdrop &&
220
+ this.backdropCount < this.options.backdropLimit;
218
221
 
219
222
  if (modal.isShown && showBackdrop) {
220
223
  var doAnimate = $.support.transition && animate && !this.isLoading;
@@ -222,29 +225,27 @@
222
225
 
223
226
  modal.$backdrop = this.createBackdrop(animate);
224
227
 
225
- modal.$backdrop.css('z-index',
226
- (!this.isBody ? baseBackdropAbszIndex : baseBackdropzIndex)
227
- + (zIndexFactor * this.getIndexOfModal(modal)));
228
-
229
-
230
- if (modal.options.backdrop != 'static') {
231
- modal.$backdrop.on('click.modal', $.proxy(modal.hide, modal));
232
- }
228
+ modal.$backdrop.css('z-index', getzIndex( 'backdrop', this.getIndexOfModal(modal) ))
233
229
 
234
230
  if (doAnimate) modal.$backdrop[0].offsetWidth // force reflow
235
231
 
236
232
  modal.$backdrop.addClass('in')
237
233
 
234
+ this.backdropCount += 1;
235
+
238
236
  doAnimate ?
239
- modal.$backdrop.one($.support.transition.end, callback) :
240
- callback();
237
+ modal.$backdrop.one($.support.transition.end, callback) :
238
+ callback();
241
239
 
242
240
  } else if (!modal.isShown && modal.$backdrop) {
243
241
  modal.$backdrop.removeClass('in');
244
242
 
243
+ this.backdropCount -= 1;
244
+
245
245
  var that = this;
246
+
246
247
  $.support.transition && modal.$element.hasClass('fade')?
247
- modal.$backdrop.one($.support.transition.end, function(){ that.removeBackdrop(modal) }) :
248
+ modal.$backdrop.one($.support.transition.end, function () { that.removeBackdrop(modal) }) :
248
249
  that.removeBackdrop(modal);
249
250
 
250
251
  } else if (callback) {
@@ -252,16 +253,18 @@
252
253
  }
253
254
  },
254
255
 
255
- removeLoading: function(){
256
+ removeLoading: function () {
256
257
  this.$loading && this.$loading.remove();
257
258
  this.$loading = null;
258
259
  this.isLoading = false;
259
260
  },
260
261
 
261
- loading: function(callback){
262
- callback = callback || function(){ };
262
+ loading: function (callback) {
263
+ callback = callback || function () { };
263
264
 
264
- this.$element.toggleClass('modal-open', !this.isLoading || this.hasOpenModal());
265
+ this.$element
266
+ .toggleClass('modal-open', !this.isLoading || this.hasOpenModal())
267
+ .toggleClass('page-overflow', $(window).height() < this.$element.height());
265
268
 
266
269
  if (!this.isLoading) {
267
270
 
@@ -270,22 +273,18 @@
270
273
  this.$loading[0].offsetWidth // force reflow
271
274
 
272
275
  this.$loading
273
- .css('z-index',
274
- (!this.isBody ? baseBackdropAbszIndex : baseBackdropzIndex)
275
- + (zIndexFactor * this.stack.length))
276
- .on('click.modalmanager', $.proxy(this.loading, this))
276
+ .css('z-index', getzIndex('backdrop', this.stack.length))
277
277
  .addClass('in');
278
278
 
279
- var $scrollElement = (this.$container.length ? this.$container :
280
- (this.isBody ? $(window) : this.$element));
281
-
282
- this.$spinner = $('<div class="modal-spinner fade">')
283
- .append(this.options.spinner)
284
- .css('z-index', this.$loading.css('z-index'))
285
- .css('margin-top', $scrollElement.scrollTop())
286
- .appendTo(this.$parent)
279
+ var $spinner = $(this.options.spinner)
280
+ .css('z-index', getzIndex('modal', this.stack.length))
281
+ .appendTo(this.$element)
287
282
  .addClass('in');
288
283
 
284
+ this.$spinner = $(this.createContainer())
285
+ .append($spinner)
286
+ .on('click.modalmanager', $.proxy(this.loading, this));
287
+
289
288
  this.isLoading = true;
290
289
 
291
290
  $.support.transition ?
@@ -299,28 +298,51 @@
299
298
 
300
299
  var that = this;
301
300
  $.support.transition ?
302
- this.$loading.one($.support.transition.end, function(){ that.removeLoading() }) :
301
+ this.$loading.one($.support.transition.end, function () { that.removeLoading() }) :
303
302
  that.removeLoading();
304
303
 
305
304
  } else if (callback) {
306
305
  callback(this.isLoading);
307
306
  }
308
- },
309
-
310
- toggleLoading: function(callback){ this.loading(callback); }
307
+ }
311
308
  }
312
309
 
313
310
  /* PRIVATE METHODS
314
311
  * ======================= */
315
312
 
313
+ // computes and caches the zindexes
314
+ var getzIndex = (function () {
315
+ var zIndexFactor,
316
+ baseIndex = {};
317
+
318
+ return function (type, pos) {
319
+
320
+ if (typeof zIndexFactor === 'undefined'){
321
+ var $baseModal = $('<div class="modal hide" />').appendTo('body'),
322
+ $baseBackdrop = $('<div class="modal-backdrop hide" />').appendTo('body');
323
+
324
+ baseIndex['modal'] = +$baseModal.css('z-index'),
325
+ baseIndex['backdrop'] = +$baseBackdrop.css('z-index'),
326
+ zIndexFactor = baseIndex['modal'] - baseIndex['backdrop'];
327
+
328
+ $baseModal.remove();
329
+ $baseBackdrop.remove();
330
+ $baseBackdrop = $baseModal = null;
331
+ }
332
+
333
+ return baseIndex[type] + (zIndexFactor * pos);
334
+
335
+ }
336
+ }())
337
+
316
338
  // make sure the event target is the modal itself in order to prevent
317
339
  // other components such as tabsfrom triggering the modal manager.
318
340
  // if Boostsrap namespaced events, this would not be needed.
319
- function targetIsModal(callback){
320
- return function(e){
341
+ function targetIsSelf(callback){
342
+ return function (e) {
321
343
  if (this === e.target){
322
- callback.apply(this, arguments);
323
- }
344
+ return callback.apply(this, arguments);
345
+ }
324
346
  }
325
347
  }
326
348
 
@@ -330,24 +352,19 @@
330
352
 
331
353
  $.fn.modalmanager = function (option) {
332
354
  return this.each(function () {
333
- var $this = $(this)
334
- , data = $this.data('modalmanager');
355
+ var $this = $(this),
356
+ data = $this.data('modalmanager');
335
357
 
336
- if (!data) $this.data('modalmanager', (data = new ModalManager(this, options)))
337
- if (typeof option == 'string') data[option]()
358
+ if (!data) $this.data('modalmanager', (data = new ModalManager(this, option)))
359
+ if (typeof option === 'string') data[option]()
338
360
  })
339
361
  }
340
362
 
341
363
  $.fn.modalmanager.defaults = {
342
- backdrop: true,
343
- spinner: '<div class="loading-spinner" style="width: 200px; margin-left: -100px;"><div class="progress progress-striped active"><div class="bar" style="width: 100%;"></div></div></div>'
364
+ backdropLimit: 999,
365
+ spinner: '<div class="loading-spinner fade" style="width: 200px; margin-left: -100px;"><div class="progress progress-striped active"><div class="bar" style="width: 100%;"></div></div></div>'
344
366
  }
345
367
 
346
368
  $.fn.modalmanager.Constructor = ModalManager
347
369
 
348
- // Create a default global modal manager
349
- $(function(){
350
- window.GlobalModalManager = new ModalManager('body');
351
- })
352
-
353
370
  }(jQuery);
@@ -7,7 +7,7 @@
7
7
  *
8
8
  */
9
9
 
10
- .modal-open.has-modal-container {
10
+ .modal-open {
11
11
  position: relative; /* safari */
12
12
  overflow: hidden;
13
13
  }
@@ -17,7 +17,7 @@
17
17
  .modal-open.page-overflow .page-container,
18
18
  .modal-open.page-overflow .page-container .navbar-fixed-top,
19
19
  .modal-open.page-overflow .page-container .navbar-fixed-bottom,
20
- .modal-open.page-overflow .modal-container {
20
+ .modal-open.page-overflow .modal-scrollable {
21
21
  overflow-y: scroll;
22
22
  }
23
23
 
@@ -28,19 +28,14 @@
28
28
  }
29
29
  }
30
30
 
31
- .modal-container {
32
- display: none;
31
+
32
+ .modal-scrollable {
33
33
  position: fixed;
34
34
  top: 0;
35
35
  bottom: 0;
36
36
  left: 0;
37
37
  right: 0;
38
38
  overflow: auto;
39
- z-index: 9999;
40
- }
41
-
42
- .modal-open > .modal-container {
43
- display: block;
44
39
  }
45
40
 
46
41
  .modal {
@@ -83,12 +78,6 @@
83
78
  border-radius: 6px;
84
79
  }
85
80
 
86
- .modal-spinner {
87
- position: absolute;
88
- top: 50%;
89
- left: 50%;
90
- }
91
-
92
81
  .modal-backdrop.modal-absolute{
93
82
  position: absolute;
94
83
  z-index: 940;
@@ -110,7 +99,6 @@
110
99
 
111
100
  .modal-overflow.modal {
112
101
  top: 1%;
113
- /*bottom: 1%;*/
114
102
  }
115
103
 
116
104
  .modal-overflow.modal.fade {
@@ -119,7 +107,6 @@
119
107
 
120
108
  .modal-overflow.modal.fade.in {
121
109
  top: 1%;
122
- /*bottom: 1%;*/
123
110
  }
124
111
 
125
112
  .modal-overflow .modal-body {
@@ -127,25 +114,6 @@
127
114
  -webkit-overflow-scrolling: touch;
128
115
  }
129
116
 
130
- /*.modal-overflow .modal-body {
131
- position: absolute;
132
- top: 0;
133
- bottom: 0;
134
- right: 0;
135
- left: 0;
136
- margin-top: 48px; // header height
137
- margin-bottom: 60px; // footer height
138
- overflow: auto;
139
- }
140
-
141
-
142
- .modal-overflow .modal-footer {
143
- position: absolute;
144
- bottom: 0;
145
- right: 0;
146
- left: 0;
147
- }*/
148
-
149
117
  /* Responsive */
150
118
 
151
119
  @media (min-width: 1200px) {
@@ -197,3 +165,51 @@
197
165
  left: 50%;
198
166
  margin: -12px 0 0 -12px;
199
167
  }
168
+
169
+ /*
170
+ Animate.css - http://daneden.me/animate
171
+ Licensed under the ☺ license (http://licence.visualidiot.com/)
172
+
173
+ Copyright (c) 2012 Dan Eden*/
174
+
175
+ .animated {
176
+ -webkit-animation-duration: 1s;
177
+ -moz-animation-duration: 1s;
178
+ -o-animation-duration: 1s;
179
+ animation-duration: 1s;
180
+ -webkit-animation-fill-mode: both;
181
+ -moz-animation-fill-mode: both;
182
+ -o-animation-fill-mode: both;
183
+ animation-fill-mode: both;
184
+ }
185
+
186
+ @-webkit-keyframes shake {
187
+ 0%, 100% {-webkit-transform: translateX(0);}
188
+ 10%, 30%, 50%, 70%, 90% {-webkit-transform: translateX(-10px);}
189
+ 20%, 40%, 60%, 80% {-webkit-transform: translateX(10px);}
190
+ }
191
+
192
+ @-moz-keyframes shake {
193
+ 0%, 100% {-moz-transform: translateX(0);}
194
+ 10%, 30%, 50%, 70%, 90% {-moz-transform: translateX(-10px);}
195
+ 20%, 40%, 60%, 80% {-moz-transform: translateX(10px);}
196
+ }
197
+
198
+ @-o-keyframes shake {
199
+ 0%, 100% {-o-transform: translateX(0);}
200
+ 10%, 30%, 50%, 70%, 90% {-o-transform: translateX(-10px);}
201
+ 20%, 40%, 60%, 80% {-o-transform: translateX(10px);}
202
+ }
203
+
204
+ @keyframes shake {
205
+ 0%, 100% {transform: translateX(0);}
206
+ 10%, 30%, 50%, 70%, 90% {transform: translateX(-10px);}
207
+ 20%, 40%, 60%, 80% {transform: translateX(10px);}
208
+ }
209
+
210
+ .shake {
211
+ -webkit-animation-name: shake;
212
+ -moz-animation-name: shake;
213
+ -o-animation-name: shake;
214
+ animation-name: shake;
215
+ }
@@ -3,7 +3,7 @@
3
3
  <%- alert_class = type == :notice ? 'info' : type %>
4
4
  <% if flash[type] %>
5
5
  <div class="alert alert-<%=alert_class%>"><%= flash[type] %>
6
- <a class="close" data-dismiss="alert" href="#">x</a>
6
+ <a class="close" data-dismiss="alert" href="#">&times;</a>
7
7
  </div>
8
8
  <% end %>
9
9
  <% end %>
@@ -26,8 +26,7 @@
26
26
  %>
27
27
  <%= link_to(accessible_remove_label.html_safe,
28
28
  options[:remove],
29
- :class=>'btnRemove imgReplace',
30
- :alt=>'remove'
29
+ :class=>'btnRemove imgReplace'
31
30
  ) %>
32
31
  <%- end -%>
33
32
  </span>
@@ -1,5 +1,5 @@
1
1
  <% if @response.total <= spell_check_max and @response.spelling.words.size > 0 %>
2
2
  <div id="spell">
3
- <h4 class="suggest"><i><%= t('blacklight.did_you_mean', :options => @response.spelling.words.map { |word| link_to_query(word) }.join(" #{t('blacklight.or')} ")).html_safe %></i></h4>
3
+ <h4 class="suggest"><em><%= t('blacklight.did_you_mean', :options => @response.spelling.words.map { |word| link_to_query(word) }.join(" #{t('blacklight.or')} ")).html_safe %></em></h4>
4
4
  </div>
5
5
  <% end %>
@@ -1,6 +1,6 @@
1
1
  <% if paginate_params(@response).num_pages > 1 %>
2
2
  <div class="row record-padding">
3
- <div class="span8 offset1">
3
+ <div class="span9">
4
4
  <div class="pagination">
5
5
  <%= paginate_rsolr_response @response, :outer_window => 2, :theme => 'blacklight' %>
6
6
  </div>
@@ -15,7 +15,7 @@
15
15
  </li>
16
16
  <% if (@document.respond_to?(:export_as_mla_citation_txt) || @document.respond_to?(:export_as_apa_citation_txt)) %>
17
17
  <li class="cite">
18
- <%= link_to t('blacklight.tools.cite'), citation_catalog_path(:id => @document), {:id => 'citeLink', :name => 'citation', :class => 'lightboxLink'} %>
18
+ <%= link_to t('blacklight.tools.cite'), citation_catalog_path(:id => @document), {:id => 'citeLink', :class => 'lightboxLink'} %>
19
19
  </li>
20
20
  <% end %>
21
21
  <% if @document.export_formats.keys.include?( :refworks_marc_txt ) %>
@@ -30,18 +30,18 @@
30
30
  <% end %>
31
31
  <% if @document.respond_to?( :to_email_text ) %>
32
32
  <li class="email">
33
- <%= link_to t('blacklight.tools.email'), email_catalog_path(:id => @document), {:id => 'emailLink', :name => 'email', :class => 'lightboxLink'} %>
33
+ <%= link_to t('blacklight.tools.email'), email_catalog_path(:id => @document), {:id => 'emailLink', :class => 'lightboxLink'} %>
34
34
  </li>
35
35
  <%- end -%>
36
36
  <%- if @document.respond_to?( :to_sms_text ) -%>
37
37
  <li class="sms">
38
- <%= link_to t('blacklight.tools.sms'), sms_catalog_path(:id => @document), {:id => 'smsLink', :name => 'sms', :class => 'lightboxLink'} %>
38
+ <%= link_to t('blacklight.tools.sms'), sms_catalog_path(:id => @document), {:id => 'smsLink', :class => 'lightboxLink'} %>
39
39
  </li>
40
40
  <%- end -%>
41
41
 
42
42
  <% if @document.respond_to?(:to_marc) %>
43
43
  <li class="librarian_view">
44
- <%= link_to t('blacklight.tools.librarian_view'), librarian_view_catalog_path(@document), {:id => 'librarianLink', :name => 'librarian_view', :class => 'lightboxLink'} %>
44
+ <%= link_to t('blacklight.tools.librarian_view'), librarian_view_catalog_path(@document), {:id => 'librarianLink', :class => 'lightboxLink'} %>
45
45
  </li>
46
46
  <% end %>
47
- </ul>
47
+ </ul>
@@ -2,14 +2,16 @@
2
2
  <html lang="en">
3
3
  <head>
4
4
  <meta charset="utf-8">
5
- <meta http-equiv="Content-Type" content="text/html" charset="utf-8">
5
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
6
6
 
7
7
  <!-- Mobile viewport optimization h5bp.com/ad -->
8
8
  <meta name="HandheldFriendly" content="True">
9
9
  <meta name="viewport" content="width=device-width,initial-scale=1.0">
10
10
 
11
11
  <!-- Mobile IE allows us to activate ClearType technology for smoothing fonts for easy reading -->
12
- <meta http-equiv="cleartype" content="on">
12
+ <!--[if IEMobile]>
13
+ <meta http-equiv="cleartype" content="on">
14
+ <![endif]-->
13
15
 
14
16
  <title><%= h(@page_title || application_name) %></title>
15
17
  <link href="<%= opensearch_catalog_path(:format => 'xml', :only_path => false) %>" title="<%= application_name%>" type="application/opensearchdescription+xml" rel="search"/>
@@ -40,7 +42,7 @@
40
42
  </div>
41
43
  <!-- /Top bar -->
42
44
  <div class="row">
43
- <div class="span10">
45
+ <div class="span12">
44
46
  <div id="main-flashes">
45
47
  <%= render :partial=>'/flash_msg' %>
46
48
  </div>
@@ -28,6 +28,6 @@ Gem::Specification.new do |s|
28
28
  s.add_dependency "rsolr", "~> 1.0.6" # Library for interacting with rSolr.
29
29
  s.add_dependency "kaminari", "~> 0.13" # the pagination (page 1,2,3, etc..) of our search results
30
30
  s.add_dependency "sass-rails"
31
- s.add_dependency "bootstrap-sass", "~> 2.1.0"
31
+ s.add_dependency "bootstrap-sass", "~> 2.2.0"
32
32
  s.add_development_dependency "jettywrapper", ">= 1.2.0"
33
33
  end
@@ -182,13 +182,13 @@ en:
182
182
  title: 'Results navigation'
183
183
  pagination_info:
184
184
  no_items_found: 'No %{entry_name} found'
185
- single_item_found: '<b>1</b> to <b>1</b> of <b>1</b>'
185
+ single_item_found: '<strong>1</strong> to <strong>1</strong> of <strong>1</strong>'
186
186
  pages:
187
- one: '<b>%{start_num}</b> - <b>%{end_num}</b> of <b>%{total_num}</b>'
188
- other: '<b>%{start_num}</b> - <b>%{end_num}</b> of <b>%{total_num}</b>'
187
+ one: '<strong>%{start_num}</strong> - <strong>%{end_num}</strong> of <strong>%{total_num}</strong>'
188
+ other: '<strong>%{start_num}</strong> - <strong>%{end_num}</strong> of <strong>%{total_num}</strong>'
189
189
  entry_pagination_info:
190
- one: '<b>1 of 1</b>'
191
- other: '<b>%{current}</b> of <b>%{total}</b>'
190
+ one: '<strong>1 of 1</strong>'
191
+ other: '<strong>%{current}</strong> of <strong>%{total}</strong>'
192
192
  documents:
193
193
  counter: '%{counter}. '
194
194
  facets:
@@ -95,12 +95,16 @@ module Blacklight::Catalog
95
95
  # citation action
96
96
  def citation
97
97
  @response, @documents = get_solr_response_for_field_values(SolrDocument.unique_key,params[:id])
98
+ respond_to do |format|
99
+ format.html
100
+ format.js { render :layout => false }
101
+ end
98
102
  end
99
103
  # grabs a bunch of documents to export to endnote
100
104
  def endnote
101
105
  @response, @documents = get_solr_response_for_field_values(SolrDocument.unique_key,params[:id])
102
106
  respond_to do |format|
103
- format.endnote :layout => false
107
+ format.endnote { render :layout => false }
104
108
  end
105
109
  end
106
110
 
@@ -83,7 +83,7 @@ end
83
83
  platforms :ruby do
84
84
  gem 'sqlite3'
85
85
  gem 'execjs'
86
- gem 'therubyracer'
86
+ gem 'therubyracer', '~> 0.10.2'
87
87
  end
88
88
 
89
89
  gem 'blacklight', :path => '../../'
@@ -83,7 +83,7 @@ end
83
83
  platforms :ruby do
84
84
  gem 'sqlite3'
85
85
  gem 'execjs'
86
- gem 'therubyracer'
86
+ gem 'therubyracer', '~> 0.10.2'
87
87
  end
88
88
 
89
89
  gem 'blacklight', :path => '../../'
@@ -43,7 +43,7 @@ describe CatalogHelper do
43
43
  @response = mock_response :total => 1
44
44
 
45
45
  html = render_pagination_info(@response, { :entry_name => 'entry_name' })
46
- html.should == "<b>1</b> to <b>1</b> of <b>1</b>"
46
+ html.should == "<strong>1</strong> to <strong>1</strong> of <strong>1</strong>"
47
47
  html.html_safe?.should == true
48
48
  end
49
49
 
@@ -51,7 +51,7 @@ describe CatalogHelper do
51
51
  @response = mock_response :total => 7
52
52
 
53
53
  html = render_pagination_info(@response, { :entry_name => 'entry_name' })
54
- html.should == "<b>1</b> - <b>7</b> of <b>7</b>"
54
+ html.should == "<strong>1</strong> - <strong>7</strong> of <strong>7</strong>"
55
55
  html.html_safe?.should == true
56
56
  end
57
57
 
@@ -59,7 +59,7 @@ describe CatalogHelper do
59
59
  @response = mock_response :total => 15, :per_page => 10
60
60
 
61
61
  html = render_pagination_info(@response, { :entry_name => 'entry_name' })
62
- html.should == "<b>1</b> - <b>10</b> of <b>15</b>"
62
+ html.should == "<strong>1</strong> - <strong>10</strong> of <strong>15</strong>"
63
63
  html.html_safe?.should == true
64
64
  end
65
65
 
@@ -67,7 +67,7 @@ describe CatalogHelper do
67
67
  @response = mock_response :total => 47, :per_page => 10, :current_page => 2
68
68
 
69
69
  html = render_pagination_info(@response, { :entry_name => 'entry_name' })
70
- html.should == "<b>11</b> - <b>20</b> of <b>47</b>"
70
+ html.should == "<strong>11</strong> - <strong>20</strong> of <strong>47</strong>"
71
71
  html.html_safe?.should == true
72
72
  end
73
73
 
@@ -75,7 +75,7 @@ describe CatalogHelper do
75
75
  @response = mock_response :total => 47, :per_page => 10, :current_page => 5
76
76
 
77
77
  html = render_pagination_info(@response, { :entry_name => 'entry_name' })
78
- html.should == "<b>41</b> - <b>47</b> of <b>47</b>"
78
+ html.should == "<strong>41</strong> - <strong>47</strong> of <strong>47</strong>"
79
79
  html.html_safe?.should == true
80
80
  end
81
81
 
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: blacklight
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0
5
- prerelease:
4
+ version: 4.0.1
6
5
  platform: ruby
7
6
  authors:
8
7
  - Jonathan Rochkind
@@ -17,12 +16,11 @@ authors:
17
16
  autorequire:
18
17
  bindir: bin
19
18
  cert_chain: []
20
- date: 2012-11-30 00:00:00.000000000 Z
19
+ date: 2012-12-11 00:00:00.000000000 Z
21
20
  dependencies:
22
21
  - !ruby/object:Gem::Dependency
23
22
  name: rails
24
23
  requirement: !ruby/object:Gem::Requirement
25
- none: false
26
24
  requirements:
27
25
  - - ~>
28
26
  - !ruby/object:Gem::Version
@@ -30,7 +28,6 @@ dependencies:
30
28
  type: :runtime
31
29
  prerelease: false
32
30
  version_requirements: !ruby/object:Gem::Requirement
33
- none: false
34
31
  requirements:
35
32
  - - ~>
36
33
  - !ruby/object:Gem::Version
@@ -38,7 +35,6 @@ dependencies:
38
35
  - !ruby/object:Gem::Dependency
39
36
  name: nokogiri
40
37
  requirement: !ruby/object:Gem::Requirement
41
- none: false
42
38
  requirements:
43
39
  - - ~>
44
40
  - !ruby/object:Gem::Version
@@ -46,7 +42,6 @@ dependencies:
46
42
  type: :runtime
47
43
  prerelease: false
48
44
  version_requirements: !ruby/object:Gem::Requirement
49
- none: false
50
45
  requirements:
51
46
  - - ~>
52
47
  - !ruby/object:Gem::Version
@@ -54,7 +49,6 @@ dependencies:
54
49
  - !ruby/object:Gem::Dependency
55
50
  name: marc
56
51
  requirement: !ruby/object:Gem::Requirement
57
- none: false
58
52
  requirements:
59
53
  - - ! '>='
60
54
  - !ruby/object:Gem::Version
@@ -65,7 +59,6 @@ dependencies:
65
59
  type: :runtime
66
60
  prerelease: false
67
61
  version_requirements: !ruby/object:Gem::Requirement
68
- none: false
69
62
  requirements:
70
63
  - - ! '>='
71
64
  - !ruby/object:Gem::Version
@@ -76,7 +69,6 @@ dependencies:
76
69
  - !ruby/object:Gem::Dependency
77
70
  name: rsolr
78
71
  requirement: !ruby/object:Gem::Requirement
79
- none: false
80
72
  requirements:
81
73
  - - ~>
82
74
  - !ruby/object:Gem::Version
@@ -84,7 +76,6 @@ dependencies:
84
76
  type: :runtime
85
77
  prerelease: false
86
78
  version_requirements: !ruby/object:Gem::Requirement
87
- none: false
88
79
  requirements:
89
80
  - - ~>
90
81
  - !ruby/object:Gem::Version
@@ -92,7 +83,6 @@ dependencies:
92
83
  - !ruby/object:Gem::Dependency
93
84
  name: kaminari
94
85
  requirement: !ruby/object:Gem::Requirement
95
- none: false
96
86
  requirements:
97
87
  - - ~>
98
88
  - !ruby/object:Gem::Version
@@ -100,7 +90,6 @@ dependencies:
100
90
  type: :runtime
101
91
  prerelease: false
102
92
  version_requirements: !ruby/object:Gem::Requirement
103
- none: false
104
93
  requirements:
105
94
  - - ~>
106
95
  - !ruby/object:Gem::Version
@@ -108,7 +97,6 @@ dependencies:
108
97
  - !ruby/object:Gem::Dependency
109
98
  name: sass-rails
110
99
  requirement: !ruby/object:Gem::Requirement
111
- none: false
112
100
  requirements:
113
101
  - - ! '>='
114
102
  - !ruby/object:Gem::Version
@@ -116,7 +104,6 @@ dependencies:
116
104
  type: :runtime
117
105
  prerelease: false
118
106
  version_requirements: !ruby/object:Gem::Requirement
119
- none: false
120
107
  requirements:
121
108
  - - ! '>='
122
109
  - !ruby/object:Gem::Version
@@ -124,23 +111,20 @@ dependencies:
124
111
  - !ruby/object:Gem::Dependency
125
112
  name: bootstrap-sass
126
113
  requirement: !ruby/object:Gem::Requirement
127
- none: false
128
114
  requirements:
129
115
  - - ~>
130
116
  - !ruby/object:Gem::Version
131
- version: 2.1.0
117
+ version: 2.2.0
132
118
  type: :runtime
133
119
  prerelease: false
134
120
  version_requirements: !ruby/object:Gem::Requirement
135
- none: false
136
121
  requirements:
137
122
  - - ~>
138
123
  - !ruby/object:Gem::Version
139
- version: 2.1.0
124
+ version: 2.2.0
140
125
  - !ruby/object:Gem::Dependency
141
126
  name: jettywrapper
142
127
  requirement: !ruby/object:Gem::Requirement
143
- none: false
144
128
  requirements:
145
129
  - - ! '>='
146
130
  - !ruby/object:Gem::Version
@@ -148,7 +132,6 @@ dependencies:
148
132
  type: :development
149
133
  prerelease: false
150
134
  version_requirements: !ruby/object:Gem::Requirement
151
- none: false
152
135
  requirements:
153
136
  - - ! '>='
154
137
  - !ruby/object:Gem::Version
@@ -454,33 +437,27 @@ files:
454
437
  - test_support/spec/views/catalog/index.atom.builder_spec.rb
455
438
  homepage: http://projectblacklight.org/
456
439
  licenses: []
440
+ metadata: {}
457
441
  post_install_message:
458
442
  rdoc_options: []
459
443
  require_paths:
460
444
  - lib
461
445
  required_ruby_version: !ruby/object:Gem::Requirement
462
- none: false
463
446
  requirements:
464
447
  - - ! '>='
465
448
  - !ruby/object:Gem::Version
466
449
  version: '0'
467
- segments:
468
- - 0
469
- hash: 2075279285300653487
470
450
  required_rubygems_version: !ruby/object:Gem::Requirement
471
- none: false
472
451
  requirements:
473
452
  - - ! '>='
474
453
  - !ruby/object:Gem::Version
475
454
  version: '0'
476
- segments:
477
- - 0
478
- hash: 2075279285300653487
479
455
  requirements: []
480
456
  rubyforge_project: blacklight
481
- rubygems_version: 1.8.23
457
+ rubygems_version: 2.0.0.preview2
482
458
  signing_key:
483
- specification_version: 3
459
+ specification_version: 4
484
460
  summary: Blacklight provides a discovery interface for any Solr (http://lucene.apache.org/solr)
485
461
  index.
486
462
  test_files: []
463
+ has_rdoc: