From b94965e87929c6b4e42f9a2078dc0d910cc2637d Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Wed, 09 May 2012 07:59:00 -0400
Subject: [PATCH] Merge pull request #17 from peterloron/master

---
 src/com/gitblit/wicket/pages/RepositoryPage.java |   31 +++++++++++++++++++------------
 1 files changed, 19 insertions(+), 12 deletions(-)

diff --git a/src/com/gitblit/wicket/pages/RepositoryPage.java b/src/com/gitblit/wicket/pages/RepositoryPage.java
index 080a772..3f57fbf 100644
--- a/src/com/gitblit/wicket/pages/RepositoryPage.java
+++ b/src/com/gitblit/wicket/pages/RepositoryPage.java
@@ -27,7 +27,6 @@
 import org.apache.wicket.PageParameters;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.form.DropDownChoice;
-import org.apache.wicket.markup.html.form.StatelessForm;
 import org.apache.wicket.markup.html.form.TextField;
 import org.apache.wicket.markup.html.link.ExternalLink;
 import org.apache.wicket.markup.html.panel.Fragment;
@@ -44,12 +43,14 @@
 import com.gitblit.PagesServlet;
 import com.gitblit.SyndicationServlet;
 import com.gitblit.models.RepositoryModel;
+import com.gitblit.utils.ArrayUtils;
 import com.gitblit.utils.JGitUtils;
 import com.gitblit.utils.StringUtils;
 import com.gitblit.utils.TicgitUtils;
 import com.gitblit.wicket.GitBlitWebSession;
 import com.gitblit.wicket.PageRegistration;
 import com.gitblit.wicket.PageRegistration.OtherPageLink;
+import com.gitblit.wicket.SessionlessForm;
 import com.gitblit.wicket.WicketUtils;
 import com.gitblit.wicket.panels.LinkPanel;
 import com.gitblit.wicket.panels.NavigationPanel;
@@ -72,7 +73,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) {
@@ -176,7 +177,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;
@@ -189,7 +190,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;
@@ -200,7 +201,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;
@@ -241,20 +242,20 @@
 				}
 			}
 			Fragment partial = new Fragment(wicketId, "partialPersonIdent", this);
-			LinkPanel link = new LinkPanel("personName", "list", value, SearchPage.class,
+			LinkPanel link = new LinkPanel("personName", "list", value, GitSearchPage.class,
 					WicketUtils.newSearchParameter(repositoryName, objectId, value, searchType));
 			setPersonSearchTooltip(link, value, searchType);
 			partial.add(link);
 			return partial;
 		} else {
 			Fragment fullPerson = new Fragment(wicketId, "fullPersonIdent", this);
-			LinkPanel nameLink = new LinkPanel("personName", "list", name, SearchPage.class,
+			LinkPanel nameLink = new LinkPanel("personName", "list", name, GitSearchPage.class,
 					WicketUtils.newSearchParameter(repositoryName, objectId, name, searchType));
 			setPersonSearchTooltip(nameLink, name, searchType);
 			fullPerson.add(nameLink);
 
 			LinkPanel addressLink = new LinkPanel("personAddress", "list", "<" + address + ">",
-					SearchPage.class, WicketUtils.newSearchParameter(repositoryName, objectId,
+					GitSearchPage.class, WicketUtils.newSearchParameter(repositoryName, objectId,
 							address, searchType));
 			setPersonSearchTooltip(addressLink, address, searchType);
 			fullPerson.add(addressLink);
@@ -313,7 +314,7 @@
 		return WicketUtils.newObjectParameter(repositoryName, commitId);
 	}
 
-	private static class SearchForm extends StatelessForm<Void> implements Serializable {
+	private class SearchForm extends SessionlessForm<Void> implements Serializable {
 		private static final long serialVersionUID = 1L;
 
 		private final String repositoryName;
@@ -324,7 +325,7 @@
 				Constants.SearchType.COMMIT);
 
 		public SearchForm(String id, String repositoryName) {
-			super(id);
+			super(id, RepositoryPage.this.getClass(), RepositoryPage.this.getPageParameters());
 			this.repositoryName = repositoryName;
 			DropDownChoice<Constants.SearchType> searchType = new DropDownChoice<Constants.SearchType>(
 					"searchType", Arrays.asList(Constants.SearchType.values()));
@@ -346,7 +347,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()) {
@@ -357,7 +357,14 @@
 					break;
 				}
 			}
-			setResponsePage(SearchPage.class,
+			Class<? extends BasePage> searchPageClass = GitSearchPage.class;
+			RepositoryModel model = GitBlit.self().getRepositoryModel(repositoryName);
+			if (GitBlit.getBoolean(Keys.web.allowLuceneIndexing, true)
+					&& !ArrayUtils.isEmpty(model.indexedBranches)) {
+				// this repository is Lucene-indexed
+				searchPageClass = LuceneSearchPage.class;
+			}
+			setResponsePage(searchPageClass,
 					WicketUtils.newSearchParameter(repositoryName, null, searchString, searchType));
 		}
 	}

--
Gitblit v1.9.1