rails-bootstrap-engine 0.0.5 → 0.0.8

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 (102) hide show
  1. checksums.yaml +7 -0
  2. data/app/assets/javascripts/bootstrap.js +80 -189
  3. data/app/assets/stylesheets/bootstrap-responsive.css +7 -24
  4. data/app/assets/stylesheets/bootstrap.css +124 -238
  5. data/app/helpers/bootstrap_nav_helper.rb +12 -78
  6. data/app/views/layouts/application.html.erb +19 -0
  7. data/app/views/layouts/devise.html.erb +19 -0
  8. data/lib/rails-bootstrap-engine.rb +1 -9
  9. data/lib/rails-bootstrap-engine/version.rb +1 -1
  10. data/test/dummy/app/views/test/index.html.erb +0 -10
  11. metadata +139 -337
  12. data/lib/rails-bootstrap-engine/base.rb +0 -18
  13. data/lib/rails-bootstrap-engine/markup/bootstrap_markup_collection.rb +0 -71
  14. data/lib/rails-bootstrap-engine/markup/bootstrap_markup_collection_set.rb +0 -33
  15. data/lib/rails-bootstrap-engine/markup/navigation.rb +0 -64
  16. data/test/dummy/db/development.sqlite3 +0 -0
  17. data/test/dummy/db/production.sqlite3 +0 -0
  18. data/test/dummy/log/development.log +0 -53897
  19. data/test/dummy/log/production.log +0 -12
  20. data/test/dummy/public/assets/FontAwesome-0fdb416638e884b136e08630267248ca.ttf +0 -0
  21. data/test/dummy/public/assets/apple-touch-icon-114x114-precomposed-730730c64195a586274864b2f30db38d.png +0 -0
  22. data/test/dummy/public/assets/apple-touch-icon-144x144-precomposed-2a562dfd10a2c6589160055287e354f6.png +0 -0
  23. data/test/dummy/public/assets/apple-touch-icon-57x57-precomposed-5f810796246b499d6e3d73ed0007be62.png +0 -0
  24. data/test/dummy/public/assets/apple-touch-icon-72x72-precomposed-70853fdaf2358e18cba87dee1a782746.png +0 -0
  25. data/test/dummy/public/assets/apple-touch-icon-precomposed-5f810796246b499d6e3d73ed0007be62.png +0 -0
  26. data/test/dummy/public/assets/devise-4eca031d6a11d41fb304ae8408015b60.png +0 -0
  27. data/test/dummy/public/assets/fontawesome-webfont-2eb85b9caf81c8a82c9b74b9bf0e52fc.ttf +0 -0
  28. data/test/dummy/public/assets/fontawesome-webfont-5e15cd8659fc9d4fd1dfde1f9e077df9.eot +0 -0
  29. data/test/dummy/public/assets/fontawesome-webfont-90d5db4e9675715edf4641e1a2415d7a.woff +0 -0
  30. data/test/dummy/public/assets/fontawesome-webfont-d7da62efb13dede88000ec71e462c4ed.svg +0 -525
  31. data/test/dummy/public/assets/glyphicons-regular-0-cce8ee82db4227ca1ba1094081bf1223.eot +0 -0
  32. data/test/dummy/public/assets/glyphicons-regular-2208fac7fab27acba08af29eab95399d.svg +0 -435
  33. data/test/dummy/public/assets/glyphicons-regular-530f06d509a27bef5c33acb3f2033504.woff +0 -0
  34. data/test/dummy/public/assets/glyphicons-regular-7a8a65199312993b2c13d6af84ba95a9.ttf +0 -0
  35. data/test/dummy/public/assets/glyphicons-regular-cce8ee82db4227ca1ba1094081bf1223.eot +0 -0
  36. data/test/dummy/public/assets/glyphiconshalflings-regular-0-8f41a102f5570cb6677eeec342991f8b.eot +0 -0
  37. data/test/dummy/public/assets/glyphiconshalflings-regular-6502e5a88f02b90aeb32c2dd21ea37ab.ttf +0 -0
  38. data/test/dummy/public/assets/glyphiconshalflings-regular-8f41a102f5570cb6677eeec342991f8b.eot +0 -0
  39. data/test/dummy/public/assets/glyphiconshalflings-regular-bb7a80d4a61697056b36dc29be2ecd9e.svg +0 -175
  40. data/test/dummy/public/assets/glyphiconshalflings-regular-f4efd9e8a9f1af441a81cd0b62b33a70.woff +0 -0
  41. data/test/dummy/tmp/cache/assets/BED/E40/sprockets%2F303167c9a76e4d16c675525031634256 +0 -0
  42. data/test/dummy/tmp/cache/assets/C51/500/sprockets%2F54522a51515e196c0ea74c652393948d +0 -0
  43. data/test/dummy/tmp/cache/assets/C77/7E0/sprockets%2F402112902ef31c047ccd744844a8379d +0 -0
  44. data/test/dummy/tmp/cache/assets/C79/1B0/sprockets%2F543fe5e90de7633527a115600a33f491 +0 -0
  45. data/test/dummy/tmp/cache/assets/C79/BC0/sprockets%2F4285c677a500a056b055c187bd551e66 +0 -0
  46. data/test/dummy/tmp/cache/assets/C82/E50/sprockets%2F183827018621a62ba5ff81fd772276c5 +0 -0
  47. data/test/dummy/tmp/cache/assets/C89/360/sprockets%2Fbcd93c6868260f0834225e8c57034b59 +0 -0
  48. data/test/dummy/tmp/cache/assets/C9F/670/sprockets%2Fa5133a772163e7f1321877bca922d31a +0 -0
  49. data/test/dummy/tmp/cache/assets/CBC/BF0/sprockets%2F62e9975a6104ebe1b83c754b94719d35 +0 -0
  50. data/test/dummy/tmp/cache/assets/CC8/FE0/sprockets%2F6a25514b5aaae0934134954b42081cdc +0 -0
  51. data/test/dummy/tmp/cache/assets/CCF/410/sprockets%2Fed62b18937750fa48a92f7e3397d9839 +0 -0
  52. data/test/dummy/tmp/cache/assets/CD4/530/sprockets%2F85677150c0beb7b06d61a37ce56414b2 +0 -0
  53. data/test/dummy/tmp/cache/assets/CDE/4F0/sprockets%2F8ee5b8c8107426b362b54e84be04063e +0 -0
  54. data/test/dummy/tmp/cache/assets/CDE/930/sprockets%2Fc8ab20177199ce39d3c2570d7111e59c +0 -0
  55. data/test/dummy/tmp/cache/assets/CE1/100/sprockets%2Fa154c49b6da448135ed862a55e73902f +0 -0
  56. data/test/dummy/tmp/cache/assets/CE8/D60/sprockets%2F99b58505fbff786180c53c620f1c2a39 +0 -0
  57. data/test/dummy/tmp/cache/assets/CEA/5A0/sprockets%2F822899ad32ee795bcd469933206c2be0 +0 -0
  58. data/test/dummy/tmp/cache/assets/CF1/5F0/sprockets%2Fc3877533d12d002db2f97c985775eed9 +0 -0
  59. data/test/dummy/tmp/cache/assets/CF6/EA0/sprockets%2F842ff591398cf899d6cb0e1309aa3875 +0 -0
  60. data/test/dummy/tmp/cache/assets/CF8/AE0/sprockets%2F203d909f1e90a7ffdb99919fa5931749 +0 -0
  61. data/test/dummy/tmp/cache/assets/D06/500/sprockets%2Fdf28d429d46200ca289562d02cb04dd8 +0 -0
  62. data/test/dummy/tmp/cache/assets/D0C/B10/sprockets%2F37cca960261f7e4402a32b7fe2c6864d +0 -0
  63. data/test/dummy/tmp/cache/assets/D0E/B30/sprockets%2F5b71556d25ea74bc65e715ed09ad4721 +0 -0
  64. data/test/dummy/tmp/cache/assets/D14/AF0/sprockets%2Fd56d07d52b180a5b60cb439949bb8d96 +0 -0
  65. data/test/dummy/tmp/cache/assets/D15/9D0/sprockets%2F270af34895cfd4b388c9aad55e043464 +0 -0
  66. data/test/dummy/tmp/cache/assets/D16/860/sprockets%2Fb45890d98668c132fee5cae4b15320d9 +0 -0
  67. data/test/dummy/tmp/cache/assets/D25/5A0/sprockets%2Fbf2f92c27945d0f2897f94e546346cda +0 -0
  68. data/test/dummy/tmp/cache/assets/D2D/790/sprockets%2Fd9fa94301810461db064cfa555c2d2ac +0 -0
  69. data/test/dummy/tmp/cache/assets/D3B/440/sprockets%2F9d61f7f02a3a5dab16a07f463d95563c +0 -0
  70. data/test/dummy/tmp/cache/assets/D3C/250/sprockets%2F33fd91fe3a6fa498ca29ccb423851250 +0 -0
  71. data/test/dummy/tmp/cache/assets/D3E/210/sprockets%2F6ad484a0d5fd94a6970ca33e2cc15297 +0 -0
  72. data/test/dummy/tmp/cache/assets/D45/930/sprockets%2F9593e26322d3ac909618faa6fc8cf50b +0 -0
  73. data/test/dummy/tmp/cache/assets/D47/320/sprockets%2Fce51fd06656c58d70c23046fb8fd56e5 +0 -0
  74. data/test/dummy/tmp/cache/assets/D4A/780/sprockets%2F6134ca322e1d7a956f397f27c1fdd9c9 +0 -0
  75. data/test/dummy/tmp/cache/assets/D4A/F70/sprockets%2Fa9f109f45d3d095f4b96b78b5132f7bd +0 -0
  76. data/test/dummy/tmp/cache/assets/D4B/CF0/sprockets%2Fd353b7b97a54fbdc7f23439c1a62878f +0 -0
  77. data/test/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655 +0 -0
  78. data/test/dummy/tmp/cache/assets/D52/8C0/sprockets%2F24944cec626a1b59d98e9b46b7cd91e6 +0 -0
  79. data/test/dummy/tmp/cache/assets/D55/7B0/sprockets%2F3ae507c88f862fc9d44bf631827d9fc4 +0 -0
  80. data/test/dummy/tmp/cache/assets/D63/EA0/sprockets%2Ffc8a31fb16444bc623a7afd34b27f065 +0 -0
  81. data/test/dummy/tmp/cache/assets/D65/600/sprockets%2Fdaa0e3c217673cb0ebb89d97438a1b80 +0 -0
  82. data/test/dummy/tmp/cache/assets/D68/C00/sprockets%2F7c873f13a09dcebd5b122f414481fcf3 +0 -0
  83. data/test/dummy/tmp/cache/assets/D6A/0C0/sprockets%2F68a1fd460812fcb436fcf9435b00eae6 +0 -0
  84. data/test/dummy/tmp/cache/assets/D70/530/sprockets%2Faa6133344adde2f6796dd06c2378f9ca +0 -0
  85. data/test/dummy/tmp/cache/assets/D71/D40/sprockets%2Fdf25d07e57783faca718d3355e12caf5 +0 -0
  86. data/test/dummy/tmp/cache/assets/D94/B90/sprockets%2F806657cebe5650db09da9244eb0acd0c +0 -0
  87. data/test/dummy/tmp/cache/assets/D97/250/sprockets%2F45bb8c0384f075aecc8dc2e5670ef0a2 +0 -0
  88. data/test/dummy/tmp/cache/assets/DA3/240/sprockets%2F3dad210943629a1d75775cffbdf4f4de +0 -0
  89. data/test/dummy/tmp/cache/assets/DA6/D40/sprockets%2Fa6d2c6c99e2fa333eb87ee7560ae941b +0 -0
  90. data/test/dummy/tmp/cache/assets/DA9/010/sprockets%2Fdb2a809fb7bd57b067d987718bec12ee +0 -0
  91. data/test/dummy/tmp/cache/assets/DB2/660/sprockets%2F1473ffac1f7f6e06e16088cc9e991efd +0 -0
  92. data/test/dummy/tmp/cache/assets/DB8/D70/sprockets%2F2aae8f796d8b8290c88e66fffb09c14e +0 -0
  93. data/test/dummy/tmp/cache/assets/DC0/BB0/sprockets%2Fbe9c2d9eaf5d7f66c399e6e13991af77 +0 -0
  94. data/test/dummy/tmp/cache/assets/DC7/A00/sprockets%2Fbc8d50a317878b93ccdd2ab0914eb6ae +0 -0
  95. data/test/dummy/tmp/cache/assets/DCF/360/sprockets%2F60babcedd5e76636d61b5849d3cc7c0d +0 -0
  96. data/test/dummy/tmp/cache/assets/DDA/5A0/sprockets%2Feffe9d8758c34ac5b08d5ab37107e6de +0 -0
  97. data/test/dummy/tmp/cache/assets/DDC/A10/sprockets%2Faac7e62fb8f54520e0fd8fdace647877 +0 -0
  98. data/test/dummy/tmp/cache/assets/DE7/420/sprockets%2Fb130cade020bebd33e8fa6647f5cdc03 +0 -0
  99. data/test/dummy/tmp/cache/assets/DFB/510/sprockets%2Fbaa9a5abc4aeafa76fa6076c476b5099 +0 -0
  100. data/test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
  101. data/test/dummy/tmp/cache/assets/E45/D80/sprockets%2Fe91af23ae6c0c9e09b6eca103bdbbb0d +0 -0
  102. data/test/dummy/tmp/cache/assets/E7B/7F0/sprockets%2Fb5adae1ffa3fd56d153fea3a52aaff23 +0 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 7932a674eccc3ab33d3f04676e06fdd4a519e7ab
4
+ data.tar.gz: 0a36fd882869e9746d38e0d3bd83e3a4a6f2898c
5
+ SHA512:
6
+ metadata.gz: e995b6e4d687d0e144518cc7cce61936f0a11ee828a95c96656156b49e14f0a2e75fc8973aaaae163a3c6ffbbc499b358f90ed784c6e19954a038fd95f565962
7
+ data.tar.gz: 3734aa9431a9ceed064f467cfee9fe2de6a6f3605a61439cd9b161c910127c19807d3f8c0133d74d7cd5f810ffd9e328a9dace35fc1719277efdae95c72c0b83
@@ -1,5 +1,5 @@
1
1
  /* ===================================================
2
- * bootstrap-transition.js v2.3.0
2
+ * bootstrap-transition.js v2.2.2
3
3
  * http://twitter.github.com/bootstrap/javascript.html#transitions
4
4
  * ===================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -58,7 +58,7 @@
58
58
  })
59
59
 
60
60
  }(window.jQuery);/* ==========================================================
61
- * bootstrap-alert.js v2.3.0
61
+ * bootstrap-alert.js v2.2.2
62
62
  * http://twitter.github.com/bootstrap/javascript.html#alerts
63
63
  * ==========================================================
64
64
  * Copyright 2012 Twitter, Inc.
@@ -156,7 +156,7 @@
156
156
  $(document).on('click.alert.data-api', dismiss, Alert.prototype.close)
157
157
 
158
158
  }(window.jQuery);/* ============================================================
159
- * bootstrap-button.js v2.3.0
159
+ * bootstrap-button.js v2.2.2
160
160
  * http://twitter.github.com/bootstrap/javascript.html#buttons
161
161
  * ============================================================
162
162
  * Copyright 2012 Twitter, Inc.
@@ -260,7 +260,7 @@
260
260
  })
261
261
 
262
262
  }(window.jQuery);/* ==========================================================
263
- * bootstrap-carousel.js v2.3.0
263
+ * bootstrap-carousel.js v2.2.2
264
264
  * http://twitter.github.com/bootstrap/javascript.html#carousel
265
265
  * ==========================================================
266
266
  * Copyright 2012 Twitter, Inc.
@@ -289,7 +289,6 @@
289
289
 
290
290
  var Carousel = function (element, options) {
291
291
  this.$element = $(element)
292
- this.$indicators = this.$element.find('.carousel-indicators')
293
292
  this.options = options
294
293
  this.options.pause == 'hover' && this.$element
295
294
  .on('mouseenter', $.proxy(this.pause, this))
@@ -300,24 +299,19 @@
300
299
 
301
300
  cycle: function (e) {
302
301
  if (!e) this.paused = false
303
- if (this.interval) clearInterval(this.interval);
304
302
  this.options.interval
305
303
  && !this.paused
306
304
  && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
307
305
  return this
308
306
  }
309
307
 
310
- , getActiveIndex: function () {
311
- this.$active = this.$element.find('.item.active')
312
- this.$items = this.$active.parent().children()
313
- return this.$items.index(this.$active)
314
- }
315
-
316
308
  , to: function (pos) {
317
- var activeIndex = this.getActiveIndex()
309
+ var $active = this.$element.find('.item.active')
310
+ , children = $active.parent().children()
311
+ , activePos = children.index($active)
318
312
  , that = this
319
313
 
320
- if (pos > (this.$items.length - 1) || pos < 0) return
314
+ if (pos > (children.length - 1) || pos < 0) return
321
315
 
322
316
  if (this.sliding) {
323
317
  return this.$element.one('slid', function () {
@@ -325,11 +319,11 @@
325
319
  })
326
320
  }
327
321
 
328
- if (activeIndex == pos) {
322
+ if (activePos == pos) {
329
323
  return this.pause().cycle()
330
324
  }
331
325
 
332
- return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))
326
+ return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos]))
333
327
  }
334
328
 
335
329
  , pause: function (e) {
@@ -370,19 +364,10 @@
370
364
 
371
365
  e = $.Event('slide', {
372
366
  relatedTarget: $next[0]
373
- , direction: direction
374
367
  })
375
368
 
376
369
  if ($next.hasClass('active')) return
377
370
 
378
- if (this.$indicators.length) {
379
- this.$indicators.find('.active').removeClass('active')
380
- this.$element.one('slid', function () {
381
- var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()])
382
- $nextIndicator && $nextIndicator.addClass('active')
383
- })
384
- }
385
-
386
371
  if ($.support.transition && this.$element.hasClass('slide')) {
387
372
  this.$element.trigger(e)
388
373
  if (e.isDefaultPrevented()) return
@@ -427,7 +412,7 @@
427
412
  if (!data) $this.data('carousel', (data = new Carousel(this, options)))
428
413
  if (typeof option == 'number') data.to(option)
429
414
  else if (action) data[action]()
430
- else if (options.interval) data.pause().cycle()
415
+ else if (options.interval) data.cycle()
431
416
  })
432
417
  }
433
418
 
@@ -450,23 +435,16 @@
450
435
  /* CAROUSEL DATA-API
451
436
  * ================= */
452
437
 
453
- $(document).on('click.carousel.data-api', '[data-slide], [data-slide-to]', function (e) {
438
+ $(document).on('click.carousel.data-api', '[data-slide]', function (e) {
454
439
  var $this = $(this), href
455
440
  , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
456
441
  , options = $.extend({}, $target.data(), $this.data())
457
- , slideIndex
458
-
459
442
  $target.carousel(options)
460
-
461
- if (slideIndex = $this.attr('data-slide-to')) {
462
- $target.data('carousel').pause().to(slideIndex).cycle()
463
- }
464
-
465
443
  e.preventDefault()
466
444
  })
467
445
 
468
446
  }(window.jQuery);/* =============================================================
469
- * bootstrap-collapse.js v2.3.0
447
+ * bootstrap-collapse.js v2.2.2
470
448
  * http://twitter.github.com/bootstrap/javascript.html#collapse
471
449
  * =============================================================
472
450
  * Copyright 2012 Twitter, Inc.
@@ -519,7 +497,7 @@
519
497
  , actives
520
498
  , hasData
521
499
 
522
- if (this.transitioning || this.$element.hasClass('in')) return
500
+ if (this.transitioning) return
523
501
 
524
502
  dimension = this.dimension()
525
503
  scroll = $.camelCase(['scroll', dimension].join('-'))
@@ -539,7 +517,7 @@
539
517
 
540
518
  , hide: function () {
541
519
  var dimension
542
- if (this.transitioning || !this.$element.hasClass('in')) return
520
+ if (this.transitioning) return
543
521
  dimension = this.dimension()
544
522
  this.reset(this.$element[dimension]())
545
523
  this.transition('removeClass', $.Event('hide'), 'hidden')
@@ -596,7 +574,7 @@
596
574
  return this.each(function () {
597
575
  var $this = $(this)
598
576
  , data = $this.data('collapse')
599
- , options = $.extend({}, $.fn.collapse.defaults, $this.data(), typeof option == 'object' && option)
577
+ , options = typeof option == 'object' && option
600
578
  if (!data) $this.data('collapse', (data = new Collapse(this, options)))
601
579
  if (typeof option == 'string') data[option]()
602
580
  })
@@ -632,7 +610,7 @@
632
610
  })
633
611
 
634
612
  }(window.jQuery);/* ============================================================
635
- * bootstrap-dropdown.js v2.3.0
613
+ * bootstrap-dropdown.js v2.2.2
636
614
  * http://twitter.github.com/bootstrap/javascript.html#dropdowns
637
615
  * ============================================================
638
616
  * Copyright 2012 Twitter, Inc.
@@ -714,10 +692,7 @@
714
692
 
715
693
  isActive = $parent.hasClass('open')
716
694
 
717
- if (!isActive || (isActive && e.keyCode == 27)) {
718
- if (e.which == 27) $parent.find(toggle).focus()
719
- return $this.click()
720
- }
695
+ if (!isActive || (isActive && e.keyCode == 27)) return $this.click()
721
696
 
722
697
  $items = $('[role=menu] li:not(.divider):visible a', $parent)
723
698
 
@@ -751,9 +726,8 @@
751
726
  selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
752
727
  }
753
728
 
754
- $parent = selector && $(selector)
755
-
756
- if (!$parent || !$parent.length) $parent = $this.parent()
729
+ $parent = $(selector)
730
+ $parent.length || ($parent = $this.parent())
757
731
 
758
732
  return $parent
759
733
  }
@@ -789,15 +763,14 @@
789
763
  * =================================== */
790
764
 
791
765
  $(document)
792
- .on('click.dropdown.data-api', clearMenus)
793
- .on('click.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
794
- .on('.dropdown-menu', function (e) { e.stopPropagation() })
795
- .on('click.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
796
- .on('keydown.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
797
-
798
- }(window.jQuery);
799
- /* =========================================================
800
- * bootstrap-modal.js v2.3.0
766
+ .on('click.dropdown.data-api touchstart.dropdown.data-api', clearMenus)
767
+ .on('click.dropdown touchstart.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
768
+ .on('touchstart.dropdown.data-api', '.dropdown-menu', function (e) { e.stopPropagation() })
769
+ .on('click.dropdown.data-api touchstart.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
770
+ .on('keydown.dropdown.data-api touchstart.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
771
+
772
+ }(window.jQuery);/* =========================================================
773
+ * bootstrap-modal.js v2.2.2
801
774
  * http://twitter.github.com/bootstrap/javascript.html#modals
802
775
  * =========================================================
803
776
  * Copyright 2012 Twitter, Inc.
@@ -858,7 +831,8 @@
858
831
  that.$element.appendTo(document.body) //don't move modals dom position
859
832
  }
860
833
 
861
- that.$element.show()
834
+ that.$element
835
+ .show()
862
836
 
863
837
  if (transition) {
864
838
  that.$element[0].offsetWidth // force reflow
@@ -936,13 +910,12 @@
936
910
  })
937
911
  }
938
912
 
939
- , hideModal: function () {
940
- var that = this
941
- this.$element.hide()
942
- this.backdrop(function () {
943
- that.removeBackdrop()
944
- that.$element.trigger('hidden')
945
- })
913
+ , hideModal: function (that) {
914
+ this.$element
915
+ .hide()
916
+ .trigger('hidden')
917
+
918
+ this.backdrop()
946
919
  }
947
920
 
948
921
  , removeBackdrop: function () {
@@ -970,8 +943,6 @@
970
943
 
971
944
  this.$backdrop.addClass('in')
972
945
 
973
- if (!callback) return
974
-
975
946
  doAnimate ?
976
947
  this.$backdrop.one($.support.transition.end, callback) :
977
948
  callback()
@@ -980,8 +951,8 @@
980
951
  this.$backdrop.removeClass('in')
981
952
 
982
953
  $.support.transition && this.$element.hasClass('fade')?
983
- this.$backdrop.one($.support.transition.end, callback) :
984
- callback()
954
+ this.$backdrop.one($.support.transition.end, $.proxy(this.removeBackdrop, this)) :
955
+ this.removeBackdrop()
985
956
 
986
957
  } else if (callback) {
987
958
  callback()
@@ -1044,7 +1015,7 @@
1044
1015
 
1045
1016
  }(window.jQuery);
1046
1017
  /* ===========================================================
1047
- * bootstrap-tooltip.js v2.3.0
1018
+ * bootstrap-tooltip.js v2.2.2
1048
1019
  * http://twitter.github.com/bootstrap/javascript.html#tooltips
1049
1020
  * Inspired by the original jQuery.tipsy by Jason Frame
1050
1021
  * ===========================================================
@@ -1083,27 +1054,19 @@
1083
1054
  , init: function (type, element, options) {
1084
1055
  var eventIn
1085
1056
  , eventOut
1086
- , triggers
1087
- , trigger
1088
- , i
1089
1057
 
1090
1058
  this.type = type
1091
1059
  this.$element = $(element)
1092
1060
  this.options = this.getOptions(options)
1093
1061
  this.enabled = true
1094
1062
 
1095
- triggers = this.options.trigger.split(' ')
1096
-
1097
- for (i = triggers.length; i--;) {
1098
- trigger = triggers[i]
1099
- if (trigger == 'click') {
1100
- this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
1101
- } else if (trigger != 'manual') {
1102
- eventIn = trigger == 'hover' ? 'mouseenter' : 'focus'
1103
- eventOut = trigger == 'hover' ? 'mouseleave' : 'blur'
1104
- this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
1105
- this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
1106
- }
1063
+ if (this.options.trigger == 'click') {
1064
+ this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
1065
+ } else if (this.options.trigger != 'manual') {
1066
+ eventIn = this.options.trigger == 'hover' ? 'mouseenter' : 'focus'
1067
+ eventOut = this.options.trigger == 'hover' ? 'mouseleave' : 'blur'
1068
+ this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
1069
+ this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
1107
1070
  }
1108
1071
 
1109
1072
  this.options.selector ?
@@ -1112,7 +1075,7 @@
1112
1075
  }
1113
1076
 
1114
1077
  , getOptions: function (options) {
1115
- options = $.extend({}, $.fn[this.type].defaults, this.$element.data(), options)
1078
+ options = $.extend({}, $.fn[this.type].defaults, options, this.$element.data())
1116
1079
 
1117
1080
  if (options.delay && typeof options.delay == 'number') {
1118
1081
  options.delay = {
@@ -1150,16 +1113,14 @@
1150
1113
 
1151
1114
  , show: function () {
1152
1115
  var $tip
1116
+ , inside
1153
1117
  , pos
1154
1118
  , actualWidth
1155
1119
  , actualHeight
1156
1120
  , placement
1157
1121
  , tp
1158
- , e = $.Event('show')
1159
1122
 
1160
1123
  if (this.hasContent() && this.enabled) {
1161
- this.$element.trigger(e)
1162
- if (e.isDefaultPrevented()) return
1163
1124
  $tip = this.tip()
1164
1125
  this.setContent()
1165
1126
 
@@ -1171,18 +1132,19 @@
1171
1132
  this.options.placement.call(this, $tip[0], this.$element[0]) :
1172
1133
  this.options.placement
1173
1134
 
1135
+ inside = /in/.test(placement)
1136
+
1174
1137
  $tip
1175
1138
  .detach()
1176
1139
  .css({ top: 0, left: 0, display: 'block' })
1140
+ .insertAfter(this.$element)
1177
1141
 
1178
- this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
1179
-
1180
- pos = this.getPosition()
1142
+ pos = this.getPosition(inside)
1181
1143
 
1182
1144
  actualWidth = $tip[0].offsetWidth
1183
1145
  actualHeight = $tip[0].offsetHeight
1184
1146
 
1185
- switch (placement) {
1147
+ switch (inside ? placement.split(' ')[1] : placement) {
1186
1148
  case 'bottom':
1187
1149
  tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
1188
1150
  break
@@ -1197,56 +1159,11 @@
1197
1159
  break
1198
1160
  }
1199
1161
 
1200
- this.applyPlacement(tp, placement)
1201
- this.$element.trigger('shown')
1202
- }
1203
- }
1204
-
1205
- , applyPlacement: function(offset, placement){
1206
- var $tip = this.tip()
1207
- , width = $tip[0].offsetWidth
1208
- , height = $tip[0].offsetHeight
1209
- , actualWidth
1210
- , actualHeight
1211
- , delta
1212
- , replace
1213
-
1214
- $tip
1215
- .offset(offset)
1216
- .addClass(placement)
1217
- .addClass('in')
1218
-
1219
- actualWidth = $tip[0].offsetWidth
1220
- actualHeight = $tip[0].offsetHeight
1221
-
1222
- if (placement == 'top' && actualHeight != height) {
1223
- offset.top = offset.top + height - actualHeight
1224
- replace = true
1225
- }
1226
-
1227
- if (placement == 'bottom' || placement == 'top') {
1228
- delta = 0
1229
-
1230
- if (offset.left < 0){
1231
- delta = offset.left * -2
1232
- offset.left = 0
1233
- $tip.offset(offset)
1234
- actualWidth = $tip[0].offsetWidth
1235
- actualHeight = $tip[0].offsetHeight
1236
- }
1237
-
1238
- this.replaceArrow(delta - width + actualWidth, actualWidth, 'left')
1239
- } else {
1240
- this.replaceArrow(actualHeight - height, actualHeight, 'top')
1162
+ $tip
1163
+ .offset(tp)
1164
+ .addClass(placement)
1165
+ .addClass('in')
1241
1166
  }
1242
-
1243
- if (replace) $tip.offset(offset)
1244
- }
1245
-
1246
- , replaceArrow: function(delta, dimension, position){
1247
- this
1248
- .arrow()
1249
- .css(position, delta ? (50 * (1 - delta / dimension) + "%") : '')
1250
1167
  }
1251
1168
 
1252
1169
  , setContent: function () {
@@ -1260,10 +1177,6 @@
1260
1177
  , hide: function () {
1261
1178
  var that = this
1262
1179
  , $tip = this.tip()
1263
- , e = $.Event('hide')
1264
-
1265
- this.$element.trigger(e)
1266
- if (e.isDefaultPrevented()) return
1267
1180
 
1268
1181
  $tip.removeClass('in')
1269
1182
 
@@ -1282,15 +1195,13 @@
1282
1195
  removeWithAnimation() :
1283
1196
  $tip.detach()
1284
1197
 
1285
- this.$element.trigger('hidden')
1286
-
1287
1198
  return this
1288
1199
  }
1289
1200
 
1290
1201
  , fixTitle: function () {
1291
1202
  var $e = this.$element
1292
1203
  if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
1293
- $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
1204
+ $e.attr('data-original-title', $e.attr('title') || '').removeAttr('title')
1294
1205
  }
1295
1206
  }
1296
1207
 
@@ -1298,12 +1209,11 @@
1298
1209
  return this.getTitle()
1299
1210
  }
1300
1211
 
1301
- , getPosition: function () {
1302
- var el = this.$element[0]
1303
- return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : {
1304
- width: el.offsetWidth
1305
- , height: el.offsetHeight
1306
- }, this.$element.offset())
1212
+ , getPosition: function (inside) {
1213
+ return $.extend({}, (inside ? {top: 0, left: 0} : this.$element.offset()), {
1214
+ width: this.$element[0].offsetWidth
1215
+ , height: this.$element[0].offsetHeight
1216
+ })
1307
1217
  }
1308
1218
 
1309
1219
  , getTitle: function () {
@@ -1321,10 +1231,6 @@
1321
1231
  return this.$tip = this.$tip || $(this.options.template)
1322
1232
  }
1323
1233
 
1324
- , arrow: function(){
1325
- return this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow")
1326
- }
1327
-
1328
1234
  , validate: function () {
1329
1235
  if (!this.$element[0].parentNode) {
1330
1236
  this.hide()
@@ -1346,8 +1252,8 @@
1346
1252
  }
1347
1253
 
1348
1254
  , toggle: function (e) {
1349
- var self = e ? $(e.currentTarget)[this.type](this._options).data(this.type) : this
1350
- self.tip().hasClass('in') ? self.hide() : self.show()
1255
+ var self = $(e.currentTarget)[this.type](this._options).data(this.type)
1256
+ self[self.tip().hasClass('in') ? 'hide' : 'show']()
1351
1257
  }
1352
1258
 
1353
1259
  , destroy: function () {
@@ -1379,11 +1285,10 @@
1379
1285
  , placement: 'top'
1380
1286
  , selector: false
1381
1287
  , template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
1382
- , trigger: 'hover focus'
1288
+ , trigger: 'hover'
1383
1289
  , title: ''
1384
1290
  , delay: 0
1385
1291
  , html: false
1386
- , container: false
1387
1292
  }
1388
1293
 
1389
1294
 
@@ -1395,9 +1300,8 @@
1395
1300
  return this
1396
1301
  }
1397
1302
 
1398
- }(window.jQuery);
1399
- /* ===========================================================
1400
- * bootstrap-popover.js v2.3.0
1303
+ }(window.jQuery);/* ===========================================================
1304
+ * bootstrap-popover.js v2.2.2
1401
1305
  * http://twitter.github.com/bootstrap/javascript.html#popovers
1402
1306
  * ===========================================================
1403
1307
  * Copyright 2012 Twitter, Inc.
@@ -1456,8 +1360,8 @@
1456
1360
  , $e = this.$element
1457
1361
  , o = this.options
1458
1362
 
1459
- content = (typeof o.content == 'function' ? o.content.call($e[0]) : o.content)
1460
- || $e.attr('data-content')
1363
+ content = $e.attr('data-content')
1364
+ || (typeof o.content == 'function' ? o.content.call($e[0]) : o.content)
1461
1365
 
1462
1366
  return content
1463
1367
  }
@@ -1497,7 +1401,7 @@
1497
1401
  placement: 'right'
1498
1402
  , trigger: 'click'
1499
1403
  , content: ''
1500
- , template: '<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
1404
+ , template: '<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"></div></div></div>'
1501
1405
  })
1502
1406
 
1503
1407
 
@@ -1509,9 +1413,8 @@
1509
1413
  return this
1510
1414
  }
1511
1415
 
1512
- }(window.jQuery);
1513
- /* =============================================================
1514
- * bootstrap-scrollspy.js v2.3.0
1416
+ }(window.jQuery);/* =============================================================
1417
+ * bootstrap-scrollspy.js v2.2.2
1515
1418
  * http://twitter.github.com/bootstrap/javascript.html#scrollspy
1516
1419
  * =============================================================
1517
1420
  * Copyright 2012 Twitter, Inc.
@@ -1571,7 +1474,7 @@
1571
1474
  , $href = /^#\w/.test(href) && $(href)
1572
1475
  return ( $href
1573
1476
  && $href.length
1574
- && [[ $href.position().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href ]] ) || null
1477
+ && [[ $href.position().top + self.$scrollElement.scrollTop(), href ]] ) || null
1575
1478
  })
1576
1479
  .sort(function (a, b) { return a[0] - b[0] })
1577
1480
  .each(function () {
@@ -1672,7 +1575,7 @@
1672
1575
  })
1673
1576
 
1674
1577
  }(window.jQuery);/* ========================================================
1675
- * bootstrap-tab.js v2.3.0
1578
+ * bootstrap-tab.js v2.2.2
1676
1579
  * http://twitter.github.com/bootstrap/javascript.html#tabs
1677
1580
  * ========================================================
1678
1581
  * Copyright 2012 Twitter, Inc.
@@ -1815,7 +1718,7 @@
1815
1718
  })
1816
1719
 
1817
1720
  }(window.jQuery);/* =============================================================
1818
- * bootstrap-typeahead.js v2.3.0
1721
+ * bootstrap-typeahead.js v2.2.2
1819
1722
  * http://twitter.github.com/bootstrap/javascript.html#typeahead
1820
1723
  * =============================================================
1821
1724
  * Copyright 2012 Twitter, Inc.
@@ -1988,7 +1891,6 @@
1988
1891
 
1989
1892
  , listen: function () {
1990
1893
  this.$element
1991
- .on('focus', $.proxy(this.focus, this))
1992
1894
  .on('blur', $.proxy(this.blur, this))
1993
1895
  .on('keypress', $.proxy(this.keypress, this))
1994
1896
  .on('keyup', $.proxy(this.keyup, this))
@@ -2000,7 +1902,6 @@
2000
1902
  this.$menu
2001
1903
  .on('click', $.proxy(this.click, this))
2002
1904
  .on('mouseenter', 'li', $.proxy(this.mouseenter, this))
2003
- .on('mouseleave', 'li', $.proxy(this.mouseleave, this))
2004
1905
  }
2005
1906
 
2006
1907
  , eventSupported: function(eventName) {
@@ -2074,33 +1975,22 @@
2074
1975
  e.preventDefault()
2075
1976
  }
2076
1977
 
2077
- , focus: function (e) {
2078
- this.focused = true
2079
- }
2080
-
2081
1978
  , blur: function (e) {
2082
- this.focused = false
2083
- if (!this.mousedover && this.shown) this.hide()
1979
+ var that = this
1980
+ setTimeout(function () { that.hide() }, 150)
2084
1981
  }
2085
1982
 
2086
1983
  , click: function (e) {
2087
1984
  e.stopPropagation()
2088
1985
  e.preventDefault()
2089
1986
  this.select()
2090
- this.$element.focus()
2091
1987
  }
2092
1988
 
2093
1989
  , mouseenter: function (e) {
2094
- this.mousedover = true
2095
1990
  this.$menu.find('.active').removeClass('active')
2096
1991
  $(e.currentTarget).addClass('active')
2097
1992
  }
2098
1993
 
2099
- , mouseleave: function (e) {
2100
- this.mousedover = false
2101
- if (!this.focused && this.shown) this.hide()
2102
- }
2103
-
2104
1994
  }
2105
1995
 
2106
1996
 
@@ -2145,12 +2035,13 @@
2145
2035
  $(document).on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) {
2146
2036
  var $this = $(this)
2147
2037
  if ($this.data('typeahead')) return
2038
+ e.preventDefault()
2148
2039
  $this.typeahead($this.data())
2149
2040
  })
2150
2041
 
2151
2042
  }(window.jQuery);
2152
2043
  /* ==========================================================
2153
- * bootstrap-affix.js v2.3.0
2044
+ * bootstrap-affix.js v2.2.2
2154
2045
  * http://twitter.github.com/bootstrap/javascript.html#affix
2155
2046
  * ==========================================================
2156
2047
  * Copyright 2012 Twitter, Inc.