@@ -66,6 +66,10 @@ web.diffStyle = gitblit | |||
# Control if email addresses are shown in web ui | |||
web.showEmailAddresses = true | |||
# Shows a combobox in the page links header with commit, committer, and author | |||
# search selection. Default search is commit. | |||
web.showSearchTypeSelection = false | |||
# Generates a line graph of repository activity over time on the Summary page. | |||
# This is a real-time graph so generation may be expensive. | |||
web.generateActivityGraph = true | |||
@@ -78,9 +82,9 @@ web.summaryCommitCount = 16 | |||
# Value must exceed 0 else default of 5 is used | |||
web.summaryRefsCount = 5 | |||
# The number of commits to show on each page of a Log | |||
# Value must exceed 0 else default of 50 is used | |||
web.logPageCommitCount = 50 | |||
# The number of items to show on a page before showing the first, prev, next | |||
# pagination links. A default if 50 is used for any invalid value. | |||
web.itemsPerPage = 50 | |||
# Registered extensions for google-code-prettify | |||
web.prettyPrintExtensions = c cpp cs css htm html java js php pl prefs properties py rb sh sql xml vb | |||
@@ -113,12 +117,6 @@ regex.global.changeid = \\b(Change-Id:\\s*)([A-Za-z0-9]*)\\b!!!<a href="http://s | |||
# Example per-repository regex substitutions overrides global | |||
#regex.myrepository.bug = \\b(Bug:)(\\s*[#]?|-){0,1}(\\d+)\\b!!!<a href="http://elsewhere/bug/$3">Bug-Id: $3</a> | |||
# Enable tickets pages for all repositories (if ticgit branch is present) | |||
tickets.global = false | |||
# Enable tickets pages for specified repository (if ticgit branch is present) | |||
#tickets.myrepository = true | |||
# | |||
# Server Settings | |||
# |
@@ -116,7 +116,7 @@ public class GitBlit implements ServletContextListener { | |||
JGitUtils.setRepositoryOwner(r, repository.owner); | |||
JGitUtils.setRepositoryUseTickets(r, repository.useTickets); | |||
JGitUtils.setRepositoryUseDocs(r, repository.useDocs); | |||
JGitUtils.setRepositoryUseNamedUsers(r, repository.useNamedUsers); | |||
JGitUtils.setRepositoryRestrictedAccess(r, repository.useRestrictedAccess); | |||
} | |||
public List<String> getRepositoryList() { | |||
@@ -130,9 +130,15 @@ public class GitBlit implements ServletContextListener { | |||
Repository r = getRepository(repo); | |||
String description = JGitUtils.getRepositoryDescription(r); | |||
String owner = JGitUtils.getRepositoryOwner(r); | |||
String group = JGitUtils.getRepositoryGroup(r); | |||
Date lastchange = JGitUtils.getLastChange(r); | |||
RepositoryModel model = new RepositoryModel(repo, description, owner, lastchange); | |||
model.group = group; | |||
model.useTickets = JGitUtils.getRepositoryUseTickets(r); | |||
model.useDocs = JGitUtils.getRepositoryUseDocs(r); | |||
model.useRestrictedAccess = JGitUtils.getRepositoryRestrictedAccess(r); | |||
r.close(); | |||
repositories.add(new RepositoryModel(repo, description, owner, lastchange)); | |||
repositories.add(model); | |||
} | |||
return repositories; | |||
} |
@@ -749,6 +749,14 @@ public class JGitUtils { | |||
setRepositoryConfigString(r, "owner", owner); | |||
} | |||
public static String getRepositoryGroup(Repository r) { | |||
return getRepositoryConfigString(r, "group"); | |||
} | |||
public static void setRepositoryGroup(Repository r, String group) { | |||
setRepositoryConfigString(r, "group", group); | |||
} | |||
public static boolean getRepositoryUseTickets(Repository r) { | |||
return getRepositoryConfigBoolean(r, "useTickets", false); | |||
} | |||
@@ -765,12 +773,12 @@ public class JGitUtils { | |||
setRepositoryConfigBoolean(r, "useDocs", value); | |||
} | |||
public static boolean getRepositoryUseNamedUsers(Repository r) { | |||
return getRepositoryConfigBoolean(r, "useNamedUsers", false); | |||
public static boolean getRepositoryRestrictedAccess(Repository r) { | |||
return getRepositoryConfigBoolean(r, "restrictedAccess", false); | |||
} | |||
public static void setRepositoryUseNamedUsers(Repository r, boolean value) { | |||
setRepositoryConfigBoolean(r, "useNamedUsers", value); | |||
public static void setRepositoryRestrictedAccess(Repository r, boolean value) { | |||
setRepositoryConfigBoolean(r, "restrictedAccess", value); | |||
} | |||
public static String getRepositoryConfigString(Repository r, String field) { | |||
@@ -886,6 +894,10 @@ public class JGitUtils { | |||
metrics.add(0, total); | |||
return metrics; | |||
} | |||
public static RefModel getDocumentsBranch(Repository r) { | |||
return getTicketsBranch(r); | |||
} | |||
public static RefModel getTicketsBranch(Repository r) { | |||
RefModel ticgitBranch = null; |
@@ -66,4 +66,8 @@ gb.filesRenamed = {0} files renamed | |||
gb.missingUsername = Missing Username | |||
gb.edit = edit | |||
gb.searchTypeTooltip = Select Search Type | |||
gb.searchTooltip = Search Git:Blit | |||
gb.searchTooltip = Search Git:Blit | |||
gb.rename = rename | |||
gb.delete = delete | |||
gb.docs = docs | |||
gb.restrictedAccess = restricted access |
@@ -140,26 +140,26 @@ public abstract class RepositoryPage extends BasePage { | |||
protected void setPersonSearchTooltip(Component component, String value, SearchType searchType) { | |||
if (searchType.equals(SearchType.AUTHOR)) { | |||
WicketUtils.setHtmlTitle(component, getString("gb.searchForAuthor") + " " + value); | |||
WicketUtils.setHtmlTooltip(component, getString("gb.searchForAuthor") + " " + value); | |||
} else if (searchType.equals(SearchType.COMMITTER)) { | |||
WicketUtils.setHtmlTitle(component, getString("gb.searchForCommitter") + " " + value); | |||
WicketUtils.setHtmlTooltip(component, getString("gb.searchForCommitter") + " " + value); | |||
} | |||
} | |||
protected void setChangeTypeTooltip(Component container, ChangeType type) { | |||
switch (type) { | |||
case ADD: | |||
WicketUtils.setHtmlTitle(container, getString("gb.addition")); | |||
WicketUtils.setHtmlTooltip(container, getString("gb.addition")); | |||
break; | |||
case COPY: | |||
case RENAME: | |||
WicketUtils.setHtmlTitle(container, getString("gb.rename")); | |||
WicketUtils.setHtmlTooltip(container, getString("gb.rename")); | |||
break; | |||
case DELETE: | |||
WicketUtils.setHtmlTitle(container, getString("gb.deletion")); | |||
WicketUtils.setHtmlTooltip(container, getString("gb.deletion")); | |||
break; | |||
case MODIFY: | |||
WicketUtils.setHtmlTitle(container, getString("gb.modification")); | |||
WicketUtils.setHtmlTooltip(container, getString("gb.modification")); | |||
break; | |||
} | |||
} |
@@ -9,6 +9,8 @@ import org.apache.wicket.Component; | |||
import org.apache.wicket.PageParameters; | |||
import org.apache.wicket.behavior.SimpleAttributeModifier; | |||
import org.apache.wicket.markup.html.basic.Label; | |||
import org.apache.wicket.markup.html.image.ContextImage; | |||
import org.apache.wicket.resource.ContextRelativeResource; | |||
import org.eclipse.jgit.diff.DiffEntry.ChangeType; | |||
import org.eclipse.jgit.lib.Constants; | |||
@@ -28,7 +30,7 @@ public class WicketUtils { | |||
container.add(new SimpleAttributeModifier("style", value)); | |||
} | |||
public static void setHtmlTitle(Component container, String value) { | |||
public static void setHtmlTooltip(Component container, String value) { | |||
container.add(new SimpleAttributeModifier("title", value)); | |||
} | |||
@@ -77,10 +79,34 @@ public class WicketUtils { | |||
public static Label createAuthorLabel(String wicketId, String author) { | |||
Label label = new Label(wicketId, author); | |||
WicketUtils.setHtmlTitle(label, author); | |||
WicketUtils.setHtmlTooltip(label, author); | |||
return label; | |||
} | |||
public static ContextImage newClearPixel(String wicketId) { | |||
return newImage(wicketId, "pixel.png"); | |||
} | |||
public static ContextImage newBlankImage(String wicketId) { | |||
return newImage(wicketId, "blank.png"); | |||
} | |||
public static ContextImage newImage(String wicketId, String file) { | |||
return newImage(wicketId, file, null); | |||
} | |||
public static ContextImage newImage(String wicketId, String file, String tooltip) { | |||
ContextImage img = new ContextImage(wicketId, "/com/gitblit/wicket/resources/" + file); | |||
if (!StringUtils.isEmpty(tooltip)) { | |||
setHtmlTooltip(img, tooltip); | |||
} | |||
return img; | |||
} | |||
public static ContextRelativeResource getResource(String file) { | |||
return new ContextRelativeResource("/com/gitblit/wicket/resources/" + file); | |||
} | |||
public static PageParameters newRepositoryParameter(String repositoryName) { | |||
return new PageParameters("r=" + repositoryName); | |||
} | |||
@@ -170,7 +196,7 @@ public class WicketUtils { | |||
} | |||
Label label = new Label(wicketId, dateString); | |||
WicketUtils.setCssClass(label, TimeUtils.timeAgoCss(date)); | |||
WicketUtils.setHtmlTitle(label, title); | |||
WicketUtils.setHtmlTooltip(label, title); | |||
return label; | |||
} | |||
@@ -182,7 +208,7 @@ public class WicketUtils { | |||
String dateString = df.format(date); | |||
String title = TimeUtils.timeAgo(date); | |||
Label label = new Label(wicketId, dateString); | |||
WicketUtils.setHtmlTitle(label, title); | |||
WicketUtils.setHtmlTooltip(label, title); | |||
return label; | |||
} | |||
} |
@@ -9,10 +9,11 @@ public class RepositoryModel implements Serializable { | |||
public String name; | |||
public String description; | |||
public String owner; | |||
public String group; | |||
public Date lastChange; | |||
public boolean useTickets; | |||
public boolean useDocs; | |||
public boolean useNamedUsers; | |||
public boolean useRestrictedAccess; | |||
public RepositoryModel(String name, String description, String owner, Date lastchange) { | |||
this.name = name; |
@@ -13,13 +13,13 @@ | |||
<form wicket:id="editForm"> | |||
<table class="plain"> | |||
<tbody> | |||
<tr><th>Name</th><td><input type="text" wicket:id="name" size="30" /></td></tr> | |||
<tr><th>Description</th><td><input type="text" wicket:id="description" size="80" /></td></tr> | |||
<tr><th>Owner</th><td><input type="text" wicket:id="owner" size="30" /></td></tr> | |||
<tr><th>Use Git:Blit Tickets</th><td><input type="checkbox" wicket:id="useTickets"/>distributed Git:Blit ticketing</td></tr> | |||
<tr><th>Use Git:Blit Docs</th><td><input type="checkbox" wicket:id="useDocs"/>distributed Git:Blit documentation</td></tr> | |||
<tr><th>Named User Access</th><td><input type="checkbox" wicket:id="useNamedUsers"/>not implemented</td></tr> | |||
<tr><td colspan="2"><input type="submit" value="Submit"/></td></tr> | |||
<tr><th>Name</th><td class="edit"><input type="text" wicket:id="name" size="30" tabindex="1" /></td></tr> | |||
<tr><th>Description</th><td class="edit"><input type="text" wicket:id="description" size="80" tabindex="2" /></td></tr> | |||
<tr><th>Owner</th><td class="edit"><input type="text" wicket:id="owner" size="30" tabindex="3" /></td></tr> | |||
<tr><th>Group</th><td class="edit"><input type="text" wicket:id="group" size="30" tabindex="4" /></td></tr> | |||
<tr><th>Enable Tickets</th><td class="edit"><input type="checkbox" wicket:id="useTickets" tabindex="5" /> <i>distributed Ticgit ticketing</i></td></tr> | |||
<tr><th>Enable Docs</th><td class="edit"><input type="checkbox" wicket:id="useDocs" tabindex="6" /> <i>distributed Markdown documentation</i></td></tr> | |||
<tr><td class="edit" colspan="2"><input type="submit" value="Submit" tabindex="7" /></td></tr> | |||
</tbody> | |||
</table> | |||
</form> |
@@ -7,8 +7,10 @@ import org.apache.wicket.markup.html.form.CheckBox; | |||
import org.apache.wicket.markup.html.form.Form; | |||
import org.apache.wicket.markup.html.form.TextField; | |||
import org.apache.wicket.model.CompoundPropertyModel; | |||
import org.eclipse.jgit.lib.Repository; | |||
import com.gitblit.GitBlit; | |||
import com.gitblit.utils.JGitUtils; | |||
import com.gitblit.wicket.AdminPage; | |||
import com.gitblit.wicket.BasePage; | |||
import com.gitblit.wicket.WicketUtils; | |||
@@ -30,8 +32,17 @@ public class EditRepositoryPage extends BasePage { | |||
// edit constructor | |||
super(params); | |||
isCreate = false; | |||
String repositoryName = WicketUtils.getRepositoryName(params); | |||
setupPage(new RepositoryModel(repositoryName, "", "", new Date())); | |||
String name = WicketUtils.getRepositoryName(params); | |||
Repository r = GitBlit.self().getRepository(name); | |||
String description = JGitUtils.getRepositoryDescription(r); | |||
String owner = JGitUtils.getRepositoryOwner(r); | |||
String group = JGitUtils.getRepositoryGroup(r); | |||
RepositoryModel model = new RepositoryModel(name, description, owner, new Date()); | |||
model.group = group; | |||
model.useTickets = JGitUtils.getRepositoryUseTickets(r); | |||
model.useDocs = JGitUtils.getRepositoryUseDocs(r); | |||
model.useRestrictedAccess = JGitUtils.getRepositoryRestrictedAccess(r); | |||
setupPage(model); | |||
} | |||
protected void setupPage(final RepositoryModel repository) { | |||
@@ -55,9 +66,9 @@ public class EditRepositoryPage extends BasePage { | |||
form.add(new TextField<String>("name").setEnabled(isCreate)); | |||
form.add(new TextField<String>("description")); | |||
form.add(new TextField<String>("owner")); | |||
form.add(new TextField<String>("group")); | |||
form.add(new CheckBox("useTickets")); | |||
form.add(new CheckBox("useDocs")); | |||
form.add(new CheckBox("useNamedUsers")); | |||
add(form); | |||
} |
@@ -20,6 +20,7 @@ | |||
<th wicket:id="orderByRepository"><wicket:message key="gb.repository">Repository</wicket:message></th> | |||
<th wicket:id="orderByDescription"><wicket:message key="gb.description">Description</wicket:message></th> | |||
<th wicket:id="orderByOwner"><wicket:message key="gb.owner">Owner</wicket:message></th> | |||
<th></th> | |||
<th wicket:id="orderByDate"><wicket:message key="gb.lastChange">Last Change</wicket:message></th> | |||
<th></th> | |||
</tr> | |||
@@ -28,8 +29,9 @@ | |||
<td><div class="list" wicket:id="repositoryName">[repository name]</div></td> | |||
<td><div class="list" wicket:id="repositoryDescription">[repository description]</div></td> | |||
<td class="author"><span wicket:id="repositoryOwner">[repository owner]</span></td> | |||
<td class="icon"><img wicket:id="ticketsIcon" /><img wicket:id="docsIcon" /><img wicket:id="restrictedAccessIcon" /></td> | |||
<td><span wicket:id="repositoryLastChange">[last change]</span></td> | |||
<td><a wicket:id="repositoryLinks"><wicket:message key="gb.edit">[edit]</wicket:message></a></td> | |||
<td class="rightAlign"><span wicket:id="repositoryLinks"></span></td> | |||
</tr> | |||
</tbody> | |||
</table> | |||
@@ -40,6 +42,10 @@ | |||
<a wicket:id="newRepository"><wicket:message key="gb.newRepository"></wicket:message></a> | <a wicket:id="newUser"><wicket:message key="gb.newUser"></wicket:message></a> | |||
</div> | |||
</wicket:fragment> | |||
<wicket:fragment wicket:id="repositoryAdminLinks"> | |||
<span class="link"><a wicket:id="editRepository"><wicket:message key="gb.edit">[edit]</wicket:message></a> | <a wicket:id="renameRepository"><wicket:message key="gb.rename">[rename]</wicket:message></a> | <a wicket:id="deleteRepository"><wicket:message key="gb.delete">[delete]</wicket:message></a></span> | |||
</wicket:fragment> | |||
</wicket:extend> | |||
</body> | |||
</html> |
@@ -48,7 +48,7 @@ public class RepositoriesPage extends BasePage { | |||
} else { | |||
showAdmin = GitBlit.self().settings().getBoolean(Keys.web.allowAdministration, false); | |||
} | |||
Fragment adminLinks = new Fragment("adminPanel", "adminLinks", this); | |||
adminLinks.add(new BookmarkablePageLink<Void>("newRepository", EditRepositoryPage.class)); | |||
adminLinks.add(new BookmarkablePageLink<Void>("newUser", RepositoriesPage.class)); | |||
@@ -60,7 +60,7 @@ public class RepositoriesPage extends BasePage { | |||
if (messageSource.equalsIgnoreCase("gitblit")) { | |||
// Read default welcome message | |||
try { | |||
ContextRelativeResource res = new ContextRelativeResource("/com/gitblit/wicket/resources/welcome.mkd"); | |||
ContextRelativeResource res = WicketUtils.getResource("welcome.mkd"); | |||
InputStream is = res.getResourceStream().getInputStream(); | |||
InputStreamReader reader = new InputStreamReader(is); | |||
StringWriter writer = new StringWriter(); | |||
@@ -112,6 +112,25 @@ public class RepositoriesPage extends BasePage { | |||
PageParameters pp = WicketUtils.newRepositoryParameter(entry.name); | |||
item.add(new LinkPanel("repositoryName", "list", entry.name, SummaryPage.class, pp)); | |||
item.add(new LinkPanel("repositoryDescription", "list", entry.description, SummaryPage.class, pp)); | |||
if (entry.useTickets) { | |||
item.add(WicketUtils.newImage("ticketsIcon", "bug_16x16.png", getString("gb.tickets"))); | |||
} else { | |||
item.add(WicketUtils.newClearPixel("ticketsIcon")); | |||
} | |||
if (entry.useDocs) { | |||
item.add(WicketUtils.newImage("docsIcon", "book_16x16.png", getString("gb.docs"))); | |||
} else { | |||
item.add(WicketUtils.newClearPixel("docsIcon")); | |||
} | |||
if (entry.useRestrictedAccess) { | |||
item.add(WicketUtils.newImage("restrictedAccessIcon", "lock_16x16.png", getString("gb.restrictedAccess"))); | |||
} else { | |||
item.add(WicketUtils.newClearPixel("restrictedAccessIcon")); | |||
} | |||
item.add(new Label("repositoryOwner", entry.owner)); | |||
String lastChange = TimeUtils.timeAgo(entry.lastChange); | |||
@@ -119,8 +138,15 @@ public class RepositoriesPage extends BasePage { | |||
item.add(lastChangeLabel); | |||
WicketUtils.setCssClass(lastChangeLabel, TimeUtils.timeAgoCss(entry.lastChange)); | |||
item.add(new BookmarkablePageLink<Void>("repositoryLinks", EditRepositoryPage.class, WicketUtils.newRepositoryParameter(entry.name)).setVisible(showAdmin)); | |||
if (showAdmin) { | |||
Fragment repositoryLinks = new Fragment("repositoryLinks", "repositoryAdminLinks", this); | |||
repositoryLinks.add(new BookmarkablePageLink<Void>("editRepository", EditRepositoryPage.class, WicketUtils.newRepositoryParameter(entry.name))); | |||
repositoryLinks.add(new BookmarkablePageLink<Void>("renameRepository", EditRepositoryPage.class, WicketUtils.newRepositoryParameter(entry.name)).setEnabled(false)); | |||
repositoryLinks.add(new BookmarkablePageLink<Void>("deleteRepository", EditRepositoryPage.class, WicketUtils.newRepositoryParameter(entry.name)).setEnabled(false)); | |||
item.add(repositoryLinks); | |||
} else { | |||
item.add(new Label("repositoryLinks")); | |||
} | |||
WicketUtils.setAlternatingBackground(item, counter); | |||
counter++; | |||
} |
@@ -7,7 +7,6 @@ import java.util.List; | |||
import org.apache.wicket.PageParameters; | |||
import org.apache.wicket.markup.html.basic.Label; | |||
import org.apache.wicket.markup.html.image.ContextImage; | |||
import org.eclipse.jgit.lib.Repository; | |||
import org.wicketstuff.googlecharts.AbstractChartData; | |||
import org.wicketstuff.googlecharts.Chart; | |||
@@ -100,7 +99,7 @@ public class SummaryPage extends RepositoryPage { | |||
add(new Chart("commitsChart", provider)); | |||
} else { | |||
add(new ContextImage("commitsChart", "blank.png")); | |||
add(WicketUtils.newBlankImage("commitsChart")); | |||
} | |||
} | |||
@@ -24,6 +24,7 @@ | |||
<!-- changed paths --> | |||
<table style="width:100%" class="pretty"> | |||
<tr wicket:id="changedPath"> | |||
<td class="icon"><img wicket:id="pathIcon" /></td> | |||
<td><span wicket:id="pathName"></span></td> | |||
<td class="size"><span wicket:id="pathSize">[path size]</span></td> | |||
<td class="mode"><span wicket:id="pathPermissions">[path permissions]</span></td> |
@@ -57,12 +57,14 @@ public class TreePage extends RepositoryPage { | |||
item.add(new Label("pathPermissions", JGitUtils.getPermissionsFromMode(entry.mode))); | |||
if (entry.isParentPath) { | |||
// parent .. path | |||
item.add(WicketUtils.newBlankImage("pathIcon")); | |||
item.add(new Label("pathSize", "")); | |||
item.add(new LinkPanel("pathName", null, entry.name, TreePage.class, newPathParameter(entry.path))); | |||
item.add(new Label("pathLinks", "")); | |||
} else { | |||
if (entry.isTree()) { | |||
// folder/tree link | |||
item.add(WicketUtils.newImage("pathIcon", "folder_16x16.png")); | |||
item.add(new Label("pathSize", "")); | |||
item.add(new LinkPanel("pathName", null, entry.name, TreePage.class, newPathParameter(entry.path))); | |||
@@ -73,6 +75,7 @@ public class TreePage extends RepositoryPage { | |||
item.add(links); | |||
} else { | |||
// blob link | |||
item.add(WicketUtils.newImage("pathIcon", "file_16x16.png")); | |||
item.add(new Label("pathSize", byteFormat.format(entry.size))); | |||
item.add(new LinkPanel("pathName", "list", entry.name, BlobPage.class, newPathParameter(entry.path))); | |||
@@ -25,9 +25,9 @@ public abstract class BasePanel extends Panel { | |||
protected void setPersonSearchTooltip(Component component, String value, SearchType searchType) { | |||
if (searchType.equals(SearchType.AUTHOR)) { | |||
WicketUtils.setHtmlTitle(component, getString("gb.searchForAuthor") + " " + value); | |||
WicketUtils.setHtmlTooltip(component, getString("gb.searchForAuthor") + " " + value); | |||
} else if (searchType.equals(SearchType.COMMITTER)) { | |||
WicketUtils.setHtmlTitle(component, getString("gb.searchForCommitter") + " " + value); | |||
WicketUtils.setHtmlTooltip(component, getString("gb.searchForCommitter") + " " + value); | |||
} | |||
} | |||
} |
@@ -5,7 +5,6 @@ import java.util.List; | |||
import java.util.Map; | |||
import org.apache.wicket.markup.html.basic.Label; | |||
import org.apache.wicket.markup.html.image.ContextImage; | |||
import org.apache.wicket.markup.html.link.BookmarkablePageLink; | |||
import org.apache.wicket.markup.html.panel.Fragment; | |||
import org.apache.wicket.markup.repeater.Item; | |||
@@ -43,7 +42,7 @@ public class HistoryPanel extends BasePanel { | |||
public HistoryPanel(String wicketId, final String repositoryName, final 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); | |||
int itemsPerPage = GitBlit.self().settings().getInteger(Keys.web.itemsPerPage, 50); | |||
if (itemsPerPage <= 1) { | |||
itemsPerPage = 50; | |||
} | |||
@@ -107,16 +106,16 @@ public class HistoryPanel extends BasePanel { | |||
// merge icon | |||
if (entry.getParentCount() > 1) { | |||
item.add(new ContextImage("commitIcon", "/com/gitblit/wicket/resources/commit_merge_16x16.png")); | |||
item.add(WicketUtils.newImage("commitIcon", "commit_merge_16x16.png")); | |||
} else { | |||
item.add(new ContextImage("commitIcon", "/com/gitblit/wicket/resources/blank.png")); | |||
item.add(WicketUtils.newBlankImage("commitIcon")); | |||
} | |||
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); | |||
WicketUtils.setHtmlTooltip(shortlog, shortMessage); | |||
} | |||
item.add(shortlog); | |||
@@ -5,7 +5,6 @@ import java.util.List; | |||
import java.util.Map; | |||
import org.apache.wicket.markup.html.basic.Label; | |||
import org.apache.wicket.markup.html.image.ContextImage; | |||
import org.apache.wicket.markup.html.link.BookmarkablePageLink; | |||
import org.apache.wicket.markup.repeater.Item; | |||
import org.apache.wicket.markup.repeater.data.DataView; | |||
@@ -38,7 +37,7 @@ public class LogPanel extends BasePanel { | |||
public LogPanel(String wicketId, final String repositoryName, final String objectId, Repository r, int limit, int pageOffset) { | |||
super(wicketId); | |||
boolean pageResults = limit <= 0; | |||
int itemsPerPage = GitBlit.self().settings().getInteger(Keys.web.logPageCommitCount, 50); | |||
int itemsPerPage = GitBlit.self().settings().getInteger(Keys.web.itemsPerPage, 50); | |||
if (itemsPerPage <= 1) { | |||
itemsPerPage = 50; | |||
} | |||
@@ -87,9 +86,9 @@ public class LogPanel extends BasePanel { | |||
// merge icon | |||
if (entry.getParentCount() > 1) { | |||
item.add(new ContextImage("commitIcon", "/com/gitblit/wicket/resources/commit_merge_16x16.png")); | |||
item.add(WicketUtils.newImage("commitIcon", "commit_merge_16x16.png")); | |||
} else { | |||
item.add(new ContextImage("commitIcon", "/com/gitblit/wicket/resources/blank.png")); | |||
item.add(WicketUtils.newBlankImage("commitIcon")); | |||
} | |||
// short message | |||
@@ -97,7 +96,7 @@ public class LogPanel extends BasePanel { | |||
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); | |||
WicketUtils.setHtmlTooltip(shortlog, shortMessage); | |||
} | |||
item.add(shortlog); | |||
@@ -9,7 +9,7 @@ | |||
<form wicket:id="searchForm"> | |||
<div class="search"> | |||
<select wicket:id="searchType"/> | |||
<input type="text" id="searchBox" wicket:id="searchBox" value=""/> | |||
<input type="text" id="searchBox" wicket:id="searchBox" size="25" value=""/> | |||
</div> | |||
</form> | |||
@@ -1,6 +1,5 @@ | |||
package com.gitblit.wicket.panels; | |||
import java.text.MessageFormat; | |||
import java.util.ArrayList; | |||
import java.util.Arrays; | |||
import java.util.HashMap; | |||
@@ -63,16 +62,20 @@ public class PageLinksPanel extends Panel { | |||
add(new BookmarkablePageLink<Void>("tags", TagsPage.class, WicketUtils.newRepositoryParameter(repositoryName))); | |||
add(new BookmarkablePageLink<Void>("tree", TreePage.class, WicketUtils.newRepositoryParameter(repositoryName))); | |||
// Get the repository tickets setting | |||
boolean checkTicgit = GitBlit.self().settings().getBoolean(Keys.tickets.global, false); | |||
checkTicgit |= GitBlit.self().settings().getBoolean(MessageFormat.format(Keys.tickets._ROOT + ".{0}", repositoryName), false); | |||
// Add dynamic repository extras | |||
List<String> extras = new ArrayList<String>(); | |||
if (checkTicgit && JGitUtils.getTicketsBranch(r) != null) { | |||
// Get the repository tickets setting | |||
boolean checkTickets = JGitUtils.getRepositoryUseTickets(r); | |||
if (checkTickets && JGitUtils.getTicketsBranch(r) != null) { | |||
extras.add("tickets"); | |||
} | |||
// Get the repository docs setting | |||
boolean checkDocs = JGitUtils.getRepositoryUseDocs(r); | |||
if (checkDocs && JGitUtils.getDocumentsBranch(r) != null) { | |||
extras.add("docs"); | |||
} | |||
ListDataProvider<String> extrasDp = new ListDataProvider<String>(extras); | |||
DataView<String> extrasView = new DataView<String>("extra", extrasDp) { | |||
private static final long serialVersionUID = 1L; | |||
@@ -81,7 +84,10 @@ public class PageLinksPanel extends Panel { | |||
String extra = item.getModelObject(); | |||
if (extra.equals("tickets")) { | |||
item.add(new Label("extraSeparator", " | ")); | |||
item.add(new LinkPanel("extraLink", null, "tickets", TicketsPage.class, WicketUtils.newRepositoryParameter(repositoryName))); | |||
item.add(new LinkPanel("extraLink", null, getString("gb.tickets"), TicketsPage.class, WicketUtils.newRepositoryParameter(repositoryName))); | |||
} else if (extra.equals("docs")) { | |||
item.add(new Label("extraSeparator", " | ")); | |||
item.add(new LinkPanel("extraLink", null, getString("gb.docs"), TicketsPage.class, WicketUtils.newRepositoryParameter(repositoryName))); | |||
} | |||
} | |||
}; | |||
@@ -110,7 +116,7 @@ public class PageLinksPanel extends Panel { | |||
private final String repositoryName; | |||
private final IModel<String> searchBoxModel = new Model<String>(""); | |||
private final IModel<SearchType> searchTypeModel = new Model<SearchType>(SearchType.COMMIT); | |||
public SearchForm(String id, String repositoryName) { | |||
@@ -118,11 +124,11 @@ public class PageLinksPanel extends Panel { | |||
this.repositoryName = repositoryName; | |||
DropDownChoice<SearchType> searchType = new DropDownChoice<SearchType>("searchType", Arrays.asList(SearchType.values())); | |||
searchType.setModel(searchTypeModel); | |||
WicketUtils.setHtmlTitle(searchType, getString("gb.searchTypeTooltip")); | |||
add(searchType); | |||
WicketUtils.setHtmlTooltip(searchType, getString("gb.searchTypeTooltip")); | |||
add(searchType.setVisible(GitBlit.self().settings().getBoolean(Keys.web.showSearchTypeSelection, false))); | |||
TextField<String> searchBox = new TextField<String>("searchBox", searchBoxModel); | |||
add(searchBox); | |||
WicketUtils.setHtmlTitle(searchBox, getString("gb.searchTooltip")); | |||
WicketUtils.setHtmlTooltip(searchBox, getString("gb.searchTooltip")); | |||
WicketUtils.setInputPlaceholder(searchBox, getString("gb.search")); | |||
} | |||
@@ -130,6 +136,13 @@ public class PageLinksPanel extends Panel { | |||
public void onSubmit() { | |||
SearchType searchType = searchTypeModel.getObject(); | |||
String searchString = searchBoxModel.getObject(); | |||
for (SearchType type : SearchType.values()) { | |||
if (searchString.toLowerCase().startsWith(type.name().toLowerCase() + ":")) { | |||
searchType = type; | |||
searchString = searchString.substring(type.name().toLowerCase().length() + 1).trim(); | |||
break; | |||
} | |||
} | |||
setResponsePage(SearchPage.class, WicketUtils.newSearchParameter(repositoryName, null, searchString, searchType)); | |||
} | |||
} |
@@ -57,7 +57,7 @@ public class RefsPanel extends Panel { | |||
c = new LinkPanel("refName", null, entry, CommitPage.class, WicketUtils.newObjectParameter(repositoryName, entry)); | |||
WicketUtils.setCssClass(c, "otherRef"); | |||
} | |||
WicketUtils.setHtmlTitle(c, entry); | |||
WicketUtils.setHtmlTooltip(c, entry); | |||
item.add(c); | |||
} | |||
}; |
@@ -4,7 +4,6 @@ import java.util.Date; | |||
import java.util.List; | |||
import java.util.Map; | |||
import org.apache.wicket.markup.html.image.ContextImage; | |||
import org.apache.wicket.markup.html.link.BookmarkablePageLink; | |||
import org.apache.wicket.markup.repeater.Item; | |||
import org.apache.wicket.markup.repeater.data.DataView; | |||
@@ -34,7 +33,7 @@ public class SearchPanel extends BasePanel { | |||
public SearchPanel(String wicketId, final String repositoryName, final String objectId, final String value, SearchType searchType, Repository r, int limit, int pageOffset) { | |||
super(wicketId); | |||
boolean pageResults = limit <= 0; | |||
int itemsPerPage = GitBlit.self().settings().getInteger(Keys.web.logPageCommitCount, 50); | |||
int itemsPerPage = GitBlit.self().settings().getInteger(Keys.web.itemsPerPage, 50); | |||
if (itemsPerPage <= 1) { | |||
itemsPerPage = 50; | |||
} | |||
@@ -77,9 +76,9 @@ public class SearchPanel extends BasePanel { | |||
// merge icon | |||
if (entry.getParentCount() > 1) { | |||
item.add(new ContextImage("commitIcon", "/com/gitblit/wicket/resources/commit_merge_16x16.png")); | |||
item.add(WicketUtils.newImage("commitIcon", "commit_merge_16x16.png")); | |||
} else { | |||
item.add(new ContextImage("commitIcon", "/com/gitblit/wicket/resources/blank.png")); | |||
item.add(WicketUtils.newBlankImage("commitIcon")); | |||
} | |||
String shortMessage = entry.getShortMessage(); | |||
@@ -87,7 +86,7 @@ public class SearchPanel extends BasePanel { | |||
// TODO highlight matches | |||
LinkPanel shortlog = new LinkPanel("commitShortMessage", "list subject", trimmedMessage, CommitPage.class, WicketUtils.newObjectParameter(repositoryName, entry.getName())); | |||
if (!shortMessage.equals(trimmedMessage)) { | |||
WicketUtils.setHtmlTitle(shortlog, shortMessage); | |||
WicketUtils.setHtmlTooltip(shortlog, shortMessage); | |||
} | |||
item.add(shortlog); | |||
@@ -3,7 +3,6 @@ package com.gitblit.wicket.panels; | |||
import java.util.List; | |||
import org.apache.wicket.markup.html.basic.Label; | |||
import org.apache.wicket.markup.html.image.ContextImage; | |||
import org.apache.wicket.markup.html.link.BookmarkablePageLink; | |||
import org.apache.wicket.markup.html.panel.Fragment; | |||
import org.apache.wicket.markup.repeater.Item; | |||
@@ -54,9 +53,9 @@ public class TagsPanel extends BasePanel { | |||
// tag icon | |||
if (entry.isAnnotatedTag()) { | |||
item.add(new ContextImage("tagIcon", "/com/gitblit/wicket/resources/tag_16x16.png")); | |||
item.add(WicketUtils.newImage("tagIcon", "tag_16x16.png")); | |||
} else { | |||
item.add(new ContextImage("tagIcon", "/com/gitblit/wicket/resources/blank.png")); | |||
item.add(WicketUtils.newBlankImage("tagIcon")); | |||
} | |||
item.add(new LinkPanel("tagName", "list name", entry.getDisplayName(), CommitPage.class, WicketUtils.newObjectParameter(repositoryName, entry.getCommitId().getName()))); |
@@ -172,15 +172,20 @@ div.search { | |||
color:yellow; | |||
text-align:right; | |||
float:right; | |||
padding:4px 4px 3px 3px; | |||
padding:4px 4px 3px 3px; | |||
border-left: 1px solid #8080f0; | |||
margin: 0px; | |||
height: 23px; | |||
} | |||
div.search input { | |||
vertical-align: top; | |||
background: url(/com/gitblit/wicket/resources/search-icon.png) no-repeat 4px center; | |||
color: #ddd; | |||
background-color: #000070; | |||
border: 1px solid transparent; | |||
padding: 0px 2px 2px 22px; | |||
padding: 2px 2px 2px 22px; | |||
margin: 0px; | |||
} | |||
div.search input:hover, div.search input:focus { | |||
@@ -380,6 +385,7 @@ div.commitLegend { | |||
float: right; | |||
padding: 0.4em; | |||
vertical-align:top; | |||
margin: 0px; | |||
} | |||
div.commitLegend span { | |||
@@ -424,6 +430,21 @@ table.plain { | |||
padding: 8px; | |||
} | |||
table.plain td.edit { | |||
padding: 3px; | |||
} | |||
table.plain td.edit input { | |||
margin: 0px; | |||
outline: 1px solid transparent; | |||
border: 1px solid #ccc; | |||
padding-left:5px; | |||
} | |||
table.plain td.edit input:focus, table.plain td.edit input:hover{ | |||
border: 1px solid orange; | |||
} | |||
table.pretty, table.repositories, table.comments { | |||
margin-bottom:5px; | |||
border-spacing: 0px; | |||
@@ -436,8 +457,8 @@ table.pretty, table.comments, table.repositories { | |||
} | |||
table.pretty td.icon { | |||
padding: 0px; | |||
width: 20px; | |||
padding: 0px 0px 0px 2px; | |||
width: 18px; | |||
} | |||
table.pretty td.icon img { | |||
@@ -456,11 +477,16 @@ table.comments td { | |||
table.repositories th { | |||
background-color:#D2C3AF; | |||
padding: 4px; | |||
border-top: 1px solid #808080; | |||
border-bottom: 1px solid #808080; | |||
} | |||
table.repositories td { | |||
padding: 4px; | |||
padding: 2px; | |||
} | |||
table.repositories td.icon img { | |||
vertical-align: top; | |||
} | |||
table.repositories th a { |