wiselinks 0.3.0 → 0.3.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 +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
@@ -1,25 +1,34 @@
|
|
1
1
|
#= require _history
|
2
|
+
#= require _history.html4
|
3
|
+
#= require _history.adapter.jquery.js
|
2
4
|
|
3
5
|
String.prototype.ends_with = (suffix) ->
|
4
6
|
this.indexOf(suffix, this.length - suffix.length) != -1
|
5
7
|
|
6
8
|
class Wiselinks
|
7
|
-
constructor: (@$target = $('body'), options = {}) ->
|
9
|
+
constructor: (@$target = $('body'), @options = {}) ->
|
8
10
|
# Check that JQuery is available
|
9
11
|
throw "Load JQuery to use Wiselinks" unless window.jQuery?
|
10
12
|
|
11
13
|
self = this
|
12
14
|
|
15
|
+
@options = jQuery.extend(self._defaults(), @options);
|
16
|
+
|
17
|
+
if History.emulated.pushState && @options.html4 == true
|
18
|
+
if window.location.href.indexOf('#!') == -1 && window.location.pathname != '/'
|
19
|
+
window.location.href = "#{window.location.protocol}//#{window.location.host}/#!#{window.location.pathname}"
|
20
|
+
|
21
|
+
if window.location.hash.indexOf('#!') != -1
|
22
|
+
self._call(window.location.hash.substring(2))
|
23
|
+
|
13
24
|
History.Adapter.bind(
|
14
25
|
window,
|
15
26
|
"statechange"
|
16
27
|
(event, data) ->
|
17
|
-
return if (!History.ready)
|
28
|
+
return false if (!History.ready)
|
18
29
|
|
19
30
|
state = History.getState()
|
20
|
-
self._call(state.url, state.data.target, state.data.render)
|
21
|
-
|
22
|
-
return false
|
31
|
+
self._call(state.url, state.data.target, state.data.render)
|
23
32
|
)
|
24
33
|
|
25
34
|
$(document).on(
|
@@ -35,46 +44,51 @@ class Wiselinks
|
|
35
44
|
"click", "a[data-push], a[data-replace]"
|
36
45
|
(event) ->
|
37
46
|
if self._cross_origin_link(event.target) || self._non_standard_click(event)
|
38
|
-
return true;
|
39
|
-
|
47
|
+
return true;
|
40
48
|
self._process_link($(this))
|
41
49
|
|
42
50
|
event.preventDefault()
|
43
51
|
return false
|
44
|
-
)
|
52
|
+
)
|
45
53
|
|
46
54
|
@assets_digest = $("meta[name='assets-digest']").attr("content")
|
47
55
|
|
48
56
|
load: (url, target, render = 'template') ->
|
49
57
|
History.ready = true
|
50
|
-
History.pushState({ timestamp: (new Date().getTime()), render: render, target: target }, document.title,
|
58
|
+
History.pushState({ timestamp: (new Date().getTime()), render: render, target: target }, document.title, url )
|
51
59
|
|
52
60
|
reload: () ->
|
53
61
|
History.ready = true
|
54
|
-
History.replaceState({ timestamp: (new Date().getTime()), render: 'template' }, document.title,
|
62
|
+
History.replaceState({ timestamp: (new Date().getTime()), render: 'template' }, document.title, History.getState().url )
|
63
|
+
|
64
|
+
_defaults: ->
|
65
|
+
html4: true
|
55
66
|
|
56
67
|
_call: (url, target, render = 'template') ->
|
57
68
|
self = this
|
58
69
|
|
59
70
|
$target = if target? then $(target) else self.$target
|
60
71
|
|
61
|
-
$(document).trigger('page:loading', [url, $target.selector, render])
|
72
|
+
$document = $(document).trigger('page:loading', [url, $target.selector, render])
|
62
73
|
|
63
74
|
$.ajax(
|
64
75
|
url: url
|
65
76
|
headers:
|
66
77
|
'X-Render': render
|
78
|
+
complete: (event, xhr, settings) ->
|
79
|
+
$document.trigger('page:complete', [event, xhr, settings])
|
80
|
+
|
67
81
|
success: (data, status, xhr) ->
|
68
82
|
if self._assets_changed(xhr.getResponseHeader('X-Assets-Digest'))
|
69
83
|
window.location.reload(true)
|
70
84
|
else
|
71
|
-
|
85
|
+
self._set_title(xhr)
|
72
86
|
|
73
87
|
$target.html(data)
|
74
88
|
|
75
|
-
$
|
76
|
-
error: (xhr, status, error)->
|
77
|
-
$
|
89
|
+
$document.trigger('page:success', [data, status])
|
90
|
+
error: (xhr, status, error)->
|
91
|
+
$document.trigger('page:error', [status, error])
|
78
92
|
dataType: "html"
|
79
93
|
)
|
80
94
|
|
@@ -127,6 +141,10 @@ class Wiselinks
|
|
127
141
|
event.metaKey || event.ctrlKey || event.shiftKey || event.altKey
|
128
142
|
|
129
143
|
_assets_changed: (digest) ->
|
130
|
-
|
144
|
+
@assets_digest? && @assets_digest != digest
|
145
|
+
|
146
|
+
_set_title: (xhr) ->
|
147
|
+
value = xhr.getResponseHeader('X-Title')
|
148
|
+
document.title = value if value?
|
131
149
|
|
132
150
|
window.Wiselinks = Wiselinks
|
data/lib/wiselinks/headers.rb
CHANGED
@@ -32,9 +32,10 @@ module Wiselinks
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def wiselinks_title(value)
|
35
|
-
|
36
|
-
|
37
|
-
|
35
|
+
if self.request.wiselinks?
|
36
|
+
Wiselinks.log("title: #{value}")
|
37
|
+
response.headers['X-Title'] = value
|
38
|
+
end
|
38
39
|
end
|
39
40
|
|
40
41
|
def wiselinks_request?
|
data/wiselinks.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "wiselinks"
|
8
|
-
s.version = "0.3.
|
8
|
+
s.version = "0.3.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Igor Alexandrov", "Alexey Solilin", "Julia Egorova"]
|
12
|
-
s.date = "2012-12-
|
12
|
+
s.date = "2012-12-26"
|
13
13
|
s.email = "igor.alexandrov@gmail.com"
|
14
14
|
s.extra_rdoc_files = [
|
15
15
|
"LICENSE",
|
@@ -24,6 +24,8 @@ Gem::Specification.new do |s|
|
|
24
24
|
"Rakefile",
|
25
25
|
"VERSION",
|
26
26
|
"app/views/layouts/wiselinks.html.erb",
|
27
|
+
"lib/assets/javascripts/_history.adapter.jquery.js",
|
28
|
+
"lib/assets/javascripts/_history.html4.js",
|
27
29
|
"lib/assets/javascripts/_history.js",
|
28
30
|
"lib/assets/javascripts/wiselinks.js.coffee",
|
29
31
|
"lib/wiselinks.rb",
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wiselinks
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2012-12-
|
14
|
+
date: 2012-12-26 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: shoulda
|
@@ -93,6 +93,8 @@ files:
|
|
93
93
|
- Rakefile
|
94
94
|
- VERSION
|
95
95
|
- app/views/layouts/wiselinks.html.erb
|
96
|
+
- lib/assets/javascripts/_history.adapter.jquery.js
|
97
|
+
- lib/assets/javascripts/_history.html4.js
|
96
98
|
- lib/assets/javascripts/_history.js
|
97
99
|
- lib/assets/javascripts/wiselinks.js.coffee
|
98
100
|
- lib/wiselinks.rb
|
@@ -166,7 +168,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
166
168
|
version: '0'
|
167
169
|
segments:
|
168
170
|
- 0
|
169
|
-
hash:
|
171
|
+
hash: 909818033412288113
|
170
172
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
171
173
|
none: false
|
172
174
|
requirements:
|