wiselinks 0.3.0 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +28 -4
- data/VERSION +1 -1
- data/lib/assets/javascripts/_history.adapter.jquery.js +76 -0
- data/lib/assets/javascripts/_history.html4.js +621 -0
- data/lib/assets/javascripts/_history.js +1946 -1
- data/lib/assets/javascripts/wiselinks.js.coffee +34 -16
- data/lib/wiselinks/headers.rb +4 -3
- data/wiselinks.gemspec +4 -2
- metadata +5 -3
data/README.md
CHANGED
@@ -51,7 +51,7 @@ Wiselinks works in all major browsers including browsers that do not support HTM
|
|
51
51
|
<td><strong>Yes</strong></td>
|
52
52
|
</tr>
|
53
53
|
<tr>
|
54
|
-
<td>
|
54
|
+
<td>Assets change detection</td>
|
55
55
|
<td>Yes, by parsing document head on every request.</td>
|
56
56
|
<td><strong>Yes</strong>, by calculating assets MD5 hash on boot.</td>
|
57
57
|
</tr>
|
@@ -70,6 +70,8 @@ Then do:
|
|
70
70
|
|
71
71
|
bundle install
|
72
72
|
|
73
|
+
Restart your server and you're now using wiselinks!
|
74
|
+
|
73
75
|
## How does it work?
|
74
76
|
|
75
77
|
Modify your `application.js.coffee` file to use Wiselinks object:
|
@@ -188,18 +190,24 @@ $(document).ready ->
|
|
188
190
|
# start loading animation
|
189
191
|
)
|
190
192
|
|
193
|
+
$(document).off('page:complete').on(
|
194
|
+
'page:complete'
|
195
|
+
(event, xhr, settings) ->
|
196
|
+
console.log("Wiselinks page loading completed")
|
197
|
+
# stop loading animation
|
198
|
+
)
|
199
|
+
|
191
200
|
$(document).off('page:success').on(
|
192
201
|
'page:success'
|
193
202
|
(event, data, status) ->
|
194
203
|
console.log("Wiselinks status: '#{status}'")
|
195
|
-
# stop loading animation
|
196
204
|
)
|
197
205
|
|
198
206
|
$(document).off('page:error').on(
|
199
207
|
'page:error'
|
200
208
|
(event, data, status) ->
|
201
209
|
console.log("Wiselinks status: '#{status}'")
|
202
|
-
#
|
210
|
+
# show error message
|
203
211
|
)
|
204
212
|
```
|
205
213
|
|
@@ -245,6 +253,22 @@ Method returns `true` if current request is initiated by Wiselinks and client wa
|
|
245
253
|
### #wiselinks_partial? ###
|
246
254
|
Method returns `true` if current request is initiated by Wiselinks and client want to render partial, `false` otherwise.
|
247
255
|
|
256
|
+
## Assets change detection
|
257
|
+
|
258
|
+
You can enable assets change detection with Wiselinks. To do this you have to enable assets digests by adding this to you environment file:
|
259
|
+
|
260
|
+
```ruby
|
261
|
+
config.assets.digest = true
|
262
|
+
```
|
263
|
+
|
264
|
+
Then you should append your layout by adding this to head section:
|
265
|
+
|
266
|
+
```erb
|
267
|
+
<%= wiselinks_meta_tag %>
|
268
|
+
```
|
269
|
+
|
270
|
+
Now Wiselinks will track changes of your assets and if anything will change, your page will be reloaded completely.
|
271
|
+
|
248
272
|
## Title handling
|
249
273
|
|
250
274
|
Wiselinks handles page titles by passing `X-Title` header with response. To do this you can use `wiselinks_title` helper.
|
@@ -262,7 +286,7 @@ Of course you can use `wiselinks_title` helper in your own helpers too.
|
|
262
286
|
|
263
287
|
##Example
|
264
288
|
|
265
|
-
We crafted
|
289
|
+
We crafted example application that uses nearly all features of Wiselinks so you can see it in action.
|
266
290
|
|
267
291
|
* GitHub Repository: [https://github.com/igor-alexandrov/wiselinks_example](https://github.com/igor-alexandrov/wiselinks_example)
|
268
292
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.2
|
@@ -0,0 +1,76 @@
|
|
1
|
+
/**
|
2
|
+
* History.js jQuery Adapter
|
3
|
+
* @author Benjamin Arthur Lupton <contact@balupton.com>
|
4
|
+
* @copyright 2010-2011 Benjamin Arthur Lupton <contact@balupton.com>
|
5
|
+
* @license New BSD License <http://creativecommons.org/licenses/BSD/>
|
6
|
+
*/
|
7
|
+
|
8
|
+
// Closure
|
9
|
+
(function(window,undefined){
|
10
|
+
"use strict";
|
11
|
+
|
12
|
+
// Localise Globals
|
13
|
+
var
|
14
|
+
History = window.History = window.History||{},
|
15
|
+
jQuery = window.jQuery;
|
16
|
+
|
17
|
+
// Check Existence
|
18
|
+
if ( typeof History.Adapter !== 'undefined' ) {
|
19
|
+
throw new Error('History.js Adapter has already been loaded...');
|
20
|
+
}
|
21
|
+
|
22
|
+
// Add the Adapter
|
23
|
+
History.Adapter = {
|
24
|
+
/**
|
25
|
+
* History.Adapter.bind(el,event,callback)
|
26
|
+
* @param {Element|string} el
|
27
|
+
* @param {string} event - custom and standard events
|
28
|
+
* @param {function} callback
|
29
|
+
* @return {void}
|
30
|
+
*/
|
31
|
+
bind: function(el,event,callback){
|
32
|
+
jQuery(el).bind(event,callback);
|
33
|
+
},
|
34
|
+
|
35
|
+
/**
|
36
|
+
* History.Adapter.trigger(el,event)
|
37
|
+
* @param {Element|string} el
|
38
|
+
* @param {string} event - custom and standard events
|
39
|
+
* @param {Object=} extra - a object of extra event data (optional)
|
40
|
+
* @return {void}
|
41
|
+
*/
|
42
|
+
trigger: function(el,event,extra){
|
43
|
+
jQuery(el).trigger(event,extra);
|
44
|
+
},
|
45
|
+
|
46
|
+
/**
|
47
|
+
* History.Adapter.extractEventData(key,event,extra)
|
48
|
+
* @param {string} key - key for the event data to extract
|
49
|
+
* @param {string} event - custom and standard events
|
50
|
+
* @param {Object=} extra - a object of extra event data (optional)
|
51
|
+
* @return {mixed}
|
52
|
+
*/
|
53
|
+
extractEventData: function(key,event,extra){
|
54
|
+
// jQuery Native then jQuery Custom
|
55
|
+
var result = (event && event.originalEvent && event.originalEvent[key]) || (extra && extra[key]) || undefined;
|
56
|
+
|
57
|
+
// Return
|
58
|
+
return result;
|
59
|
+
},
|
60
|
+
|
61
|
+
/**
|
62
|
+
* History.Adapter.onDomLoad(callback)
|
63
|
+
* @param {function} callback
|
64
|
+
* @return {void}
|
65
|
+
*/
|
66
|
+
onDomLoad: function(callback) {
|
67
|
+
jQuery(callback);
|
68
|
+
}
|
69
|
+
};
|
70
|
+
|
71
|
+
// Try and Initialise History
|
72
|
+
if ( typeof History.init !== 'undefined' ) {
|
73
|
+
History.init();
|
74
|
+
}
|
75
|
+
|
76
|
+
})(window);
|