From f76fee63ed9cb3a30d3c0c092d860b1cb93a481b Mon Sep 17 00:00:00 2001
From: Gerard Smyth <gerard.smyth@gmail.com>
Date: Thu, 08 May 2014 13:09:30 -0400
Subject: [PATCH] Updated the SyndicationServlet to provide an additional option to return details of the tags in the repository instead of the commits. This uses a new 'ot' request parameter to indicate the object type of the content to return, which can be ither TAG or COMMIT. If this is not provided, then COMMIT is assumed to maintain backwards compatability. If tags are returned, then the paging parameters, 'l' and 'pg' are still supported, but searching options are currently ignored.
---
src/main/java/com/gitblit/wicket/WicketUtils.java | 350 ++++++++++++++++++++++++++++++++++------------------------
1 files changed, 205 insertions(+), 145 deletions(-)
diff --git a/src/main/java/com/gitblit/wicket/WicketUtils.java b/src/main/java/com/gitblit/wicket/WicketUtils.java
index 6e03032..687f010 100644
--- a/src/main/java/com/gitblit/wicket/WicketUtils.java
+++ b/src/main/java/com/gitblit/wicket/WicketUtils.java
@@ -20,7 +20,8 @@
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
-import java.util.List;
+import java.util.HashMap;
+import java.util.Map;
import java.util.TimeZone;
import javax.servlet.http.HttpServletRequest;
@@ -37,12 +38,10 @@
import org.apache.wicket.protocol.http.WebRequest;
import org.apache.wicket.resource.ContextRelativeResource;
import org.eclipse.jgit.diff.DiffEntry.ChangeType;
-import org.wicketstuff.googlecharts.AbstractChartData;
-import org.wicketstuff.googlecharts.IChartData;
import com.gitblit.Constants;
+import com.gitblit.Constants.AccessPermission;
import com.gitblit.Constants.FederationPullStatus;
-import com.gitblit.GitBlit;
import com.gitblit.Keys;
import com.gitblit.models.FederationModel;
import com.gitblit.models.Metric;
@@ -92,19 +91,26 @@
}
}
- public static void setTicketCssClass(Component container, String state) {
- String css = null;
- if (state.equals("open")) {
- css = "label label-important";
- } else if (state.equals("hold")) {
- css = "label label-warning";
- } else if (state.equals("resolved")) {
- css = "label label-success";
- } else if (state.equals("invalid")) {
- css = "label";
+ public static void setPermissionClass(Component container, AccessPermission permission) {
+ if (permission == null) {
+ setCssClass(container, "badge");
+ return;
}
- if (css != null) {
- setCssClass(container, css);
+ switch (permission) {
+ case REWIND:
+ case DELETE:
+ case CREATE:
+ setCssClass(container, "badge badge-success");
+ break;
+ case PUSH:
+ setCssClass(container, "badge badge-info");
+ break;
+ case CLONE:
+ setCssClass(container, "badge badge-inverse");
+ break;
+ default:
+ setCssClass(container, "badge");
+ break;
}
}
@@ -166,7 +172,7 @@
return newImage(wicketId, "file_excel_16x16.png");
} else if (filename.endsWith(".doc") || filename.endsWith(".docx")) {
return newImage(wicketId, "file_doc_16x16.png");
- } else if (filename.endsWith(".ppt")) {
+ } else if (filename.endsWith(".ppt") || filename.endsWith(".pptx")) {
return newImage(wicketId, "file_ppt_16x16.png");
} else if (filename.endsWith(".zip")) {
return newImage(wicketId, "file_zip_16x16.png");
@@ -180,11 +186,10 @@
return newImage(wicketId, "file_settings_16x16.png");
}
- List<String> mdExtensions = GitBlit.getStrings(Keys.web.markdownExtensions);
- for (String ext : mdExtensions) {
- if (filename.endsWith('.' + ext.toLowerCase())) {
- return newImage(wicketId, "file_world_16x16.png");
- }
+ MarkupProcessor processor = new MarkupProcessor(GitBlitWebApp.get().settings());
+ String ext = StringUtils.getFileExtension(filename).toLowerCase();
+ if (processor.getMarkupExtensions().contains(ext)) {
+ return newImage(wicketId, "file_world_16x16.png");
}
return newImage(wicketId, "file_16x16.png");
}
@@ -222,17 +227,17 @@
public static Label newIcon(String wicketId, String css) {
Label lbl = new Label(wicketId);
- setCssClass(lbl, css);
+ 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);
}
@@ -247,6 +252,7 @@
return new HeaderContributor(new IHeaderContributor() {
private static final long serialVersionUID = 1L;
+ @Override
public void renderHead(IHeaderResponse response) {
String contentType = "application/rss+xml";
@@ -261,100 +267,196 @@
}
public static PageParameters newTokenParameter(String token) {
- return new PageParameters("t=" + token);
+ Map<String, String> parameterMap = new HashMap<String, String>();
+ parameterMap.put("t", token);
+ return new PageParameters(parameterMap);
}
- public static PageParameters newRegistrationParameter(String url, String name) {
- return new PageParameters("u=" + url + ",n=" + name);
+ public static PageParameters newRegistrationParameter(String url,
+ String name) {
+ Map<String, String> parameterMap = new HashMap<String, String>();
+ parameterMap.put("u", url);
+ parameterMap.put("n", name);
+ return new PageParameters(parameterMap);
}
public static PageParameters newUsernameParameter(String username) {
- return new PageParameters("user=" + username);
+ Map<String, String> parameterMap = new HashMap<String, String>();
+ parameterMap.put("user", username);
+ return new PageParameters(parameterMap);
}
public static PageParameters newTeamnameParameter(String teamname) {
- return new PageParameters("team=" + teamname);
+ Map<String, String> parameterMap = new HashMap<String, String>();
+ parameterMap.put("team", teamname);
+ return new PageParameters(parameterMap);
}
public static PageParameters newProjectParameter(String projectName) {
- return new PageParameters("p=" + projectName);
+ Map<String, String> parameterMap = new HashMap<String, String>();
+ parameterMap.put("p", projectName);
+ return new PageParameters(parameterMap);
}
public static PageParameters newRepositoryParameter(String repositoryName) {
- return new PageParameters("r=" + repositoryName);
+ Map<String, String> parameterMap = new HashMap<String, String>();
+ if (!StringUtils.isEmpty(repositoryName)) {
+ parameterMap.put("r", repositoryName);
+ }
+ return new PageParameters(parameterMap);
}
public static PageParameters newObjectParameter(String objectId) {
- return new PageParameters("h=" + objectId);
+ Map<String, String> parameterMap = new HashMap<String, String>();
+ parameterMap.put("h", objectId);
+ return new PageParameters(parameterMap);
}
- public static PageParameters newObjectParameter(String repositoryName, String objectId) {
+ public static PageParameters newObjectParameter(String repositoryName,
+ String objectId) {
+ Map<String, String> parameterMap = new HashMap<String, String>();
if (StringUtils.isEmpty(objectId)) {
return newRepositoryParameter(repositoryName);
}
- return new PageParameters("r=" + repositoryName + ",h=" + objectId);
+ parameterMap.put("r", repositoryName);
+ parameterMap.put("h", objectId);
+ return new PageParameters(parameterMap);
}
- public static PageParameters newPathParameter(String repositoryName, String objectId,
- String path) {
+ public static PageParameters newRangeParameter(String repositoryName,
+ String startRange, String endRange) {
+ Map<String, String> parameterMap = new HashMap<String, String>();
+ parameterMap.put("r", repositoryName);
+ parameterMap.put("h", startRange + ".." + endRange);
+ return new PageParameters(parameterMap);
+ }
+
+ public static PageParameters newPathParameter(String repositoryName,
+ String objectId, String path) {
+ Map<String, String> parameterMap = new HashMap<String, String>();
if (StringUtils.isEmpty(path)) {
return newObjectParameter(repositoryName, objectId);
}
if (StringUtils.isEmpty(objectId)) {
- return new PageParameters("r=" + repositoryName + ",f=" + path);
+ parameterMap.put("r", repositoryName);
+ parameterMap.put("f", path);
+ return new PageParameters(parameterMap);
}
- return new PageParameters("r=" + repositoryName + ",h=" + objectId + ",f=" + path);
+ parameterMap.put("r", repositoryName);
+ parameterMap.put("h", objectId);
+ parameterMap.put("f", path);
+ return new PageParameters(parameterMap);
}
- public static PageParameters newLogPageParameter(String repositoryName, String objectId,
+ public static PageParameters newLogPageParameter(String repositoryName,
+ String objectId, int pageNumber) {
+ Map<String, String> parameterMap = new HashMap<String, String>();
+ if (pageNumber <= 1) {
+ return newObjectParameter(repositoryName, objectId);
+ }
+ if (StringUtils.isEmpty(objectId)) {
+ parameterMap.put("r", repositoryName);
+ parameterMap.put("pg", String.valueOf(pageNumber));
+ return new PageParameters(parameterMap);
+ }
+ parameterMap.put("r", repositoryName);
+ parameterMap.put("h", objectId);
+ parameterMap.put("pg", String.valueOf(pageNumber));
+ return new PageParameters(parameterMap);
+ }
+
+ public static PageParameters newHistoryPageParameter(String repositoryName,
+ String objectId, String path, int pageNumber) {
+ Map<String, String> parameterMap = new HashMap<String, String>();
+ if (pageNumber <= 1) {
+ return newObjectParameter(repositoryName, objectId);
+ }
+ if (StringUtils.isEmpty(objectId)) {
+ parameterMap.put("r", repositoryName);
+ parameterMap.put("f", path);
+ parameterMap.put("pg", String.valueOf(pageNumber));
+ return new PageParameters(parameterMap);
+ }
+ parameterMap.put("r", repositoryName);
+ parameterMap.put("h", objectId);
+ parameterMap.put("f", path);
+ parameterMap.put("pg", String.valueOf(pageNumber));
+ return new PageParameters(parameterMap);
+ }
+
+ public static PageParameters newBlobDiffParameter(String repositoryName,
+ String baseCommitId, String commitId, String path) {
+ Map<String, String> parameterMap = new HashMap<String, String>();
+ if (StringUtils.isEmpty(commitId)) {
+ parameterMap.put("r", repositoryName);
+ parameterMap.put("f", path);
+ parameterMap.put("hb", baseCommitId);
+ return new PageParameters(parameterMap);
+ }
+ parameterMap.put("r", repositoryName);
+ parameterMap.put("h", commitId);
+ parameterMap.put("f", path);
+ parameterMap.put("hb", baseCommitId);
+ return new PageParameters(parameterMap);
+ }
+
+ public static PageParameters newSearchParameter(String repositoryName,
+ String commitId, String search, Constants.SearchType type) {
+ Map<String, String> parameterMap = new HashMap<String, String>();
+ if (StringUtils.isEmpty(commitId)) {
+ parameterMap.put("r", repositoryName);
+ parameterMap.put("s", search);
+ parameterMap.put("st", type.name());
+ return new PageParameters(parameterMap);
+ }
+ parameterMap.put("r", repositoryName);
+ parameterMap.put("h", commitId);
+ parameterMap.put("s", search);
+ parameterMap.put("st", type.name());
+ return new PageParameters(parameterMap);
+ }
+
+ public static PageParameters newSearchParameter(String repositoryName,
+ String commitId, String search, Constants.SearchType type,
int pageNumber) {
- if (pageNumber <= 1) {
- return newObjectParameter(repositoryName, objectId);
- }
- if (StringUtils.isEmpty(objectId)) {
- return new PageParameters("r=" + repositoryName + ",pg=" + pageNumber);
- }
- return new PageParameters("r=" + repositoryName + ",h=" + objectId + ",pg=" + pageNumber);
- }
-
- public static PageParameters newHistoryPageParameter(String repositoryName, String objectId,
- String path, int pageNumber) {
- if (pageNumber <= 1) {
- return newObjectParameter(repositoryName, objectId);
- }
- if (StringUtils.isEmpty(objectId)) {
- return new PageParameters("r=" + repositoryName + ",f=" + path + ",pg=" + pageNumber);
- }
- return new PageParameters("r=" + repositoryName + ",h=" + objectId + ",f=" + path + ",pg="
- + pageNumber);
- }
-
- public static PageParameters newBlobDiffParameter(String repositoryName, String baseCommitId,
- String commitId, String path) {
+ Map<String, String> parameterMap = new HashMap<String, String>();
if (StringUtils.isEmpty(commitId)) {
- return new PageParameters("r=" + repositoryName + ",f=" + path + ",hb=" + baseCommitId);
+ parameterMap.put("r", repositoryName);
+ parameterMap.put("s", search);
+ parameterMap.put("st", type.name());
+ parameterMap.put("pg", String.valueOf(pageNumber));
+ return new PageParameters(parameterMap);
}
- return new PageParameters("r=" + repositoryName + ",h=" + commitId + ",f=" + path + ",hb="
- + baseCommitId);
+ parameterMap.put("r", repositoryName);
+ parameterMap.put("h", commitId);
+ parameterMap.put("s", search);
+ parameterMap.put("st", type.name());
+ parameterMap.put("pg", String.valueOf(pageNumber));
+ return new PageParameters(parameterMap);
}
- public static PageParameters newSearchParameter(String repositoryName, String commitId,
- String search, Constants.SearchType type) {
- if (StringUtils.isEmpty(commitId)) {
- return new PageParameters("r=" + repositoryName + ",s=" + search + ",st=" + type.name());
- }
- return new PageParameters("r=" + repositoryName + ",h=" + commitId + ",s=" + search
- + ",st=" + type.name());
+ public static PageParameters newBlameTypeParameter(String repositoryName,
+ String commitId, String path, String blameType) {
+ Map<String, String> parameterMap = new HashMap<String, String>();
+ parameterMap.put("r", repositoryName);
+ parameterMap.put("h", commitId);
+ parameterMap.put("f", path);
+ parameterMap.put("blametype", blameType);
+ return new PageParameters(parameterMap);
}
- public static PageParameters newSearchParameter(String repositoryName, String commitId,
- String search, Constants.SearchType type, int pageNumber) {
- if (StringUtils.isEmpty(commitId)) {
- return new PageParameters("r=" + repositoryName + ",s=" + search + ",st=" + type.name()
- + ",pg=" + pageNumber);
+ public static PageParameters newTicketsParameters(String repositoryName, String... states) {
+ PageParameters tParams = newRepositoryParameter(repositoryName);
+ if (states != null) {
+ for (String state : states) {
+ tParams.add("status", state);
+ }
}
- return new PageParameters("r=" + repositoryName + ",h=" + commitId + ",s=" + search
- + ",st=" + type.name() + ",pg=" + pageNumber);
+ return tParams;
+ }
+
+ public static PageParameters newOpenTicketsParameter(String repositoryName) {
+ return newTicketsParameters(repositoryName, TicketsUI.openStatii);
}
public static String getProjectName(PageParameters params) {
@@ -403,7 +505,7 @@
}
public static int getDaysBack(PageParameters params) {
- return params.getInt("db", 14);
+ return params.getInt("db", 0);
}
public static String getUsername(PageParameters params) {
@@ -427,10 +529,14 @@
}
public static Label createDateLabel(String wicketId, Date date, TimeZone timeZone, TimeUtils timeUtils) {
- String format = GitBlit.getString(Keys.web.datestampShortFormat, "MM/dd/yy");
+ return createDateLabel(wicketId, date, timeZone, timeUtils, true);
+ }
+
+ public static Label createDateLabel(String wicketId, Date date, TimeZone timeZone, TimeUtils timeUtils, boolean setCss) {
+ String format = GitBlitWebApp.get().settings().getString(Keys.web.datestampShortFormat, "MM/dd/yy");
DateFormat df = new SimpleDateFormat(format);
if (timeZone == null) {
- timeZone = GitBlit.getTimezone();
+ timeZone = GitBlitWebApp.get().getTimezone();
}
df.setTimeZone(timeZone);
String dateString;
@@ -444,13 +550,15 @@
// past
title = timeUtils.timeAgo(date);
}
- if ((System.currentTimeMillis() - date.getTime()) < 10 * 24 * 60 * 60 * 1000L) {
+ if (title != null && (System.currentTimeMillis() - date.getTime()) < 10 * 24 * 60 * 60 * 1000L) {
String tmp = dateString;
dateString = title;
title = tmp;
}
Label label = new Label(wicketId, dateString);
- WicketUtils.setCssClass(label, timeUtils.timeAgoCss(date));
+ if (setCss) {
+ WicketUtils.setCssClass(label, timeUtils.timeAgoCss(date));
+ }
if (!StringUtils.isEmpty(title)) {
WicketUtils.setHtmlTooltip(label, title);
}
@@ -458,10 +566,10 @@
}
public static Label createTimeLabel(String wicketId, Date date, TimeZone timeZone, TimeUtils timeUtils) {
- String format = GitBlit.getString(Keys.web.timeFormat, "HH:mm");
+ String format = GitBlitWebApp.get().settings().getString(Keys.web.timeFormat, "HH:mm");
DateFormat df = new SimpleDateFormat(format);
if (timeZone == null) {
- timeZone = GitBlit.getTimezone();
+ timeZone = GitBlitWebApp.get().getTimezone();
}
df.setTimeZone(timeZone);
String timeString;
@@ -479,10 +587,10 @@
}
public static Label createDatestampLabel(String wicketId, Date date, TimeZone timeZone, TimeUtils timeUtils) {
- String format = GitBlit.getString(Keys.web.datestampLongFormat, "EEEE, MMMM d, yyyy");
+ String format = GitBlitWebApp.get().settings().getString(Keys.web.datestampLongFormat, "EEEE, MMMM d, yyyy");
DateFormat df = new SimpleDateFormat(format);
if (timeZone == null) {
- timeZone = GitBlit.getTimezone();
+ timeZone = GitBlitWebApp.get().getTimezone();
}
df.setTimeZone(timeZone);
String dateString;
@@ -492,13 +600,16 @@
dateString = df.format(date);
}
String title = null;
- if (TimeUtils.isToday(date)) {
+ if (TimeUtils.isToday(date, timeZone)) {
title = timeUtils.today();
- } else if (TimeUtils.isYesterday(date)) {
- title = timeUtils.yesterday();
+ } else if (TimeUtils.isYesterday(date, timeZone)) {
+ title = timeUtils.yesterday();
} else if (date.getTime() <= System.currentTimeMillis()) {
// past
title = timeUtils.timeAgo(date);
+ } else {
+ // future
+ title = timeUtils.inFuture(date);
}
if ((System.currentTimeMillis() - date.getTime()) < 10 * 24 * 60 * 60 * 1000L) {
String tmp = dateString;
@@ -513,11 +624,11 @@
}
public static Label createTimestampLabel(String wicketId, Date date, TimeZone timeZone, TimeUtils timeUtils) {
- String format = GitBlit.getString(Keys.web.datetimestampLongFormat,
+ String format = GitBlitWebApp.get().settings().getString(Keys.web.datetimestampLongFormat,
"EEEE, MMMM d, yyyy HH:mm Z");
DateFormat df = new SimpleDateFormat(format);
if (timeZone == null) {
- timeZone = GitBlit.getTimezone();
+ timeZone = GitBlitWebApp.get().getTimezone();
}
df.setTimeZone(timeZone);
String dateString;
@@ -538,31 +649,6 @@
return label;
}
- public static IChartData getChartData(Collection<Metric> metrics) {
- final double[] commits = new double[metrics.size()];
- final double[] tags = new double[metrics.size()];
- int i = 0;
- double max = 0;
- for (Metric m : metrics) {
- commits[i] = m.count;
- if (m.tag > 0) {
- tags[i] = m.count;
- } else {
- tags[i] = -1d;
- }
- max = Math.max(max, m.count);
- i++;
- }
- IChartData data = new AbstractChartData(max) {
- private static final long serialVersionUID = 1L;
-
- public double[][] getData() {
- return new double[][] { commits, tags };
- }
- };
- return data;
- }
-
public static double maxValue(Collection<Metric> metrics) {
double max = Double.MIN_VALUE;
for (Metric m : metrics) {
@@ -572,30 +658,4 @@
}
return max;
}
-
- public static IChartData getScatterData(Collection<Metric> metrics) {
- final double[] y = new double[metrics.size()];
- final double[] x = new double[metrics.size()];
- int i = 0;
- double max = 0;
- for (Metric m : metrics) {
- y[i] = m.count;
- if (m.duration > 0) {
- x[i] = m.duration;
- } else {
- x[i] = -1d;
- }
- max = Math.max(max, m.count);
- i++;
- }
- IChartData data = new AbstractChartData(max) {
- private static final long serialVersionUID = 1L;
-
- public double[][] getData() {
- return new double[][] { x, y };
- }
- };
- return data;
- }
-
}
--
Gitblit v1.9.1