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 | 62 ++++++++++++++++++++++--------- 1 files changed, 44 insertions(+), 18 deletions(-) diff --git a/src/com/gitblit/wicket/pages/RepositoryPage.java b/src/com/gitblit/wicket/pages/RepositoryPage.java index 85719f1..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; @@ -41,13 +40,17 @@ import com.gitblit.Constants; import com.gitblit.GitBlit; import com.gitblit.Keys; +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; @@ -70,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) { @@ -123,6 +126,12 @@ if (model.useDocs) { pages.put("docs", new PageRegistration("gb.docs", DocsPage.class, params)); } + if (JGitUtils.getPagesBranch(r) != null) { + OtherPageLink pagesLink = new OtherPageLink("gb.pages", PagesServlet.asLink( + getRequest().getRelativePathPrefixToContextRoot(), repositoryName, null)); + pages.put("pages", pagesLink); + } + // Conditionally add edit link final boolean showAdmin; if (GitBlit.getBoolean(Keys.web.authenticateAdminPages, true)) { @@ -142,9 +151,18 @@ @Override protected void setupPage(String repositoryName, String pageName) { - add(new LinkPanel("repositoryName", null, repositoryName, SummaryPage.class, - WicketUtils.newRepositoryParameter(repositoryName))); + add(new LinkPanel("repositoryName", null, StringUtils.stripDotGit(repositoryName), + SummaryPage.class, WicketUtils.newRepositoryParameter(repositoryName))); add(new Label("pageName", pageName)); + if (getRepositoryModel().isBare) { + add(new Label("workingCopy").setVisible(false)); + } else { + Fragment fragment = new Fragment("workingCopy", "workingCopyFragment", this); + Label lbl = new Label("workingCopy", getString("gb.workingCopy")); + WicketUtils.setHtmlTooltip(lbl, getString("gb.workingCopyWarning")); + fragment.add(lbl); + add(fragment); + } super.setupPage(repositoryName, pageName); } @@ -159,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; @@ -172,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; @@ -183,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; @@ -224,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); @@ -245,7 +263,8 @@ } } - protected void setPersonSearchTooltip(Component component, String value, Constants.SearchType searchType) { + protected void setPersonSearchTooltip(Component component, String value, + Constants.SearchType searchType) { if (searchType.equals(Constants.SearchType.AUTHOR)) { WicketUtils.setHtmlTooltip(component, getString("gb.searchForAuthor") + " " + value); } else if (searchType.equals(Constants.SearchType.COMMITTER)) { @@ -295,20 +314,21 @@ 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; private final IModel<String> searchBoxModel = new Model<String>(""); - private final IModel<Constants.SearchType> searchTypeModel = new Model<Constants.SearchType>(Constants.SearchType.COMMIT); + private final IModel<Constants.SearchType> searchTypeModel = new Model<Constants.SearchType>( + 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())); + DropDownChoice<Constants.SearchType> searchType = new DropDownChoice<Constants.SearchType>( + "searchType", Arrays.asList(Constants.SearchType.values())); searchType.setModel(searchTypeModel); add(searchType.setVisible(GitBlit.getBoolean(Keys.web.showSearchTypeSelection, false))); TextField<String> searchBox = new TextField<String>("searchBox", searchBoxModel); @@ -327,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()) { @@ -338,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