aboutsummaryrefslogtreecommitdiff
path: root/IkiWiki
diff options
context:
space:
mode:
authorJoey Hess <joey@kitenet.net>2011-06-17 15:17:20 -0400
committerJoey Hess <joey@kitenet.net>2011-06-17 15:17:20 -0400
commitace3665f811774a6eb64b908bf88178b0c8f3689 (patch)
treef79dd0ad118072d74a616586cdf26b89e93ec362 /IkiWiki
parentd82fa99426616f9cbedf43f03a3445e1b09287f6 (diff)
downloadikiwiki-ace3665f811774a6eb64b908bf88178b0c8f3689.tar
ikiwiki-ace3665f811774a6eb64b908bf88178b0c8f3689.tar.gz
improve detection of ajax request
Firefox sent an accept header for application/xml, not application/json, and also weakened the priority to 0.8. So that stuff is not to be trusted; instead I found a better way: When an ajax upload is *not* being made, the Upload Attachment button will be used, so enable ajax if an upload is being made without that button having been used. Also, testing with firefox revealed it refused to process a response that was type application/json, and checking the demo page for the jquery file upload plugin, it actually returns the json with type text/html. Ugh. Followed suite. Now tested with: chromium, chromium (w/o js), firefox, firefox (w/o js), and w3m.
Diffstat (limited to 'IkiWiki')
-rw-r--r--IkiWiki/Plugin/attachment.pm14
1 files changed, 7 insertions, 7 deletions
diff --git a/IkiWiki/Plugin/attachment.pm b/IkiWiki/Plugin/attachment.pm
index 490014a7e..4d6dee23e 100644
--- a/IkiWiki/Plugin/attachment.pm
+++ b/IkiWiki/Plugin/attachment.pm
@@ -228,7 +228,7 @@ sub attachment_store {
check_canattach($session, $final_filename, $tempfile);
};
if ($@) {
- json_response($q, $dest."/".$filename, $@);
+ json_response($q, $form, $dest."/".$filename, $@);
error $@;
}
@@ -259,7 +259,7 @@ sub attachment_store {
});
}
- json_response($q, $dest."/".$filename, stored_msg());
+ json_response($q, $form, $dest."/".$filename, stored_msg());
}
# Save all stored attachments for a page.
@@ -360,17 +360,17 @@ sub stored_msg {
gettext("just uploaded");
}
-sub json_response ($$$) {
+sub json_response ($$$$) {
my $q=shift;
+ my $form=shift;
my $filename=shift;
my $stored_msg=shift;
- # for the jquery file upload widget
- if ($q->Accept("application/json") >= 1.0 &&
- grep { /application\/json/i } $q->Accept) {
+ if (! defined $form->submitted ||
+ $form->submitted ne "Upload Attachment") {
eval q{use JSON};
error $@ if $@;
- print "Content-type: application/json\n\n";
+ print "Content-type: text/html\n\n";
my $size=-s $filename;
print to_json([
{