From 08b991702febefc8682bbca60fe813df8e29d8cb Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Tue, 01 Jul 2014 09:29:10 -0400
Subject: [PATCH] Merge branch 'ticket/121' into develop
---
src/main/java/com/gitblit/wicket/pages/BlobPage.java | 71 ++++++++++++++++++++---------------
1 files changed, 40 insertions(+), 31 deletions(-)
diff --git a/src/main/java/com/gitblit/wicket/pages/BlobPage.java b/src/main/java/com/gitblit/wicket/pages/BlobPage.java
index f6e9998..0938fcd 100644
--- a/src/main/java/com/gitblit/wicket/pages/BlobPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/BlobPage.java
@@ -21,22 +21,27 @@
import org.apache.wicket.Component;
import org.apache.wicket.PageParameters;
+import org.apache.wicket.RedirectException;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.image.Image;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
-import org.eclipse.jgit.lib.Constants;
+import org.apache.wicket.markup.html.link.ExternalLink;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
-import com.gitblit.GitBlit;
import com.gitblit.Keys;
+import com.gitblit.servlet.RawServlet;
import com.gitblit.utils.JGitUtils;
import com.gitblit.utils.StringUtils;
+import com.gitblit.wicket.CacheControl;
+import com.gitblit.wicket.CacheControl.LastModified;
import com.gitblit.wicket.ExternalImage;
+import com.gitblit.wicket.MarkupProcessor;
import com.gitblit.wicket.WicketUtils;
import com.gitblit.wicket.panels.CommitHeaderPanel;
import com.gitblit.wicket.panels.PathBreadcrumbsPanel;
+@CacheControl(LastModified.BOOT)
public class BlobPage extends RepositoryPage {
protected String fileExtension;
@@ -46,8 +51,12 @@
Repository r = getRepository();
final String blobPath = WicketUtils.getPath(params);
- String [] encodings = GitBlit.getEncodings();
-
+ String [] encodings = getEncodings();
+
+ if (StringUtils.isEmpty(objectId) && StringUtils.isEmpty(blobPath)) {
+ throw new RedirectException(TreePage.class, WicketUtils.newRepositoryParameter(repositoryName));
+ }
+
if (StringUtils.isEmpty(blobPath)) {
// blob by objectid
@@ -55,9 +64,8 @@
WicketUtils.newPathParameter(repositoryName, objectId, blobPath))
.setEnabled(false));
add(new BookmarkablePageLink<Void>("historyLink", HistoryPage.class).setEnabled(false));
- add(new BookmarkablePageLink<Void>("rawLink", RawPage.class,
- WicketUtils.newPathParameter(repositoryName, objectId, blobPath)));
- add(new BookmarkablePageLink<Void>("headLink", BlobPage.class).setEnabled(false));
+ String rawUrl = RawServlet.asLink(getContextUrl(), repositoryName, objectId, blobPath);
+ add(new ExternalLink("rawLink", rawUrl));
add(new CommitHeaderPanel("commitHeader", objectId));
add(new PathBreadcrumbsPanel("breadcrumbs", repositoryName, blobPath, objectId));
Component c = new Label("blobText", JGitUtils.getStringContent(r, objectId, encodings));
@@ -70,26 +78,24 @@
extension = blobPath.substring(blobPath.lastIndexOf('.') + 1).toLowerCase();
}
- // see if we should redirect to the markdown page
- for (String ext : GitBlit.getStrings(Keys.web.markdownExtensions)) {
+ // see if we should redirect to the doc page
+ MarkupProcessor processor = new MarkupProcessor(app().settings());
+ for (String ext : processor.getMarkupExtensions()) {
if (ext.equals(extension)) {
- setResponsePage(MarkdownPage.class, params);
+ setResponsePage(DocPage.class, params);
return;
}
}
- // manually get commit because it can be null
- RevCommit commit = JGitUtils.getCommit(r, objectId);
+ RevCommit commit = getCommit();
// blob page links
add(new BookmarkablePageLink<Void>("blameLink", BlamePage.class,
WicketUtils.newPathParameter(repositoryName, objectId, blobPath)));
add(new BookmarkablePageLink<Void>("historyLink", HistoryPage.class,
WicketUtils.newPathParameter(repositoryName, objectId, blobPath)));
- add(new BookmarkablePageLink<Void>("rawLink", RawPage.class,
- WicketUtils.newPathParameter(repositoryName, objectId, blobPath)));
- add(new BookmarkablePageLink<Void>("headLink", BlobPage.class,
- WicketUtils.newPathParameter(repositoryName, Constants.HEAD, blobPath)));
+ String rawUrl = RawServlet.asLink(getContextUrl(), repositoryName, objectId, blobPath);
+ add(new ExternalLink("rawLink", rawUrl));
add(new CommitHeaderPanel("commitHeader", repositoryName, commit));
@@ -97,13 +103,13 @@
// Map the extensions to types
Map<String, Integer> map = new HashMap<String, Integer>();
- for (String ext : GitBlit.getStrings(Keys.web.prettyPrintExtensions)) {
+ for (String ext : app().settings().getStrings(Keys.web.prettyPrintExtensions)) {
map.put(ext.toLowerCase(), 1);
}
- for (String ext : GitBlit.getStrings(Keys.web.imageExtensions)) {
+ for (String ext : app().settings().getStrings(Keys.web.imageExtensions)) {
map.put(ext.toLowerCase(), 2);
}
- for (String ext : GitBlit.getStrings(Keys.web.binaryExtensions)) {
+ for (String ext : app().settings().getStrings(Keys.web.binaryExtensions)) {
map.put(ext.toLowerCase(), 3);
}
@@ -116,7 +122,7 @@
case 2:
// image blobs
add(new Label("blobText").setVisible(false));
- add(new ExternalImage("blobImage", urlFor(RawPage.class, WicketUtils.newPathParameter(repositoryName, objectId, blobPath)).toString()));
+ add(new ExternalImage("blobImage", rawUrl));
break;
case 3:
// binary blobs
@@ -150,7 +156,7 @@
}
}
}
-
+
protected String missingBlob(String blobPath, RevCommit commit) {
StringBuilder sb = new StringBuilder();
sb.append("<div class=\"alert alert-error\">");
@@ -162,23 +168,23 @@
protected String generateSourceView(String source, String extension, boolean prettyPrint) {
String [] lines = source.split("\n");
-
+
StringBuilder sb = new StringBuilder();
sb.append("<!-- start blob table -->");
sb.append("<table width=\"100%\"><tbody><tr>");
-
+
// nums column
sb.append("<!-- start nums column -->");
sb.append("<td id=\"nums\">");
sb.append("<pre>");
- String numPattern = "<span id=\"L{0}\" class=\"num\">{0}</span>\n";
+ String numPattern = "<span id=\"L{0}\" class=\"jump\"></span><a href=\"#L{0}\">{0}</a>\n";
for (int i = 0; i < lines.length; i++) {
sb.append(MessageFormat.format(numPattern, "" + (i + 1)));
}
sb.append("</pre>");
sb.append("<!-- end nums column -->");
sb.append("</td>");
-
+
sb.append("<!-- start lines column -->");
sb.append("<td id=\"lines\">");
sb.append("<div class=\"sourceview\">");
@@ -188,13 +194,16 @@
sb.append("<pre class=\"plainprint\">");
}
lines = StringUtils.escapeForHtml(source, true).split("\n");
-
+
sb.append("<table width=\"100%\"><tbody>");
-
- String linePattern = "<tr class=\"{0}\"><td><a href=\"#L{2}\">{1}</a>\r</tr>";
+
+ String linePattern = "<tr class=\"{0}\"><td><div><span class=\"line\">{1}</span></div>\r</tr>";
for (int i = 0; i < lines.length; i++) {
String line = lines[i].replace('\r', ' ');
String cssClass = (i % 2 == 0) ? "even" : "odd";
+ if (StringUtils.isEmpty(line.trim())) {
+ line = " ";
+ }
sb.append(MessageFormat.format(linePattern, cssClass, line, "" + (i + 1)));
}
sb.append("</tbody></table></pre>");
@@ -202,10 +211,10 @@
sb.append("</div>");
sb.append("</td>");
sb.append("<!-- end lines column -->");
-
+
sb.append("</tr></tbody></table>");
sb.append("<!-- end blob table -->");
-
+
return sb.toString();
}
@@ -213,7 +222,7 @@
protected String getPageName() {
return getString("gb.view");
}
-
+
@Override
protected Class<? extends BasePage> getRepoNavPageClass() {
return TreePage.class;
--
Gitblit v1.9.1