From 977ac7a672523c110a0c807ca18181f795457089 Mon Sep 17 00:00:00 2001 From: qxo <49526356@qq.com> Date: Sat, 19 Aug 2017 09:37:01 +0800 Subject: [PATCH] links suppoert current default rev context from request 'h' --- .../java/com/gitblit/wicket/WicketUtils.java | 42 ++++++++++++------- .../com/gitblit/wicket/pages/ComparePage.java | 4 +- .../gitblit/wicket/pages/RepositoryPage.java | 4 ++ 3 files changed, 33 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/gitblit/wicket/WicketUtils.java b/src/main/java/com/gitblit/wicket/WicketUtils.java index 99c1e08f0..100e1de7c 100644 --- a/src/main/java/com/gitblit/wicket/WicketUtils.java +++ b/src/main/java/com/gitblit/wicket/WicketUtils.java @@ -29,6 +29,7 @@ import org.apache.wicket.Component; import org.apache.wicket.PageParameters; import org.apache.wicket.Request; +import org.apache.wicket.RequestCycle; import org.apache.wicket.behavior.AttributeAppender; import org.apache.wicket.behavior.HeaderContributor; import org.apache.wicket.behavior.SimpleAttributeModifier; @@ -449,32 +450,43 @@ public static PageParameters newBlobDiffParameter(String repositoryName, public static PageParameters newSearchParameter(String repositoryName, String commitId, String search, Constants.SearchType type) { Map parameterMap = new HashMap(); - if (StringUtils.isEmpty(commitId)) { - parameterMap.put("r", repositoryName); - parameterMap.put("s", search); - parameterMap.put("st", type.name()); - return new PageParameters(parameterMap); - } + setCommitIdIf(commitId, parameterMap); parameterMap.put("r", repositoryName); - parameterMap.put("h", commitId); parameterMap.put("s", search); parameterMap.put("st", type.name()); return new PageParameters(parameterMap); } + public static void setCommitIdIf(String commitId, Map parameterMap) { + if (StringUtils.isEmpty(commitId)) { + final String branch = getRequestParameter("h"); + if (!StringUtils.isEmpty(branch)) { + parameterMap.put("h", branch); + } + }else{ + parameterMap.put("h", commitId); + } + } + + protected static String getRequestParameter(final String key) { + final HttpServletRequest req = ((WebRequest)RequestCycle.get().getRequest()).getHttpServletRequest(); + final String branch = req == null ? null : req.getParameter(key); + return branch; + } + public static void setCommitIdIf(final PageParameters params) { + if( params.get("h") == null ){ + final String branch = getRequestParameter("h"); + if (!StringUtils.isEmpty(branch)) { + params.put("h", branch); + } + } + } public static PageParameters newSearchParameter(String repositoryName, String commitId, String search, Constants.SearchType type, int pageNumber) { Map parameterMap = new HashMap(); - if (StringUtils.isEmpty(commitId)) { - parameterMap.put("r", repositoryName); - parameterMap.put("s", search); - parameterMap.put("st", type.name()); - parameterMap.put("pg", String.valueOf(pageNumber)); - return new PageParameters(parameterMap); - } + setCommitIdIf(commitId, parameterMap); parameterMap.put("r", repositoryName); - parameterMap.put("h", commitId); parameterMap.put("s", search); parameterMap.put("st", type.name()); parameterMap.put("pg", String.valueOf(pageNumber)); diff --git a/src/main/java/com/gitblit/wicket/pages/ComparePage.java b/src/main/java/com/gitblit/wicket/pages/ComparePage.java index 7e7ac2f5d..e3c491136 100644 --- a/src/main/java/com/gitblit/wicket/pages/ComparePage.java +++ b/src/main/java/com/gitblit/wicket/pages/ComparePage.java @@ -78,7 +78,8 @@ public ComparePage(PageParameters params) { Repository r = getRepository(); RepositoryModel repository = getRepositoryModel(); - if (StringUtils.isEmpty(objectId)) { + String[] parts = StringUtils.isEmpty(objectId) ? null : objectId.split("\\.\\."); + if ( parts == null || parts.length < 2) { // seleciton form add(new Label("comparison").setVisible(false)); } else { @@ -89,7 +90,6 @@ public ComparePage(PageParameters params) { RevCommit fromCommit; RevCommit toCommit; - String[] parts = objectId.split("\\.\\."); if (parts[0].startsWith("refs/") && parts[1].startsWith("refs/")) { // set the ref models fromRefId.setObject(parts[0]); diff --git a/src/main/java/com/gitblit/wicket/pages/RepositoryPage.java b/src/main/java/com/gitblit/wicket/pages/RepositoryPage.java index 36c5ae16c..e1724ea6c 100644 --- a/src/main/java/com/gitblit/wicket/pages/RepositoryPage.java +++ b/src/main/java/com/gitblit/wicket/pages/RepositoryPage.java @@ -229,10 +229,14 @@ private List registerNavLinks() { return navLinks; } + if( params != null ){ + WicketUtils.setCommitIdIf(params); + } navLinks.add(new PageNavLink("gb.commits", LogPage.class, objectParams)); navLinks.add(new PageNavLink("gb.tree", TreePage.class, objectParams)); if (app().tickets().isReady() && (app().tickets().isAcceptingNewTickets(model) || app().tickets().hasTickets(model))) { PageParameters tParams = WicketUtils.newOpenTicketsParameter(getRepositoryName()); + WicketUtils.setCommitIdIf(tParams); navLinks.add(new PageNavLink("gb.tickets", TicketsPage.class, tParams)); } navLinks.add(new PageNavLink("gb.docs", DocsPage.class, objectParams, true));