From e1908933fa9968b11e9ea03d88730aee3140534b Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Tue, 15 Oct 2013 09:43:09 -0400 Subject: [PATCH] Fix error on generating activity page when there is no activity --- src/main/java/com/gitblit/wicket/pages/RawPage.java | 32 +++++++++++++++++++++++++++----- 1 files changed, 27 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/gitblit/wicket/pages/RawPage.java b/src/main/java/com/gitblit/wicket/pages/RawPage.java index 27a01f9..5026871 100644 --- a/src/main/java/com/gitblit/wicket/pages/RawPage.java +++ b/src/main/java/com/gitblit/wicket/pages/RawPage.java @@ -16,12 +16,15 @@ package com.gitblit.wicket.pages; import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; import java.util.HashMap; import java.util.Map; import org.apache.wicket.IRequestTarget; import org.apache.wicket.PageParameters; import org.apache.wicket.RequestCycle; +import org.apache.wicket.protocol.http.WebRequest; import org.apache.wicket.protocol.http.WebResponse; import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.revwalk.RevCommit; @@ -43,7 +46,7 @@ public RawPage(final PageParameters params) { super(params); - + if (!params.containsKey("r")) { error(getString("gb.repositoryNotSpecified")); redirectToInterceptPage(new RepositoriesPage()); @@ -64,7 +67,7 @@ String[] encodings = GitBlit.getEncodings(); GitBlitWebSession session = GitBlitWebSession.get(); UserModel user = session.getUser(); - + RepositoryModel model = GitBlit.self().getRepositoryModel(user, repositoryName); if (model == null) { // user does not have permission @@ -72,7 +75,7 @@ redirectToInterceptPage(new RepositoriesPage()); return; } - + Repository r = GitBlit.self().getRepository(repositoryName); if (r == null) { error(getString("gb.canNotLoadRepository") + " " + repositoryName); @@ -134,8 +137,27 @@ // binary blobs (download) byte[] binary = JGitUtils.getByteContent(r, commit.getTree(), blobPath, true); response.setContentLength(binary.length); - response.setContentType("application/octet-stream"); - response.setHeader("Content-Disposition", "attachment; filename=\"" + filename + "\""); + response.setContentType("application/octet-stream; charset=UTF-8"); + + try { + WebRequest request = (WebRequest) requestCycle.getRequest(); + String userAgent = request.getHttpServletRequest().getHeader("User-Agent"); + + if (userAgent != null && userAgent.indexOf("MSIE 5.5") > -1) { + response.setHeader("Content-Disposition", "filename=\"" + + URLEncoder.encode(filename, "UTF-8") + "\""); + } else if (userAgent != null && userAgent.indexOf("MSIE") > -1) { + response.setHeader("Content-Disposition", "attachment; filename=\"" + + URLEncoder.encode(filename, "UTF-8") + "\""); + } else { + response.setHeader("Content-Disposition", "attachment; filename=\"" + + new String(filename.getBytes("UTF-8"), "latin1") + "\""); + } + } + catch (UnsupportedEncodingException e) { + response.setHeader("Content-Disposition", "attachment; filename=\"" + filename + "\""); + } + try { response.getOutputStream().write(binary); } catch (IOException e) { -- Gitblit v1.9.1