summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Foster <savetheinternet@tinyboard.org>2013-09-15 14:54:18 +1000
committerMichael Foster <savetheinternet@tinyboard.org>2013-09-15 14:54:18 +1000
commit30245c85f87dcdb1f1269b8949be6e6496aaf6cf (patch)
treeabbbc5bcc6b5e92b1942d52d7b1a221bac78b885
parent0367914e5388a27b829b27ea6058e251b88703d2 (diff)
failsafe
-rw-r--r--js/ajax.js20
1 files changed, 17 insertions, 3 deletions
diff --git a/js/ajax.js b/js/ajax.js
index 5c182add..09c35157 100644
--- a/js/ajax.js
+++ b/js/ajax.js
@@ -12,15 +12,20 @@
*/
$(window).ready(function() {
+ var do_not_ajax = false;
+
var setup_form = function($form) {
$form.submit(function() {
+ if (do_not_ajax)
+ return true;
var form = this;
var submit_txt = $(this).find('input[type="submit"]').val();
- if (typeof FormData == 'undefined')
+ if (window.FormData === undefined)
return true;
var formData = new FormData(this);
formData.append('json_response', '1');
+ formData.append('post', $(this).find('input[type="submit"]').val());
var updateProgress = function(e) {
$(form).find('input[type="submit"]').val(_('Posting... (#%)').replace('#', Math.round(e.position / e.total * 100)));
@@ -78,7 +83,16 @@ $(window).ready(function() {
error: function(xhr, status, er) {
// An error occured
// TODO
- alert('Something went wrong!');
+ do_not_ajax = true;
+ $(form).find('input[type="submit"]').each(function() {
+ var $replacement = $('<input type="hidden">');
+ $replacement.attr('name', $(this).attr('name'));
+ $replacement.val(submit_txt);
+ $(this)
+ .after($replacement)
+ .replaceWith($('<input type="button">').val(submit_txt));
+ });
+ $(form).submit();
},
// Form data
data: formData,
@@ -94,7 +108,7 @@ $(window).ready(function() {
});
};
setup_form($('form[name="post"]'));
- $(window).on('quick-reply', function(e, quickForm) {
+ $(window).on('quick-reply', function() {
setup_form($('form#quick-reply'));
});
});