summaryrefslogtreecommitdiffstats
path: root/src/main/java/com/gitblit/wicket/pages/DocPage.java
diff options
context:
space:
mode:
authorJames Moger <james.moger@gitblit.com>2013-11-12 08:04:40 -0500
committerJames Moger <james.moger@gitblit.com>2013-11-12 16:12:59 -0500
commitdc7c2f650de99c7f9ae8d6c049f419fcd00fb2a2 (patch)
tree65afcc7c5a7a8ccdb36412f2a150ddc9964adca9 /src/main/java/com/gitblit/wicket/pages/DocPage.java
parent07d55f6164eff792ec5d127b865871074194c14b (diff)
downloadgitblit-dc7c2f650de99c7f9ae8d6c049f419fcd00fb2a2.tar.gz
gitblit-dc7c2f650de99c7f9ae8d6c049f419fcd00fb2a2.zip
Refactor markup processing in preparation for supporting other formats
Change-Id: I0eb217064abc4f4b0f6bfbbc21302c470cc2f9c6
Diffstat (limited to 'src/main/java/com/gitblit/wicket/pages/DocPage.java')
-rw-r--r--src/main/java/com/gitblit/wicket/pages/DocPage.java92
1 files changed, 92 insertions, 0 deletions
diff --git a/src/main/java/com/gitblit/wicket/pages/DocPage.java b/src/main/java/com/gitblit/wicket/pages/DocPage.java
new file mode 100644
index 00000000..2c1308a1
--- /dev/null
+++ b/src/main/java/com/gitblit/wicket/pages/DocPage.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright 2011 gitblit.com.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gitblit.wicket.pages;
+
+import java.util.List;
+
+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 com.gitblit.GitBlit;
+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.MarkupProcessor;
+import com.gitblit.wicket.MarkupProcessor.MarkupDocument;
+import com.gitblit.wicket.WicketUtils;
+
+@CacheControl(LastModified.BOOT)
+public class DocPage extends RepositoryPage {
+
+ public DocPage(PageParameters params) {
+ super(params);
+
+ final String path = WicketUtils.getPath(params).replace("%2f", "/").replace("%2F", "/");
+ MarkupProcessor processor = new MarkupProcessor(GitBlit.getSettings());
+
+ Repository r = getRepository();
+ RevCommit commit = JGitUtils.getCommit(r, objectId);
+ String [] encodings = GitBlit.getEncodings();
+
+ // Read raw markup content and transform it to html
+ String documentPath = path;
+ String markupText = JGitUtils.getStringContent(r, commit.getTree(), path, encodings);
+
+ // Hunt for document
+ if (StringUtils.isEmpty(markupText)) {
+ String name = StringUtils.stripFileExtension(path);
+
+ List<String> docExtensions = processor.getMarkupExtensions();
+ for (String ext : docExtensions) {
+ String checkName = name + "." + ext;
+ markupText = JGitUtils.getStringContent(r, commit.getTree(), checkName, encodings);
+ if (!StringUtils.isEmpty(markupText)) {
+ // found it
+ documentPath = path;
+ break;
+ }
+ }
+ }
+
+ // document page links
+ add(new BookmarkablePageLink<Void>("blameLink", BlamePage.class,
+ WicketUtils.newPathParameter(repositoryName, objectId, documentPath)));
+ add(new BookmarkablePageLink<Void>("historyLink", HistoryPage.class,
+ WicketUtils.newPathParameter(repositoryName, objectId, documentPath)));
+ add(new BookmarkablePageLink<Void>("rawLink", RawPage.class, WicketUtils.newPathParameter(
+ repositoryName, objectId, documentPath)));
+ add(new BookmarkablePageLink<Void>("headLink", DocPage.class,
+ WicketUtils.newPathParameter(repositoryName, Constants.HEAD, documentPath)));
+
+ MarkupDocument markupDoc = processor.parse(repositoryName, getBestCommitId(commit), documentPath, markupText);
+ add(new Label("content", markupDoc.html).setEscapeModelStrings(false));
+ }
+
+ @Override
+ protected String getPageName() {
+ return getString("gb.docs");
+ }
+
+ @Override
+ protected Class<? extends BasePage> getRepoNavPageClass() {
+ return DocsPage.class;
+ }
+}