wiselinks 0.3.0 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: