contour 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. data/CHANGELOG.rdoc +12 -0
  2. data/README.rdoc +2 -2
  3. data/app/assets/images/twitter-bootstrap/{v2.0.3 → v2.0.4}/glyphicons-halflings-white.png +0 -0
  4. data/app/assets/images/twitter-bootstrap/{v2.0.3 → v2.0.4}/glyphicons-halflings.png +0 -0
  5. data/app/assets/javascripts/contour.js +16 -5
  6. data/app/assets/javascripts/twitter-bootstrap/bootstrap.js.coffee +12 -0
  7. data/app/assets/javascripts/twitter-bootstrap/{v2.0.3 → v2.0.4}/bootstrap.js +15 -14
  8. data/app/assets/javascripts/twitter-bootstrap/v2.0.4/plugins/bootstrap-alert.js +90 -0
  9. data/app/assets/javascripts/twitter-bootstrap/v2.0.4/plugins/bootstrap-button.js +96 -0
  10. data/app/assets/javascripts/twitter-bootstrap/v2.0.4/plugins/bootstrap-carousel.js +169 -0
  11. data/app/assets/javascripts/twitter-bootstrap/{bootstrap-collapse.js → v2.0.4/plugins/bootstrap-collapse.js} +2 -2
  12. data/app/assets/javascripts/twitter-bootstrap/{bootstrap-dropdown.js → v2.0.4/plugins/bootstrap-dropdown.js} +2 -2
  13. data/app/assets/javascripts/twitter-bootstrap/{bootstrap-modal.js → v2.0.4/plugins/bootstrap-modal.js} +2 -2
  14. data/app/assets/javascripts/twitter-bootstrap/v2.0.4/plugins/bootstrap-popover.js +98 -0
  15. data/app/assets/javascripts/twitter-bootstrap/v2.0.4/plugins/bootstrap-scrollspy.js +151 -0
  16. data/app/assets/javascripts/twitter-bootstrap/{bootstrap-tab.js → v2.0.4/plugins/bootstrap-tab.js} +2 -2
  17. data/app/assets/javascripts/twitter-bootstrap/v2.0.4/plugins/bootstrap-tooltip.js +275 -0
  18. data/app/assets/javascripts/twitter-bootstrap/v2.0.4/plugins/bootstrap-typeahead.js +285 -0
  19. data/app/assets/stylesheets/bootstrap-base-overrides.css +5 -5
  20. data/app/assets/stylesheets/bootstrap-responsive-overrides.css +5 -0
  21. data/app/assets/stylesheets/contour.css +3 -2
  22. data/app/assets/stylesheets/twitter-bootstrap/bootstrap-subnav.css +139 -0
  23. data/app/assets/stylesheets/twitter-bootstrap/{v2.0.3 → v2.0.4}/bootstrap-responsive.css +10 -3
  24. data/app/assets/stylesheets/twitter-bootstrap/{v2.0.3 → v2.0.4}/bootstrap.css +128 -105
  25. data/app/views/contour/authentications/index.html.erb +1 -1
  26. data/app/views/contour/layouts/_subnav.html.erb +23 -0
  27. data/app/views/contour/layouts/application.html.erb +1 -1
  28. data/app/views/contour/registrations/edit.html.erb +1 -1
  29. data/contour.gemspec +2 -2
  30. data/lib/contour/version.rb +1 -1
  31. data/lib/generators/contour/scaffold/templates/_paginate.html.erb +1 -1
  32. data/lib/generators/contour/scaffold/templates/show.html.erb +1 -1
  33. data/test/dummy/db/test.sqlite3 +0 -0
  34. data/test/dummy/log/test.log +2423 -0
  35. data/test/unit/helpers/contour_helper_test.rb +13 -0
  36. metadata +102 -36
data/CHANGELOG.rdoc CHANGED
@@ -1,3 +1,15 @@
1
+ == 1.0.2
2
+
3
+ * Enhancements
4
+ * Rails updated to minimum 3.2.6
5
+ * :confirm links updated to use data: { :confirm } to account for deprecations in Rails 4.0
6
+ * Devise updated to minimum 2.1.2
7
+ * Twitter Bootstrap updated to 2.0.4
8
+ * Now includes all Bootstrap JavaScript Plugins, http://twitter.github.com/bootstrap/javascript.html
9
+ * Added styling for .subnav and .subnav-fixed
10
+ * Subnav Partial added, can be called as follows:
11
+ * <tt>render partial: 'contour/layouts/subnav', locals: { links: [{name: 'Link A', sublinks: [{name: 'Sublink 1'}, {name: 'Sublink 2'}]}, {name: 'Link B'}]}</tt>
12
+
1
13
  == 1.0.1
2
14
 
3
15
  * Enhancements
data/README.rdoc CHANGED
@@ -14,7 +14,7 @@ Or update your <tt>Gemfile</tt> to include
14
14
 
15
15
  == Getting started
16
16
 
17
- Make sure you have Rails 3.2.5
17
+ Make sure you have Rails 3.2.6
18
18
 
19
19
  rails -v
20
20
 
@@ -24,7 +24,7 @@ Make sure you have Rails 3.2.5
24
24
 
25
25
  Modify <tt>Gemfile</tt> and add
26
26
 
27
- gem 'contour', '~> 1.0.1'
27
+ gem 'contour', '~> 1.0.2'
28
28
 
29
29
  Run Bundle install
30
30
 
@@ -3,13 +3,24 @@
3
3
  //
4
4
  //= require jquery
5
5
  //= require jquery_ujs
6
- //= require twitter-bootstrap/v2.0.3/bootstrap
7
- //= require twitter-bootstrap/bootstrap-collapse
8
- //= require twitter-bootstrap/bootstrap-dropdown
9
- //= require twitter-bootstrap/bootstrap-modal
10
- //= require twitter-bootstrap/bootstrap-tab
6
+ //
7
+ //= require twitter-bootstrap/v2.0.4/bootstrap
8
+ //= require twitter-bootstrap/v2.0.4/plugins/bootstrap-alert
9
+ //= require twitter-bootstrap/v2.0.4/plugins/bootstrap-button
10
+ //= require twitter-bootstrap/v2.0.4/plugins/bootstrap-carousel
11
+ //= require twitter-bootstrap/v2.0.4/plugins/bootstrap-collapse
12
+ //= require twitter-bootstrap/v2.0.4/plugins/bootstrap-dropdown
13
+ //= require twitter-bootstrap/v2.0.4/plugins/bootstrap-modal
14
+ //= require twitter-bootstrap/v2.0.4/plugins/bootstrap-popover
15
+ //= require twitter-bootstrap/v2.0.4/plugins/bootstrap-scrollspy
16
+ //= require twitter-bootstrap/v2.0.4/plugins/bootstrap-tab
17
+ //= require twitter-bootstrap/v2.0.4/plugins/bootstrap-tooltip
18
+ //= require twitter-bootstrap/v2.0.4/plugins/bootstrap-typeahead
19
+ //
11
20
  //= require twitter-bootstrap/bootstrap-scroll-modal
12
21
  //= require twitter-bootstrap/bootstrap
22
+ //
13
23
  //= require external/highcharts-2.1.9.src.js
14
24
  //= require external/exporting-2.1.9.src.js
25
+ //
15
26
  //= require_tree .
@@ -3,3 +3,15 @@ jQuery ->
3
3
  $(".tooltip").tooltip()
4
4
  $("a[rel=tooltip]").tooltip()
5
5
  $('.dropdown-toggle').dropdown()
6
+
7
+ $(document).scroll( () ->
8
+ if $('.subnav').length > 0
9
+ if !$('.subnav').data('top')
10
+ return if ($('.subnav').hasClass('subnav-fixed'))
11
+ offset = $('.subnav').offset()
12
+ $('.subnav').data('top', offset.top)
13
+ if $('.subnav').data('top') - $('.subnav').outerHeight() <= $(this).scrollTop()
14
+ $('.subnav').addClass('subnav-fixed')
15
+ else
16
+ $('.subnav').removeClass('subnav-fixed')
17
+ )
@@ -1,5 +1,5 @@
1
1
  /* ===================================================
2
- * bootstrap-transition.js v2.0.3
2
+ * bootstrap-transition.js v2.0.4
3
3
  * http://twitter.github.com/bootstrap/javascript.html#transitions
4
4
  * ===================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -59,7 +59,7 @@
59
59
  })
60
60
 
61
61
  }(window.jQuery);/* ==========================================================
62
- * bootstrap-alert.js v2.0.3
62
+ * bootstrap-alert.js v2.0.4
63
63
  * http://twitter.github.com/bootstrap/javascript.html#alerts
64
64
  * ==========================================================
65
65
  * Copyright 2012 Twitter, Inc.
@@ -148,7 +148,7 @@
148
148
  })
149
149
 
150
150
  }(window.jQuery);/* ============================================================
151
- * bootstrap-button.js v2.0.3
151
+ * bootstrap-button.js v2.0.4
152
152
  * http://twitter.github.com/bootstrap/javascript.html#buttons
153
153
  * ============================================================
154
154
  * Copyright 2012 Twitter, Inc.
@@ -243,7 +243,7 @@
243
243
  })
244
244
 
245
245
  }(window.jQuery);/* ==========================================================
246
- * bootstrap-carousel.js v2.0.3
246
+ * bootstrap-carousel.js v2.0.4
247
247
  * http://twitter.github.com/bootstrap/javascript.html#carousel
248
248
  * ==========================================================
249
249
  * Copyright 2012 Twitter, Inc.
@@ -411,7 +411,7 @@
411
411
  })
412
412
 
413
413
  }(window.jQuery);/* =============================================================
414
- * bootstrap-collapse.js v2.0.3
414
+ * bootstrap-collapse.js v2.0.4
415
415
  * http://twitter.github.com/bootstrap/javascript.html#collapse
416
416
  * =============================================================
417
417
  * Copyright 2012 Twitter, Inc.
@@ -567,7 +567,7 @@
567
567
  })
568
568
 
569
569
  }(window.jQuery);/* ============================================================
570
- * bootstrap-dropdown.js v2.0.3
570
+ * bootstrap-dropdown.js v2.0.4
571
571
  * http://twitter.github.com/bootstrap/javascript.html#dropdowns
572
572
  * ============================================================
573
573
  * Copyright 2012 Twitter, Inc.
@@ -666,7 +666,7 @@
666
666
  })
667
667
 
668
668
  }(window.jQuery);/* =========================================================
669
- * bootstrap-modal.js v2.0.3
669
+ * bootstrap-modal.js v2.0.4
670
670
  * http://twitter.github.com/bootstrap/javascript.html#modals
671
671
  * =========================================================
672
672
  * Copyright 2012 Twitter, Inc.
@@ -883,7 +883,7 @@
883
883
  })
884
884
 
885
885
  }(window.jQuery);/* ===========================================================
886
- * bootstrap-tooltip.js v2.0.3
886
+ * bootstrap-tooltip.js v2.0.4
887
887
  * http://twitter.github.com/bootstrap/javascript.html#tooltips
888
888
  * Inspired by the original jQuery.tipsy by Jason Frame
889
889
  * ===========================================================
@@ -968,9 +968,9 @@
968
968
  , leave: function (e) {
969
969
  var self = $(e.currentTarget)[this.type](this._options).data(this.type)
970
970
 
971
+ if (this.timeout) clearTimeout(this.timeout)
971
972
  if (!self.options.delay || !self.options.delay.hide) return self.hide()
972
973
 
973
- clearTimeout(this.timeout)
974
974
  self.hoverState = 'out'
975
975
  this.timeout = setTimeout(function() {
976
976
  if (self.hoverState == 'out') self.hide()
@@ -1156,8 +1156,9 @@
1156
1156
  , delay: 0
1157
1157
  }
1158
1158
 
1159
- }(window.jQuery);/* ===========================================================
1160
- * bootstrap-popover.js v2.0.3
1159
+ }(window.jQuery);
1160
+ /* ===========================================================
1161
+ * bootstrap-popover.js v2.0.4
1161
1162
  * http://twitter.github.com/bootstrap/javascript.html#popovers
1162
1163
  * ===========================================================
1163
1164
  * Copyright 2012 Twitter, Inc.
@@ -1254,7 +1255,7 @@
1254
1255
  })
1255
1256
 
1256
1257
  }(window.jQuery);/* =============================================================
1257
- * bootstrap-scrollspy.js v2.0.3
1258
+ * bootstrap-scrollspy.js v2.0.4
1258
1259
  * http://twitter.github.com/bootstrap/javascript.html#scrollspy
1259
1260
  * =============================================================
1260
1261
  * Copyright 2012 Twitter, Inc.
@@ -1404,7 +1405,7 @@
1404
1405
  })
1405
1406
 
1406
1407
  }(window.jQuery);/* ========================================================
1407
- * bootstrap-tab.js v2.0.3
1408
+ * bootstrap-tab.js v2.0.4
1408
1409
  * http://twitter.github.com/bootstrap/javascript.html#tabs
1409
1410
  * ========================================================
1410
1411
  * Copyright 2012 Twitter, Inc.
@@ -1538,7 +1539,7 @@
1538
1539
  })
1539
1540
 
1540
1541
  }(window.jQuery);/* =============================================================
1541
- * bootstrap-typeahead.js v2.0.3
1542
+ * bootstrap-typeahead.js v2.0.4
1542
1543
  * http://twitter.github.com/bootstrap/javascript.html#typeahead
1543
1544
  * =============================================================
1544
1545
  * Copyright 2012 Twitter, Inc.
@@ -0,0 +1,90 @@
1
+ /* ==========================================================
2
+ * bootstrap-alert.js v2.0.4
3
+ * http://twitter.github.com/bootstrap/javascript.html#alerts
4
+ * ==========================================================
5
+ * Copyright 2012 Twitter, Inc.
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the "License");
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ * ========================================================== */
19
+
20
+
21
+ !function ($) {
22
+
23
+ "use strict"; // jshint ;_;
24
+
25
+
26
+ /* ALERT CLASS DEFINITION
27
+ * ====================== */
28
+
29
+ var dismiss = '[data-dismiss="alert"]'
30
+ , Alert = function (el) {
31
+ $(el).on('click', dismiss, this.close)
32
+ }
33
+
34
+ Alert.prototype.close = function (e) {
35
+ var $this = $(this)
36
+ , selector = $this.attr('data-target')
37
+ , $parent
38
+
39
+ if (!selector) {
40
+ selector = $this.attr('href')
41
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
42
+ }
43
+
44
+ $parent = $(selector)
45
+
46
+ e && e.preventDefault()
47
+
48
+ $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent())
49
+
50
+ $parent.trigger(e = $.Event('close'))
51
+
52
+ if (e.isDefaultPrevented()) return
53
+
54
+ $parent.removeClass('in')
55
+
56
+ function removeElement() {
57
+ $parent
58
+ .trigger('closed')
59
+ .remove()
60
+ }
61
+
62
+ $.support.transition && $parent.hasClass('fade') ?
63
+ $parent.on($.support.transition.end, removeElement) :
64
+ removeElement()
65
+ }
66
+
67
+
68
+ /* ALERT PLUGIN DEFINITION
69
+ * ======================= */
70
+
71
+ $.fn.alert = function (option) {
72
+ return this.each(function () {
73
+ var $this = $(this)
74
+ , data = $this.data('alert')
75
+ if (!data) $this.data('alert', (data = new Alert(this)))
76
+ if (typeof option == 'string') data[option].call($this)
77
+ })
78
+ }
79
+
80
+ $.fn.alert.Constructor = Alert
81
+
82
+
83
+ /* ALERT DATA-API
84
+ * ============== */
85
+
86
+ $(function () {
87
+ $('body').on('click.alert.data-api', dismiss, Alert.prototype.close)
88
+ })
89
+
90
+ }(window.jQuery);
@@ -0,0 +1,96 @@
1
+ /* ============================================================
2
+ * bootstrap-button.js v2.0.4
3
+ * http://twitter.github.com/bootstrap/javascript.html#buttons
4
+ * ============================================================
5
+ * Copyright 2012 Twitter, Inc.
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the "License");
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ * ============================================================ */
19
+
20
+
21
+ !function ($) {
22
+
23
+ "use strict"; // jshint ;_;
24
+
25
+
26
+ /* BUTTON PUBLIC CLASS DEFINITION
27
+ * ============================== */
28
+
29
+ var Button = function (element, options) {
30
+ this.$element = $(element)
31
+ this.options = $.extend({}, $.fn.button.defaults, options)
32
+ }
33
+
34
+ Button.prototype.setState = function (state) {
35
+ var d = 'disabled'
36
+ , $el = this.$element
37
+ , data = $el.data()
38
+ , val = $el.is('input') ? 'val' : 'html'
39
+
40
+ state = state + 'Text'
41
+ data.resetText || $el.data('resetText', $el[val]())
42
+
43
+ $el[val](data[state] || this.options[state])
44
+
45
+ // push to event loop to allow forms to submit
46
+ setTimeout(function () {
47
+ state == 'loadingText' ?
48
+ $el.addClass(d).attr(d, d) :
49
+ $el.removeClass(d).removeAttr(d)
50
+ }, 0)
51
+ }
52
+
53
+ Button.prototype.toggle = function () {
54
+ var $parent = this.$element.parent('[data-toggle="buttons-radio"]')
55
+
56
+ $parent && $parent
57
+ .find('.active')
58
+ .removeClass('active')
59
+
60
+ this.$element.toggleClass('active')
61
+ }
62
+
63
+
64
+ /* BUTTON PLUGIN DEFINITION
65
+ * ======================== */
66
+
67
+ $.fn.button = function (option) {
68
+ return this.each(function () {
69
+ var $this = $(this)
70
+ , data = $this.data('button')
71
+ , options = typeof option == 'object' && option
72
+ if (!data) $this.data('button', (data = new Button(this, options)))
73
+ if (option == 'toggle') data.toggle()
74
+ else if (option) data.setState(option)
75
+ })
76
+ }
77
+
78
+ $.fn.button.defaults = {
79
+ loadingText: 'loading...'
80
+ }
81
+
82
+ $.fn.button.Constructor = Button
83
+
84
+
85
+ /* BUTTON DATA-API
86
+ * =============== */
87
+
88
+ $(function () {
89
+ $('body').on('click.button.data-api', '[data-toggle^=button]', function ( e ) {
90
+ var $btn = $(e.target)
91
+ if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
92
+ $btn.button('toggle')
93
+ })
94
+ })
95
+
96
+ }(window.jQuery);
@@ -0,0 +1,169 @@
1
+ /* ==========================================================
2
+ * bootstrap-carousel.js v2.0.4
3
+ * http://twitter.github.com/bootstrap/javascript.html#carousel
4
+ * ==========================================================
5
+ * Copyright 2012 Twitter, Inc.
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the "License");
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ * ========================================================== */
19
+
20
+
21
+ !function ($) {
22
+
23
+ "use strict"; // jshint ;_;
24
+
25
+
26
+ /* CAROUSEL CLASS DEFINITION
27
+ * ========================= */
28
+
29
+ var Carousel = function (element, options) {
30
+ this.$element = $(element)
31
+ this.options = options
32
+ this.options.slide && this.slide(this.options.slide)
33
+ this.options.pause == 'hover' && this.$element
34
+ .on('mouseenter', $.proxy(this.pause, this))
35
+ .on('mouseleave', $.proxy(this.cycle, this))
36
+ }
37
+
38
+ Carousel.prototype = {
39
+
40
+ cycle: function (e) {
41
+ if (!e) this.paused = false
42
+ this.options.interval
43
+ && !this.paused
44
+ && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
45
+ return this
46
+ }
47
+
48
+ , to: function (pos) {
49
+ var $active = this.$element.find('.active')
50
+ , children = $active.parent().children()
51
+ , activePos = children.index($active)
52
+ , that = this
53
+
54
+ if (pos > (children.length - 1) || pos < 0) return
55
+
56
+ if (this.sliding) {
57
+ return this.$element.one('slid', function () {
58
+ that.to(pos)
59
+ })
60
+ }
61
+
62
+ if (activePos == pos) {
63
+ return this.pause().cycle()
64
+ }
65
+
66
+ return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos]))
67
+ }
68
+
69
+ , pause: function (e) {
70
+ if (!e) this.paused = true
71
+ clearInterval(this.interval)
72
+ this.interval = null
73
+ return this
74
+ }
75
+
76
+ , next: function () {
77
+ if (this.sliding) return
78
+ return this.slide('next')
79
+ }
80
+
81
+ , prev: function () {
82
+ if (this.sliding) return
83
+ return this.slide('prev')
84
+ }
85
+
86
+ , slide: function (type, next) {
87
+ var $active = this.$element.find('.active')
88
+ , $next = next || $active[type]()
89
+ , isCycling = this.interval
90
+ , direction = type == 'next' ? 'left' : 'right'
91
+ , fallback = type == 'next' ? 'first' : 'last'
92
+ , that = this
93
+ , e = $.Event('slide')
94
+
95
+ this.sliding = true
96
+
97
+ isCycling && this.pause()
98
+
99
+ $next = $next.length ? $next : this.$element.find('.item')[fallback]()
100
+
101
+ if ($next.hasClass('active')) return
102
+
103
+ if ($.support.transition && this.$element.hasClass('slide')) {
104
+ this.$element.trigger(e)
105
+ if (e.isDefaultPrevented()) return
106
+ $next.addClass(type)
107
+ $next[0].offsetWidth // force reflow
108
+ $active.addClass(direction)
109
+ $next.addClass(direction)
110
+ this.$element.one($.support.transition.end, function () {
111
+ $next.removeClass([type, direction].join(' ')).addClass('active')
112
+ $active.removeClass(['active', direction].join(' '))
113
+ that.sliding = false
114
+ setTimeout(function () { that.$element.trigger('slid') }, 0)
115
+ })
116
+ } else {
117
+ this.$element.trigger(e)
118
+ if (e.isDefaultPrevented()) return
119
+ $active.removeClass('active')
120
+ $next.addClass('active')
121
+ this.sliding = false
122
+ this.$element.trigger('slid')
123
+ }
124
+
125
+ isCycling && this.cycle()
126
+
127
+ return this
128
+ }
129
+
130
+ }
131
+
132
+
133
+ /* CAROUSEL PLUGIN DEFINITION
134
+ * ========================== */
135
+
136
+ $.fn.carousel = function (option) {
137
+ return this.each(function () {
138
+ var $this = $(this)
139
+ , data = $this.data('carousel')
140
+ , options = $.extend({}, $.fn.carousel.defaults, typeof option == 'object' && option)
141
+ if (!data) $this.data('carousel', (data = new Carousel(this, options)))
142
+ if (typeof option == 'number') data.to(option)
143
+ else if (typeof option == 'string' || (option = options.slide)) data[option]()
144
+ else if (options.interval) data.cycle()
145
+ })
146
+ }
147
+
148
+ $.fn.carousel.defaults = {
149
+ interval: 5000
150
+ , pause: 'hover'
151
+ }
152
+
153
+ $.fn.carousel.Constructor = Carousel
154
+
155
+
156
+ /* CAROUSEL DATA-API
157
+ * ================= */
158
+
159
+ $(function () {
160
+ $('body').on('click.carousel.data-api', '[data-slide]', function ( e ) {
161
+ var $this = $(this), href
162
+ , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
163
+ , options = !$target.data('modal') && $.extend({}, $target.data(), $this.data())
164
+ $target.carousel(options)
165
+ e.preventDefault()
166
+ })
167
+ })
168
+
169
+ }(window.jQuery);