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.
@@ -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, decodeURI(url) )
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, decodeURI(History.getState().url) )
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
- document.title = xhr.getResponseHeader('X-Title')
85
+ self._set_title(xhr)
72
86
 
73
87
  $target.html(data)
74
88
 
75
- $(document).trigger('page:success', [data, status])
76
- error: (xhr, status, error)->
77
- $(document).trigger('page:error', [status, error])
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
- digest? && @assets_digest != digest
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
@@ -32,9 +32,10 @@ module Wiselinks
32
32
  end
33
33
 
34
34
  def wiselinks_title(value)
35
- Wiselinks.log("title: #{value}")
36
-
37
- self.headers['X-Title'] = value if self.request.wiselinks?
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.0"
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-23"
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.0
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-23 00:00:00.000000000 Z
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: 699371933197126239
171
+ hash: 909818033412288113
170
172
  required_rubygems_version: !ruby/object:Gem::Requirement
171
173
  none: false
172
174
  requirements: