Link from repo index page to full log, not skipping the first 5 Bug: https://github.com/google/gitiles/issues/128 Change-Id: I13b9c25eca77f7db7e2198c5086161c6517cac5c
diff --git a/java/com/google/gitiles/LogServlet.java b/java/com/google/gitiles/LogServlet.java index b4a8e03..5d06ae5 100644 --- a/java/com/google/gitiles/LogServlet.java +++ b/java/com/google/gitiles/LogServlet.java
@@ -129,7 +129,8 @@ try (OutputStream out = startRenderStreamingHtml(req, res, "gitiles.logDetail", data)) { Writer w = newWriter(out, res); - new LogSoyData(req, access, pretty).renderStreaming(paginator, null, renderer, w, df); + new LogSoyData(req, access, pretty) + .renderStreaming(paginator, null, renderer, w, df, LogSoyData.FooterBehavior.NEXT); w.flush(); } } catch (RevWalkException e) {
diff --git a/java/com/google/gitiles/LogSoyData.java b/java/com/google/gitiles/LogSoyData.java index 56ddb8f..2f906fe 100644 --- a/java/com/google/gitiles/LogSoyData.java +++ b/java/com/google/gitiles/LogSoyData.java
@@ -49,6 +49,15 @@ Field.TAGS); private static final ImmutableSet<Field> VERBOSE_FIELDS = Field.setOf(FIELDS, Field.DIFF_TREE); + /** Behavior for the footer link when rendering streaming log data. */ + public enum FooterBehavior { + /** "Next" link that skips commits in the current view. */ + NEXT, + + /** "More" link that starts from HEAD. */ + LOG_HEAD; + } + private final HttpServletRequest req; private final GitilesView view; private final Set<Field> fields; @@ -70,7 +79,8 @@ @Nullable String revision, Renderer renderer, Writer out, - DateFormatter df) + DateFormatter df, + FooterBehavior footerBehavior) throws IOException { renderer .newRenderer("gitiles.logEntriesHeader") @@ -91,7 +101,7 @@ renderer .newRenderer("gitiles.logEntriesFooter") - .setData(toFooterSoyData(paginator, revision)) + .setData(toFooterSoyData(paginator, revision, footerBehavior)) .render(out); } @@ -139,17 +149,28 @@ "score", entry.getScore()); } - private Map<String, Object> toFooterSoyData(Paginator paginator, @Nullable String revision) { - Map<String, Object> data = Maps.newHashMapWithExpectedSize(1); - ObjectId next = paginator.getNextStart(); - if (next != null) { - data.put( - "nextUrl", - copyAndCanonicalizeView(revision) - .replaceParam(LogServlet.START_PARAM, next.name()) - .toUrl()); + private Map<String, Object> toFooterSoyData( + Paginator paginator, @Nullable String revision, FooterBehavior behavior) { + switch (behavior) { + case NEXT: + ObjectId next = paginator.getNextStart(); + if (next == null) { + return ImmutableMap.of(); + } + return ImmutableMap.of( + "nextUrl", + copyAndCanonicalizeView(revision) + .replaceParam(LogServlet.START_PARAM, next.name()) + .toUrl(), + "nextText", + "Next"); + + case LOG_HEAD: + return ImmutableMap.of( + "nextUrl", GitilesView.log().copyFrom(view).toUrl(), "nextText", "More"); + default: + throw new IllegalStateException("unknown footer behavior: " + behavior); } - return data; } private GitilesView.Builder copyAndCanonicalizeView(String revision) {
diff --git a/java/com/google/gitiles/RepositoryIndexServlet.java b/java/com/google/gitiles/RepositoryIndexServlet.java index 51bc42d..7d7ac36 100644 --- a/java/com/google/gitiles/RepositoryIndexServlet.java +++ b/java/com/google/gitiles/RepositoryIndexServlet.java
@@ -134,7 +134,8 @@ startRenderStreamingHtml(req, res, "gitiles.repositoryIndex", data)) { Writer w = newWriter(out, res); new LogSoyData(req, access, "oneline") - .renderStreaming(paginator, "HEAD", renderer, w, df); + .renderStreaming( + paginator, "HEAD", renderer, w, df, LogSoyData.FooterBehavior.LOG_HEAD); w.flush(); } } else {
diff --git a/resources/com/google/gitiles/templates/LogDetail.soy b/resources/com/google/gitiles/templates/LogDetail.soy index c09c9f6..5a90b86 100644 --- a/resources/com/google/gitiles/templates/LogDetail.soy +++ b/resources/com/google/gitiles/templates/LogDetail.soy
@@ -74,12 +74,13 @@ * Footer for the list of log entries. * * @param? nextUrl URL for the next page of results. + * @param? nextText text for next page link. */ {template .logEntriesFooter stricthtml="false"} </ol> {if $nextUrl} <nav class="LogNav"> - <a class="LogNav-next" href="{$nextUrl}">{msg desc="text for next URL"}Next »{/msg}</a> + <a class="LogNav-next" href="{$nextUrl}">{$nextText} »</a> </nav> {/if} {/template}