wiselinks 0.5.3 → 0.5.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.
data/Gemfile.lock CHANGED
@@ -39,7 +39,7 @@ GEM
39
39
  rack-test (>= 0.5.4)
40
40
  selenium-webdriver (~> 2.0)
41
41
  xpath (~> 1.0.0)
42
- childprocess (0.3.8)
42
+ childprocess (0.3.9)
43
43
  ffi (~> 1.0, >= 1.0.11)
44
44
  coffee-rails (3.2.2)
45
45
  coffee-script (>= 2.2.0)
@@ -47,8 +47,8 @@ GEM
47
47
  coffee-script (2.2.0)
48
48
  coffee-script-source
49
49
  execjs
50
- coffee-script-source (1.4.0)
51
- diff-lcs (1.1.3)
50
+ coffee-script-source (1.5.0)
51
+ diff-lcs (1.2.1)
52
52
  erubis (2.7.0)
53
53
  execjs (1.4.0)
54
54
  multi_json (~> 1.0)
@@ -59,7 +59,7 @@ GEM
59
59
  ffi (1.4.0)
60
60
  git (1.2.5)
61
61
  hike (1.2.1)
62
- i18n (0.6.1)
62
+ i18n (0.6.4)
63
63
  jeweler (1.8.4)
64
64
  bundler (~> 1.0)
65
65
  git (>= 1.2.5)
@@ -101,25 +101,25 @@ GEM
101
101
  rdoc (~> 3.4)
102
102
  thor (>= 0.14.6, < 2.0)
103
103
  rake (10.0.3)
104
- rdoc (3.12.1)
104
+ rdoc (3.12.2)
105
105
  json (~> 1.4)
106
- rspec (2.12.0)
107
- rspec-core (~> 2.12.0)
108
- rspec-expectations (~> 2.12.0)
109
- rspec-mocks (~> 2.12.0)
110
- rspec-core (2.12.2)
111
- rspec-expectations (2.12.1)
112
- diff-lcs (~> 1.1.3)
113
- rspec-mocks (2.12.2)
114
- rspec-rails (2.12.2)
106
+ rspec (2.13.0)
107
+ rspec-core (~> 2.13.0)
108
+ rspec-expectations (~> 2.13.0)
109
+ rspec-mocks (~> 2.13.0)
110
+ rspec-core (2.13.0)
111
+ rspec-expectations (2.13.0)
112
+ diff-lcs (>= 1.1.3, < 2.0)
113
+ rspec-mocks (2.13.0)
114
+ rspec-rails (2.13.0)
115
115
  actionpack (>= 3.0)
116
116
  activesupport (>= 3.0)
117
117
  railties (>= 3.0)
118
- rspec-core (~> 2.12.0)
119
- rspec-expectations (~> 2.12.0)
120
- rspec-mocks (~> 2.12.0)
118
+ rspec-core (~> 2.13.0)
119
+ rspec-expectations (~> 2.13.0)
120
+ rspec-mocks (~> 2.13.0)
121
121
  rubyzip (0.9.9)
122
- selenium-webdriver (2.30.0)
122
+ selenium-webdriver (2.31.0)
123
123
  childprocess (>= 0.2.5)
124
124
  multi_json (~> 1.0)
125
125
  rubyzip
@@ -138,11 +138,11 @@ GEM
138
138
  tilt (~> 1.1, != 1.3.0)
139
139
  sqlite3 (1.3.7)
140
140
  thor (0.17.0)
141
- tilt (1.3.3)
141
+ tilt (1.3.4)
142
142
  treetop (1.4.12)
143
143
  polyglot
144
144
  polyglot (>= 0.3.1)
145
- tzinfo (0.3.35)
145
+ tzinfo (0.3.36)
146
146
  websocket (1.0.7)
147
147
  xpath (1.0.0)
148
148
  nokogiri (~> 1.3)
data/README.md CHANGED
@@ -1,9 +1,10 @@
1
1
  [![Gem Version](https://badge.fury.io/rb/wiselinks.png)](http://badge.fury.io/rb/wiselinks)
2
2
  [![Build Status](https://travis-ci.org/igor-alexandrov/wiselinks.png?branch=master)](https://travis-ci.org/igor-alexandrov/wiselinks)
3
- [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/igor-alexandrov/wiselinks)
3
+ [![Dependency Status](https://gemnasium.com/igor-alexandrov/wiselinks.png)](https://gemnasium.com/igor-alexandrov/wiselinks)
4
4
 
5
5
 
6
- [![Dependency Status](https://gemnasium.com/igor-alexandrov/wiselinks.png)](https://gemnasium.com/igor-alexandrov/wiselinks)
6
+ [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/igor-alexandrov/wiselinks)
7
+
7
8
 
8
9
  #Wiselinks
9
10
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.3
1
+ 0.5.4
@@ -24,17 +24,18 @@ class Wiselinks
24
24
  window.location.href = "#{window.location.protocol}//#{window.location.host}#{@options.html4_root_path}#!#{window.location.pathname}"
25
25
 
26
26
  if window.location.hash.indexOf('#!') != -1
27
- self._call(window.location.hash.substring(2))
27
+ self._call(self._make_state(window.location.hash.substring(2)))
28
28
 
29
29
  History.Adapter.bind(
30
30
  window,
31
31
  "statechange"
32
32
  (event, data) ->
33
33
  state = History.getState()
34
+
34
35
  if self._template_id_changed(state)
35
- self._call(state.url, null, 'template')
36
+ self._call(self._reset_state(state))
36
37
  else
37
- self._call(state.url, state.data.target, state.data.render)
38
+ self._call(state)
38
39
  )
39
40
 
40
41
  $(document).on(
@@ -62,26 +63,26 @@ class Wiselinks
62
63
 
63
64
  load: (url, target, render = 'template') ->
64
65
  @template_id = new Date().getTime() if render != 'partial'
65
- History.pushState({ template_id: @template_id, render: render, target: target }, document.title, url )
66
+ History.pushState({ template_id: @template_id, render: render, target: target, referer: window.location.href }, document.title, url )
66
67
 
67
68
  reload: () ->
68
- History.replaceState({ template_id: @template_id, render: 'template' }, document.title, History.getState().url )
69
+ History.replaceState({ template_id: @template_id, render: 'template', referer: window.location.href }, document.title, History.getState().url )
69
70
 
70
71
  _defaults: ->
71
72
  html4: true
72
73
  html4_root_path: '/'
73
74
 
74
- _call: (url, target, render = 'template') ->
75
+ _call: (state) ->
75
76
  self = this
76
77
 
77
- $target = if target? then $(target) else self.$target
78
+ $target = if state.data.target? then $(state.data.target) else self.$target
79
+ $document = $(document).trigger('page:loading', [$target, state.data.render, state.url])
78
80
 
79
- $document = $(document).trigger('page:loading', [$target, render, url])
80
-
81
81
  $.ajax(
82
- url: url
82
+ url: state.url
83
83
  headers:
84
- 'X-Wiselinks': render
84
+ 'X-Wiselinks': state.data.render
85
+ 'X-Wiselinks-Referer': state.data.referer
85
86
 
86
87
  dataType: "html"
87
88
  ).done(
@@ -91,7 +92,7 @@ class Wiselinks
91
92
  if self._assets_changed(xhr.getResponseHeader('X-Wiselinks-Assets-Digest'))
92
93
  window.location.reload(true)
93
94
  else if url? && url != window.location.href
94
- $document.trigger('page:redirected', [$target, render, url])
95
+ $document.trigger('page:redirected', [$target, state.data.render, url])
95
96
  if ( xhr && xhr.readyState < 4)
96
97
  xhr.onreadystatechange = $.noop
97
98
  xhr.abort()
@@ -101,13 +102,13 @@ class Wiselinks
101
102
 
102
103
  $target.html(data)
103
104
 
104
- $document.trigger('page:done', [$target, status, url, data])
105
+ $document.trigger('page:done', [$target, status, state.ur, data])
105
106
  ).fail(
106
107
  (xhr, status, error) ->
107
- $document.trigger('page:fail', [$target, status, url, error])
108
+ $document.trigger('page:fail', [$target, status, state.ur, error])
108
109
  ).always(
109
110
  (data_or_xhr, status, xhr_or_error)->
110
- $document.trigger('page:always', [$target, status, url])
111
+ $document.trigger('page:always', [$target, status, state.ur])
111
112
  )
112
113
 
113
114
  _process_form: ($form) ->
@@ -169,4 +170,19 @@ class Wiselinks
169
170
  value = xhr.getResponseHeader('X-Wiselinks-Title')
170
171
  document.title = decodeURI(value) if value?
171
172
 
173
+ _make_state: (url, target, render = 'template', referer) ->
174
+ {
175
+ url: url
176
+ data:
177
+ target: target
178
+ render: render
179
+ referer: referer
180
+ }
181
+
182
+ _reset_state: (state) ->
183
+ state.data = {} unless state.data?
184
+ state.data.target = null
185
+ state.data.render = 'template'
186
+ state
187
+
172
188
  window.Wiselinks = Wiselinks
@@ -1,5 +1,18 @@
1
1
  module Wiselinks
2
2
  module Request
3
+ def self.included(base)
4
+ base.alias_method_chain :referer, :wiselinks
5
+ base.alias_method_chain :referrer, :wiselinks
6
+ end
7
+
8
+ def referer_with_wiselinks
9
+ self.headers['X-Wiselinks-Referer'] || self.referer_without_wiselinks
10
+ end
11
+
12
+ def referrer_with_wiselinks
13
+ self.referer_with_wiselinks
14
+ end
15
+
3
16
  def wiselinks?
4
17
  self.headers['X-Wiselinks'].present?
5
18
  end
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.5.3"
8
+ s.version = "0.5.4"
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 = "2013-02-24"
12
+ s.date = "2013-03-20"
13
13
  s.email = "igor.alexandrov@gmail.com"
14
14
  s.extra_rdoc_files = [
15
15
  "LICENSE",
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.5.3
4
+ version: 0.5.4
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: 2013-02-24 00:00:00.000000000 Z
14
+ date: 2013-03-20 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: shoulda
@@ -187,7 +187,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
187
187
  version: '0'
188
188
  segments:
189
189
  - 0
190
- hash: 933560943679734063
190
+ hash: -3940307628221105571
191
191
  required_rubygems_version: !ruby/object:Gem::Requirement
192
192
  none: false
193
193
  requirements: