summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJames Moger <james.moger@gitblit.com>2014-09-11 10:48:03 -0400
committerJames Moger <james.moger@gitblit.com>2014-09-11 10:48:03 -0400
commit0625197d132c54e08896447299f7aaea580da537 (patch)
treeb2a38b11d9466c1ce74b7597b1e4ad8045132767 /src
parentbb2d22d38555efde80536d0d8b15db4a262a5035 (diff)
downloadgitblit-0625197d132c54e08896447299f7aaea580da537.tar.gz
gitblit-0625197d132c54e08896447299f7aaea580da537.zip
Preserve refs in commits, tree, & docs navbar links
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/gitblit/wicket/GitBlitWebApp.java2
-rw-r--r--src/main/java/com/gitblit/wicket/pages/DocsPage.java16
-rw-r--r--src/main/java/com/gitblit/wicket/pages/RepositoryPage.java24
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 38dbf57d..0c978618 100644
--- a/src/main/java/com/gitblit/wicket/GitBlitWebApp.java
+++ b/src/main/java/com/gitblit/wicket/GitBlitWebApp.java
@@ -208,7 +208,7 @@ public class GitBlitWebApp extends WebApplication implements GitblitWicketApp {
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 a3d0f214..97b16049 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 class DocsPage extends RepositoryPage {
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 @@ public class DocsPage extends RepositoryPage {
}
// 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 @@ public class DocsPage extends RepositoryPage {
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 2bd9dc6c..b3250a6b 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 @@ public abstract class RepositoryPage extends RootPage {
}
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 @@ public abstract class RepositoryPage extends RootPage {
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 @@ public abstract class RepositoryPage extends RootPage {
// 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());
}
}