fennec 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,39 @@
1
+ module Fennec
2
+ module ActionViewExtension
3
+ extend ActiveSupport::Concern
4
+ module InstanceMethods
5
+
6
+ # A helper that set the i18n columns
7
+ def translate_attribute(klass, attribute_name)
8
+ klass.human_attribute_name(attribute_name)
9
+ end
10
+ alias :ta :translate_attribute
11
+
12
+ # A helper that renders the sec navigation highlight
13
+ def main_nav(name, options = {}, &block)
14
+ if @main_nav == name
15
+ if options[:class]
16
+ options[:class] += " active"
17
+ else
18
+ options[:class] = "active"
19
+ end
20
+ end
21
+ content = capture(&block)
22
+ content_tag(:li, content, options)
23
+ end
24
+
25
+ def sec_nav(name, options = {}, &block)
26
+ if @sec_nav == name
27
+ if options[:class]
28
+ options[:class] += " active"
29
+ else
30
+ options[:class] = "active"
31
+ end
32
+ end
33
+ content = capture(&block)
34
+ content_tag(:li, content, options)
35
+ end
36
+
37
+ end
38
+ end
39
+ end
@@ -1,3 +1,3 @@
1
1
  module Fennec
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
@@ -0,0 +1,52 @@
1
+ $(document).ready(function(){
2
+
3
+ // table sort example
4
+ // ==================
5
+
6
+ $("#sortTableExample").tablesorter( { sortList: [[ 1, 0 ]] } )
7
+
8
+
9
+ // add on logic
10
+ // ============
11
+
12
+ $('.add-on :checkbox').click(function () {
13
+ if ($(this).attr('checked')) {
14
+ $(this).parents('.add-on').addClass('active')
15
+ } else {
16
+ $(this).parents('.add-on').removeClass('active')
17
+ }
18
+ })
19
+
20
+
21
+ // Disable certain links in docs
22
+ // =============================
23
+ // Please do not carry these styles over to your projects, it's merely here to prevent button clicks form taking you away from your spot on page
24
+
25
+ $('ul.tabs a, ul.pills a, .pagination a, .well .btn, .actions .btn, .alert-message .btn, a.close').click(function (e) {
26
+ e.preventDefault()
27
+ })
28
+
29
+ // Copy code blocks in docs
30
+ $(".copy-code").focus(function () {
31
+ var el = this;
32
+ // push select to event loop for chrome :{o
33
+ setTimeout(function () { $(el).select(); }, 0);
34
+ });
35
+
36
+
37
+ // POSITION STATIC TWIPSIES
38
+ // ========================
39
+
40
+ $(window).bind( 'load resize', function () {
41
+ $(".twipsies a").each(function () {
42
+ $(this)
43
+ .twipsy({
44
+ live: false
45
+ , placement: $(this).attr('title')
46
+ , trigger: 'manual'
47
+ , offset: 2
48
+ })
49
+ .twipsy('show')
50
+ })
51
+ })
52
+ });
@@ -0,0 +1,104 @@
1
+ /* ==========================================================
2
+ * bootstrap-alerts.js v1.3.0
3
+ * http://twitter.github.com/bootstrap/javascript.html#alerts
4
+ * ==========================================================
5
+ * Copyright 2011 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
+ /* CSS TRANSITION SUPPORT (https://gist.github.com/373874)
24
+ * ======================================================= */
25
+
26
+ var transitionEnd
27
+
28
+ $(document).ready(function () {
29
+
30
+ $.support.transition = (function () {
31
+ var thisBody = document.body || document.documentElement
32
+ , thisStyle = thisBody.style
33
+ , support = thisStyle.transition !== undefined || thisStyle.WebkitTransition !== undefined || thisStyle.MozTransition !== undefined || thisStyle.MsTransition !== undefined || thisStyle.OTransition !== undefined
34
+ return support
35
+ })()
36
+
37
+ // set CSS transition event type
38
+ if ( $.support.transition ) {
39
+ transitionEnd = "TransitionEnd"
40
+ if ( $.browser.webkit ) {
41
+ transitionEnd = "webkitTransitionEnd"
42
+ } else if ( $.browser.mozilla ) {
43
+ transitionEnd = "transitionend"
44
+ } else if ( $.browser.opera ) {
45
+ transitionEnd = "oTransitionEnd"
46
+ }
47
+ }
48
+
49
+ })
50
+
51
+ /* ALERT CLASS DEFINITION
52
+ * ====================== */
53
+
54
+ var Alert = function ( content, selector ) {
55
+ this.$element = $(content)
56
+ .delegate(selector || '.close', 'click', this.close)
57
+ }
58
+
59
+ Alert.prototype = {
60
+
61
+ close: function (e) {
62
+ var $element = $(this).parent('.alert-message')
63
+
64
+ e && e.preventDefault()
65
+ $element.removeClass('in')
66
+
67
+ function removeElement () {
68
+ $element.remove()
69
+ }
70
+
71
+ $.support.transition && $element.hasClass('fade') ?
72
+ $element.bind(transitionEnd, removeElement) :
73
+ removeElement()
74
+ }
75
+
76
+ }
77
+
78
+
79
+ /* ALERT PLUGIN DEFINITION
80
+ * ======================= */
81
+
82
+ $.fn.alert = function ( options ) {
83
+
84
+ if ( options === true ) {
85
+ return this.data('alert')
86
+ }
87
+
88
+ return this.each(function () {
89
+ var $this = $(this)
90
+
91
+ if ( typeof options == 'string' ) {
92
+ return $this.data('alert')[options]()
93
+ }
94
+
95
+ $(this).data('alert', new Alert( this ))
96
+
97
+ })
98
+ }
99
+
100
+ $(document).ready(function () {
101
+ new Alert($('body'), '.alert-message[data-alert] .close')
102
+ })
103
+
104
+ }( window.jQuery || window.ender )
@@ -0,0 +1,50 @@
1
+ /* ============================================================
2
+ * bootstrap-dropdown.js v1.3.0
3
+ * http://twitter.github.com/bootstrap/javascript.html#dropdown
4
+ * ============================================================
5
+ * Copyright 2011 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
+ var d = 'a.menu, .dropdown-toggle'
24
+
25
+ function clearMenus() {
26
+ $(d).parent('li').removeClass('open')
27
+ }
28
+
29
+ $(function () {
30
+ $('html').bind("click", clearMenus)
31
+ $('body').dropdown( '[data-dropdown] a.menu, [data-dropdown] .dropdown-toggle' )
32
+ })
33
+
34
+ /* DROPDOWN PLUGIN DEFINITION
35
+ * ========================== */
36
+
37
+ $.fn.dropdown = function ( selector ) {
38
+ return this.each(function () {
39
+ $(this).delegate(selector || d, 'click', function (e) {
40
+ var li = $(this).parent('li')
41
+ , isActive = li.hasClass('open')
42
+
43
+ clearMenus()
44
+ !isActive && li.toggleClass('open')
45
+ return false
46
+ })
47
+ })
48
+ }
49
+
50
+ }( window.jQuery || window.ender )
@@ -0,0 +1,231 @@
1
+ /* =========================================================
2
+ * bootstrap-modal.js v1.3.0
3
+ * http://twitter.github.com/bootstrap/javascript.html#modal
4
+ * =========================================================
5
+ * Copyright 2011 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
+ /* CSS TRANSITION SUPPORT (https://gist.github.com/373874)
24
+ * ======================================================= */
25
+
26
+ var transitionEnd
27
+
28
+ $(document).ready(function () {
29
+
30
+ $.support.transition = (function () {
31
+ var thisBody = document.body || document.documentElement
32
+ , thisStyle = thisBody.style
33
+ , support = thisStyle.transition !== undefined || thisStyle.WebkitTransition !== undefined || thisStyle.MozTransition !== undefined || thisStyle.MsTransition !== undefined || thisStyle.OTransition !== undefined
34
+ return support
35
+ })()
36
+
37
+ // set CSS transition event type
38
+ if ( $.support.transition ) {
39
+ transitionEnd = "TransitionEnd"
40
+ if ( $.browser.webkit ) {
41
+ transitionEnd = "webkitTransitionEnd"
42
+ } else if ( $.browser.mozilla ) {
43
+ transitionEnd = "transitionend"
44
+ } else if ( $.browser.opera ) {
45
+ transitionEnd = "oTransitionEnd"
46
+ }
47
+ }
48
+
49
+ })
50
+
51
+
52
+ /* MODAL PUBLIC CLASS DEFINITION
53
+ * ============================= */
54
+
55
+ var Modal = function ( content, options ) {
56
+ this.settings = $.extend({}, $.fn.modal.defaults)
57
+ this.$element = $(content)
58
+ .delegate('.close', 'click.modal', $.proxy(this.hide, this))
59
+
60
+ if ( options ) {
61
+ $.extend( this.settings, options )
62
+
63
+ if ( options.show ) {
64
+ this.show()
65
+ }
66
+ }
67
+
68
+ return this
69
+ }
70
+
71
+ Modal.prototype = {
72
+
73
+ toggle: function () {
74
+ return this[!this.isShown ? 'show' : 'hide']()
75
+ }
76
+
77
+ , show: function () {
78
+ var that = this
79
+ this.isShown = true
80
+ this.$element.trigger('show')
81
+
82
+ escape.call(this)
83
+ backdrop.call(this, function () {
84
+ that.$element
85
+ .appendTo(document.body)
86
+ .show()
87
+
88
+ setTimeout(function () {
89
+ that.$element
90
+ .addClass('in')
91
+ .trigger('shown')
92
+ }, 0)
93
+ })
94
+
95
+ return this
96
+ }
97
+
98
+ , hide: function (e) {
99
+ e && e.preventDefault()
100
+
101
+ var that = this
102
+ this.isShown = false
103
+
104
+ escape.call(this)
105
+
106
+ this.$element
107
+ .trigger('hide')
108
+ .removeClass('in')
109
+
110
+ function removeElement () {
111
+ that.$element
112
+ .hide()
113
+ .trigger('hidden')
114
+
115
+ backdrop.call(that)
116
+ }
117
+
118
+ $.support.transition && this.$element.hasClass('fade') ?
119
+ this.$element.one(transitionEnd, removeElement) :
120
+ removeElement()
121
+
122
+ return this
123
+ }
124
+
125
+ }
126
+
127
+
128
+ /* MODAL PRIVATE METHODS
129
+ * ===================== */
130
+
131
+ function backdrop ( callback ) {
132
+ var that = this
133
+ , animate = this.$element.hasClass('fade') ? 'fade' : ''
134
+ if ( this.isShown && this.settings.backdrop ) {
135
+ this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
136
+ .appendTo(document.body)
137
+
138
+ if ( this.settings.backdrop != 'static' ) {
139
+ this.$backdrop.click($.proxy(this.hide, this))
140
+ }
141
+
142
+ setTimeout(function () {
143
+ that.$backdrop && that.$backdrop.addClass('in')
144
+ $.support.transition && that.$backdrop.hasClass('fade') ?
145
+ that.$backdrop.one(transitionEnd, callback) :
146
+ callback()
147
+ }, 0)
148
+
149
+ } else if ( !this.isShown && this.$backdrop ) {
150
+ this.$backdrop.removeClass('in')
151
+
152
+ function removeElement() {
153
+ that.$backdrop.remove()
154
+ that.$backdrop = null
155
+ }
156
+
157
+ $.support.transition && this.$element.hasClass('fade')?
158
+ this.$backdrop.one(transitionEnd, removeElement) :
159
+ removeElement()
160
+ } else if ( callback ) {
161
+ callback()
162
+ }
163
+ }
164
+
165
+ function escape() {
166
+ var that = this
167
+ if ( this.isShown && this.settings.keyboard ) {
168
+ $('body').bind('keyup.modal', function ( e ) {
169
+ if ( e.which == 27 ) {
170
+ that.hide()
171
+ }
172
+ })
173
+ } else if ( !this.isShown ) {
174
+ $('body').unbind('keyup.modal')
175
+ }
176
+ }
177
+
178
+
179
+ /* MODAL PLUGIN DEFINITION
180
+ * ======================= */
181
+
182
+ $.fn.modal = function ( options ) {
183
+ var modal = this.data('modal')
184
+
185
+ if (!modal) {
186
+
187
+ if (typeof options == 'string') {
188
+ options = {
189
+ show: /show|toggle/.test(options)
190
+ }
191
+ }
192
+
193
+ return this.each(function () {
194
+ $(this).data('modal', new Modal(this, options))
195
+ })
196
+ }
197
+
198
+ if ( options === true ) {
199
+ return modal
200
+ }
201
+
202
+ if ( typeof options == 'string' ) {
203
+ modal[options]()
204
+ } else if ( modal ) {
205
+ modal.toggle()
206
+ }
207
+
208
+ return this
209
+ }
210
+
211
+ $.fn.modal.Modal = Modal
212
+
213
+ $.fn.modal.defaults = {
214
+ backdrop: false
215
+ , keyboard: false
216
+ , show: true
217
+ }
218
+
219
+
220
+ /* MODAL DATA- IMPLEMENTATION
221
+ * ========================== */
222
+
223
+ $(document).ready(function () {
224
+ $('body').delegate('[data-controls-modal]', 'click', function (e) {
225
+ e.preventDefault()
226
+ var $this = $(this).data('show', true)
227
+ $('#' + $this.attr('data-controls-modal')).modal( $this.data() )
228
+ })
229
+ })
230
+
231
+ }( window.jQuery || window.ender )
@@ -0,0 +1,77 @@
1
+ /* ===========================================================
2
+ * bootstrap-popover.js v1.3.0
3
+ * http://twitter.github.com/bootstrap/javascript.html#popover
4
+ * ===========================================================
5
+ * Copyright 2011 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
+ var Popover = function ( element, options ) {
24
+ this.$element = $(element)
25
+ this.options = options
26
+ this.enabled = true
27
+ this.fixTitle()
28
+ }
29
+
30
+ /* NOTE: POPOVER EXTENDS BOOTSTRAP-TWIPSY.js
31
+ ========================================= */
32
+
33
+ Popover.prototype = $.extend({}, $.fn.twipsy.Twipsy.prototype, {
34
+
35
+ setContent: function () {
36
+ var $tip = this.tip()
37
+ $tip.find('.title')[this.options.html ? 'html' : 'text'](this.getTitle())
38
+ $tip.find('.content p')[this.options.html ? 'html' : 'text'](this.getContent())
39
+ $tip[0].className = 'popover'
40
+ }
41
+
42
+ , getContent: function () {
43
+ var contentvar
44
+ , $e = this.$element
45
+ , o = this.options
46
+
47
+ if (typeof this.options.content == 'string') {
48
+ content = $e.attr(o.content)
49
+ } else if (typeof this.options.content == 'function') {
50
+ content = this.options.content.call(this.$element[0])
51
+ }
52
+ return content
53
+ }
54
+
55
+ , tip: function() {
56
+ if (!this.$tip) {
57
+ this.$tip = $('<div class="popover" />')
58
+ .html('<div class="arrow"></div><div class="inner"><h3 class="title"></h3><div class="content"><p></p></div></div>')
59
+ }
60
+ return this.$tip
61
+ }
62
+
63
+ })
64
+
65
+
66
+ /* POPOVER PLUGIN DEFINITION
67
+ * ======================= */
68
+
69
+ $.fn.popover = function (options) {
70
+ if (typeof options == 'object') options = $.extend({}, $.fn.popover.defaults, options)
71
+ $.fn.twipsy.initWith.call(this, options, Popover, 'popover')
72
+ return this
73
+ }
74
+
75
+ $.fn.popover.defaults = $.extend({} , $.fn.twipsy.defaults, { content: 'data-content', placement: 'right'})
76
+
77
+ }( window.jQuery || window.ender )
@@ -0,0 +1,105 @@
1
+ /* =============================================================
2
+ * bootstrap-scrollspy.js v1.3.0
3
+ * http://twitter.github.com/bootstrap/javascript.html#scrollspy
4
+ * =============================================================
5
+ * Copyright 2011 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
+ var $window = $(window)
24
+
25
+ function ScrollSpy( topbar, selector ) {
26
+ var processScroll = $.proxy(this.processScroll, this)
27
+ this.$topbar = $(topbar)
28
+ this.selector = selector || 'li > a'
29
+ this.refresh()
30
+ this.$topbar.delegate(this.selector, 'click', processScroll)
31
+ $window.scroll(processScroll)
32
+ this.processScroll()
33
+ }
34
+
35
+ ScrollSpy.prototype = {
36
+
37
+ refresh: function () {
38
+ this.targets = this.$topbar.find(this.selector).map(function () {
39
+ var href = $(this).attr('href')
40
+ return /^#\w/.test(href) && $(href).length ? href : null
41
+ })
42
+
43
+ this.offsets = $.map(this.targets, function (id) {
44
+ return $(id).offset().top
45
+ })
46
+ }
47
+
48
+ , processScroll: function () {
49
+ var scrollTop = $window.scrollTop() + 10
50
+ , offsets = this.offsets
51
+ , targets = this.targets
52
+ , activeTarget = this.activeTarget
53
+ , i
54
+
55
+ for (i = offsets.length; i--;) {
56
+ activeTarget != targets[i]
57
+ && scrollTop >= offsets[i]
58
+ && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
59
+ && this.activateButton( targets[i] )
60
+ }
61
+ }
62
+
63
+ , activateButton: function (target) {
64
+ this.activeTarget = target
65
+
66
+ this.$topbar
67
+ .find(this.selector).parent('.active')
68
+ .removeClass('active')
69
+
70
+ this.$topbar
71
+ .find(this.selector + '[href="' + target + '"]')
72
+ .parent('li')
73
+ .addClass('active')
74
+ }
75
+
76
+ }
77
+
78
+ /* SCROLLSPY PLUGIN DEFINITION
79
+ * =========================== */
80
+
81
+ $.fn.scrollSpy = function( options ) {
82
+ var scrollspy = this.data('scrollspy')
83
+
84
+ if (!scrollspy) {
85
+ return this.each(function () {
86
+ $(this).data('scrollspy', new ScrollSpy( this, options ))
87
+ })
88
+ }
89
+
90
+ if ( options === true ) {
91
+ return scrollspy
92
+ }
93
+
94
+ if ( typeof options == 'string' ) {
95
+ scrollspy[options]()
96
+ }
97
+
98
+ return this
99
+ }
100
+
101
+ $(document).ready(function () {
102
+ $('body').scrollSpy('[data-scrollspy] li > a')
103
+ })
104
+
105
+ }( window.jQuery || window.ender )