ajaxify_rails 0.5.5 → 0.7.0beta
Sign up to get free protection for your applications and to get access to all the features.
data/README.md
CHANGED
@@ -78,17 +78,6 @@ This is simple. Ajaxify automatically inserts a loader div with the class `ajaxi
|
|
78
78
|
the content wrapper before starting an Ajax request. So just supply styles for `.ajaxify_loader` in your css, with an
|
79
79
|
animated gif as a background.
|
80
80
|
|
81
|
-
### Scrolling
|
82
|
-
|
83
|
-
By default, ajaxify scrolls to the top of the screen when you click on a link or submit a form.
|
84
|
-
You can change this default behavior by setting 'scroll_to_top' to false on init.
|
85
|
-
|
86
|
-
Ajaxify.init
|
87
|
-
scroll_to_top: false
|
88
|
-
|
89
|
-
You can also change the setting for individual links by adding classes:
|
90
|
-
= link_to "Scroll to top", scroll_to_top_path, class: 'scroll_to_top'
|
91
|
-
= link_to "Don't scroll", no_scroll_path, class: 'no_scroll_to_top'
|
92
81
|
|
93
82
|
### Page Title
|
94
83
|
|
@@ -200,6 +189,20 @@ loaded via Ajaxify.
|
|
200
189
|
You can temporarily deactivate Ajaxify by calling `Ajaxify.activate(false)`. You can switch it on again with `Ajaxify.activate()`.
|
201
190
|
|
202
191
|
|
192
|
+
### Scrolling
|
193
|
+
|
194
|
+
By default, ajaxify scrolls to the top of the screen when you click on a link or submit a form.
|
195
|
+
You can change this default behavior by setting 'scroll_to_top' to false on init.
|
196
|
+
|
197
|
+
Ajaxify.init
|
198
|
+
scroll_to_top: false
|
199
|
+
|
200
|
+
You can also change the setting for individual links by adding classes:
|
201
|
+
|
202
|
+
= link_to "Scroll to top", scroll_to_top_path, class: 'scroll_to_top'
|
203
|
+
= link_to "Don't scroll", no_scroll_path, class: 'no_scroll_to_top'
|
204
|
+
|
205
|
+
|
203
206
|
## Contributing
|
204
207
|
|
205
208
|
1. Fork it
|
@@ -49,14 +49,18 @@ module ActionControllerAdditions
|
|
49
49
|
data: { page_title: page_title,
|
50
50
|
flashes: flashes.to_json } )
|
51
51
|
response.body = response_body[0]
|
52
|
+
response.headers['Ajaxify-Assets-Digest'] = ajaxify_assets_digest
|
53
|
+
|
52
54
|
return
|
53
55
|
end
|
54
56
|
super
|
57
|
+
|
58
|
+
ajaxify_add_meta_tag( ajaxify_assets_digest_meta_tag ) if !request.xhr?
|
59
|
+
|
55
60
|
# Correcting urls for non history api browsers wont work for post requests so add a meta tag to the response body to communicate this to
|
56
61
|
# the ajaxify javascript
|
57
|
-
if request.post? and not request.xhr?
|
58
|
-
|
59
|
-
end
|
62
|
+
ajaxify_add_meta_tag( view_context.tag(:meta, name: 'ajaxify:dont_correct_url', content: 'true') ) if request.post? and not request.xhr?
|
63
|
+
|
60
64
|
return
|
61
65
|
end
|
62
66
|
|
@@ -91,6 +95,23 @@ module ActionControllerAdditions
|
|
91
95
|
sub(/(&|\?)ajaxified=true/, '').
|
92
96
|
sub(/(&|\?)ajaxify_redirect=true/, '')
|
93
97
|
end
|
98
|
+
|
99
|
+
# Meta tag for asset change detection - inspired by wiselinks
|
100
|
+
#
|
101
|
+
def ajaxify_assets_digest_meta_tag
|
102
|
+
|
103
|
+
view_context.tag(:meta, name: 'ajaxify:assets-digest', content: ajaxify_assets_digest)
|
104
|
+
end
|
105
|
+
|
106
|
+
def ajaxify_assets_digest
|
107
|
+
digests = Rails.application.config.assets.digests
|
108
|
+
digests ? Digest::MD5.hexdigest(digests.values.join) : ''
|
109
|
+
end
|
110
|
+
|
111
|
+
def ajaxify_add_meta_tag meta_tag
|
112
|
+
response.body = response_body[0].sub('<head>', "<head>\n #{meta_tag}")
|
113
|
+
end
|
114
|
+
|
94
115
|
end
|
95
116
|
|
96
117
|
end
|
@@ -178,10 +178,14 @@ on_ajaxify_success = (data, status, jqXHR, pop_state, options) ->
|
|
178
178
|
|
179
179
|
# Correct the url after a redirect and when it has the ajaxify param in it.
|
180
180
|
# The latter can happen e.g. for pagination links that are auto generated.
|
181
|
+
original_request_type = options.type
|
181
182
|
current_url = $('#ajaxify_content #ajaxify_location').html()
|
182
183
|
if options.url != current_url
|
183
184
|
options.url = current_url.replace(/(&|&|\?)ajaxify_redirect=true/,'')
|
184
185
|
options.type = 'GET'
|
186
|
+
|
187
|
+
unless original_request_type and original_request_type.toLowerCase() == 'post'
|
188
|
+
reload_page_if_assets_stale options.url, jqXHR
|
185
189
|
|
186
190
|
update_url options, pop_state
|
187
191
|
|
@@ -296,6 +300,12 @@ scroll_page_to_top = ->
|
|
296
300
|
scrollTop:0
|
297
301
|
, 500
|
298
302
|
|
303
|
+
|
304
|
+
reload_page_if_assets_stale = (url, jqXHR) ->
|
305
|
+
digest_header = jqXHR.getResponseHeader('Ajaxify-Assets-Digest')
|
306
|
+
if digest_header and digest_header != $("meta[name='ajaxify:assets-digest']").attr('content')
|
307
|
+
document.location.href = url
|
308
|
+
|
299
309
|
# --------------------------------------------------------------------------------------------------------------------
|
300
310
|
# public interface
|
301
311
|
# --------------------------------------------------------------------------------------------------------------------
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ajaxify_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.7.0beta
|
5
|
+
prerelease: 5
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Nico Ritsche
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-03-
|
12
|
+
date: 2013-03-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -260,16 +260,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
260
260
|
version: '0'
|
261
261
|
segments:
|
262
262
|
- 0
|
263
|
-
hash: -
|
263
|
+
hash: -96360880157980810
|
264
264
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
265
265
|
none: false
|
266
266
|
requirements:
|
267
|
-
- - ! '
|
267
|
+
- - ! '>'
|
268
268
|
- !ruby/object:Gem::Version
|
269
|
-
version:
|
270
|
-
segments:
|
271
|
-
- 0
|
272
|
-
hash: -1886047311222868249
|
269
|
+
version: 1.3.1
|
273
270
|
requirements: []
|
274
271
|
rubyforge_project:
|
275
272
|
rubygems_version: 1.8.25
|