diff options
author | James Moger <james.moger@gitblit.com> | 2013-11-12 08:04:40 -0500 |
---|---|---|
committer | James Moger <james.moger@gitblit.com> | 2013-11-12 16:12:59 -0500 |
commit | dc7c2f650de99c7f9ae8d6c049f419fcd00fb2a2 (patch) | |
tree | 65afcc7c5a7a8ccdb36412f2a150ddc9964adca9 /src/main/java/com/gitblit/wicket/pages/DocPage.java | |
parent | 07d55f6164eff792ec5d127b865871074194c14b (diff) | |
download | gitblit-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.java | 92 |
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;
+ }
+}
|