From: Joey Hess <joey@kitenet.net>
Date: Thu, 16 Jun 2011 00:02:14 +0000 (-0400)
Subject: let thru HTTP_ACCEPT
X-Git-Tag: 3.20110707~60^2~3
X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/commitdiff_plain/d4a0732752e79b57509cee33001ab757132366c5

let thru HTTP_ACCEPT

Needed for attachment to return json when requested.

I think some browsers send Accept: * , so I made sure to check that json
was explicitly listed as to be accepted, as well as having a high
priority.
---

diff --git a/IkiWiki/Plugin/attachment.pm b/IkiWiki/Plugin/attachment.pm
index 6004a0982..4af9ac92b 100644
--- a/IkiWiki/Plugin/attachment.pm
+++ b/IkiWiki/Plugin/attachment.pm
@@ -252,22 +252,25 @@ sub attachment_store {
 			IkiWiki::fast_file_copy($tempfile, $filename, $fh, @_);
 		});
 	}
-	
+
 	# Return JSON response for the jquery file upload widget.
-	eval q{use JSON};
-	error $@ if $@;
-	print "Content-type: application/json\n\n";
-	my $size=-s $dest."/".$filename;
-	print to_json([
-		{
-			name => $filename,
-			size => $size,
-			humansize => IkiWiki::Plugin::filecheck::humansize($size),
-			stored_msg => stored_msg(),
-			
-		}
-	]);
-	exit 0;
+	if ($q->Accept("application/json") >= 1.0 &&
+	    grep { /application\/json/i } $q->Accept) {
+		eval q{use JSON};
+		error $@ if $@;
+		print "Content-type: application/json\n\n";
+		my $size=-s $dest."/".$filename;
+		print to_json([
+			{
+				name => $filename,
+				size => $size,
+				humansize => IkiWiki::Plugin::filecheck::humansize($size),
+				stored_msg => stored_msg(),
+				
+			}
+		]);
+		exit 0;
+	}
 }
 
 # Save all stored attachments for a page.
diff --git a/IkiWiki/Wrapper.pm b/IkiWiki/Wrapper.pm
index 4fe2d8111..d39a3ea40 100644
--- a/IkiWiki/Wrapper.pm
+++ b/IkiWiki/Wrapper.pm
@@ -49,7 +49,7 @@ sub gen_wrapper () {
 	push @envsave, qw{REMOTE_ADDR QUERY_STRING REQUEST_METHOD REQUEST_URI
 	               CONTENT_TYPE CONTENT_LENGTH GATEWAY_INTERFACE
 		       HTTP_COOKIE REMOTE_USER HTTPS REDIRECT_STATUS
-		       HTTP_HOST SERVER_PORT HTTPS
+		       HTTP_HOST SERVER_PORT HTTPS HTTP_ACCEPT
 		       REDIRECT_URL} if $config{cgi};
 	my $envsave="";
 	foreach my $var (@envsave) {
diff --git a/debian/changelog b/debian/changelog
index cb0ee6856..5900b4e5f 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -3,6 +3,12 @@ ikiwiki (3.20110609) UNRELEASED; urgency=low
   * userlist: New plugin, lets admins see a list of users and their info.
   * aggregate: Improve checking for too long aggregated filenames.
   * Updated to jQuery 1.6.1.
+  * attachment: Speed up multiple file uploads by storing uploaded files
+    in a staging area until the page is saved/previewed, rather than
+    refreshing the site after each upload.
+  * attachment: Files can be dragged into the edit page to upload them.
+    Multiple file upload support. Upload progress bars.
+    Impemented using the jQuery-File-Upload widget.
 
  -- Joey Hess <joeyh@debian.org>  Thu, 09 Jun 2011 10:06:44 -0400