diff options
author | James Moger <james.moger@gitblit.com> | 2011-04-16 16:28:19 -0400 |
---|---|---|
committer | James Moger <james.moger@gitblit.com> | 2011-04-16 16:28:19 -0400 |
commit | f602a2f552e1389ee465307723b492b1af378fd5 (patch) | |
tree | ea055bd74893df6087d87e8dfd82b28f5ea9d2b6 /src | |
parent | b55030a765f040a15609c60d3f69b6cb7f00bdae (diff) | |
download | gitblit-f602a2f552e1389ee465307723b492b1af378fd5.tar.gz gitblit-f602a2f552e1389ee465307723b492b1af378fd5.zip |
Working history feature. Tweak to paging.
Diffstat (limited to 'src')
-rw-r--r-- | src/com/gitblit/utils/JGitUtils.java | 11 | ||||
-rw-r--r-- | src/com/gitblit/wicket/GitBlitWebApp.java | 2 | ||||
-rw-r--r-- | src/com/gitblit/wicket/GitBlitWebApp.properties | 4 | ||||
-rw-r--r-- | src/com/gitblit/wicket/WicketUtils.java | 7 | ||||
-rw-r--r-- | src/com/gitblit/wicket/pages/CommitDiffPage.java | 2 | ||||
-rw-r--r-- | src/com/gitblit/wicket/pages/CommitPage.java | 2 | ||||
-rw-r--r-- | src/com/gitblit/wicket/pages/HistoryPage.html | 28 | ||||
-rw-r--r-- | src/com/gitblit/wicket/pages/HistoryPage.java | 38 | ||||
-rw-r--r-- | src/com/gitblit/wicket/pages/LogPage.java | 13 | ||||
-rw-r--r-- | src/com/gitblit/wicket/pages/TreePage.java | 16 | ||||
-rw-r--r-- | src/com/gitblit/wicket/panels/HistoryPanel.html | 35 | ||||
-rw-r--r-- | src/com/gitblit/wicket/panels/HistoryPanel.java | 130 | ||||
-rw-r--r-- | src/com/gitblit/wicket/panels/LogPanel.java | 10 |
13 files changed, 281 insertions, 17 deletions
diff --git a/src/com/gitblit/utils/JGitUtils.java b/src/com/gitblit/utils/JGitUtils.java index fa313911..7128f722 100644 --- a/src/com/gitblit/utils/JGitUtils.java +++ b/src/com/gitblit/utils/JGitUtils.java @@ -35,6 +35,7 @@ import org.eclipse.jgit.revwalk.RevObject; import org.eclipse.jgit.revwalk.RevTree;
import org.eclipse.jgit.revwalk.RevWalk;
import org.eclipse.jgit.treewalk.TreeWalk;
+import org.eclipse.jgit.treewalk.filter.AndTreeFilter;
import org.eclipse.jgit.treewalk.filter.PathFilter;
import org.eclipse.jgit.treewalk.filter.PathFilterGroup;
import org.eclipse.jgit.treewalk.filter.TreeFilter;
@@ -436,6 +437,10 @@ public class JGitUtils { }
public static List<RevCommit> getRevLog(Repository r, String objectId, int offset, int maxCount) {
+ return getRevLog(r, objectId, null, offset, maxCount);
+ }
+
+ public static List<RevCommit> getRevLog(Repository r, String objectId, String path, int offset, int maxCount) {
List<RevCommit> list = new ArrayList<RevCommit>();
try {
if (objectId == null || objectId.trim().length() == 0) {
@@ -444,6 +449,12 @@ public class JGitUtils { RevWalk walk = new RevWalk(r);
ObjectId object = r.resolve(objectId);
walk.markStart(walk.parseCommit(object));
+ if (!StringUtils.isEmpty(path)) {
+ TreeFilter filter = AndTreeFilter.create(PathFilterGroup
+ .createFromStrings(Collections.singleton(path)),
+ TreeFilter.ANY_DIFF);
+ walk.setTreeFilter(filter);
+ }
Iterable<RevCommit> revlog = walk;
if (offset > 0) {
int count = 0;
diff --git a/src/com/gitblit/wicket/GitBlitWebApp.java b/src/com/gitblit/wicket/GitBlitWebApp.java index 29d6b515..28f62625 100644 --- a/src/com/gitblit/wicket/GitBlitWebApp.java +++ b/src/com/gitblit/wicket/GitBlitWebApp.java @@ -17,6 +17,7 @@ import com.gitblit.wicket.pages.BlobPage; import com.gitblit.wicket.pages.BranchesPage;
import com.gitblit.wicket.pages.CommitDiffPage;
import com.gitblit.wicket.pages.CommitPage;
+import com.gitblit.wicket.pages.HistoryPage;
import com.gitblit.wicket.pages.LogPage;
import com.gitblit.wicket.pages.PatchPage;
import com.gitblit.wicket.pages.RawPage;
@@ -60,6 +61,7 @@ public class GitBlitWebApp extends WebApplication { mount(new MixedParamUrlCodingStrategy("/blobdiff", BlobDiffPage.class, new String[] { "r", "h", "f" }));
mount(new MixedParamUrlCodingStrategy("/commitdiff", CommitDiffPage.class, new String[] { "r", "h" }));
mount(new MixedParamUrlCodingStrategy("/patch", PatchPage.class, new String[] { "r", "h", "f" }));
+ mount(new MixedParamUrlCodingStrategy("/history", HistoryPage.class, new String[] { "r", "h", "f" }));
// setup ticgit urls
mount(new MixedParamUrlCodingStrategy("/ticgit", TicGitPage.class, new String[] { "r" }));
diff --git a/src/com/gitblit/wicket/GitBlitWebApp.properties b/src/com/gitblit/wicket/GitBlitWebApp.properties index a5583c7a..033742eb 100644 --- a/src/com/gitblit/wicket/GitBlitWebApp.properties +++ b/src/com/gitblit/wicket/GitBlitWebApp.properties @@ -45,4 +45,6 @@ gb.login = Login gb.logout = Logout
gb.username = Username
gb.password = Password
-gb.tagger = tagger
\ No newline at end of file +gb.tagger = tagger
+gb.moreHistory = more history...
+gb.difftocurrent = diff to current
\ No newline at end of file diff --git a/src/com/gitblit/wicket/WicketUtils.java b/src/com/gitblit/wicket/WicketUtils.java index 3288498f..3bc55f1b 100644 --- a/src/com/gitblit/wicket/WicketUtils.java +++ b/src/com/gitblit/wicket/WicketUtils.java @@ -80,6 +80,13 @@ public class WicketUtils { }
return new PageParameters("r=" + repositoryName + ",h=" + objectId + ",page=" + pageNumber);
}
+
+ public static PageParameters newHistoryPageParameter(String repositoryName, String objectId, String path, int pageNumber) {
+ if (pageNumber <= 1) {
+ return newObjectParameter(repositoryName, objectId);
+ }
+ return new PageParameters("r=" + repositoryName + ",h=" + objectId + ",f=" + path + ",page=" + pageNumber);
+ }
public static String getRepositoryName(PageParameters params) {
return params.getString("r", "");
diff --git a/src/com/gitblit/wicket/pages/CommitDiffPage.java b/src/com/gitblit/wicket/pages/CommitDiffPage.java index 7218cf81..87e81102 100644 --- a/src/com/gitblit/wicket/pages/CommitDiffPage.java +++ b/src/com/gitblit/wicket/pages/CommitDiffPage.java @@ -63,7 +63,7 @@ public class CommitDiffPage extends RepositoryPage { item.add(new BookmarkablePageLink<Void>("patch", PatchPage.class, newPathParameter(entry.path)));
item.add(new BookmarkablePageLink<Void>("view", BlobPage.class, newPathParameter(entry.path)));
item.add(new BookmarkablePageLink<Void>("blame", BlobPage.class).setEnabled(false));
- item.add(new BookmarkablePageLink<Void>("history", BlobPage.class).setEnabled(false));
+ item.add(new BookmarkablePageLink<Void>("history", HistoryPage.class, newPathParameter(entry.path)));
WicketUtils.setAlternatingBackground(item, counter);
counter++;
diff --git a/src/com/gitblit/wicket/pages/CommitPage.java b/src/com/gitblit/wicket/pages/CommitPage.java index 9cc6df85..63817ca3 100644 --- a/src/com/gitblit/wicket/pages/CommitPage.java +++ b/src/com/gitblit/wicket/pages/CommitPage.java @@ -92,7 +92,7 @@ public class CommitPage extends RepositoryPage { item.add(new BookmarkablePageLink<Void>("diff", BlobDiffPage.class, newPathParameter(entry.path)));
item.add(new BookmarkablePageLink<Void>("view", BlobPage.class, newPathParameter(entry.path)));
item.add(new BookmarkablePageLink<Void>("blame", BlobPage.class).setEnabled(false));
- item.add(new BookmarkablePageLink<Void>("history", BlobPage.class).setEnabled(false));
+ item.add(new BookmarkablePageLink<Void>("history", HistoryPage.class, newPathParameter(entry.path)));
WicketUtils.setAlternatingBackground(item, counter);
counter++;
diff --git a/src/com/gitblit/wicket/pages/HistoryPage.html b/src/com/gitblit/wicket/pages/HistoryPage.html new file mode 100644 index 00000000..a77933eb --- /dev/null +++ b/src/com/gitblit/wicket/pages/HistoryPage.html @@ -0,0 +1,28 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.3-strict.dtd"
+ xml:lang="en"
+ lang="en">
+
+<body>
+<wicket:extend>
+
+ <!-- page nav links -->
+ <div wicket:id="pageLinks">[page links]</div>
+
+ <!-- pager links -->
+ <div style="padding-top:5px;padding-bottom:5px;">
+ <a wicket:id="firstPageTop"><wicket:message key="gb.pageFirst"></wicket:message></a> | <a wicket:id="prevPageTop"><wicket:message key="gb.pagePrevious"></wicket:message></a> | <a wicket:id="nextPageTop"><wicket:message key="gb.pageNext"></wicket:message></a>
+ </div>
+
+ <!-- history -->
+ <div style="margin-top:5px;" wicket:id="historyPanel">[history panel]</div>
+
+ <!-- pager links -->
+ <div style="padding-bottom:5px;">
+ <a wicket:id="firstPageBottom"><wicket:message key="gb.pageFirst"></wicket:message></a> | <a wicket:id="prevPageBottom"><wicket:message key="gb.pagePrevious"></wicket:message></a> | <a wicket:id="nextPageBottom"><wicket:message key="gb.pageNext"></wicket:message></a>
+ </div>
+
+</wicket:extend>
+</body>
+</html>
\ No newline at end of file diff --git a/src/com/gitblit/wicket/pages/HistoryPage.java b/src/com/gitblit/wicket/pages/HistoryPage.java new file mode 100644 index 00000000..8b7075a3 --- /dev/null +++ b/src/com/gitblit/wicket/pages/HistoryPage.java @@ -0,0 +1,38 @@ +package com.gitblit.wicket.pages;
+
+import org.apache.wicket.PageParameters;
+import org.apache.wicket.markup.html.link.BookmarkablePageLink;
+
+import com.gitblit.wicket.RepositoryPage;
+import com.gitblit.wicket.WicketUtils;
+import com.gitblit.wicket.panels.HistoryPanel;
+
+public class HistoryPage extends RepositoryPage {
+
+ public HistoryPage(PageParameters params) {
+ super(params);
+
+ String path = WicketUtils.getPath(params);
+ int pageNumber = WicketUtils.getPage(params);
+ int prevPage = Math.max(0, pageNumber - 1);
+ int nextPage = pageNumber + 1;
+
+ HistoryPanel history = new HistoryPanel("historyPanel", repositoryName, objectId, path, getRepository(), -1, pageNumber - 1);
+ boolean hasMore = history.hasMore();
+ add(history);
+
+ add(new BookmarkablePageLink<Void>("firstPageTop", HistoryPage.class, WicketUtils.newPathParameter(repositoryName, objectId, path)).setEnabled(pageNumber > 1));
+ add(new BookmarkablePageLink<Void>("prevPageTop", HistoryPage.class, WicketUtils.newHistoryPageParameter(repositoryName, objectId, path, prevPage)).setEnabled(pageNumber > 1));
+ add(new BookmarkablePageLink<Void>("nextPageTop", HistoryPage.class, WicketUtils.newHistoryPageParameter(repositoryName, objectId, path, nextPage)).setEnabled(hasMore));
+
+ add(new BookmarkablePageLink<Void>("firstPageBottom", HistoryPage.class, WicketUtils.newPathParameter(repositoryName, objectId, path)).setEnabled(pageNumber > 1));
+ add(new BookmarkablePageLink<Void>("prevPageBottom", HistoryPage.class, WicketUtils.newHistoryPageParameter(repositoryName, objectId, path, prevPage)).setEnabled(pageNumber > 1));
+ add(new BookmarkablePageLink<Void>("nextPageBottom", HistoryPage.class, WicketUtils.newHistoryPageParameter(repositoryName, objectId, path, nextPage)).setEnabled(hasMore));
+
+ }
+
+ @Override
+ protected String getPageName() {
+ return getString("gb.history");
+ }
+}
diff --git a/src/com/gitblit/wicket/pages/LogPage.java b/src/com/gitblit/wicket/pages/LogPage.java index cd75df9c..38148f5a 100644 --- a/src/com/gitblit/wicket/pages/LogPage.java +++ b/src/com/gitblit/wicket/pages/LogPage.java @@ -15,16 +15,17 @@ public class LogPage extends RepositoryPage { int pageNumber = WicketUtils.getPage(params);
int prevPage = Math.max(0, pageNumber - 1);
int nextPage = pageNumber + 1;
+ LogPanel logPanel = new LogPanel("logPanel", repositoryName, objectId, getRepository(), -1, pageNumber - 1);
+ boolean hasMore = logPanel.hasMore();
+ add(logPanel);
- add(new BookmarkablePageLink<Void>("firstPageTop", LogPage.class, WicketUtils.newObjectParameter(repositoryName, objectId)));
+ add(new BookmarkablePageLink<Void>("firstPageTop", LogPage.class, WicketUtils.newObjectParameter(repositoryName, objectId)).setEnabled(pageNumber > 1));
add(new BookmarkablePageLink<Void>("prevPageTop", LogPage.class, WicketUtils.newLogPageParameter(repositoryName, objectId, prevPage)).setEnabled(pageNumber > 1));
- add(new BookmarkablePageLink<Void>("nextPageTop", LogPage.class, WicketUtils.newLogPageParameter(repositoryName, objectId, nextPage)));
+ add(new BookmarkablePageLink<Void>("nextPageTop", LogPage.class, WicketUtils.newLogPageParameter(repositoryName, objectId, nextPage)).setEnabled(hasMore));
- add(new LogPanel("logPanel", repositoryName, objectId, getRepository(), -1, pageNumber - 1));
-
- add(new BookmarkablePageLink<Void>("firstPageBottom", LogPage.class, WicketUtils.newObjectParameter(repositoryName, objectId)));
+ add(new BookmarkablePageLink<Void>("firstPageBottom", LogPage.class, WicketUtils.newObjectParameter(repositoryName, objectId)).setEnabled(pageNumber > 1));
add(new BookmarkablePageLink<Void>("prevPageBottom", LogPage.class, WicketUtils.newLogPageParameter(repositoryName, objectId, prevPage)).setEnabled(pageNumber > 1));
- add(new BookmarkablePageLink<Void>("nextPageBottom", LogPage.class, WicketUtils.newLogPageParameter(repositoryName, objectId, nextPage)));
+ add(new BookmarkablePageLink<Void>("nextPageBottom", LogPage.class, WicketUtils.newLogPageParameter(repositoryName, objectId, nextPage)).setEnabled(hasMore));
}
@Override
diff --git a/src/com/gitblit/wicket/pages/TreePage.java b/src/com/gitblit/wicket/pages/TreePage.java index 5ebb1b65..2ab164da 100644 --- a/src/com/gitblit/wicket/pages/TreePage.java +++ b/src/com/gitblit/wicket/pages/TreePage.java @@ -26,22 +26,22 @@ public class TreePage extends RepositoryPage { public TreePage(PageParameters params) {
super(params);
- final String basePath = WicketUtils.getPath(params);
+ final String path = WicketUtils.getPath(params);
Repository r = getRepository();
RevCommit commit = JGitUtils.getCommit(r, objectId);
- List<PathModel> paths = JGitUtils.getFilesInPath(r, basePath, commit);
+ List<PathModel> paths = JGitUtils.getFilesInPath(r, path, commit);
// tree page links
add(new Label("historyLink", getString("gb.history")));
- add(new BookmarkablePageLink<Void>("headLink", TreePage.class, WicketUtils.newPathParameter(repositoryName, Constants.HEAD, basePath)));
+ add(new BookmarkablePageLink<Void>("headLink", TreePage.class, WicketUtils.newPathParameter(repositoryName, Constants.HEAD, path)));
add(new LinkPanel("shortlog", "title", commit.getShortMessage(), CommitPage.class, newCommitParameter()));
// breadcrumbs
- add(new PathBreadcrumbsPanel("breadcrumbs", repositoryName, basePath, objectId));
- if (basePath != null && basePath.trim().length() > 0) {
- paths.add(0, PathModel.getParentPath(basePath, objectId));
+ add(new PathBreadcrumbsPanel("breadcrumbs", repositoryName, path, objectId));
+ if (path != null && path.trim().length() > 0) {
+ paths.add(0, PathModel.getParentPath(path, objectId));
}
final ByteFormat byteFormat = new ByteFormat();
@@ -69,7 +69,7 @@ public class TreePage extends RepositoryPage { // links
Fragment links = new Fragment("pathLinks", "treeLinks", this);
links.add(new BookmarkablePageLink<Void>("tree", TreePage.class, WicketUtils.newPathParameter(repositoryName, entry.commitId, entry.path)));
- links.add(new BookmarkablePageLink<Void>("history", TreePage.class).setEnabled(false));
+ links.add(new BookmarkablePageLink<Void>("history", HistoryPage.class, WicketUtils.newPathParameter(repositoryName, entry.commitId, entry.path)));
item.add(links);
} else {
// blob link
@@ -81,7 +81,7 @@ public class TreePage extends RepositoryPage { links.add(new BookmarkablePageLink<Void>("view", BlobPage.class, WicketUtils.newPathParameter(repositoryName, entry.commitId, entry.path)));
links.add(new BookmarkablePageLink<Void>("raw", RawPage.class, WicketUtils.newPathParameter(repositoryName, entry.commitId, entry.path)));
links.add(new BookmarkablePageLink<Void>("blame", BlobPage.class).setEnabled(false));
- links.add(new BookmarkablePageLink<Void>("history", BlobPage.class).setEnabled(false));
+ links.add(new BookmarkablePageLink<Void>("history", HistoryPage.class, WicketUtils.newPathParameter(repositoryName, entry.commitId, entry.path)));
item.add(links);
}
}
diff --git a/src/com/gitblit/wicket/panels/HistoryPanel.html b/src/com/gitblit/wicket/panels/HistoryPanel.html new file mode 100644 index 00000000..9ba95de4 --- /dev/null +++ b/src/com/gitblit/wicket/panels/HistoryPanel.html @@ -0,0 +1,35 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.3-strict.dtd"
+ xml:lang="en"
+ lang="en">
+
+<body>
+<wicket:panel>
+
+ <!-- header -->
+ <div class="header" wicket:id="header">[history header]</div>
+
+ <!-- breadcrumbs -->
+ <div wicket:id="breadcrumbs">[breadcrumbs]</div>
+
+ <table style="width:100%" class="pretty">
+ <tbody>
+ <tr wicket:id="commit">
+ <td class="date"><span wicket:id="commitDate">[commit date]</span></td>
+ <td class="author"><span wicket:id="commitAuthor">[commit author]</span></td>
+ <td><div wicket:id="commitShortMessage">[commit short message]</div></td>
+ <td class="rightAlign"><div wicket:id="commitRefs">[commit refs]</div></td>
+ <td class="rightAlign">
+ <span class="link">
+ <a wicket:id="view"><wicket:message key="gb.view"></wicket:message></a> | <a wicket:id="commitdiff"><wicket:message key="gb.commitdiff"></wicket:message></a> | <a wicket:id="difftocurrent"><wicket:message key="gb.difftocurrent"></wicket:message></a>
+ </span>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <div wicket:id="moreHistory">[more...]</div>
+
+</wicket:panel>
+</body>
+</html>
\ No newline at end of file diff --git a/src/com/gitblit/wicket/panels/HistoryPanel.java b/src/com/gitblit/wicket/panels/HistoryPanel.java new file mode 100644 index 00000000..236e077b --- /dev/null +++ b/src/com/gitblit/wicket/panels/HistoryPanel.java @@ -0,0 +1,130 @@ +package com.gitblit.wicket.panels;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.link.BookmarkablePageLink;
+import org.apache.wicket.markup.repeater.Item;
+import org.apache.wicket.markup.repeater.data.DataView;
+import org.apache.wicket.markup.repeater.data.ListDataProvider;
+import org.apache.wicket.model.StringResourceModel;
+import org.eclipse.jgit.lib.ObjectId;
+import org.eclipse.jgit.lib.Repository;
+import org.eclipse.jgit.revwalk.RevCommit;
+
+import com.gitblit.GitBlit;
+import com.gitblit.Keys;
+import com.gitblit.utils.JGitUtils;
+import com.gitblit.utils.StringUtils;
+import com.gitblit.wicket.LinkPanel;
+import com.gitblit.wicket.WicketUtils;
+import com.gitblit.wicket.pages.BlobDiffPage;
+import com.gitblit.wicket.pages.CommitDiffPage;
+import com.gitblit.wicket.pages.CommitPage;
+import com.gitblit.wicket.pages.HistoryPage;
+import com.gitblit.wicket.pages.LogPage;
+
+public class HistoryPanel extends BasePanel {
+
+ private static final long serialVersionUID = 1L;
+
+ private boolean hasMore = false;
+
+ public HistoryPanel(String wicketId, final String repositoryName, String objectId, final String path, Repository r, int limit, int pageOffset) {
+ super(wicketId);
+ boolean pageResults = limit <= 0;
+ int itemsPerPage = GitBlit.self().settings().getInteger(Keys.web.logPageCommitCount, 50);
+ if (itemsPerPage <= 1) {
+ itemsPerPage = 50;
+ }
+
+ RevCommit commit = JGitUtils.getCommit(r, objectId);
+ final Map<ObjectId, List<String>> allRefs = JGitUtils.getAllRefs(r);
+ List<RevCommit> commits;
+ if (pageResults) {
+ // Paging result set
+ commits = JGitUtils.getRevLog(r, objectId, path, pageOffset * itemsPerPage, itemsPerPage);
+ } else {
+ // Fixed size result set
+ commits = JGitUtils.getRevLog(r, objectId, path, 0, limit);
+ }
+
+ // inaccurate way to determine if there are more commits.
+ // works unless commits.size() represents the exact end.
+ hasMore = commits.size() >= itemsPerPage;
+
+ // header
+ if (pageResults) {
+ // history page
+ // show commit page link
+ add(new LinkPanel("header", "title", commit.getShortMessage(), CommitPage.class, WicketUtils.newObjectParameter(repositoryName, commit.getName())));
+ } else {
+ // summary page
+ // show history page link
+ add(new LinkPanel("header", "title", new StringResourceModel("gb.history", this, null), LogPage.class, WicketUtils.newRepositoryParameter(repositoryName)));
+ }
+
+ // breadcrumbs
+ add(new PathBreadcrumbsPanel("breadcrumbs", repositoryName, path, objectId));
+
+ ListDataProvider<RevCommit> dp = new ListDataProvider<RevCommit>(commits);
+ DataView<RevCommit> logView = new DataView<RevCommit>("commit", dp) {
+ private static final long serialVersionUID = 1L;
+ int counter = 0;
+
+ public void populateItem(final Item<RevCommit> item) {
+ final RevCommit entry = item.getModelObject();
+ final Date date = JGitUtils.getCommitDate(entry);
+
+ item.add(WicketUtils.createDateLabel("commitDate", date, getTimeZone()));
+
+ String author = entry.getAuthorIdent().getName();
+ item.add(WicketUtils.createAuthorLabel("commitAuthor", author));
+
+ String shortMessage = entry.getShortMessage();
+ String trimmedMessage = StringUtils.trimShortLog(shortMessage);
+ LinkPanel shortlog = new LinkPanel("commitShortMessage", "list subject", trimmedMessage, CommitPage.class, WicketUtils.newObjectParameter(repositoryName, entry.getName()));
+ if (!shortMessage.equals(trimmedMessage)) {
+ WicketUtils.setHtmlTitle(shortlog, shortMessage);
+ }
+ item.add(shortlog);
+
+ item.add(new RefsPanel("commitRefs", repositoryName, entry, allRefs));
+
+ item.add(new BookmarkablePageLink<Void>("view", CommitPage.class, WicketUtils.newObjectParameter(repositoryName, entry.getName())));
+ item.add(new BookmarkablePageLink<Void>("commitdiff", CommitDiffPage.class, WicketUtils.newObjectParameter(repositoryName, entry.getName())));
+ item.add(new BookmarkablePageLink<Void>("difftocurrent", BlobDiffPage.class, WicketUtils.newPathParameter(repositoryName, entry.getName(), path)).setEnabled(counter > 0));
+
+ WicketUtils.setAlternatingBackground(item, counter);
+ counter++;
+ }
+ };
+ add(logView);
+
+ // determine to show pager, more, or neither
+ if (limit <= 0) {
+ // no display limit
+ add(new Label("moreHistory", "").setVisible(false));
+ } else {
+ if (pageResults) {
+ // paging
+ add(new Label("moreHistory", "").setVisible(false));
+ } else {
+ // more
+ if (commits.size() == limit) {
+ // show more
+ add(new LinkPanel("moreHistory", "link", new StringResourceModel("gb.moreHistory", this, null), HistoryPage.class, WicketUtils.newPathParameter(repositoryName, objectId, path)));
+ } else {
+ // no more
+ add(new Label("moreHistory", "").setVisible(false));
+ }
+ }
+ }
+ }
+
+ public boolean hasMore() {
+ return hasMore;
+ }
+}
diff --git a/src/com/gitblit/wicket/panels/LogPanel.java b/src/com/gitblit/wicket/panels/LogPanel.java index 20754108..954af757 100644 --- a/src/com/gitblit/wicket/panels/LogPanel.java +++ b/src/com/gitblit/wicket/panels/LogPanel.java @@ -29,6 +29,8 @@ import com.gitblit.wicket.pages.TreePage; public class LogPanel extends BasePanel {
private static final long serialVersionUID = 1L;
+
+ private boolean hasMore = false;
public LogPanel(String wicketId, final String repositoryName, String objectId, Repository r, int limit, int pageOffset) {
super(wicketId);
@@ -48,6 +50,10 @@ public class LogPanel extends BasePanel { commits = JGitUtils.getRevLog(r, objectId, 0, limit);
}
+ // inaccurate way to determine if there are more commits.
+ // works unless commits.size() represents the exact end.
+ hasMore = commits.size() >= itemsPerPage;
+
// header
if (pageResults) {
// shortlog page
@@ -113,4 +119,8 @@ public class LogPanel extends BasePanel { }
}
}
+
+ public boolean hasMore() {
+ return hasMore;
+ }
}
|