James Moger
2011-04-20 531cd203f387f8358a2e15da5f6171f5871ea688
Support Markdown rendering.  Use Wicket GoogleCharts from Maven.
32 files deleted
3 files added
9 files modified
2035 ■■■■■ changed files
.classpath 3 ●●●● patch | view | raw | blame | history
build.xml 1 ●●●● patch | view | raw | blame | history
contrib/com/codecommit/wicket/AbstractChartData.java 46 ●●●●● patch | view | raw | blame | history
contrib/com/codecommit/wicket/AreaFillType.java 22 ●●●●● patch | view | raw | blame | history
contrib/com/codecommit/wicket/AxisAlignment.java 23 ●●●●● patch | view | raw | blame | history
contrib/com/codecommit/wicket/Chart.java 602 ●●●●● patch | view | raw | blame | history
contrib/com/codecommit/wicket/ChartAxis.java 83 ●●●●● patch | view | raw | blame | history
contrib/com/codecommit/wicket/ChartAxisType.java 25 ●●●●● patch | view | raw | blame | history
contrib/com/codecommit/wicket/ChartDataEncoding.java 82 ●●●●● patch | view | raw | blame | history
contrib/com/codecommit/wicket/ChartGrid.java 51 ●●●●● patch | view | raw | blame | history
contrib/com/codecommit/wicket/ChartProvider.java 176 ●●●●● patch | view | raw | blame | history
contrib/com/codecommit/wicket/ChartType.java 34 ●●●●● patch | view | raw | blame | history
contrib/com/codecommit/wicket/FillArea.java 54 ●●●●● patch | view | raw | blame | history
contrib/com/codecommit/wicket/IChartAxis.java 26 ●●●●● patch | view | raw | blame | history
contrib/com/codecommit/wicket/IChartData.java 16 ●●●●● patch | view | raw | blame | history
contrib/com/codecommit/wicket/IChartFill.java 10 ●●●●● patch | view | raw | blame | history
contrib/com/codecommit/wicket/IChartGrid.java 18 ●●●●● patch | view | raw | blame | history
contrib/com/codecommit/wicket/IChartProvider.java 47 ●●●●● patch | view | raw | blame | history
contrib/com/codecommit/wicket/IFillArea.java 21 ●●●●● patch | view | raw | blame | history
contrib/com/codecommit/wicket/ILineStyle.java 16 ●●●●● patch | view | raw | blame | history
contrib/com/codecommit/wicket/ILinearGradientFill.java 18 ●●●●● patch | view | raw | blame | history
contrib/com/codecommit/wicket/ILinearStripesFill.java 18 ●●●●● patch | view | raw | blame | history
contrib/com/codecommit/wicket/IRangeMarker.java 20 ●●●●● patch | view | raw | blame | history
contrib/com/codecommit/wicket/IShapeMarker.java 22 ●●●●● patch | view | raw | blame | history
contrib/com/codecommit/wicket/ISolidFill.java 13 ●●●●● patch | view | raw | blame | history
contrib/com/codecommit/wicket/LineStyle.java 48 ●●●●● patch | view | raw | blame | history
contrib/com/codecommit/wicket/LinearGradientFill.java 49 ●●●●● patch | view | raw | blame | history
contrib/com/codecommit/wicket/LinearStripesFill.java 49 ●●●●● patch | view | raw | blame | history
contrib/com/codecommit/wicket/MarkerType.java 33 ●●●●● patch | view | raw | blame | history
contrib/com/codecommit/wicket/Range.java 32 ●●●●● patch | view | raw | blame | history
contrib/com/codecommit/wicket/RangeMarker.java 55 ●●●●● patch | view | raw | blame | history
contrib/com/codecommit/wicket/RangeType.java 22 ●●●●● patch | view | raw | blame | history
contrib/com/codecommit/wicket/ShapeMarker.java 69 ●●●●● patch | view | raw | blame | history
contrib/com/codecommit/wicket/SolidFill.java 25 ●●●●● patch | view | raw | blame | history
gitblit.properties 5 ●●●● patch | view | raw | blame | history
src/com/gitblit/Build.java 6 ●●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/GitBlitWebApp.java 4 ●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/GitBlitWebApp.properties 3 ●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/pages/BlobPage.java 18 ●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/pages/MarkdownPage.html 28 ●●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/pages/MarkdownPage.java 60 ●●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/pages/SummaryPage.java 20 ●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/resources/gitblit.css 8 ●●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/resources/markdown.css 54 ●●●●● patch | view | raw | blame | history
.classpath
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="src" path="contrib"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
    <classpathentry kind="lib" path="ext/log4j-1.2.16.jar"/>
    <classpathentry kind="lib" path="ext/servlet-api-2.5.jar"/>
@@ -15,5 +14,7 @@
    <classpathentry kind="lib" path="ext/wicket-extensions-1.4.17.jar"/>
    <classpathentry kind="lib" path="lib/jgit-0.11.3.jar"/>
    <classpathentry kind="lib" path="lib/jgit-http-0.11.3.jar"/>
    <classpathentry kind="lib" path="ext/markdownpapers-core-1.0.0.jar"/>
    <classpathentry kind="lib" path="ext/googlecharts-1.4.17.jar"/>
    <classpathentry kind="output" path="bin"/>
</classpath>
build.xml
@@ -32,7 +32,6 @@
        </path>
        <javac destdir="${project.build.dir}">
            <src path="${basedir}/src" />
            <src path="${basedir}/contrib" />
            <classpath refid="master-classpath" />
        </javac>
        <copy todir="${project.build.dir}">
contrib/com/codecommit/wicket/AbstractChartData.java
File was deleted
contrib/com/codecommit/wicket/AreaFillType.java
File was deleted
contrib/com/codecommit/wicket/AxisAlignment.java
File was deleted
contrib/com/codecommit/wicket/Chart.java
File was deleted
contrib/com/codecommit/wicket/ChartAxis.java
File was deleted
contrib/com/codecommit/wicket/ChartAxisType.java
File was deleted
contrib/com/codecommit/wicket/ChartDataEncoding.java
File was deleted
contrib/com/codecommit/wicket/ChartGrid.java
File was deleted
contrib/com/codecommit/wicket/ChartProvider.java
File was deleted
contrib/com/codecommit/wicket/ChartType.java
File was deleted
contrib/com/codecommit/wicket/FillArea.java
File was deleted
contrib/com/codecommit/wicket/IChartAxis.java
File was deleted
contrib/com/codecommit/wicket/IChartData.java
File was deleted
contrib/com/codecommit/wicket/IChartFill.java
File was deleted
contrib/com/codecommit/wicket/IChartGrid.java
File was deleted
contrib/com/codecommit/wicket/IChartProvider.java
File was deleted
contrib/com/codecommit/wicket/IFillArea.java
File was deleted
contrib/com/codecommit/wicket/ILineStyle.java
File was deleted
contrib/com/codecommit/wicket/ILinearGradientFill.java
File was deleted
contrib/com/codecommit/wicket/ILinearStripesFill.java
File was deleted
contrib/com/codecommit/wicket/IRangeMarker.java
File was deleted
contrib/com/codecommit/wicket/IShapeMarker.java
File was deleted
contrib/com/codecommit/wicket/ISolidFill.java
File was deleted
contrib/com/codecommit/wicket/LineStyle.java
File was deleted
contrib/com/codecommit/wicket/LinearGradientFill.java
File was deleted
contrib/com/codecommit/wicket/LinearStripesFill.java
File was deleted
contrib/com/codecommit/wicket/MarkerType.java
File was deleted
contrib/com/codecommit/wicket/Range.java
File was deleted
contrib/com/codecommit/wicket/RangeMarker.java
File was deleted
contrib/com/codecommit/wicket/RangeType.java
File was deleted
contrib/com/codecommit/wicket/ShapeMarker.java
File was deleted
contrib/com/codecommit/wicket/SolidFill.java
File was deleted
gitblit.properties
@@ -48,7 +48,7 @@
# This is the message display above the repositories table.
# This can point to a file with HTML content.
web.repositoriesMessage = Welcome to Git:Blit!<br>A quick and easy way to host your own Git repositories.<br>Built with <a href="http://eclipse.org/jgit">JGit</a>, <a href="http://wicket.apache.org">Wicket</a>, <a href="http://eclipse.org/jetty">Jetty</a>, <a href="http://www.slf4j.org">SLF4J</a>, <a href="http://logging.apache.org/log4j">Log4j</a>, <a href="http://code.google.com/p/google-code-prettify/">google-code-prettify</a>, and <a href="http://jcommander.org">JCommander</a>.
web.repositoriesMessage = Welcome to Git:Blit!<br>A quick and easy way to host your own Git repositories.<br>Built with <a href="http://eclipse.org/jgit">JGit</a>, <a href="http://wicket.apache.org">Wicket</a>, <a href="http://https://github.com/wicketstuff/core/wiki/GoogleCharts">WicketStuff googlecharts</a>, <a href="http://markdown.tautua.org">MarkdownPapers</a>, <a href="http://eclipse.org/jetty">Jetty</a>, <a href="http://www.slf4j.org">SLF4J</a>, <a href="http://logging.apache.org/log4j">Log4j</a>, <a href="http://code.google.com/p/google-code-prettify/">google-code-prettify</a>, and <a href="http://jcommander.org">JCommander</a>.
# Use the client timezone when formatting dates.
# This uses AJAX to determine the browser's timezone and enables Wicket 
@@ -78,6 +78,9 @@
# Registered extensions for google-code-prettify
web.prettyPrintExtensions = c cpp cs css htm html java js php pl prefs properties py rb sh sql xml vb
# Registered extensions for markdown transformation
web.markdownExtensions = md mkd markdown
# Image extensions
web.imageExtensions = bmp jpg gif png 
src/com/gitblit/Build.java
@@ -36,6 +36,8 @@
        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 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;
src/com/gitblit/wicket/GitBlitWebApp.java
@@ -17,6 +17,7 @@
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 @@
        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[] {}));
src/com/gitblit/wicket/GitBlitWebApp.properties
@@ -55,4 +55,5 @@
gb.modification = modification
gb.deletion = deletion
gb.rename = rename
gb.stats = stats
gb.stats = stats
gb.markdown = markdown
src/com/gitblit/wicket/pages/BlobPage.java
@@ -26,6 +26,20 @@
        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 @@
        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>();
src/com/gitblit/wicket/pages/MarkdownPage.html
New file
@@ -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>
src/com/gitblit/wicket/pages/MarkdownPage.java
New file
@@ -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");
    }
}
src/com/gitblit/wicket/pages/SummaryPage.java
@@ -10,16 +10,16 @@
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;
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 @@
    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 @@
    background-color: #D2C3AF;
    padding: 3px;
    border: 1px solid #808080;
    border-radius: 3px 3px 0 0;
}
div.header a {
@@ -146,6 +147,7 @@
    color: #ddd;
    background-color: #000070;
    padding: 7px;
    border-radius: 3px;
}
div.page_nav a {
@@ -169,7 +171,7 @@
    color:yellow;
    text-align:right;
    float:right;
    padding:3px 4px 3px 3px;
    padding:4px 4px 3px 3px;
}
.repositories_message {
src/com/gitblit/wicket/resources/markdown.css
New file
@@ -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;
}