Split refs into 2 lines if there are remotes. Use more glyphicons.
| | |
| | |
|
| | | public static final String ENCODING = "UTF-8";
|
| | |
|
| | | public static final int LEN_SHORTLOG = 80;
|
| | | |
| | | public static final int LEN_SHORTLOG_REFS = 60;
|
| | | |
| | | public static String getGitBlitVersion() {
|
| | | return NAME + " v" + VERSION;
|
| | | }
|
| | |
| | | }
|
| | |
|
| | | /**
|
| | | * Returns a trimmed shortlog message.
|
| | | * |
| | | * @param string
|
| | | * @return trimmed shortlog message
|
| | | */
|
| | | public static String trimShortLog(String string) {
|
| | | return trimString(string, 60);
|
| | | }
|
| | |
|
| | | /**
|
| | | * Left pad a string with the specified character, if the string length is
|
| | | * less than the specified length.
|
| | | *
|
| | |
| | | return img;
|
| | | }
|
| | |
|
| | | public static Label newIcon(String wicketId, String css) {
|
| | | Label lbl = new Label(wicketId);
|
| | | setCssClass(lbl, css); |
| | | return lbl;
|
| | | }
|
| | | |
| | | public static Label newBlankIcon(String wicketId) {
|
| | | Label lbl = new Label(wicketId);
|
| | | setCssClass(lbl, "");
|
| | | lbl.setRenderBodyOnly(true);
|
| | | return lbl;
|
| | | }
|
| | | |
| | | public static ContextRelativeResource getResource(String file) {
|
| | | return new ContextRelativeResource(file);
|
| | | }
|
| | |
| | | <wicket:extend>
|
| | |
|
| | | <!-- header -->
|
| | | <div style="margin-top:5px;" class="header"><span wicket:id="header">[header]</span></div>
|
| | | <div style="margin-top:5px;" class="header"><i class="icon-book" style="vertical-align: middle;"></i> <b><span wicket:id="header">[header]</span></b></div>
|
| | |
|
| | | <!-- documents -->
|
| | | <table style="width:100%" class="pretty">
|
| | |
| | |
|
| | | <wicket:fragment wicket:id="markdownPanel">
|
| | | <div class="header" style="margin-top:10px;" >
|
| | | <img style="vertical-align: middle; border: 1px solid #888;" src="book_16x16.png"/>
|
| | | <i style="vertical-align: middle;" class="icon-book"></i>
|
| | | <span style="font-weight:bold;vertical-align:middle;" wicket:id="readmeFile"></span>
|
| | | </div>
|
| | | <div style="border:1px solid #ddd;border-radius: 0 0 3px 3px;padding: 20px;">
|
| | |
| | | <wicket:panel>
|
| | |
|
| | | <div wicket:id="activity">
|
| | | <div class="header"><span style="font-weight:bold;" wicket:id="title">[title]</span></div>
|
| | | <div class="header"><i class="icon-refresh" style="vertical-align: middle;"></i> <span style="font-weight:bold;" wicket:id="title">[title]</span></div>
|
| | | <table class="activity" wicket:id="commits">
|
| | | <tr wicket:id="commit"></tr>
|
| | | </table>
|
| | |
| | |
|
| | | // message/commit link
|
| | | String shortMessage = commit.getShortMessage();
|
| | | String trimmedMessage = StringUtils.trimShortLog(shortMessage);
|
| | | String trimmedMessage = shortMessage;
|
| | | if (commit.getRefs() != null && commit.getRefs().size() > 0) {
|
| | | trimmedMessage = StringUtils.trimString(shortMessage, Constants.LEN_SHORTLOG_REFS);
|
| | | } else {
|
| | | trimmedMessage = StringUtils.trimString(shortMessage, Constants.LEN_SHORTLOG);
|
| | | }
|
| | | LinkPanel shortlog = new LinkPanel("message", "list subject",
|
| | | trimmedMessage, CommitPage.class, WicketUtils.newObjectParameter(
|
| | | commit.repository, commit.getName()), true);
|
| | |
| | | <wicket:panel>
|
| | |
|
| | | <!-- header -->
|
| | | <div class="header"><img style="vertical-align: middle;" src="commit_branch_16x16.png"></img><span wicket:id="branches">[branches header]</span></div> |
| | | <div class="header"><i class="icon-random" style="vertical-align: middle;"></i> <b><span wicket:id="branches">[branches header]</span></b></div> |
| | |
|
| | | <table class="pretty">
|
| | | <tbody>
|
| | |
| | | import com.gitblit.wicket.pages.LogPage;
|
| | | import com.gitblit.wicket.pages.MetricsPage;
|
| | | import com.gitblit.wicket.pages.SearchPage;
|
| | | import com.gitblit.wicket.pages.SummaryPage;
|
| | | import com.gitblit.wicket.pages.TreePage;
|
| | |
|
| | | public class BranchesPanel extends BasePanel {
|
| | |
| | | null), BranchesPage.class, WicketUtils.newRepositoryParameter(model.name)));
|
| | | } else {
|
| | | // branches page
|
| | | // show repository summary page link
|
| | | add(new LinkPanel("branches", "title", model.name, SummaryPage.class,
|
| | | WicketUtils.newRepositoryParameter(model.name)));
|
| | | add(new Label("branches", new StringResourceModel("gb.branches", this, null)));
|
| | | }
|
| | |
|
| | | ListDataProvider<RefModel> branchesDp = new ListDataProvider<RefModel>(branches);
|
| | |
| | |
|
| | | // short message
|
| | | String shortMessage = entry.getShortMessage();
|
| | | String trimmedMessage = StringUtils.trimShortLog(shortMessage);
|
| | | String trimmedMessage = StringUtils.trimString(shortMessage, Constants.LEN_SHORTLOG);
|
| | | LinkPanel shortlog = new LinkPanel("branchLog", "list subject", trimmedMessage,
|
| | | CommitPage.class, WicketUtils.newObjectParameter(model.name,
|
| | | entry.getName()));
|
| | |
| | | }
|
| | |
|
| | | String shortMessage = entry.getShortMessage();
|
| | | String trimmedMessage = StringUtils.trimShortLog(shortMessage);
|
| | | String trimmedMessage = shortMessage;
|
| | | if (allRefs.containsKey(entry.getId())) {
|
| | | trimmedMessage = StringUtils.trimString(shortMessage, Constants.LEN_SHORTLOG_REFS);
|
| | | } else {
|
| | | trimmedMessage = StringUtils.trimString(shortMessage, Constants.LEN_SHORTLOG);
|
| | | }
|
| | | LinkPanel shortlog = new LinkPanel("commitShortMessage", "list subject",
|
| | | trimmedMessage, CommitPage.class, WicketUtils.newObjectParameter(
|
| | | repositoryName, entry.getName()));
|
| | |
| | | <wicket:panel>
|
| | |
|
| | | <!-- header -->
|
| | | <div class="header"><img style="vertical-align: middle;" src="commit_changes_16x16.png"></img><span wicket:id="header">[log header]</span></div>
|
| | | <div class="header"><i class="icon-refresh" style="vertical-align: middle;"></i> <b><span wicket:id="header">[log header]</span></b></div>
|
| | | <table 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 class="icon"><img wicket:id="commitIcon" /></td>
|
| | | <td><div class="references" wicket:id="commitRefs">[commit refs]</div><span wicket:id="commitShortMessage">[commit short message]</span></td>
|
| | | <td><div class="references" wicket:id="commitRefs">[commit refs]</div><div style="vertical-align:middle;" wicket:id="commitShortMessage">[commit short message]</div></td>
|
| | | <td class="rightAlign">
|
| | | <span class="link">
|
| | | <a wicket:id="view"><wicket:message key="gb.view"></wicket:message></a> | <a wicket:id="diff"><wicket:message key="gb.diff"></wicket:message></a> | <a wicket:id="tree"><wicket:message key="gb.tree"></wicket:message></a>
|
| | |
| | | import com.gitblit.wicket.pages.CommitPage;
|
| | | import com.gitblit.wicket.pages.LogPage;
|
| | | import com.gitblit.wicket.pages.SearchPage;
|
| | | import com.gitblit.wicket.pages.SummaryPage;
|
| | | import com.gitblit.wicket.pages.TreePage;
|
| | |
|
| | | public class LogPanel extends BasePanel {
|
| | |
| | | // header
|
| | | if (pageResults) {
|
| | | // shortlog page
|
| | | // show repository summary page link
|
| | | add(new LinkPanel("header", "title", objectId, SummaryPage.class,
|
| | | WicketUtils.newRepositoryParameter(repositoryName)));
|
| | | add(new Label("header", objectId));
|
| | | } else {
|
| | | // summary page
|
| | | // show shortlog page link
|
| | |
| | |
|
| | | // short message
|
| | | String shortMessage = entry.getShortMessage();
|
| | | String trimmedMessage = StringUtils.trimShortLog(shortMessage);
|
| | | String trimmedMessage = shortMessage;
|
| | | if (allRefs.containsKey(entry.getId())) {
|
| | | trimmedMessage = StringUtils.trimString(shortMessage, Constants.LEN_SHORTLOG_REFS);
|
| | | } else {
|
| | | trimmedMessage = StringUtils.trimString(shortMessage, Constants.LEN_SHORTLOG);
|
| | | }
|
| | | LinkPanel shortlog = new LinkPanel("commitShortMessage", "list subject",
|
| | | trimmedMessage, CommitPage.class, WicketUtils.newObjectParameter(
|
| | | repositoryName, entry.getName()));
|
| | |
| | |
|
| | | <wicket:panel>
|
| | | <span wicket:id="ref">
|
| | | <span wicket:id="refName">ref</span>
|
| | | <span wicket:id="lineBreak">[LB]</span><span wicket:id="refName">ref</span>
|
| | | </span>
|
| | | </wicket:panel>
|
| | | </html> |
| | |
| | | import java.util.Map;
|
| | |
|
| | | import org.apache.wicket.Component;
|
| | | import org.apache.wicket.markup.html.basic.Label;
|
| | | import org.apache.wicket.markup.html.panel.Panel;
|
| | | import org.apache.wicket.markup.repeater.Item;
|
| | | import org.apache.wicket.markup.repeater.data.DataView;
|
| | |
| | | Collections.sort(refs, new Comparator<RefModel>() {
|
| | | @Override
|
| | | public int compare(RefModel o1, RefModel o2) {
|
| | | // sort remote heads last, otherwise sort by name
|
| | | // this is so we can insert a break on the refs panel
|
| | | // [head][branch][branch][tag][tag]
|
| | | // [remote][remote][remote]
|
| | | boolean remote1 = o1.displayName.startsWith(Constants.R_REMOTES);
|
| | | boolean remote2 = o2.displayName.startsWith(Constants.R_REMOTES);
|
| | | if (remote1 && remote2) {
|
| | | // both are remote heads, sort by name
|
| | | return o1.displayName.compareTo(o2.displayName); |
| | | }
|
| | | if (remote1) {
|
| | | // o1 is remote, o2 comes first
|
| | | return 1;
|
| | | }
|
| | | if (remote2) {
|
| | | // remote is o2, o1 comes first
|
| | | return -1;
|
| | | }
|
| | | // standard sort
|
| | | return o1.displayName.compareTo(o2.displayName);
|
| | | }
|
| | | });
|
| | |
|
| | | |
| | | // count remote and determine if we should insert a break
|
| | | int remoteCount = 0;
|
| | | for (RefModel ref : refs) {
|
| | | if (ref.displayName.startsWith(Constants.R_REMOTES)) {
|
| | | remoteCount++;
|
| | | }
|
| | | }
|
| | | final boolean shouldBreak = remoteCount < refs.size();
|
| | | |
| | | ListDataProvider<RefModel> refsDp = new ListDataProvider<RefModel>(refs);
|
| | | DataView<RefModel> refsView = new DataView<RefModel>("ref", refsDp) {
|
| | | private static final long serialVersionUID = 1L;
|
| | | private boolean alreadyInsertedBreak = !shouldBreak;
|
| | |
|
| | | public void populateItem(final Item<RefModel> item) {
|
| | | RefModel entry = item.getModelObject();
|
| | | String name = entry.displayName;
|
| | | String objectid = entry.getReferencedObjectId().getName();
|
| | |
|
| | | boolean breakLine = false;
|
| | | Class<? extends RepositoryPage> linkClass = CommitPage.class;
|
| | | String cssClass = "";
|
| | | if (name.startsWith(Constants.R_HEADS)) {
|
| | |
| | | linkClass = LogPage.class;
|
| | | name = name.substring(Constants.R_REMOTES.length());
|
| | | cssClass = "remoteBranch";
|
| | | if (!alreadyInsertedBreak) {
|
| | | breakLine = true;
|
| | | alreadyInsertedBreak = true;
|
| | | }
|
| | | } else if (name.startsWith(Constants.R_TAGS)) {
|
| | | // tag
|
| | | if (entry.isAnnotatedTag()) {
|
| | |
| | | WicketUtils.setCssClass(c, cssClass);
|
| | | WicketUtils.setHtmlTooltip(c, name);
|
| | | item.add(c);
|
| | | Label lb = new Label("lineBreak", "<br/>");
|
| | | lb.setVisible(breakLine);
|
| | | lb.setRenderBodyOnly(true);
|
| | | item.add(lb.setEscapeModelStrings(false));
|
| | | }
|
| | | };
|
| | | add(refsView);
|
| | |
| | | }
|
| | |
|
| | | String shortMessage = entry.getShortMessage();
|
| | | String trimmedMessage = StringUtils.trimShortLog(shortMessage);
|
| | | String trimmedMessage = shortMessage;
|
| | | if (allRefs.containsKey(entry.getId())) {
|
| | | trimmedMessage = StringUtils.trimString(shortMessage, Constants.LEN_SHORTLOG_REFS);
|
| | | } else {
|
| | | trimmedMessage = StringUtils.trimString(shortMessage, Constants.LEN_SHORTLOG);
|
| | | }
|
| | | LinkPanel shortlog = new LinkPanel("commitShortMessage", "list subject",
|
| | | trimmedMessage, CommitPage.class, WicketUtils.newObjectParameter(
|
| | | repositoryName, entry.getName()));
|
| | |
| | | <wicket:panel>
|
| | |
|
| | | <!-- tags -->
|
| | | <div class="header"><img style="vertical-align: middle;" src="tag_16x16.png"></img><span wicket:id="header">[tags header]</span></div> |
| | | <div class="header"><i class="icon-tags" style="vertical-align: middle;"></i> <b><span wicket:id="header">[tags header]</span></b></div> |
| | | <table class="pretty">
|
| | | <tbody>
|
| | | <tr wicket:id="tag">
|
| | |
| | | import com.gitblit.wicket.pages.LogPage;
|
| | | import com.gitblit.wicket.pages.RawPage;
|
| | | import com.gitblit.wicket.pages.RepositoryPage;
|
| | | import com.gitblit.wicket.pages.SummaryPage;
|
| | | import com.gitblit.wicket.pages.TagPage;
|
| | | import com.gitblit.wicket.pages.TagsPage;
|
| | | import com.gitblit.wicket.pages.TreePage;
|
| | |
| | | TagsPage.class, WicketUtils.newRepositoryParameter(repositoryName)));
|
| | | } else {
|
| | | // tags page
|
| | | // show repository summary page link
|
| | | add(new LinkPanel("header", "title", repositoryName, SummaryPage.class,
|
| | | WicketUtils.newRepositoryParameter(repositoryName)));
|
| | | add(new Label("header", new StringResourceModel("gb.tags", this, null)));
|
| | | }
|
| | |
|
| | | ListDataProvider<RefModel> tagsDp = new ListDataProvider<RefModel>(tags);
|
| | |
| | | .getReferencedObjectId().getName())));
|
| | |
|
| | | // workaround for RevTag returning a lengthy shortlog. :(
|
| | | String message = StringUtils.trimShortLog(entry.getShortMessage());
|
| | | String message = StringUtils.trimString(entry.getShortMessage(), |
| | | com.gitblit.Constants.LEN_SHORTLOG);
|
| | |
|
| | | if (linkClass.equals(BlobPage.class)) {
|
| | | // Blob Tag Object
|
| | |
| | | public void testTrim() throws Exception {
|
| | | String input = "123456789 123456789 123456789 123456789 123456789 123456789 123456789 ";
|
| | | String output = "123456789 123456789 123456789 123456789 123456789 1234567...";
|
| | | assertEquals(output, StringUtils.trimShortLog(input));
|
| | | assertEquals(output, StringUtils.trimString(input, 60));
|
| | | assertEquals(input, StringUtils.trimString(input, input.length()));
|
| | | }
|
| | |
|