James Moger
2013-11-26 4fcac9d2cbdafb51e3ee9ca3b3da64fd86103174
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;
@@ -93,22 +94,6 @@
      }
   }
   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";
      }
      if (css != null) {
         setCssClass(container, css);
      }
   }
   public static void setPermissionClass(Component container, AccessPermission permission) {
      if (permission == null) {
         setCssClass(container, "badge");
@@ -129,7 +114,7 @@
      default:
         setCssClass(container, "badge");
         break;
      }
      }
   }
   public static void setAlternatingBackground(Component c, int i) {
@@ -190,7 +175,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");
@@ -204,11 +189,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(GitBlit.getSettings());
      String ext = StringUtils.getFileExtension(filename).toLowerCase();
      if (processor.getMarkupExtensions().contains(ext)) {
         return newImage(wicketId, "file_world_16x16.png");
      }
      return newImage(wicketId, "file_16x16.png");
   }
@@ -246,17 +230,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);
   }
@@ -271,6 +255,7 @@
      return new HeaderContributor(new IHeaderContributor() {
         private static final long serialVersionUID = 1L;
         @Override
         public void renderHead(IHeaderResponse response) {
            String contentType = "application/rss+xml";
@@ -285,104 +270,170 @@
   }
   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>();
      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 newRangeParameter(String repositoryName, String startRange, String endRange) {
      return new PageParameters("r=" + repositoryName + ",h=" + startRange + ".." + endRange);
   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) {
   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);
   }
   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 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);
      }
      return new PageParameters("r=" + repositoryName + ",h=" + commitId + ",s=" + search
            + ",st=" + type.name() + ",pg=" + pageNumber);
      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 String getProjectName(PageParameters params) {
@@ -455,6 +506,10 @@
   }
   public static Label createDateLabel(String wicketId, Date date, TimeZone timeZone, TimeUtils timeUtils) {
      return createDateLabel(wicketId, date, timeZone, timeUtils, true);
   }
   public static Label createDateLabel(String wicketId, Date date, TimeZone timeZone, TimeUtils timeUtils, boolean setCss) {
      String format = GitBlit.getString(Keys.web.datestampShortFormat, "MM/dd/yy");
      DateFormat df = new SimpleDateFormat(format);
      if (timeZone == null) {
@@ -478,7 +533,9 @@
         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);
      }
@@ -584,6 +641,7 @@
      IChartData data = new AbstractChartData(max) {
         private static final long serialVersionUID = 1L;
         @Override
         public double[][] getData() {
            return new double[][] { commits, tags };
         }
@@ -619,6 +677,7 @@
      IChartData data = new AbstractChartData(max) {
         private static final long serialVersionUID = 1L;
         @Override
         public double[][] getData() {
            return new double[][] { x, y };
         }