From 0625197d132c54e08896447299f7aaea580da537 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Thu, 11 Sep 2014 10:48:03 -0400 Subject: [PATCH] Preserve refs in commits, tree, & docs navbar links --- src/main/java/com/gitblit/wicket/pages/DocsPage.java | 16 +++++++++------- src/main/java/com/gitblit/wicket/pages/RepositoryPage.java | 24 ++++++++++++++++++------ src/main/java/com/gitblit/wicket/GitBlitWebApp.java | 2 +- 3 files changed, 28 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/gitblit/wicket/GitBlitWebApp.java b/src/main/java/com/gitblit/wicket/GitBlitWebApp.java index 38dbf57..0c97861 100644 --- a/src/main/java/com/gitblit/wicket/GitBlitWebApp.java +++ b/src/main/java/com/gitblit/wicket/GitBlitWebApp.java @@ -208,7 +208,7 @@ mount("/mytickets", MyTicketsPage.class, "r", "h"); // setup the markup document urls - mount("/docs", DocsPage.class, "r"); + mount("/docs", DocsPage.class, "r", "h"); mount("/doc", DocPage.class, "r", "h", "f"); // federation urls diff --git a/src/main/java/com/gitblit/wicket/pages/DocsPage.java b/src/main/java/com/gitblit/wicket/pages/DocsPage.java index a3d0f21..97b1604 100644 --- a/src/main/java/com/gitblit/wicket/pages/DocsPage.java +++ b/src/main/java/com/gitblit/wicket/pages/DocsPage.java @@ -49,11 +49,14 @@ public DocsPage(PageParameters params) { super(params); + String objectId = WicketUtils.getObject(params); + MarkupProcessor processor = new MarkupProcessor(app().settings(), app().xssFilter()); Repository r = getRepository(); - RevCommit head = JGitUtils.getCommit(r, null); + RevCommit head = JGitUtils.getCommit(r, objectId); final String commitId = getBestCommitId(head); + List<String> extensions = processor.getAllExtensions(); List<PathModel> paths = JGitUtils.getDocuments(r, extensions); @@ -127,7 +130,6 @@ } // document list - final String id = getBestCommitId(head); final ByteFormat byteFormat = new ByteFormat(); Fragment docs = new Fragment("documents", "documentsFragment", this); ListDataProvider<PathModel> pathsDp = new ListDataProvider<PathModel>(paths); @@ -141,17 +143,17 @@ item.add(WicketUtils.newImage("docIcon", "file_world_16x16.png")); item.add(new Label("docSize", byteFormat.format(entry.size))); item.add(new LinkPanel("docName", "list", StringUtils.stripFileExtension(entry.name), - DocPage.class, WicketUtils.newPathParameter(repositoryName, id, entry.path))); + DocPage.class, WicketUtils.newPathParameter(repositoryName, commitId, entry.path))); // links item.add(new BookmarkablePageLink<Void>("view", DocPage.class, WicketUtils - .newPathParameter(repositoryName, id, entry.path))); - String rawUrl = RawServlet.asLink(getContextUrl(), repositoryName, id, entry.path); + .newPathParameter(repositoryName, commitId, entry.path))); + String rawUrl = RawServlet.asLink(getContextUrl(), repositoryName, commitId, entry.path); item.add(new ExternalLink("raw", rawUrl)); item.add(new BookmarkablePageLink<Void>("blame", BlamePage.class, WicketUtils - .newPathParameter(repositoryName, id, entry.path))); + .newPathParameter(repositoryName, commitId, entry.path))); item.add(new BookmarkablePageLink<Void>("history", HistoryPage.class, WicketUtils - .newPathParameter(repositoryName, id, entry.path))); + .newPathParameter(repositoryName, commitId, entry.path))); WicketUtils.setAlternatingBackground(item, counter); counter++; } diff --git a/src/main/java/com/gitblit/wicket/pages/RepositoryPage.java b/src/main/java/com/gitblit/wicket/pages/RepositoryPage.java index 2bd9dc6..b3250a6 100644 --- a/src/main/java/com/gitblit/wicket/pages/RepositoryPage.java +++ b/src/main/java/com/gitblit/wicket/pages/RepositoryPage.java @@ -191,14 +191,26 @@ } private List<NavLink> registerNavLinks() { + Repository r = getRepository(); + RepositoryModel model = getRepositoryModel(); + PageParameters params = null; + PageParameters objectParams = null; if (!StringUtils.isEmpty(repositoryName)) { params = WicketUtils.newRepositoryParameter(getRepositoryName()); + objectParams = params; + + // preserve the objectid iff the objectid directly (or indirectly) refers to a ref + if (!StringUtils.isEmpty(objectId)) { + RevCommit commit = JGitUtils.getCommit(r, objectId); + String bestId = getBestCommitId(commit); + if (!commit.getName().equals(bestId)) { + objectParams = WicketUtils.newObjectParameter(getRepositoryName(), bestId); + } + } } List<NavLink> navLinks = new ArrayList<NavLink>(); - Repository r = getRepository(); - RepositoryModel model = getRepositoryModel(); // standard links if (RefLogUtils.getRefLogBranch(r) == null) { @@ -213,13 +225,13 @@ return navLinks; } - navLinks.add(new PageNavLink("gb.commits", LogPage.class, params)); - navLinks.add(new PageNavLink("gb.tree", TreePage.class, 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()); navLinks.add(new PageNavLink("gb.tickets", TicketsPage.class, tParams)); } - navLinks.add(new PageNavLink("gb.docs", DocsPage.class, params, true)); + navLinks.add(new PageNavLink("gb.docs", DocsPage.class, objectParams, true)); if (app().settings().getBoolean(Keys.web.allowForking, true)) { navLinks.add(new PageNavLink("gb.forks", ForksPage.class, params, true)); } @@ -453,7 +465,7 @@ // find first branch match for (RefModel ref : JGitUtils.getLocalBranches(r, false, -1)) { if (ref.getObjectId().getName().equals(id)) { - return ref.getName(); + return Repository.shortenRefName(ref.getName()); } } -- Gitblit v1.9.1