| | |
| | | import java.util.List;
|
| | | import java.util.Map;
|
| | |
|
| | | import org.apache.wicket.MarkupContainer;
|
| | | import org.apache.wicket.behavior.SimpleAttributeModifier;
|
| | | import org.apache.wicket.markup.html.WebMarkupContainer;
|
| | | 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.eclipse.jgit.revwalk.RevCommit;
|
| | |
|
| | | import com.gitblit.Constants;
|
| | | import com.gitblit.GitBlit;
|
| | | import com.gitblit.Keys;
|
| | | import com.gitblit.models.RefModel;
|
| | | import com.gitblit.servlet.BranchGraphServlet;
|
| | | import com.gitblit.utils.JGitUtils;
|
| | | import com.gitblit.utils.StringUtils;
|
| | | import com.gitblit.wicket.ExternalImage;
|
| | | import com.gitblit.wicket.WicketUtils;
|
| | | import com.gitblit.wicket.pages.CommitDiffPage;
|
| | | import com.gitblit.wicket.pages.CommitPage;
|
| | | import com.gitblit.wicket.pages.LogPage;
|
| | | import com.gitblit.wicket.pages.GitSearchPage;
|
| | | import com.gitblit.wicket.pages.LogPage;
|
| | | import com.gitblit.wicket.pages.TreePage;
|
| | |
|
| | | public class LogPanel extends BasePanel {
|
| | |
| | | Repository r, int limit, int pageOffset, boolean showRemoteRefs) {
|
| | | super(wicketId);
|
| | | boolean pageResults = limit <= 0;
|
| | | int itemsPerPage = GitBlit.getInteger(Keys.web.itemsPerPage, 50);
|
| | | int itemsPerPage = app().settings().getInteger(Keys.web.itemsPerPage, 50);
|
| | | if (itemsPerPage <= 1) {
|
| | | itemsPerPage = 50;
|
| | | }
|
| | |
| | | // works unless commits.size() represents the exact end.
|
| | | hasMore = commits.size() >= itemsPerPage;
|
| | |
|
| | | final String baseUrl = WicketUtils.getGitblitURL(getRequest());
|
| | | final boolean showGraph = app().settings().getBoolean(Keys.web.showBranchGraph, true);
|
| | |
|
| | | MarkupContainer graph = new WebMarkupContainer("graph");
|
| | | add(graph);
|
| | | if (!showGraph || commits.isEmpty()) {
|
| | | // not showing or nothing to show
|
| | | graph.setVisible(false);
|
| | | } else {
|
| | | // set the rowspan on the graph row and +1 for the graph row itself
|
| | | graph.add(new SimpleAttributeModifier("rowspan", "" + (commits.size() + 1)));
|
| | | graph.add(new ExternalImage("image", BranchGraphServlet.asLink(baseUrl, repositoryName, commits.get(0).name(), commits.size())));
|
| | | }
|
| | |
|
| | | // header
|
| | | if (pageResults) {
|
| | | // shortlog page
|
| | |
| | | WicketUtils.newRepositoryParameter(repositoryName)));
|
| | | }
|
| | |
|
| | | final int hashLen = GitBlit.getInteger(Keys.web.shortCommitIdLength, 6);
|
| | | final int hashLen = app().settings().getInteger(Keys.web.shortCommitIdLength, 6);
|
| | | ListDataProvider<RevCommit> dp = new ListDataProvider<RevCommit>(commits);
|
| | | DataView<RevCommit> logView = new DataView<RevCommit>("commit", dp) {
|
| | | private static final long serialVersionUID = 1L;
|
| | | int counter;
|
| | |
|
| | | @Override
|
| | | public void populateItem(final Item<RevCommit> item) {
|
| | | final RevCommit entry = item.getModelObject();
|
| | | final Date date = JGitUtils.getCommitDate(entry);
|
| | | final Date date = JGitUtils.getAuthorDate(entry);
|
| | | final boolean isMerge = entry.getParentCount() > 1;
|
| | |
|
| | | item.add(WicketUtils.createDateLabel("commitDate", date, getTimeZone(), getTimeUtils()));
|
| | |
|
| | |
| | | String author = entry.getAuthorIdent().getName();
|
| | | LinkPanel authorLink = new LinkPanel("commitAuthor", "list", author,
|
| | | GitSearchPage.class, WicketUtils.newSearchParameter(repositoryName,
|
| | | objectId, author, Constants.SearchType.AUTHOR));
|
| | | null, author, Constants.SearchType.AUTHOR));
|
| | | setPersonSearchTooltip(authorLink, author, Constants.SearchType.AUTHOR);
|
| | | item.add(authorLink);
|
| | | |
| | |
|
| | | // merge icon
|
| | | if (entry.getParentCount() > 1) {
|
| | | if (isMerge) {
|
| | | item.add(WicketUtils.newImage("commitIcon", "commit_merge_16x16.png"));
|
| | | } else {
|
| | | item.add(WicketUtils.newBlankImage("commitIcon"));
|
| | |
| | | } else {
|
| | | trimmedMessage = StringUtils.trimString(shortMessage, Constants.LEN_SHORTLOG);
|
| | | }
|
| | | LinkPanel shortlog = new LinkPanel("commitShortMessage", "list subject",
|
| | | LinkPanel shortlog = new LinkPanel("commitShortMessage", "list subject" + (isMerge ? " merge" : ""),
|
| | | trimmedMessage, CommitPage.class, WicketUtils.newObjectParameter(
|
| | | repositoryName, entry.getName()));
|
| | | if (!shortMessage.equals(trimmedMessage)) {
|
| | |
| | | WicketUtils.setCssClass(commitHash, "shortsha1");
|
| | | WicketUtils.setHtmlTooltip(commitHash, entry.getName());
|
| | | item.add(commitHash);
|
| | | |
| | |
|
| | | item.add(new BookmarkablePageLink<Void>("diff", CommitDiffPage.class, WicketUtils
|
| | | .newObjectParameter(repositoryName, entry.getName())).setEnabled(entry
|
| | | .getParentCount() > 0));
|
| | | item.add(new BookmarkablePageLink<Void>("tree", TreePage.class, WicketUtils
|
| | | .newObjectParameter(repositoryName, entry.getName())));
|
| | |
|
| | | WicketUtils.setAlternatingBackground(item, counter);
|
| | | String clazz = counter % 2 == 0 ? "light commit" : "dark commit";
|
| | | WicketUtils.setCssClass(item, clazz);
|
| | |
|
| | | counter++;
|
| | | }
|
| | | };
|