new way of handling ajax post requests (redirecting if everything is fine)
This commit is contained in:
parent
c171e49093
commit
3fffe7bd91
@ -3,4 +3,6 @@ Locomotive.Views.Pages ||= {}
|
|||||||
class Locomotive.Views.Pages.NewView extends Locomotive.Views.Pages.FormView
|
class Locomotive.Views.Pages.NewView extends Locomotive.Views.Pages.FormView
|
||||||
|
|
||||||
save: (event) ->
|
save: (event) ->
|
||||||
# TODO
|
@save_in_ajax event,
|
||||||
|
on_success: (response, xhr) ->
|
||||||
|
window.location.href = xhr.getResponseHeader('location')
|
@ -29,14 +29,13 @@ class Locomotive.Views.Shared.FormView extends Backbone.View
|
|||||||
|
|
||||||
@model.save {},
|
@model.save {},
|
||||||
success: (model, response, xhr) =>
|
success: (model, response, xhr) =>
|
||||||
console.log(response)
|
window.response = xhr
|
||||||
console.log(xhr)
|
|
||||||
|
|
||||||
$.growl('success', xhr.getResponseHeader('X-Message'))
|
$.growl('success', xhr.getResponseHeader('X-Message')) if xhr.getResponseHeader('X-Message')?
|
||||||
|
|
||||||
model.attributes = previous_attributes
|
model.attributes = previous_attributes
|
||||||
|
|
||||||
options.on_success(response) if options.on_success
|
options.on_success(response, xhr) if options.on_success
|
||||||
|
|
||||||
error: (model, xhr) =>
|
error: (model, xhr) =>
|
||||||
$.growl('error', xhr.getResponseHeader('X-Message'))
|
$.growl('error', xhr.getResponseHeader('X-Message'))
|
||||||
@ -89,7 +88,12 @@ class Locomotive.Views.Shared.FormView extends Backbone.View
|
|||||||
|
|
||||||
show_error: (attribute, message, html) ->
|
show_error: (attribute, message, html) ->
|
||||||
input = @$("##{@model.paramRoot}_#{attribute}")
|
input = @$("##{@model.paramRoot}_#{attribute}")
|
||||||
input.after(html) if input.size() > 0
|
|
||||||
|
return unless input.size() > 0
|
||||||
|
|
||||||
|
anchor = input.parent().find('.error-anchor')
|
||||||
|
anchor = input if anchor.size() == 0
|
||||||
|
anchor.after(html)
|
||||||
|
|
||||||
_enable_checkbox: (name, options) ->
|
_enable_checkbox: (name, options) ->
|
||||||
@$('li#page_' + name + '_input input[type=checkbox]').checkToggle
|
@$('li#page_' + name + '_input input[type=checkbox]').checkToggle
|
||||||
|
@ -28,7 +28,9 @@ class Locomotive.Views.Sites.NewView extends Locomotive.Views.Shared.FormView
|
|||||||
@$('#site_domains_input label').after(@domains_view.render().el)
|
@$('#site_domains_input label').after(@domains_view.render().el)
|
||||||
|
|
||||||
save: (event) ->
|
save: (event) ->
|
||||||
@save_in_ajax(event)
|
@save_in_ajax event,
|
||||||
|
on_success: (response, xhr) ->
|
||||||
|
window.location.href = xhr.getResponseHeader('location')
|
||||||
|
|
||||||
show_error: (attribute, message, html) ->
|
show_error: (attribute, message, html) ->
|
||||||
if attribute == 'domains'
|
if attribute == 'domains'
|
||||||
|
@ -219,12 +219,16 @@ form.formtastic {
|
|||||||
p {
|
p {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
width: auto;
|
width: auto;
|
||||||
|
line-height: 14px;
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
padding: 3px 12px 4px 30px;
|
padding: 3px 12px 4px 27px;
|
||||||
|
|
||||||
background: #cd0f19 image-url("locomotive//form/icons/error.png") no-repeat 10px 6px;
|
@include box-shadow(rgba(0, 0, 0, 0.4) 2px 2px 2px 0);
|
||||||
|
@include border-radius(3px);
|
||||||
|
background: #cd0f19 image-url("locomotive/form/icons/error.png") no-repeat 7px center;
|
||||||
|
|
||||||
color: #fff !important;
|
color: #fff !important;
|
||||||
|
font-size: 12px;
|
||||||
@include single-text-shadow(#000, 0px, 1px, 1px);
|
@include single-text-shadow(#000, 0px, 1px, 1px);
|
||||||
}
|
}
|
||||||
} // div.inline-errors
|
} // div.inline-errors
|
||||||
|
@ -14,7 +14,7 @@ module Locomotive
|
|||||||
label_html <<
|
label_html <<
|
||||||
template.content_tag(:em, "http://") <<
|
template.content_tag(:em, "http://") <<
|
||||||
builder.text_field(method, input_html_options) <<
|
builder.text_field(method, input_html_options) <<
|
||||||
template.content_tag(:em, ".#{domain}")
|
template.content_tag(:em, ".#{domain}", :class => 'error-anchor')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -72,7 +72,7 @@ module Locomotive
|
|||||||
else
|
else
|
||||||
slugs = self.self_and_ancestors.sort_by(&:depth).map(&:slug)
|
slugs = self.self_and_ancestors.sort_by(&:depth).map(&:slug)
|
||||||
slugs.shift unless slugs.size == 1
|
slugs.shift unless slugs.size == 1
|
||||||
File.join slugs
|
File.join slugs.compact
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -9,7 +9,6 @@ module Locomotive
|
|||||||
end
|
end
|
||||||
|
|
||||||
def to_json
|
def to_json
|
||||||
Rails.logger.debug "TO JSON !!!!"
|
|
||||||
if get?
|
if get?
|
||||||
display resource
|
display resource
|
||||||
elsif has_errors?
|
elsif has_errors?
|
||||||
@ -18,9 +17,8 @@ module Locomotive
|
|||||||
display resource.errors, :status => :unprocessable_entity
|
display resource.errors, :status => :unprocessable_entity
|
||||||
end
|
end
|
||||||
elsif post?
|
elsif post?
|
||||||
with_flash_message do |message|
|
set_flash_message!
|
||||||
display resource, :location => api_location
|
display resource, :location => api_location
|
||||||
end
|
|
||||||
elsif put?
|
elsif put?
|
||||||
with_flash_message do |message|
|
with_flash_message do |message|
|
||||||
display resource, :status => :ok, :location => api_location
|
display resource, :status => :ok, :location => api_location
|
||||||
|
2
vendor/assets/javascripts/backbone.sync.js
vendored
2
vendor/assets/javascripts/backbone.sync.js
vendored
@ -47,6 +47,8 @@
|
|||||||
if (typeof(FormData) != 'undefined') { // XHR2
|
if (typeof(FormData) != 'undefined') { // XHR2
|
||||||
var formData = new FormData();
|
var formData = new FormData();
|
||||||
|
|
||||||
|
formData.append('xhr', true); // fix a bug with POW which happens to not like empty form
|
||||||
|
|
||||||
var _buildParams = function(prefix, obj, fn) { // code grabbed from jquery
|
var _buildParams = function(prefix, obj, fn) { // code grabbed from jquery
|
||||||
if (jQuery.isArray(obj)) {
|
if (jQuery.isArray(obj)) {
|
||||||
jQuery.each(obj, function(i, v) {
|
jQuery.each(obj, function(i, v) {
|
||||||
|
Loading…
Reference in New Issue
Block a user