summaryrefslogtreecommitdiffstats
path: root/src/com/gitblit
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/gitblit')
-rw-r--r--src/com/gitblit/Build.java6
-rw-r--r--src/com/gitblit/wicket/GitBlitWebApp.java4
-rw-r--r--src/com/gitblit/wicket/GitBlitWebApp.properties3
-rw-r--r--src/com/gitblit/wicket/pages/BlobPage.java18
-rw-r--r--src/com/gitblit/wicket/pages/MarkdownPage.html28
-rw-r--r--src/com/gitblit/wicket/pages/MarkdownPage.java60
-rw-r--r--src/com/gitblit/wicket/pages/SummaryPage.java20
-rw-r--r--src/com/gitblit/wicket/resources/gitblit.css8
-rw-r--r--src/com/gitblit/wicket/resources/markdown.css54
9 files changed, 183 insertions, 18 deletions
diff --git a/src/com/gitblit/Build.java b/src/com/gitblit/Build.java
index b12d44ed..604ee08f 100644
--- a/src/com/gitblit/Build.java
+++ b/src/com/gitblit/Build.java
@@ -36,6 +36,8 @@ public class Build {
downloadFromMaven(MavenObject.WICKET);
downloadFromMaven(MavenObject.WICKET_EXT);
downloadFromMaven(MavenObject.WICKET_AUTH_ROLES);
+ downloadFromMaven(MavenObject.WICKET_GOOGLE_CHARTS);
+ downloadFromMaven(MavenObject.MARKDOWNPAPERS);
}
public static void compiletime() {
@@ -192,8 +194,12 @@ public class Build {
public static final MavenObject WICKET_AUTH_ROLES = new MavenObject("Apache Wicket Auth Roles", "org/apache/wicket", "wicket-auth-roles", "1.4.17", "86d20ff32f62d3026213ff11a78555da643bc676");
+ public static final MavenObject WICKET_GOOGLE_CHARTS = new MavenObject("Apache Wicket Google Charts Add-On", "org/wicketstuff", "googlecharts", "1.4.17", "c567b98b0c5efe4147e77ef2d0d3c2d45c49dea5");
+
public static final MavenObject JUNIT = new MavenObject("JUnit", "junit", "junit", "3.8.2", "07e4cde26b53a9a0e3fe5b00d1dbbc7cc1d46060");
+ public static final MavenObject MARKDOWNPAPERS = new MavenObject("MarkdownPapers", "org/tautua/markdownpapers", "markdownpapers-core", "1.0.0", "feda63bd149f3315da210e397d45d02277038ad5");
+
public final String name;
public final String group;
public final String artifact;
diff --git a/src/com/gitblit/wicket/GitBlitWebApp.java b/src/com/gitblit/wicket/GitBlitWebApp.java
index 106981e3..e3c41cd6 100644
--- a/src/com/gitblit/wicket/GitBlitWebApp.java
+++ b/src/com/gitblit/wicket/GitBlitWebApp.java
@@ -17,6 +17,7 @@ import com.gitblit.wicket.pages.CommitDiffPage;
import com.gitblit.wicket.pages.CommitPage;
import com.gitblit.wicket.pages.HistoryPage;
import com.gitblit.wicket.pages.LogPage;
+import com.gitblit.wicket.pages.MarkdownPage;
import com.gitblit.wicket.pages.PatchPage;
import com.gitblit.wicket.pages.RawPage;
import com.gitblit.wicket.pages.RepositoriesPage;
@@ -67,6 +68,9 @@ public class GitBlitWebApp extends WebApplication {
mount(new MixedParamUrlCodingStrategy("/tickets", TicketsPage.class, new String[] { "r" }));
mount(new MixedParamUrlCodingStrategy("/ticket", TicketPage.class, new String[] { "r", "h", "f" }));
+ // setup the markdown urls
+ mount(new MixedParamUrlCodingStrategy("/markdown", MarkdownPage.class, new String[] { "r", "h", "f" }));
+
// setup login/logout urls, if we are using authentication
if (useAuthentication) {
mount(new MixedParamUrlCodingStrategy("/login", LoginPage.class, new String[] {}));
diff --git a/src/com/gitblit/wicket/GitBlitWebApp.properties b/src/com/gitblit/wicket/GitBlitWebApp.properties
index f0638586..a2e51d11 100644
--- a/src/com/gitblit/wicket/GitBlitWebApp.properties
+++ b/src/com/gitblit/wicket/GitBlitWebApp.properties
@@ -55,4 +55,5 @@ gb.addition = addition
gb.modification = modification
gb.deletion = deletion
gb.rename = rename
-gb.stats = stats \ No newline at end of file
+gb.stats = stats
+gb.markdown = markdown \ No newline at end of file
diff --git a/src/com/gitblit/wicket/pages/BlobPage.java b/src/com/gitblit/wicket/pages/BlobPage.java
index e535199a..335d25a1 100644
--- a/src/com/gitblit/wicket/pages/BlobPage.java
+++ b/src/com/gitblit/wicket/pages/BlobPage.java
@@ -26,6 +26,20 @@ public class BlobPage extends RepositoryPage {
final String blobPath = WicketUtils.getPath(params);
+ String extension = null;
+ if (blobPath.lastIndexOf('.') > -1) {
+ extension = blobPath.substring(blobPath.lastIndexOf('.') + 1).toLowerCase();
+ }
+
+ // see if we should redirect to the markdown page
+ for (String ext : GitBlit.self().settings().getStrings(Keys.web.markdownExtensions)) {
+ if (ext.equals(extension)) {
+ setResponsePage(MarkdownPage.class, params);
+ return;
+ }
+ }
+
+ // standard blob view
Repository r = getRepository();
RevCommit commit = JGitUtils.getCommit(r, objectId);
@@ -38,10 +52,6 @@ public class BlobPage extends RepositoryPage {
add(new LinkPanel("shortlog", "title", commit.getShortMessage(), CommitPage.class, newCommitParameter()));
add(new PathBreadcrumbsPanel("breadcrumbs", repositoryName, blobPath, objectId));
- String extension = null;
- if (blobPath.lastIndexOf('.') > -1) {
- extension = blobPath.substring(blobPath.lastIndexOf('.') + 1);
- }
// Map the extensions to types
Map<String, Integer> map = new HashMap<String, Integer>();
diff --git a/src/com/gitblit/wicket/pages/MarkdownPage.html b/src/com/gitblit/wicket/pages/MarkdownPage.html
new file mode 100644
index 00000000..9b009348
--- /dev/null
+++ b/src/com/gitblit/wicket/pages/MarkdownPage.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.3-strict.dtd"
+ xml:lang="en"
+ lang="en">
+
+<!-- contribute markdown css to the page header -->
+<wicket:head>
+ <wicket:link>
+ <link href="/com/gitblit/wicket/resources/markdown.css" type="text/css" rel="stylesheet" />
+ </wicket:link>
+</wicket:head>
+
+<body>
+<wicket:extend>
+ <!-- page nav links -->
+ <div wicket:id="pageLinks">[page links]</div>
+
+ <!-- markdown nav links -->
+ <div class="page_nav2">
+ <span wicket:id="blameLink">[blame link]</span> | <a wicket:id="historyLink"><wicket:message key="gb.history"></wicket:message></a> | <a wicket:id="rawLink"><wicket:message key="gb.raw"></wicket:message></a> | <a wicket:id="headLink"><wicket:message key="gb.head"></wicket:message></a>
+ </div>
+
+ <!-- markdown content -->
+ <div class="markdown" wicket:id="markdownText">[markdown content]</div>
+</wicket:extend>
+</body>
+</html> \ No newline at end of file
diff --git a/src/com/gitblit/wicket/pages/MarkdownPage.java b/src/com/gitblit/wicket/pages/MarkdownPage.java
new file mode 100644
index 00000000..83083abf
--- /dev/null
+++ b/src/com/gitblit/wicket/pages/MarkdownPage.java
@@ -0,0 +1,60 @@
+package com.gitblit.wicket.pages;
+
+import java.io.StringReader;
+import java.io.StringWriter;
+
+import org.apache.wicket.PageParameters;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.link.BookmarkablePageLink;
+import org.eclipse.jgit.lib.Constants;
+import org.eclipse.jgit.lib.Repository;
+import org.eclipse.jgit.revwalk.RevCommit;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.tautua.markdownpapers.Markdown;
+import org.tautua.markdownpapers.parser.ParseException;
+
+import com.gitblit.utils.JGitUtils;
+import com.gitblit.wicket.RepositoryPage;
+import com.gitblit.wicket.WicketUtils;
+
+public class MarkdownPage extends RepositoryPage {
+
+ private final Logger logger = LoggerFactory.getLogger(MarkdownPage.class);
+
+ public MarkdownPage(PageParameters params) {
+ super(params);
+
+ final String markdownPath = WicketUtils.getPath(params);
+
+ Repository r = getRepository();
+ RevCommit commit = JGitUtils.getCommit(r, objectId);
+
+ // markdown page links
+ add(new Label("blameLink", getString("gb.blame")));
+ add(new BookmarkablePageLink<Void>("historyLink", HistoryPage.class, WicketUtils.newPathParameter(repositoryName, objectId, markdownPath)));
+ add(new BookmarkablePageLink<Void>("rawLink", RawPage.class, WicketUtils.newPathParameter(repositoryName, objectId, markdownPath)));
+ add(new BookmarkablePageLink<Void>("headLink", MarkdownPage.class, WicketUtils.newPathParameter(repositoryName, Constants.HEAD, markdownPath)));
+
+ // Read raw markdown content and transform it to html
+ String htmlText = "";
+ try {
+ String rawText = JGitUtils.getRawContentAsString(r, commit, markdownPath);
+ StringReader reader = new StringReader(rawText);
+ StringWriter writer = new StringWriter();
+ Markdown md = new Markdown();
+ md.transform(reader, writer);
+ htmlText = writer.toString();
+ } catch (ParseException p) {
+ logger.error("Failed to parse markdown text from " + markdownPath, p);
+ }
+
+ // Add the html to the page
+ add(new Label("markdownText", htmlText).setEscapeModelStrings(false));
+ }
+
+ @Override
+ protected String getPageName() {
+ return getString("gb.markdown");
+ }
+}
diff --git a/src/com/gitblit/wicket/pages/SummaryPage.java b/src/com/gitblit/wicket/pages/SummaryPage.java
index 53a684b5..b20dc643 100644
--- a/src/com/gitblit/wicket/pages/SummaryPage.java
+++ b/src/com/gitblit/wicket/pages/SummaryPage.java
@@ -10,16 +10,16 @@ import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.image.ContextImage;
import org.eclipse.jgit.lib.Repository;
-import com.codecommit.wicket.AbstractChartData;
-import com.codecommit.wicket.Chart;
-import com.codecommit.wicket.ChartAxis;
-import com.codecommit.wicket.ChartAxisType;
-import com.codecommit.wicket.ChartProvider;
-import com.codecommit.wicket.ChartType;
-import com.codecommit.wicket.IChartData;
-import com.codecommit.wicket.LineStyle;
-import com.codecommit.wicket.MarkerType;
-import com.codecommit.wicket.ShapeMarker;
+import org.wicketstuff.googlecharts.AbstractChartData;
+import org.wicketstuff.googlecharts.Chart;
+import org.wicketstuff.googlecharts.ChartAxis;
+import org.wicketstuff.googlecharts.ChartAxisType;
+import org.wicketstuff.googlecharts.ChartProvider;
+import org.wicketstuff.googlecharts.ChartType;
+import org.wicketstuff.googlecharts.IChartData;
+import org.wicketstuff.googlecharts.LineStyle;
+import org.wicketstuff.googlecharts.MarkerType;
+import org.wicketstuff.googlecharts.ShapeMarker;
import com.gitblit.GitBlit;
import com.gitblit.Keys;
import com.gitblit.utils.JGitUtils;
diff --git a/src/com/gitblit/wicket/resources/gitblit.css b/src/com/gitblit/wicket/resources/gitblit.css
index d3d68b7a..3c5aca8b 100644
--- a/src/com/gitblit/wicket/resources/gitblit.css
+++ b/src/com/gitblit/wicket/resources/gitblit.css
@@ -4,7 +4,7 @@
html, body, table, dl, dt, dd, ol, ul, li, form, a, span, tr, th, td, div, em {
font-family: verdana, sans-serif;
font-size: 12px;
- line-height: 15px;
+ line-height: 1.35em;
margin: 0;
padding: 0;
border: 0;
@@ -22,7 +22,7 @@ body {
padding: 0px;
}
-pre, pre.prettyprint, pre.plainprint {
+pre, code, pre.prettyprint, pre.plainprint {
color: black;
font-family: monospace;
font-size:12px;
@@ -75,6 +75,7 @@ div.header {
background-color: #D2C3AF;
padding: 3px;
border: 1px solid #808080;
+ border-radius: 3px 3px 0 0;
}
div.header a {
@@ -146,6 +147,7 @@ div.page_nav {
color: #ddd;
background-color: #000070;
padding: 7px;
+ border-radius: 3px;
}
div.page_nav a {
@@ -169,7 +171,7 @@ div.search {
color:yellow;
text-align:right;
float:right;
- padding:3px 4px 3px 3px;
+ padding:4px 4px 3px 3px;
}
.repositories_message {
diff --git a/src/com/gitblit/wicket/resources/markdown.css b/src/com/gitblit/wicket/resources/markdown.css
new file mode 100644
index 00000000..ce48cefb
--- /dev/null
+++ b/src/com/gitblit/wicket/resources/markdown.css
@@ -0,0 +1,54 @@
+/*
+ * Git:Blit Markdown CSS definition.
+ */
+
+div.markdown {
+}
+
+div.markdown h1,
+div.markdown h2,
+div.markdown h3,
+div.markdown h4,
+div.markdown h5,
+div.markdown h6 {
+ border: 0 none !important;
+}
+
+div.markdown h1 {
+ margin-top: 1em;
+ margin-bottom: 0.5em;
+ padding-bottom: 0.5em;
+ border-bottom: 2px solid #000080 !important;
+}
+
+div.markdown h2 {
+ margin-top: 1em;
+ margin-bottom: 0.5em;
+ padding-bottom: 0.5em;
+ border-bottom: 2px solid #000080 !important;
+}
+
+div.markdown pre {
+ background-color: #f8f8f8;
+ border: 1px solid #2f6fab;
+ border-radius: 3px;
+ overflow: auto;
+ padding: 5px;
+}
+
+div.markdown pre code {
+ background-color: inherit;
+ border: none;
+ padding: 0;
+}
+
+div.markdown code {
+ background-color: #ffffe0;
+ border: 1px solid orange;
+ border-radius: 3px;
+ padding: 0 0.2em;
+}
+
+div.markdown a {
+ text-decoration: underline;
+} \ No newline at end of file