You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

BlobPage.java 3.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. package com.gitblit.wicket.pages;
  2. import java.util.HashMap;
  3. import java.util.Map;
  4. import org.apache.wicket.Component;
  5. import org.apache.wicket.PageParameters;
  6. import org.apache.wicket.markup.html.basic.Label;
  7. import org.apache.wicket.markup.html.link.BookmarkablePageLink;
  8. import org.eclipse.jgit.lib.Constants;
  9. import org.eclipse.jgit.lib.Repository;
  10. import org.eclipse.jgit.revwalk.RevCommit;
  11. import com.gitblit.GitBlit;
  12. import com.gitblit.Keys;
  13. import com.gitblit.utils.JGitUtils;
  14. import com.gitblit.wicket.RepositoryPage;
  15. import com.gitblit.wicket.WicketUtils;
  16. import com.gitblit.wicket.panels.CommitHeaderPanel;
  17. import com.gitblit.wicket.panels.PathBreadcrumbsPanel;
  18. public class BlobPage extends RepositoryPage {
  19. public BlobPage(PageParameters params) {
  20. super(params);
  21. final String blobPath = WicketUtils.getPath(params);
  22. String extension = null;
  23. if (blobPath.lastIndexOf('.') > -1) {
  24. extension = blobPath.substring(blobPath.lastIndexOf('.') + 1).toLowerCase();
  25. }
  26. // see if we should redirect to the markdown page
  27. for (String ext : GitBlit.self().settings().getStrings(Keys.web.markdownExtensions)) {
  28. if (ext.equals(extension)) {
  29. setResponsePage(MarkdownPage.class, params);
  30. return;
  31. }
  32. }
  33. // standard blob view
  34. Repository r = getRepository();
  35. RevCommit commit = getCommit();
  36. // blob page links
  37. add(new Label("blameLink", getString("gb.blame")));
  38. add(new BookmarkablePageLink<Void>("historyLink", HistoryPage.class, WicketUtils.newPathParameter(repositoryName, objectId, blobPath)));
  39. add(new BookmarkablePageLink<Void>("rawLink", RawPage.class, WicketUtils.newPathParameter(repositoryName, objectId, blobPath)));
  40. add(new BookmarkablePageLink<Void>("headLink", BlobPage.class, WicketUtils.newPathParameter(repositoryName, Constants.HEAD, blobPath)));
  41. add(new CommitHeaderPanel("commitHeader", repositoryName, commit));
  42. add(new PathBreadcrumbsPanel("breadcrumbs", repositoryName, blobPath, objectId));
  43. // Map the extensions to types
  44. Map<String, Integer> map = new HashMap<String, Integer>();
  45. for (String ext : GitBlit.self().settings().getStrings(Keys.web.prettyPrintExtensions)) {
  46. map.put(ext.toLowerCase(), 1);
  47. }
  48. for (String ext : GitBlit.self().settings().getStrings(Keys.web.imageExtensions)) {
  49. map.put(ext.toLowerCase(), 2);
  50. }
  51. for (String ext : GitBlit.self().settings().getStrings(Keys.web.binaryExtensions)) {
  52. map.put(ext.toLowerCase(), 3);
  53. }
  54. if (extension != null) {
  55. int type = 0;
  56. if (map.containsKey(extension)) {
  57. type = map.get(extension);
  58. }
  59. Component c = null;
  60. switch (type) {
  61. case 1:
  62. // PrettyPrint blob text
  63. c = new Label("blobText", JGitUtils.getRawContentAsString(r, commit, blobPath));
  64. WicketUtils.setCssClass(c, "prettyprint linenums");
  65. break;
  66. case 2:
  67. // TODO image blobs
  68. c = new Label("blobText", "Image File");
  69. break;
  70. case 3:
  71. // TODO binary blobs
  72. c = new Label("blobText", "Binary File");
  73. break;
  74. default:
  75. // plain text
  76. c = new Label("blobText", JGitUtils.getRawContentAsString(r, commit, blobPath));
  77. WicketUtils.setCssClass(c, "plainprint");
  78. }
  79. add(c);
  80. } else {
  81. // plain text
  82. Label blobLabel = new Label("blobText", JGitUtils.getRawContentAsString(r, commit, blobPath));
  83. WicketUtils.setCssClass(blobLabel, "plainprint");
  84. add(blobLabel);
  85. }
  86. }
  87. @Override
  88. protected String getPageName() {
  89. return getString("gb.view");
  90. }
  91. }