ajaxify_rails 0.1.2 → 0.1.3
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 +5 -4
- data/lib/ajaxify_rails/version.rb +1 -1
- data/vendor/assets/javascripts/ajaxify_rails.js.coffee +19 -19
- metadata +4 -4
data/README.md
CHANGED
@@ -10,7 +10,7 @@ Also form submissions are automatically turned into Ajax requests.
|
|
10
10
|
Features:
|
11
11
|
|
12
12
|
- Uses the html5 history interface for changing the url and making the browser's back and forward buttons work with Ajax.
|
13
|
-
- Falls back to a hash based approach for browsers without the history interface (like Internet Explorer version <10).
|
13
|
+
- Falls back to a hash based URL approach for browsers without the history interface (like Internet Explorer version <10).
|
14
14
|
- Hash based and non-hash URLs are interchangeable.
|
15
15
|
- Transparently handles redirects and supports page titles and flash messages.
|
16
16
|
- Tested with Chrome, Firefox, Safari and Internet Explorer 8+.
|
@@ -107,7 +107,7 @@ Also make sure that you supply invisible wrapper tags in your layout for each fl
|
|
107
107
|
#notice{ style: "#{'display:none' unless flash[:notice]}" }
|
108
108
|
= flash[:notice]
|
109
109
|
|
110
|
-
###
|
110
|
+
### Full Page Reloads
|
111
111
|
|
112
112
|
Sometimes requests change the layout of the page so significantly that loading only the main content via Ajax
|
113
113
|
and doing some minor layout tweaks here and there are simply not sufficient.
|
@@ -178,8 +178,9 @@ Ajaxify provides a few jQuery events you can bind to:
|
|
178
178
|
|
179
179
|
### Javascript
|
180
180
|
|
181
|
-
|
182
|
-
|
181
|
+
In addition to calling your javascript e.g. in a dom ready event handler (or in your layout), you should also
|
182
|
+
call it in an `ajaxify:content_loaded` event handler, to make sure it is executed after content has
|
183
|
+
loaded via Ajaxify.
|
183
184
|
|
184
185
|
|
185
186
|
### Toggle Ajaxify
|
@@ -12,6 +12,8 @@ initial_history_state =
|
|
12
12
|
data:
|
13
13
|
ajaxified: true
|
14
14
|
|
15
|
+
base_path_regexp_cache = null
|
16
|
+
|
15
17
|
|
16
18
|
activate = (new_active = true) ->
|
17
19
|
active = new_active
|
@@ -78,12 +80,23 @@ ajaxify = ->
|
|
78
80
|
ignore_hash_change = false
|
79
81
|
|
80
82
|
|
83
|
+
base_path_regexp = ->
|
84
|
+
return null unless base_paths
|
85
|
+
return base_path_regexp_cache if base_path_regexp_cache
|
86
|
+
# match starting and ending with base path, e.g. "^\/en$" (i.e. we are at the base path root) or
|
87
|
+
# starting with base path and continuing with '/', e.g. "^\/en\/" (i.e. we are NOT at the base path root) or
|
88
|
+
# starting with base path and continuing with '?', e.g. "^\/en\?" (i.e. we are at the base path root and have query params)
|
89
|
+
base_path_regexp_cache = new RegExp("^\/(#{ $.map(base_paths, (el) ->
|
90
|
+
el = regexp_escape el
|
91
|
+
"##{el}($|\/|\\?)"
|
92
|
+
).join('|')})", 'i')
|
93
|
+
|
94
|
+
|
81
95
|
# load content from url hash (non history interface browsers)
|
82
96
|
on_hash_change = ->
|
83
97
|
url = window.location.hash.replace(/#/, "")
|
84
98
|
|
85
|
-
|
86
|
-
if match = window.location.pathname.match(base_path_regexp)
|
99
|
+
if match = window.location.pathname.match(base_path_regexp())
|
87
100
|
url = match[0] + url
|
88
101
|
|
89
102
|
url = '/' if url == ''
|
@@ -192,25 +205,13 @@ update_url = (options, pop_state = false) ->
|
|
192
205
|
ignore_hash_change = true # for non histroy interface browsers: avoids loading the page for hash changes caused by link clicks
|
193
206
|
hash = "#{options.url.replace(new RegExp(protocol_with_host()), '')}"
|
194
207
|
|
195
|
-
|
196
|
-
|
197
|
-
hash = hash.replace(base_path_regexp, '')
|
208
|
+
if base_path_regexp()
|
209
|
+
hash = hash.replace(base_path_regexp(), '')
|
198
210
|
hash = "/#{hash}" unless hash == '' or hash.indexOf('/') == 0
|
199
211
|
|
200
212
|
window.location.hash = hash
|
201
213
|
|
202
214
|
|
203
|
-
base_path_regexp = ->
|
204
|
-
return null unless base_paths
|
205
|
-
# match starting and ending with base path, e.g. "^\/en$" (i.e. we are at the base path root) or
|
206
|
-
# starting with base path and continuing with '/', e.g. "^\/en\/" (i.e. we are NOT at the base path root) or
|
207
|
-
# starting with base path and continuing with '?', e.g. "^\/en\?" (i.e. we are at the base path root and have query params)
|
208
|
-
new RegExp("^\/(#{ $.map(base_paths, (el) ->
|
209
|
-
el = regexp_escape el
|
210
|
-
"##{el}($|\/|\\?)"
|
211
|
-
).join('|')})", 'i')
|
212
|
-
|
213
|
-
|
214
215
|
correct_url = ->
|
215
216
|
if active
|
216
217
|
|
@@ -234,8 +235,7 @@ correct_url = ->
|
|
234
235
|
window.location.href = "#{protocol_with_host()}/#/#{window.location.search}" # move search behind #
|
235
236
|
return
|
236
237
|
|
237
|
-
base_path_regexp = base_path_regexp()
|
238
|
-
if base_path_regexp and (match = window.location.pathname.match(base_path_regexp))
|
238
|
+
if base_path_regexp() and (match = window.location.pathname.match(base_path_regexp()))
|
239
239
|
if match[0] == window.location.pathname
|
240
240
|
if window.location.search == ''
|
241
241
|
return # we are on a base path here already, so don't do anything
|
@@ -270,7 +270,7 @@ protocol_with_host = ->
|
|
270
270
|
"#{loc.protocol}//#{loc.host}"
|
271
271
|
|
272
272
|
|
273
|
-
@Ajaxify = { init, ajaxify, load, activate, set_content_container, get_content_container }
|
273
|
+
@Ajaxify = { init, ajaxify, load, update_url, activate, set_content_container, get_content_container }
|
274
274
|
|
275
275
|
|
276
276
|
jQuery ->
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ajaxify_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-10-
|
12
|
+
date: 2012-10-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -66,7 +66,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
66
66
|
version: '0'
|
67
67
|
segments:
|
68
68
|
- 0
|
69
|
-
hash:
|
69
|
+
hash: -684738438102731951
|
70
70
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
71
71
|
none: false
|
72
72
|
requirements:
|
@@ -75,7 +75,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
75
75
|
version: '0'
|
76
76
|
segments:
|
77
77
|
- 0
|
78
|
-
hash:
|
78
|
+
hash: -684738438102731951
|
79
79
|
requirements: []
|
80
80
|
rubyforge_project:
|
81
81
|
rubygems_version: 1.8.24
|