caisson 0.0.1 → 0.0.2
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.
- data/README.md +13 -1
- data/app/assets/javascripts/caisson/base.coffee +4 -0
- data/app/assets/javascripts/caisson/form/fields/base.coffee +115 -0
- data/app/assets/javascripts/caisson/form/fields/checkbox.coffee +13 -0
- data/app/assets/javascripts/caisson/form/fields/select.coffee +14 -0
- data/app/assets/javascripts/caisson/form/fields/text_field.coffee +22 -0
- data/app/assets/javascripts/caisson/form/fields/validator.coffee +116 -0
- data/app/assets/javascripts/caisson/form/form.coffee +119 -0
- data/app/assets/javascripts/caisson/form/form_caisson.coffee +30 -0
- data/app/assets/javascripts/caisson/index.js +2 -0
- data/app/assets/javascripts/caisson/module.coffee +8 -0
- data/app/assets/javascripts/caisson/orbit-slider.coffee +2 -1
- data/app/assets/stylesheets/caisson/base.css.scss +7 -0
- data/app/assets/stylesheets/caisson/index.css +3 -0
- data/lib/caisson/helpers/form/base.rb +195 -0
- data/lib/caisson/helpers/form/builder/base.rb +72 -0
- data/lib/caisson/helpers/form/builder/field/base.rb +168 -0
- data/lib/caisson/helpers/form/builder/field/checkbox.rb +15 -0
- data/lib/caisson/helpers/form/builder/field/money.rb +13 -0
- data/lib/caisson/helpers/form/builder/field/password.rb +13 -0
- data/lib/caisson/helpers/form/builder/field/percent.rb +13 -0
- data/lib/caisson/helpers/form/builder/field/select.rb +41 -0
- data/lib/caisson/helpers/form/builder/field/text.rb +13 -0
- data/lib/caisson/helpers/form/builder/field/textarea.rb +13 -0
- data/lib/caisson/helpers/form/builder/field_builder/base.rb +81 -0
- data/lib/caisson/helpers/form/builder/field_builder/nature.rb +85 -0
- data/lib/caisson/helpers/form/builder/interpreti.rb +107 -0
- data/lib/caisson/helpers/form/button.rb +62 -0
- data/lib/caisson/helpers/form/field/base.rb +43 -0
- data/lib/caisson/helpers/form/field/checkbox.rb +39 -0
- data/lib/caisson/helpers/form/field/money.rb +29 -0
- data/lib/caisson/helpers/form/field/password.rb +14 -0
- data/lib/caisson/helpers/form/field/percent.rb +23 -0
- data/lib/caisson/helpers/form/field/select.rb +34 -0
- data/lib/caisson/helpers/form/field/text.rb +17 -0
- data/lib/caisson/helpers/form/field/textarea.rb +16 -0
- data/lib/caisson/helpers/form.rb +30 -0
- data/lib/caisson/helpers/grid.rb +32 -0
- data/lib/caisson/helpers/orbit_slider.rb +16 -21
- data/lib/caisson/helpers.rb +26 -0
- data/lib/caisson/implants/mongoid.rb +67 -0
- data/lib/caisson/implants/railtie.rb +4 -0
- metadata +41 -6
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Caisson
|
2
2
|
===============
|
3
3
|
|
4
|
-
Caisson
|
4
|
+
Caisson provide a set of tools to facilitate the integration of Zurb-Foundation to your Rails project.
|
5
5
|
|
6
6
|
Install
|
7
7
|
-------
|
@@ -19,6 +19,18 @@ gem 'zurb-foundation'
|
|
19
19
|
gem 'caisson'
|
20
20
|
```
|
21
21
|
|
22
|
+
In your application.js
|
23
|
+
|
24
|
+
```javascript
|
25
|
+
//= require foundation
|
26
|
+
//= require caisson
|
27
|
+
```
|
28
|
+
|
29
|
+
In your application.scss
|
30
|
+
```css
|
31
|
+
@import "foundation";
|
32
|
+
```
|
33
|
+
|
22
34
|
Orbit Slider
|
23
35
|
-----
|
24
36
|
|
@@ -0,0 +1,115 @@
|
|
1
|
+
#*************************************************************************************
|
2
|
+
# TOCOMMENT
|
3
|
+
#*************************************************************************************
|
4
|
+
@caissonMod "FormCaisson", ->
|
5
|
+
@caissonMod "Field", ->
|
6
|
+
class @Base
|
7
|
+
#*************************************************************************************
|
8
|
+
# CONSTRUCTOR
|
9
|
+
#*************************************************************************************
|
10
|
+
constructor: (@field) ->
|
11
|
+
@build()
|
12
|
+
|
13
|
+
#*************************************************************************************
|
14
|
+
# PUBLIC INSTANCE METHODS
|
15
|
+
#*************************************************************************************
|
16
|
+
build: () ->
|
17
|
+
@initPlaceholder()
|
18
|
+
@tagField()
|
19
|
+
|
20
|
+
@field.on('validate', (e) => @validate())
|
21
|
+
@field.blur (e) => @validate() if @hasErrors()
|
22
|
+
|
23
|
+
|
24
|
+
closest: (path) -> @field.closest(path)
|
25
|
+
|
26
|
+
data: (key, val) -> @field.data key, val
|
27
|
+
|
28
|
+
|
29
|
+
hasApproximateName: (names) ->
|
30
|
+
return name for name in names when name is @field.attr('name') or @field.attr('name').indexOf("[#{name}]") > 0
|
31
|
+
|
32
|
+
return ''
|
33
|
+
|
34
|
+
|
35
|
+
hideErrors: ->
|
36
|
+
@wrapper().removeClass('errors')
|
37
|
+
@wrapper().find('div.error-messages').fadeOut 500, -> $(this).remove()
|
38
|
+
$('#form-caisson-flash-' + @id()).fadeOut 500, -> $(this).remove()
|
39
|
+
|
40
|
+
|
41
|
+
find: (key) -> @field.find key
|
42
|
+
|
43
|
+
hasErrors: -> @wrapper().hasClass('errors')
|
44
|
+
|
45
|
+
id: () -> @field.attr('id')
|
46
|
+
|
47
|
+
input: () -> if @field[0].tagName.toLowerCase() == 'input' then @field else $(@field.find('input'))
|
48
|
+
|
49
|
+
isPlaceholder: () -> @field.attr('placeholder') isnt undefined
|
50
|
+
|
51
|
+
isSubmitAuto: () -> @field.data('submit') is 1
|
52
|
+
|
53
|
+
label: () -> @wrapper().find('label')
|
54
|
+
|
55
|
+
labelText: () -> @label().text()
|
56
|
+
|
57
|
+
showErrors: (messages) ->
|
58
|
+
@removeErrorMessages()
|
59
|
+
@wrapper().addClass('errors')
|
60
|
+
@popErrors messages
|
61
|
+
|
62
|
+
|
63
|
+
validate: () ->
|
64
|
+
v = @validator()
|
65
|
+
|
66
|
+
if v.validate() then @hideErrors() else @showErrors v.messages
|
67
|
+
|
68
|
+
|
69
|
+
validateWithAjax: (url, caller, callback) ->
|
70
|
+
$.getJSON url, (data) =>
|
71
|
+
if data['state'] is 'error' then @showErrors([data['message']])
|
72
|
+
caller[callback]()
|
73
|
+
|
74
|
+
|
75
|
+
validator: () -> new FormCaisson.Field.Validator(@field.data('validations'), @field.val())
|
76
|
+
|
77
|
+
wrapper: () -> @field.closest('div.field')
|
78
|
+
|
79
|
+
|
80
|
+
#*************************************************************************************
|
81
|
+
# PRIVATE INSTANCE METHODS
|
82
|
+
#*************************************************************************************
|
83
|
+
initPlaceholder: () ->
|
84
|
+
if @isPlaceholder()
|
85
|
+
@input().placeholder()
|
86
|
+
@input().focus (e) => $(@wrapper().find('.ui-placeholder')).addClass('focus')
|
87
|
+
@input().blur (e) => $(@wrapper().find('.ui-placeholder')).removeClass('focus')
|
88
|
+
|
89
|
+
|
90
|
+
removeErrorMessages: () ->
|
91
|
+
@wrapper().find('div.error-messages').remove()
|
92
|
+
$('#form-caisson-flash-' + @id()).remove()
|
93
|
+
|
94
|
+
|
95
|
+
popErrors: (messages) ->
|
96
|
+
content = ''
|
97
|
+
content += '<span class="text">' + message + '</span>' for message in messages
|
98
|
+
|
99
|
+
flashPop = $('<div class="form-caisson-flash error" id="form-caisson-flash-' + @id() + '">').html(content)
|
100
|
+
|
101
|
+
flashPop.click () -> $(@).fadeOut(700)
|
102
|
+
|
103
|
+
if @hasErrors() then $('body').append(flashPop) else $('body').append(flashPop.hide().fadeIn(700))
|
104
|
+
|
105
|
+
align = ((@field.outerHeight() - flashPop.outerHeight()) / 2)
|
106
|
+
|
107
|
+
flashPop.css
|
108
|
+
"left": (@field.offset().left + (@field.outerWidth())) + "px"
|
109
|
+
"top": (@field.offset().top + align) + "px"
|
110
|
+
|
111
|
+
|
112
|
+
tagField: () ->
|
113
|
+
@field.data('caisson', 'field')
|
114
|
+
@field.attr('data-caisson', 'field')
|
115
|
+
@field.attr('id', 'field-caisson-' + Math.floor(Math.random()*10000)) if not @field.attr('id')
|
@@ -0,0 +1,13 @@
|
|
1
|
+
#*************************************************************************************
|
2
|
+
# TOCOMMENT
|
3
|
+
#*************************************************************************************
|
4
|
+
@caissonMod "FormCaisson", ->
|
5
|
+
@caissonMod "Field", ->
|
6
|
+
class @Checkbox extends FormCaisson.Field.Base
|
7
|
+
#*************************************************************************************
|
8
|
+
# CONSTRUCTOR
|
9
|
+
#*************************************************************************************
|
10
|
+
constructor: (@field) ->
|
11
|
+
if @isSubmitAuto() then @input().change (event) => @closest('form').submit()
|
12
|
+
|
13
|
+
super @field
|
@@ -0,0 +1,14 @@
|
|
1
|
+
#*************************************************************************************
|
2
|
+
# TOCOMMENT
|
3
|
+
# TODO : Add keyboard shortcuts
|
4
|
+
#*************************************************************************************
|
5
|
+
@caissonMod "FormCaisson", ->
|
6
|
+
@caissonMod "Field", ->
|
7
|
+
class @SelectField extends FormCaisson.Field.Base
|
8
|
+
#*************************************************************************************
|
9
|
+
# CONSTRUCTOR
|
10
|
+
#*************************************************************************************
|
11
|
+
constructor: (@field) ->
|
12
|
+
if @isSubmitAuto() then $(@field).change (event) => @closest('form').submit()
|
13
|
+
|
14
|
+
super @field
|
@@ -0,0 +1,22 @@
|
|
1
|
+
#*************************************************************************************
|
2
|
+
# TOCOMMENT
|
3
|
+
#*************************************************************************************
|
4
|
+
@caissonMod "FormCaisson", ->
|
5
|
+
@caissonMod "Field", ->
|
6
|
+
class @TextField extends FormCaisson.Field.Base
|
7
|
+
#*************************************************************************************
|
8
|
+
# CONSTRUCTOR
|
9
|
+
#*************************************************************************************
|
10
|
+
constructor: (@field) ->
|
11
|
+
super @field
|
12
|
+
|
13
|
+
|
14
|
+
#*************************************************************************************
|
15
|
+
# PUBLIC INSTANCE METHODS
|
16
|
+
#*************************************************************************************
|
17
|
+
#getCreditCardType: () -> @validator().getCreditCardType @field.val()
|
18
|
+
|
19
|
+
|
20
|
+
#*************************************************************************************
|
21
|
+
# PRIVATE INSTANCE METHODS
|
22
|
+
#*************************************************************************************
|
@@ -0,0 +1,116 @@
|
|
1
|
+
#*************************************************************************************
|
2
|
+
# TOCOMMENT
|
3
|
+
#*************************************************************************************
|
4
|
+
@caissonMod "FormCaisson", ->
|
5
|
+
@caissonMod "Field", ->
|
6
|
+
class @Validator
|
7
|
+
#*************************************************************************************
|
8
|
+
# CONSTRUCTOR
|
9
|
+
#*************************************************************************************
|
10
|
+
constructor: (specs, @value) ->
|
11
|
+
@specs = if specs then specs.split(' ') else []
|
12
|
+
@messages = []
|
13
|
+
|
14
|
+
|
15
|
+
#*************************************************************************************
|
16
|
+
# PUBLIC INSTANCE METHODS
|
17
|
+
#*************************************************************************************
|
18
|
+
checkSpec: (spec) ->
|
19
|
+
stripped_spec = spec.split('-')[0]
|
20
|
+
|
21
|
+
if stripped_spec is 'blank'
|
22
|
+
@isBlank()
|
23
|
+
else if @notBlank()
|
24
|
+
switch stripped_spec
|
25
|
+
when 'confirm' then @isConfirmed spec
|
26
|
+
when 'creditcard' then @isCreditCard spec
|
27
|
+
when 'creditcardname' then @isCreditCardName()
|
28
|
+
when 'creditcardexpiration' then @isCreditCardExpiration()
|
29
|
+
when 'email' then @isEmail()
|
30
|
+
when 'length' then @isLengthEql spec
|
31
|
+
when 'max' then @isMax spec
|
32
|
+
when 'min' then @isMin spec
|
33
|
+
when 'numeric' then @isNumeric()
|
34
|
+
when 'within' then @isWithin spec
|
35
|
+
else
|
36
|
+
|
37
|
+
|
38
|
+
getCreditCardType: (rawCCNumber) ->
|
39
|
+
ccNumber = rawCCNumber.replace(/(\s|-)/g, '')
|
40
|
+
|
41
|
+
if /^4[0-9]{12}(?:[0-9]{3})?$/.test(ccNumber)
|
42
|
+
'visa'
|
43
|
+
else if /^5[1-5][0-9]{14}$/.test(ccNumber)
|
44
|
+
'mastercard'
|
45
|
+
else if /^3[47][0-9]{13}$/.test(ccNumber)
|
46
|
+
'amex'
|
47
|
+
else
|
48
|
+
''
|
49
|
+
|
50
|
+
|
51
|
+
isValid: () -> @messages.length is 0
|
52
|
+
|
53
|
+
validate: () ->
|
54
|
+
@checkSpec spec for spec in @specs if @specs
|
55
|
+
|
56
|
+
return @isValid()
|
57
|
+
|
58
|
+
|
59
|
+
#*************************************************************************************
|
60
|
+
# PRIVATE INSTANCE METHODS
|
61
|
+
#*************************************************************************************
|
62
|
+
isBlank: () -> if @value is "" then @messages.push 'Le champ ne peut être vide.'
|
63
|
+
|
64
|
+
isConfirmed: (spec) ->
|
65
|
+
[tag, idOtherField] = spec.split('-')
|
66
|
+
|
67
|
+
if @value isnt $('#' + idOtherField).val() then @messages.push 'La confirmation est erronée'
|
68
|
+
|
69
|
+
|
70
|
+
isCreditCard: (spec) ->
|
71
|
+
types = spec.replace('creditcard-', '').split('-')
|
72
|
+
currentType = @getCreditCardType @value
|
73
|
+
if $.inArray(currentType, types) is -1 then @messages.push "Le numéro de carte de crédit est invalide."
|
74
|
+
|
75
|
+
|
76
|
+
isCreditCardName: () -> if not /^\S+ \S+/.test(@value) then @messages.push "Entrez le nom complet figurant sur votre carte."
|
77
|
+
|
78
|
+
isCreditCardExpiration: () ->
|
79
|
+
value = @value.replace('/', '').replace('-', '').replace(' ', '')
|
80
|
+
|
81
|
+
value = value.slice(0,2) + '20' + value.slice(2,4) if value.length is 4
|
82
|
+
|
83
|
+
if value.length is 6 and /^[0-9]*$/.test value
|
84
|
+
expiration = new Date(value.slice(2,6), Number(value.slice(0,2)) - 1, 31)
|
85
|
+
|
86
|
+
if expiration < new Date() then @messages.push "Votre carte de crédit est expirée."
|
87
|
+
else
|
88
|
+
@messages.push "La date d'expiration est doit avoir un format MM/AA."
|
89
|
+
|
90
|
+
|
91
|
+
isEmail: () -> if not /^[a-zA-Z0-9.\$#%+-\/=?_]+@([a-zA-Z0-9.\-]+\.)+[a-zA-Z0-9.\-]{2,6}$/.test(@value) then @messages.push 'Le courriel est invalide.'
|
92
|
+
|
93
|
+
isLengthEql: (spec) ->
|
94
|
+
[tag, length] = spec.split('-')
|
95
|
+
if @value.length != Number(length) then @messages.push "Le champ doit contenir #{length} caractères."
|
96
|
+
|
97
|
+
isMax: (spec) ->
|
98
|
+
[tag, max] = spec.split('-')
|
99
|
+
if @value.length > Number(max) then @messages.push "Le champ doit contenir moins de #{max} caractères."
|
100
|
+
|
101
|
+
|
102
|
+
isMin: (spec) ->
|
103
|
+
[tag, min] = spec.split('-')
|
104
|
+
if @value.length < Number(min) then @messages.push "Le champ doit contenir plus de #{min} caractères."
|
105
|
+
|
106
|
+
|
107
|
+
isNumeric: -> if not /^$|^([\-]?[0-9]*)?([\.,][0-9]*)?$/.test(@value) then @messages.push 'Le champ doit être numérique.'
|
108
|
+
|
109
|
+
isWithin: (spec) ->
|
110
|
+
[tag, min, max] = spec.split('-')
|
111
|
+
|
112
|
+
@isMin "min-#{min}"
|
113
|
+
@isMax "max-#{max}"
|
114
|
+
|
115
|
+
|
116
|
+
notBlank: () -> @value isnt ""
|
@@ -0,0 +1,119 @@
|
|
1
|
+
#*************************************************************************************
|
2
|
+
# TOCOMMENT
|
3
|
+
#*************************************************************************************
|
4
|
+
@caissonMod "FormCaisson", ->
|
5
|
+
class @Form
|
6
|
+
#*************************************************************************************
|
7
|
+
# CONSTRUCTOR
|
8
|
+
#*************************************************************************************
|
9
|
+
constructor: (@form) ->
|
10
|
+
@fields = []
|
11
|
+
|
12
|
+
@initFormId()
|
13
|
+
@initEvents()
|
14
|
+
@initFields()
|
15
|
+
|
16
|
+
|
17
|
+
#*************************************************************************************
|
18
|
+
# PUBLIC INSTANCE METHODS
|
19
|
+
#*************************************************************************************
|
20
|
+
field: (id) -> return f for f in @fields when f.id() is id
|
21
|
+
|
22
|
+
hasErrors: () -> @form.find('div.field.errors').length > 0
|
23
|
+
|
24
|
+
hasField: (id) -> if @field(id) then true else false
|
25
|
+
|
26
|
+
hideErrors: () -> field.hideErrors() for field in @fields
|
27
|
+
|
28
|
+
id: () -> @form.attr('id')
|
29
|
+
|
30
|
+
send: (callback) ->
|
31
|
+
if @validate()
|
32
|
+
callback = {} if not callback
|
33
|
+
callback['loading'](true) if callback['loading']
|
34
|
+
|
35
|
+
$.ajax(
|
36
|
+
type: @form.attr('method')
|
37
|
+
url: @form.attr("action") + '.json'
|
38
|
+
dataType: "json"
|
39
|
+
data: @form.serialize()
|
40
|
+
complete: (data) -> callback['loading'](false) if callback['loading']
|
41
|
+
error: (xhr, ajax_error) =>
|
42
|
+
switch xhr.status
|
43
|
+
when 400 then @setFieldErrors $.parseJSON(xhr.responseText)
|
44
|
+
when 401 then #alert '401'
|
45
|
+
else @showAjaxError xhr.responseText, ajax_error
|
46
|
+
statusCode: callback
|
47
|
+
)
|
48
|
+
|
49
|
+
|
50
|
+
validate: () ->
|
51
|
+
field.validate() for field in @fields
|
52
|
+
|
53
|
+
if @hasErrors()
|
54
|
+
@form.find('div.field.errors:first input').focus()
|
55
|
+
return false
|
56
|
+
else
|
57
|
+
return true
|
58
|
+
|
59
|
+
|
60
|
+
#*************************************************************************************
|
61
|
+
# PRIVATE INSTANCE METHODS
|
62
|
+
#*************************************************************************************
|
63
|
+
initEvents: () ->
|
64
|
+
@form.on('validate', (e) => @validate())
|
65
|
+
@form.on('send', (e) => @send())
|
66
|
+
|
67
|
+
@form.submit (e) =>
|
68
|
+
if @validate()
|
69
|
+
field.input().trigger 'before-submit-form' for field in @fields
|
70
|
+
|
71
|
+
$(e.target).find('input[type=submit]').attr 'disabled', 'disabled'
|
72
|
+
$(e.target).find('button').attr 'disabled', 'disabled'
|
73
|
+
|
74
|
+
return true
|
75
|
+
else
|
76
|
+
return false
|
77
|
+
|
78
|
+
|
79
|
+
initField: (path, fieldClass) -> @form.find(path).each (i, elem) => @fields.push new fieldClass $(elem)
|
80
|
+
|
81
|
+
|
82
|
+
initFields: ->
|
83
|
+
@initField 'input.checkbox', FormCaisson.Field.Checkbox
|
84
|
+
@initField 'select', FormCaisson.Field.SelectField
|
85
|
+
#@_initField 'div.switch-field', FormCaisson.Field.SwitchField
|
86
|
+
@initField 'input.text-field', FormCaisson.Field.TextField
|
87
|
+
#@_initField 'input.percent-field', FormCaisson.Field.PercentField
|
88
|
+
#@_initField 'input.money-field', FormCaisson.Field.MoneyField
|
89
|
+
#@_initField 'div.time-field', FormCaisson.Field.TimeField
|
90
|
+
|
91
|
+
|
92
|
+
initFormId: ->
|
93
|
+
@form.data('caisson', 'form')
|
94
|
+
@form.attr('data-caisson', 'form')
|
95
|
+
@form.attr('id', 'form-caisson-' + Math.floor(Math.random()*10000)) if not @form.attr('id')
|
96
|
+
|
97
|
+
|
98
|
+
setFieldErrors: (errors) ->
|
99
|
+
names = (k for k,v of errors)
|
100
|
+
|
101
|
+
for field in @fields
|
102
|
+
errorKey = field.hasApproximateName names
|
103
|
+
|
104
|
+
if errorKey
|
105
|
+
field.showErrors $.flatten(errors[errorKey])
|
106
|
+
else if field.hasErrors()
|
107
|
+
field.hideErrors()
|
108
|
+
|
109
|
+
return errors
|
110
|
+
|
111
|
+
|
112
|
+
showAjaxError: (message, ajax_error) ->
|
113
|
+
left = ($('body').width() - 700) / 2
|
114
|
+
|
115
|
+
pop = $('<div id="ajax-error" style="display:none;margin-left:' + left + 'px"><h1>AJAX : ' + ajax_error + '</h1>' + message + '</div>')
|
116
|
+
pop.dblclick (e) -> $(e.target).closest('div#ajax-error').remove()
|
117
|
+
|
118
|
+
$('body').before pop
|
119
|
+
pop.fadeIn(500)
|
@@ -0,0 +1,30 @@
|
|
1
|
+
#*************************************************************************************
|
2
|
+
# TOCOMMENT
|
3
|
+
#*************************************************************************************
|
4
|
+
@caissonMod "FormCaisson", ->
|
5
|
+
#*************************************************************************************
|
6
|
+
# PUBLIC MODULE METHODS
|
7
|
+
#*************************************************************************************
|
8
|
+
@findFormById = (id) -> return form for form in @forms when form.id() is id
|
9
|
+
|
10
|
+
@findFieldById = (id) -> return form.field(id) for form in @forms when form.hasField(id)
|
11
|
+
|
12
|
+
@initForms = () -> $('form').each (i, form) => @forms.push new FormCaisson.Form $(form)
|
13
|
+
|
14
|
+
@initHelpers = () ->
|
15
|
+
$.fn.caisson = () ->
|
16
|
+
switch $(this).data('caisson')
|
17
|
+
when "form" then FormCaisson.findFormById $(this).attr('id')
|
18
|
+
when "field" then FormCaisson.findFieldById $(this).attr('id')
|
19
|
+
else FormCaisson.findFieldById $(this).closest('div[data-caisson]').attr('id') if $(this).closest('div[data-caisson]')
|
20
|
+
|
21
|
+
|
22
|
+
@load = () ->
|
23
|
+
@forms = []
|
24
|
+
@initForms()
|
25
|
+
@initHelpers()
|
26
|
+
|
27
|
+
|
28
|
+
@reload = () -> @load()
|
29
|
+
|
30
|
+
|
@@ -3,7 +3,8 @@
|
|
3
3
|
#*************************************************************************************
|
4
4
|
class @OrbitSlider
|
5
5
|
constructor: (@holder) ->
|
6
|
-
|
6
|
+
# DEPRECATED IN VERSION 4
|
7
|
+
#@holder.orbit @buildAttributes()
|
7
8
|
|
8
9
|
|
9
10
|
buildAttributes: () ->
|