From 45e7d914f3519882c63f60eafd9f746b2d56d967 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Fri, 10 Aug 2012 16:12:51 -0400
Subject: [PATCH] Encode as UTF-8

---
 src/com/gitblit/wicket/pages/RepositoryPage.java |   27 ++++++++++++++++-----------
 1 files changed, 16 insertions(+), 11 deletions(-)

diff --git a/src/com/gitblit/wicket/pages/RepositoryPage.java b/src/com/gitblit/wicket/pages/RepositoryPage.java
index d90d627..4b5e28d 100644
--- a/src/com/gitblit/wicket/pages/RepositoryPage.java
+++ b/src/com/gitblit/wicket/pages/RepositoryPage.java
@@ -32,6 +32,8 @@
 import org.apache.wicket.markup.html.panel.Fragment;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
+import org.apache.wicket.protocol.http.RequestUtils;
+import org.apache.wicket.request.target.basic.RedirectRequestTarget;
 import org.eclipse.jgit.diff.DiffEntry.ChangeType;
 import org.eclipse.jgit.lib.PersonIdent;
 import org.eclipse.jgit.lib.Repository;
@@ -73,7 +75,7 @@
 		objectId = WicketUtils.getObject(params);
 
 		if (StringUtils.isEmpty(repositoryName)) {
-			error(MessageFormat.format("Repository not specified for {0}!", getPageName()), true);
+			error(MessageFormat.format(getString("gb.repositoryNotSpecifiedFor"), getPageName()), true);
 		}
 
 		if (!getRepositoryModel().hasCommits) {
@@ -153,7 +155,7 @@
 	protected void setupPage(String repositoryName, String pageName) {
 		add(new LinkPanel("repositoryName", null, StringUtils.stripDotGit(repositoryName),
 				SummaryPage.class, WicketUtils.newRepositoryParameter(repositoryName)));
-		add(new Label("pageName", pageName));
+		add(new Label("pageName", pageName).setRenderBodyOnly(true));
 		if (getRepositoryModel().isBare) {
 			add(new Label("workingCopy").setVisible(false));
 		} else {
@@ -177,7 +179,7 @@
 		if (r == null) {
 			Repository r = GitBlit.self().getRepository(repositoryName);
 			if (r == null) {
-				error("Can not load repository " + repositoryName, true);
+				error(getString("gb.canNotLoadRepository") + " " + repositoryName, true);
 				return null;
 			}
 			this.r = r;
@@ -190,7 +192,7 @@
 			RepositoryModel model = GitBlit.self().getRepositoryModel(
 					GitBlitWebSession.get().getUser(), repositoryName);
 			if (model == null) {
-				authenticationError("Unauthorized access for repository " + repositoryName);
+				authenticationError(getString("gb.unauthorizedAccessForRepository") + " " + repositoryName);
 				return null;
 			}
 			m = model;
@@ -201,7 +203,7 @@
 	protected RevCommit getCommit() {
 		RevCommit commit = JGitUtils.getCommit(r, objectId);
 		if (commit == null) {
-			error(MessageFormat.format("Failed to find commit \"{0}\" in {1} for {2} page!",
+			error(MessageFormat.format(getString("gb.failedToFindCommit"),
 					objectId, repositoryName, getPageName()), true);
 		}
 		return commit;
@@ -216,11 +218,11 @@
 	}
 
 	protected void addFullText(String wicketId, String text, boolean substituteRegex) {
-		String html;
+		String html = StringUtils.escapeForHtml(text, true);
 		if (substituteRegex) {
 			html = GitBlit.self().processCommitMessage(repositoryName, text);
 		} else {
-			html = StringUtils.breakLinesForHtml(text);
+			html = StringUtils.breakLinesForHtml(html);
 		}
 		add(new Label(wicketId, html).setEscapeModelStrings(false));
 	}
@@ -254,7 +256,7 @@
 			setPersonSearchTooltip(nameLink, name, searchType);
 			fullPerson.add(nameLink);
 
-			LinkPanel addressLink = new LinkPanel("personAddress", "list", "<" + address + ">",
+			LinkPanel addressLink = new LinkPanel("personAddress", "hidden-phone list", "<" + address + ">",
 					GitSearchPage.class, WicketUtils.newSearchParameter(repositoryName, objectId,
 							address, searchType));
 			setPersonSearchTooltip(addressLink, address, searchType);
@@ -347,7 +349,6 @@
 			Constants.SearchType searchType = searchTypeModel.getObject();
 			String searchString = searchBoxModel.getObject();
 			if (searchString == null) {
-				// FIXME IE intermittently has no searchString. Wicket bug?
 				return;
 			}
 			for (Constants.SearchType type : Constants.SearchType.values()) {
@@ -365,8 +366,12 @@
 				// this repository is Lucene-indexed
 				searchPageClass = LuceneSearchPage.class;
 			}
-			setResponsePage(searchPageClass,
-					WicketUtils.newSearchParameter(repositoryName, null, searchString, searchType));
+			// use an absolute url to workaround Wicket-Tomcat problems with
+			// mounted url parameters (issue-111)
+			PageParameters params = WicketUtils.newSearchParameter(repositoryName, null, searchString, searchType);
+			String relativeUrl = urlFor(searchPageClass, params).toString();
+			String absoluteUrl = RequestUtils.toAbsolutePath(relativeUrl);
+			getRequestCycle().setRequestTarget(new RedirectRequestTarget(absoluteUrl));
 		}
 	}
 }

--
Gitblit v1.9.1