Skip to content
This repository has been archived by the owner on Oct 11, 2019. It is now read-only.

Commit

Permalink
Merge f838c0d into 19b88b1
Browse files Browse the repository at this point in the history
  • Loading branch information
phlegx committed Dec 19, 2014
2 parents 19b88b1 + f838c0d commit 4613768
Show file tree
Hide file tree
Showing 9 changed files with 47 additions and 22 deletions.
4 changes: 4 additions & 0 deletions .gitignore
Expand Up @@ -49,3 +49,7 @@ spec/dummy/log/test.log

# For rubinius:
#*.rbc

# For Eclipse
.project

12 changes: 9 additions & 3 deletions README.md
Expand Up @@ -311,7 +311,7 @@ Event is triggered before the `XMLHttpRequest` is initialised and performed.

* *render* – what should be rendered; can be 'template' or 'partial';

**page:redirected ($target, render, url)**
**page:redirected ($target, render, url, xhr)**

Event is triggered when you were redirected during `XMLHttpRequest` (with HTTP 30x status).
* *$target* – jQuery object in which result of the request will be inserted;
Expand All @@ -320,7 +320,9 @@ Event is triggered when you were redirected during `XMLHttpRequest` (with HTTP 3

* *render* – what should be rendered; can be 'template' or 'partial';

**page:done ($target, status, url, data)**
* *xhr* – the jqXHR object, which is a superset of the XMLHTTPRequest object;

**page:done ($target, status, url, data, xhr)**

Event is triggered if the request succeeds.
* *$target* – jQuery object that was updated with the request;
Expand All @@ -331,7 +333,9 @@ Event is triggered if the request succeeds.

* *data* – content of the request;

**page:fail ($target, status, url, error, code)**
* *xhr* – the jqXHR object, which is a superset of the XMLHTTPRequest object;

**page:fail ($target, status, url, error, code, xhr)**

Event is triggered if the request fails.

Expand All @@ -345,6 +349,8 @@ Event is triggered if the request fails.

* *code* – HTTP response status code

* *xhr* – the jqXHR object, which is a superset of the XMLHTTPRequest object;

**page:always ($target, status, url)**

Event is triggered after each request.
Expand Down
7 changes: 5 additions & 2 deletions lib/assets/javascripts/_form.js.coffee
Expand Up @@ -5,11 +5,11 @@ class Form
self = this

if self._include_blank_url_params()
self.page.load(self._url(), self._target(), self._type())
self.page.load(self._url(), self._target(), self._type(), self._scope())
else
self._without_blank_url_params(
->
self.page.load(self._url(), self._target(), self._type())
self.page.load(self._url(), self._target(), self._type(), self._scope())
)

_without_blank_url_params: (callback) ->
Expand Down Expand Up @@ -50,6 +50,9 @@ class Form
_target: ->
@$form.data('target')

_scope: ->
@$form.data('scope')

_url: ->
self = this

Expand Down
4 changes: 2 additions & 2 deletions lib/assets/javascripts/_link.js.coffee
Expand Up @@ -11,7 +11,7 @@ class Link
else
'template'

@page.load(@$link.attr("href"), @$link.data('target'), type)
@page.load(@$link.attr("href"), @$link.data('target'), type, @$link.data('scope'))

_cross_origin_link: (link) ->
this._different_protocol(link) ||
Expand Down Expand Up @@ -41,4 +41,4 @@ class Link
event.metaKey || event.ctrlKey || event.shiftKey || event.altKey

window._Wiselinks = {} if window._Wiselinks == undefined
window._Wiselinks.Link = Link
window._Wiselinks.Link = Link
9 changes: 6 additions & 3 deletions lib/assets/javascripts/_page.js.coffee
Expand Up @@ -50,7 +50,7 @@ class Page
return false
)

load: (url, target, render = 'template') ->
load: (url, target, render = 'template', scope) ->
@template_id = new Date().getTime() if render != 'partial'

selector = if target?
Expand All @@ -63,6 +63,7 @@ class Page
template_id: @template_id,
render: render,
target: selector,
scope: scope,
referer: window.location.href
}, document.title, url )

Expand All @@ -81,19 +82,21 @@ class Page
_template_id_changed: (state) ->
!state.data.template_id? || state.data.template_id != @template_id

_make_state: (url, target, render = 'template', referer) ->
_make_state: (url, target, render = 'template', referer, scope) ->
{
url: url
data:
target: target
render: render
referer: referer
scope: scope
}

_reset_state: (state) ->
state.data = {} unless state.data?
state.data.target = null
state.data.render = 'template'
state.data.scope = null
state

_try_target: ($target) ->
Expand All @@ -105,4 +108,4 @@ class Page


window._Wiselinks = {} if window._Wiselinks == undefined
window._Wiselinks.Page = Page
window._Wiselinks.Page = Page
16 changes: 9 additions & 7 deletions lib/assets/javascripts/_request_manager.js.coffee
Expand Up @@ -23,14 +23,16 @@ class RequestManager
headers:
'X-Wiselinks': state.data.render
'X-Wiselinks-Referer': state.data.referer
'X-Wiselinks-Target': state.data.target
'X-Wiselinks-Scope': state.data.scope

dataType: "html"
).done(
(data, status, xhr) ->
self._html_loaded($target, data, status, xhr)
).fail(
(xhr, status, error) ->
self._fail($target, status, state, error, xhr.status, xhr.responseText)
self._fail($target, status, state, error, xhr.status, xhr.responseText, xhr)
).always(
(data_or_xhr, status, xhr_or_error)->
self._always($target, status, state)
Expand All @@ -51,17 +53,17 @@ class RequestManager
xhr.abort()

@redirected = true
$(document).trigger('page:redirected', [$target, state.data.render, url])
$(document).trigger('page:redirected', [$target, state.data.render, url, xhr])
History.replaceState(state.data, document.title, url)

_loading: ($target, state) ->
$(document).trigger('page:loading'
[$target, state.data.render, decodeURI(state.url)]
)

_done: ($target, status, state, data) ->
_done: ($target, status, state, data, xhr) ->
$(document).trigger('page:done'
[$target, status, decodeURI(state.url), data]
[$target, status, decodeURI(state.url), data, xhr]
)

_html_loaded: ($target, data, status, xhr) ->
Expand All @@ -85,12 +87,12 @@ class RequestManager
@_robots(response.robots())
@_link_rel_prev(response.link_rel_prev())
@_link_rel_next(response.link_rel_next())
@_done($target, status, state, response.content())
@_done($target, status, state, response.content(), xhr)
)

_fail: ($target, status, state, error, code, data) ->
_fail: ($target, status, state, error, code, data, xhr) ->
$(document).trigger('page:fail'
[$target, status, decodeURI(state.url), error, code, data]
[$target, status, decodeURI(state.url), error, code, data, xhr]
)

_always: ($target, status, state) ->
Expand Down
6 changes: 3 additions & 3 deletions lib/assets/javascripts/wiselinks.js.coffee
Expand Up @@ -17,8 +17,8 @@ class Wiselinks
enabled: ->
!History.emulated.pushState || @options.html4 == true

load: (url, target, render = 'template') ->
@page.load(url, target, render)
load: (url, target, render = 'template', scope) ->
@page.load(url, target, render, scope)

reload: () ->
@page.reload()
Expand All @@ -34,4 +34,4 @@ class Wiselinks
_try_jquery: ->
throw new Error("[Wiselinks] jQuery is not loaded") unless window.jQuery?

window.Wiselinks = Wiselinks
window.Wiselinks = Wiselinks
8 changes: 8 additions & 0 deletions lib/wiselinks/request.rb
Expand Up @@ -24,6 +24,14 @@ def wiselinks_template?
def wiselinks_partial?
self.wiselinks? && self.headers['X-Wiselinks'] == 'partial'
end

def wiselinks_target
self.headers['X-Wiselinks-Target']
end

def wiselinks_scope
self.headers['X-Wiselinks-Scope']
end
end
end

3 changes: 1 addition & 2 deletions wiselinks.gemspec
Expand Up @@ -19,7 +19,6 @@ Gem::Specification.new do |gem|
gem.require_paths = ["lib"]


gem.add_development_dependency 'rspec'
gem.add_development_dependency 'webmock', '~> 1.9.0'
gem.add_development_dependency 'shoulda'
gem.add_development_dependency 'simplecov'
Expand All @@ -38,4 +37,4 @@ Gem::Specification.new do |gem|

gem.add_development_dependency 'closure-compiler'
gem.add_development_dependency 'coffeelint'
end
end

0 comments on commit 4613768

Please sign in to comment.