Skip to content

Commit

Permalink
Updated the ajax functionality
Browse files Browse the repository at this point in the history
  • Loading branch information
briemens committed Feb 27, 2012
1 parent 6696784 commit 86a4052
Show file tree
Hide file tree
Showing 4 changed files with 449 additions and 139 deletions.
8 changes: 6 additions & 2 deletions crafity.ajax.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,12 @@

crafity.ajax = function (url, success, error) {
// Normalize parameters
var type = "GET", data;
if (typeof url === 'object' && !success && !error) {
success = url.success;
error = url.error;
type = url.type || type;
data = url.data || data;
url = url.url;
}

Expand All @@ -26,8 +29,9 @@
startLoading();
$.ajax({
url: url,
type: "GET",
contentType : "text/html",
type: type,
data: data,
contentType : !data ? "text/html" : undefined,
success: function (data) {
stopLoading();
success.apply(this, arguments);
Expand Down
24 changes: 22 additions & 2 deletions crafity.common.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
* MIT Licensed
*/

(function (crafity) {
(function (crafity, $, window) {
"use strict";

if (!crafity.Exception) {
Expand Down Expand Up @@ -66,4 +66,24 @@
});
};

}(window.crafity = window.crafity || {}));
crafity.catchError = function (callback) {
return function (err) {
try {
if (err && err.stack && err.message) { throw err; }
if (callback) {
return callback.apply(this, arguments);
}
} catch (err) {
window.console.error(err.stack || err.message || err.toString());
return false;
}
};
};

crafity.ready = function (onready) {
$(function () {
onready.apply(this, arguments);
});
};

}(window.crafity = window.crafity || {}, window.jQuery, window));
144 changes: 84 additions & 60 deletions crafity.forms.js
Original file line number Diff line number Diff line change
@@ -1,75 +1,99 @@
$(document).ready(function () {
/*globals window */

$(document.body).delegate("form", "submit", function () {
var form$ = $(this)
, formData = form$.serialize()
, bookmark = form$.hasClass("bookmark");
$("input, textarea", form$).attr("disabled", "disabled");
$("input[type=submit]", form$).val("Sending...");
(function (crafity, $, window) {

$("html").addClass("loading");
$.ajax({
type: 'POST',
url: form$.attr("action") + "?layout=false",
data: formData,
success: function (data, textStatus, xhr) {
if (form$.hasClass("async")) {
try {
var url = xhr.getResponseHeader("x-crafity-location").split("?")[0]
, content$ = $("#content")
, data$ = $("<div/>").append(data);
"use strict";

console.log("SUCCESS arguments", arguments);
console.log("--> url", url);
content$.attr("data-href", url);
if (bookmark) {
crafity.navigation.hashInfo.update("");
crafity.navigation.hashInfo.change({ href: url });
}
crafity.ready(function () {

content$.removeClass('loading').addClass('loaded');
content$.find(".columns").addClass("open");
data$.find(".columns").addClass("open");
return;

$(window.document.body).delegate("form", "submit", function () {
var form$ = $(this)
, formData = form$.serialize()
, bookmark = form$.hasClass("bookmark")
, submitButton$ = $("input[type=submit]", form$)
, target, target$
, href = form$.attr("action");

var showContent = function showContent(data$, url) {
data$ = content$.empty().append(data$.children()[0]);
content$.attr("data-href", url);
$("html").removeClass("not-ready").addClass("ready");
setTimeout(function () {
data$.find(".columns").removeClass("open");
}, 1);
}
$("input, textarea", form$).attr("disabled", "disabled");
submitButton$.val(submitButton$.attr("data-busy-value") || submitButton$.val()).addClass("busy");

if (form$.attr("data-async") === "content") {
target = form$.attr("data-async-target");
target$ = form$.nearest(target);
}

if (!target$ || !target$.length) {
throw new Error("Unable to find target element for form result");
}

$("html").addClass("loading");

$.ajax({
type: 'POST',
url: href + (href.indexOf("?") > -1 ? "&" : "?") + ("layout=false"),
data: formData,
success: function (data, textStatus, xhr) {
if (form$.hasClass("async")) {
try {
var url = xhr.getResponseHeader("x-crafity-location").split("?")[0]
, data$ = $("<div/>").append(data)
, showContent;
console.log("data$", data$);
console.log("SUCCESS arguments", arguments);
console.log("--> url", url);
target$.attr("data-href", url);
if (bookmark) {
crafity.navigation.hashInfo.update("");
crafity.navigation.hashInfo.change({ href: url });
}

if ($("html").hasClass("ready")) {
setTimeout(function () {
target$.removeClass('loading').addClass('loaded');
target$.find(".columns").addClass("open");
data$.find(".columns").addClass("open");

showContent = function showContent(data$, url) {
data$ = target$.empty().append(data$.children()[0]);
target$.attr("data-href", url);
$("html").removeClass("not-ready").addClass("ready");
setTimeout(function () {
data$.find(".columns").removeClass("open");
}, 1);
};

if ($("html").hasClass("ready")) {
setTimeout(function () {
showContent(data$, url);
}, 500);
} else {
showContent(data$, url);
}, 500);
} else {
showContent(data$, url);
}
} catch (err) {
console.log("ERROR arguments", err);
crafity.flash.show({ message: err.message, type: "error" });
}
} catch (err) {
console.log("ERROR arguments", err);
konnektid.flash.show({ message: err.message, type: "error" });
return;
}
return;
}

form$
.closest(".body")
.empty()
.append(data);
form$
.closest(".body")
.empty()
.append(data);

form$.closest("section").removeClass("visible").addClass("visible");
form$.closest("section").removeClass("visible").addClass("visible");

$("html").removeClass("loading");
console.log("postResult", data);
},
error: function (jqXHR, textStatus, errorThrown) {
console.log("jqXHR, textStatus, errorThrown", jqXHR, jqXHR.error(), textStatus, errorThrown);
konnektid.flash.show({ message: jqXHR.responseText, type: jqXHR.status !== 400 ? "error" : "warning" });
}
$("html").removeClass("loading");
console.log("postResult", data);
},
error: function (jqXHR, textStatus, errorThrown) {
console.log("jqXHR, textStatus, errorThrown", jqXHR, jqXHR.error(), textStatus, errorThrown);
crafity.flash.show({ message: jqXHR.responseText, type: jqXHR.status !== 400 ? "error" : "warning" });
}
});
return false;
});
return false;

});

});
}(window.crafity = window.crafity || {}, window.jQuery, window));
Loading

0 comments on commit 86a4052

Please sign in to comment.