turbograft 0.1.3 → 0.1.4
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.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d0cf7f7c936415c6a11516f9a43f533f5b67b178
|
4
|
+
data.tar.gz: ad506629d8ad4c6c27b778b3b2bfabbb40ca70ad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4d98dd4f884babcf6538344e42ae3e728877711d37bc38cca97ca837eb7b2e606e32e455d4f33fca7b57fa21a3f53e7c57e5aabd51f0cbaaa6a0a82ff37e68af
|
7
|
+
data.tar.gz: 54c66bd97efdbb41bdafb7a0edf710bb5f9b8a85a358fe3b9480052ce34159c5556f4494a9109b9c2922bcd9f3be01ca8d07a9166c75139def907e29eb59f59d
|
@@ -36,6 +36,7 @@ TurboGraft.handlers.remoteFormHandler = (ev) ->
|
|
36
36
|
throw new Error("Turbograft developer error: You did not provide a URL ('action' attribute) for tg-remote") unless httpUrl
|
37
37
|
|
38
38
|
options =
|
39
|
+
httpRequestType: target.getAttribute('method')
|
39
40
|
httpUrl: httpUrl
|
40
41
|
fullRefresh: target.getAttribute('full-refresh')?
|
41
42
|
refreshOnSuccess: target.getAttribute('refresh-on-success')
|
@@ -3,16 +3,20 @@ class TurboGraft.Remote
|
|
3
3
|
|
4
4
|
@initiator = form || target
|
5
5
|
|
6
|
-
@
|
6
|
+
@actualRequestType = if @opts.httpRequestType?.toLowerCase() == 'get' then 'GET' else 'POST'
|
7
7
|
|
8
|
-
|
8
|
+
@formData = @createPayload(form)
|
9
9
|
|
10
10
|
@refreshOnSuccess = @opts.refreshOnSuccess.split(" ") if @opts.refreshOnSuccess
|
11
11
|
@refreshOnError = @opts.refreshOnError.split(" ") if @opts.refreshOnError
|
12
12
|
@refreshOnErrorExcept = @opts.refreshOnErrorExcept.split(" ") if @opts.refreshOnErrorExcept
|
13
13
|
|
14
14
|
xhr = new XMLHttpRequest
|
15
|
-
|
15
|
+
if @actualRequestType == 'GET'
|
16
|
+
url = if @formData then @opts.httpUrl + "?#{@formData}" else @opts.httpUrl
|
17
|
+
xhr.open(@actualRequestType, url, true)
|
18
|
+
else
|
19
|
+
xhr.open(@actualRequestType, @opts.httpUrl, true)
|
16
20
|
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest')
|
17
21
|
xhr.setRequestHeader('Accept', 'text/html, application/xhtml+xml, application/xml')
|
18
22
|
xhr.setRequestHeader("Content-Type", @contentType) if @contentType
|
@@ -51,15 +55,20 @@ class TurboGraft.Remote
|
|
51
55
|
else # for much smaller payloads
|
52
56
|
formData = @uriEncodeForm(form)
|
53
57
|
else
|
54
|
-
formData =
|
58
|
+
formData = ''
|
55
59
|
|
56
60
|
if formData instanceof FormData
|
57
61
|
formData.append("_method", @opts.httpRequestType) if @opts.httpRequestType
|
58
62
|
else
|
59
63
|
@contentType = "application/x-www-form-urlencoded; charset=UTF-8"
|
64
|
+
formData = @formAppend(formData, "_method", @opts.httpRequestType) if formData.indexOf("_method") == -1 && @opts.httpRequestType && @actualRequestType != 'GET'
|
60
65
|
|
61
66
|
formData
|
62
67
|
|
68
|
+
formAppend: (uriEncoded, key, value) ->
|
69
|
+
uriEncoded += "&" if uriEncoded.length
|
70
|
+
uriEncoded += "#{encodeURIComponent(key)}=#{encodeURIComponent(value)}"
|
71
|
+
|
63
72
|
uriEncodeForm: (form) ->
|
64
73
|
formData = ""
|
65
74
|
inputs = form.querySelectorAll("input:not([type='reset']):not([type='button']):not([type='submit']):not([type='image']), select, textarea")
|
@@ -69,9 +78,8 @@ class TurboGraft.Remote
|
|
69
78
|
|
70
79
|
if inputEnabled && input.name
|
71
80
|
if (radioOrCheck && input.checked) || !radioOrCheck
|
72
|
-
formData
|
81
|
+
formData = @formAppend(formData, input.name, input.value)
|
73
82
|
|
74
|
-
formData = formData.slice(0,-1) if formData.charAt(formData.length - 1) == "&"
|
75
83
|
formData
|
76
84
|
|
77
85
|
onSuccess: (ev) ->
|
@@ -86,17 +94,18 @@ class TurboGraft.Remote
|
|
86
94
|
Page.visit(redirect, reload: true)
|
87
95
|
return
|
88
96
|
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
97
|
+
unless @initiator.hasAttribute('tg-remote-norefresh')
|
98
|
+
if @opts.fullRefresh && @refreshOnSuccess
|
99
|
+
Page.refresh(onlyKeys: @refreshOnSuccess)
|
100
|
+
else if @opts.fullRefresh
|
101
|
+
Page.refresh()
|
102
|
+
else if @refreshOnSuccess
|
103
|
+
Page.refresh
|
104
|
+
response: xhr
|
105
|
+
onlyKeys: @refreshOnSuccess
|
106
|
+
else
|
107
|
+
Page.refresh
|
108
|
+
response: xhr
|
100
109
|
|
101
110
|
onError: (ev) ->
|
102
111
|
@opts.fail?()
|
data/lib/turbograft/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: turbograft
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kristian Plettenberg-Dussault
|
@@ -13,7 +13,7 @@ authors:
|
|
13
13
|
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
|
-
date: 2014-12-
|
16
|
+
date: 2014-12-15 00:00:00.000000000 Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
19
|
name: coffee-rails
|
@@ -183,6 +183,34 @@ dependencies:
|
|
183
183
|
- - ">="
|
184
184
|
- !ruby/object:Gem::Version
|
185
185
|
version: '0'
|
186
|
+
- !ruby/object:Gem::Dependency
|
187
|
+
name: pry
|
188
|
+
requirement: !ruby/object:Gem::Requirement
|
189
|
+
requirements:
|
190
|
+
- - ">="
|
191
|
+
- !ruby/object:Gem::Version
|
192
|
+
version: '0'
|
193
|
+
type: :development
|
194
|
+
prerelease: false
|
195
|
+
version_requirements: !ruby/object:Gem::Requirement
|
196
|
+
requirements:
|
197
|
+
- - ">="
|
198
|
+
- !ruby/object:Gem::Version
|
199
|
+
version: '0'
|
200
|
+
- !ruby/object:Gem::Dependency
|
201
|
+
name: pry-byebug
|
202
|
+
requirement: !ruby/object:Gem::Requirement
|
203
|
+
requirements:
|
204
|
+
- - ">="
|
205
|
+
- !ruby/object:Gem::Version
|
206
|
+
version: '0'
|
207
|
+
type: :development
|
208
|
+
prerelease: false
|
209
|
+
version_requirements: !ruby/object:Gem::Requirement
|
210
|
+
requirements:
|
211
|
+
- - ">="
|
212
|
+
- !ruby/object:Gem::Version
|
213
|
+
version: '0'
|
186
214
|
description: It's like turbolinks, but with partial page replacement and tests
|
187
215
|
email:
|
188
216
|
- tylermercier@gmail.com
|