Compare commits
10 Commits
confluence
...
confluence
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
27dcf6d8bf | ||
|
|
804c460981 | ||
|
|
14e81297dd | ||
|
|
8a4b73b7bd | ||
|
|
e3fa72d307 | ||
|
|
fae6196f14 | ||
|
|
1edf603b3e | ||
|
|
8bc3987cf7 | ||
|
|
e91e0128fd | ||
|
|
ed36d3ed45 |
@@ -1,7 +1,7 @@
|
|||||||
Confluence Markdown Macro
|
Confluence Markdown Macro
|
||||||
========================
|
========================
|
||||||
|
|
||||||
This macro uses the PegDown library to convert from Markdown to HTML within Confluence.
|
This macro uses the Flexmark library to convert from Markdown to HTML within Confluence.
|
||||||
|
|
||||||
It can be accessed via:
|
It can be accessed via:
|
||||||
|
|
||||||
|
|||||||
51
pom.xml
51
pom.xml
@@ -9,13 +9,13 @@
|
|||||||
</parent>
|
</parent>
|
||||||
<groupId>com.atlassian.plugins.confluence.markdown</groupId>
|
<groupId>com.atlassian.plugins.confluence.markdown</groupId>
|
||||||
<artifactId>confluence-markdown-macro</artifactId>
|
<artifactId>confluence-markdown-macro</artifactId>
|
||||||
<version>1.1</version>
|
<version>1.3.2</version>
|
||||||
<organization>
|
<organization>
|
||||||
<name>Atlassian</name>
|
<name>Atlassian</name>
|
||||||
<url>http://www.atlassian.com/</url>
|
<url>http://www.atlassian.com/</url>
|
||||||
</organization>
|
</organization>
|
||||||
<name>confluence-markdown-macro</name>
|
<name>confluence-markdown-macro</name>
|
||||||
<description>This plugin provides a Markdown render macro for Confluence.</description>
|
<description>This plugin provides macros to render markdown for Confluence.</description>
|
||||||
<packaging>atlassian-plugin</packaging>
|
<packaging>atlassian-plugin</packaging>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency>
|
<dependency>
|
||||||
@@ -49,9 +49,35 @@
|
|||||||
<version>2.2.2-atlassian-1</version>
|
<version>2.2.2-atlassian-1</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.pegdown</groupId>
|
<groupId>com.vladsch.flexmark</groupId>
|
||||||
<artifactId>pegdown</artifactId>
|
<artifactId>flexmark-all</artifactId>
|
||||||
<version>1.2.1</version>
|
<version>0.32.24</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.vladsch.flexmark</groupId>
|
||||||
|
<artifactId>flexmark-ext-anchorlink</artifactId>
|
||||||
|
<version>0.32.24</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.vladsch.flexmark</groupId>
|
||||||
|
<artifactId>flexmark-ext-autolink</artifactId>
|
||||||
|
<version>0.32.24</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.vladsch.flexmark</groupId>
|
||||||
|
<artifactId>flexmark-ext-superscript</artifactId>
|
||||||
|
<version>0.32.24</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.vladsch.flexmark</groupId>
|
||||||
|
<artifactId>flexmark-ext-youtube-embedded</artifactId>
|
||||||
|
<version>0.32.24</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.atlassian.plugin</groupId>
|
||||||
|
<artifactId>atlassian-spring-scanner-annotation</artifactId>
|
||||||
|
<version>${atlassian.spring.scanner.version}</version>
|
||||||
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<build>
|
<build>
|
||||||
@@ -64,6 +90,8 @@
|
|||||||
<configuration>
|
<configuration>
|
||||||
<productVersion>${confluence.version}</productVersion>
|
<productVersion>${confluence.version}</productVersion>
|
||||||
<productDataVersion>${confluence.data.version}</productDataVersion>
|
<productDataVersion>${confluence.data.version}</productDataVersion>
|
||||||
|
<enableQuickReload>true</enableQuickReload>
|
||||||
|
<enableFastdev>false</enableFastdev>
|
||||||
</configuration>
|
</configuration>
|
||||||
</plugin>
|
</plugin>
|
||||||
<plugin>
|
<plugin>
|
||||||
@@ -76,14 +104,15 @@
|
|||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
<properties>
|
<properties>
|
||||||
<confluence.version>4.3.7</confluence.version>
|
<confluence.version>6.9.0</confluence.version>
|
||||||
<confluence.data.version>4.3.7</confluence.data.version>
|
<confluence.data.version>6.9.0</confluence.data.version>
|
||||||
<amps.version>4.2.2</amps.version>
|
<amps.version>6.3.0</amps.version>
|
||||||
<plugin.testrunner.version>1.1</plugin.testrunner.version>
|
<plugin.testrunner.version>1.1</plugin.testrunner.version>
|
||||||
|
<atlassian.spring.scanner.version>2.1.7</atlassian.spring.scanner.version>
|
||||||
</properties>
|
</properties>
|
||||||
<scm>
|
<scm>
|
||||||
<connection>scm:git:git@bitbucket.org:atlassianlabs/markdown-macro-for-confluence.git</connection>
|
<connection>scm:git:git@bitbucket.org:atlasauthority/markdown-macro-for-confluence.git</connection>
|
||||||
<developerConnection>scm:git:git@bitbucket.org:atlassianlabs/markdown-macro-for-confluence.git</developerConnection>
|
<developerConnection>scm:git:git@bitbucket.org:atlasauthority/markdown-macro-for-confluence.git</developerConnection>
|
||||||
<url>https://bitbucket.org/atlassianlabs/confluence-markdown-macro</url>
|
<url>https://bitbucket.org/atlasauthority/markdown-macro-for-confluence</url>
|
||||||
</scm>
|
</scm>
|
||||||
</project>
|
</project>
|
||||||
|
|||||||
@@ -0,0 +1,181 @@
|
|||||||
|
package com.atlassian.plugins.confluence.markdown;
|
||||||
|
|
||||||
|
import com.atlassian.confluence.content.render.xhtml.ConversionContext;
|
||||||
|
import com.atlassian.confluence.content.render.xhtml.DefaultConversionContext;
|
||||||
|
import com.atlassian.confluence.content.render.xhtml.XhtmlException;
|
||||||
|
import com.atlassian.confluence.macro.Macro;
|
||||||
|
import com.atlassian.confluence.macro.MacroExecutionException;
|
||||||
|
import com.atlassian.confluence.xhtml.api.MacroDefinition;
|
||||||
|
import com.atlassian.confluence.xhtml.api.MacroDefinitionHandler;
|
||||||
|
import com.atlassian.confluence.xhtml.api.XhtmlContent;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import com.atlassian.renderer.RenderContext;
|
||||||
|
import com.atlassian.renderer.v2.RenderMode;
|
||||||
|
import com.atlassian.renderer.v2.macro.BaseMacro;
|
||||||
|
import com.atlassian.renderer.v2.macro.MacroException;
|
||||||
|
|
||||||
|
//import com.atlassian.plugin.spring.scanner.annotation.component.Scanned;
|
||||||
|
import com.atlassian.plugin.spring.scanner.annotation.imports.ComponentImport;
|
||||||
|
import com.atlassian.webresource.api.assembler.PageBuilderService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
|
|
||||||
|
import com.vladsch.flexmark.ast.Node;
|
||||||
|
import com.vladsch.flexmark.ext.gfm.strikethrough.StrikethroughSubscriptExtension;
|
||||||
|
import com.vladsch.flexmark.ext.tables.TablesExtension;
|
||||||
|
import com.vladsch.flexmark.ext.ins.InsExtension;
|
||||||
|
import com.vladsch.flexmark.ext.definition.DefinitionExtension;
|
||||||
|
import com.vladsch.flexmark.ext.gfm.tasklist.TaskListExtension;
|
||||||
|
import com.vladsch.flexmark.ext.footnotes.FootnoteExtension;
|
||||||
|
import com.vladsch.flexmark.ext.wikilink.WikiLinkExtension;
|
||||||
|
import com.vladsch.flexmark.ext.autolink.AutolinkExtension;
|
||||||
|
import com.vladsch.flexmark.ext.anchorlink.AnchorLinkExtension;
|
||||||
|
import com.vladsch.flexmark.superscript.SuperscriptExtension;
|
||||||
|
import com.vladsch.flexmark.ext.youtube.embedded.YouTubeLinkExtension;
|
||||||
|
import com.vladsch.flexmark.html.HtmlRenderer;
|
||||||
|
import com.vladsch.flexmark.parser.Parser;
|
||||||
|
import com.vladsch.flexmark.util.options.MutableDataSet;
|
||||||
|
|
||||||
|
|
||||||
|
import java.net.*;
|
||||||
|
import java.io.*;
|
||||||
|
|
||||||
|
//@Scanned
|
||||||
|
public class MarkdownFromURLMacro extends BaseMacro implements Macro
|
||||||
|
{
|
||||||
|
|
||||||
|
private final XhtmlContent xhtmlUtils;
|
||||||
|
|
||||||
|
private PageBuilderService pageBuilderService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
public MarkdownFromURLMacro(@ComponentImport PageBuilderService pageBuilderService, XhtmlContent xhtmlUtils) {
|
||||||
|
this.pageBuilderService = pageBuilderService;
|
||||||
|
this.xhtmlUtils = xhtmlUtils;
|
||||||
|
}
|
||||||
|
|
||||||
|
// public MarkdownFromURLMacro(XhtmlContent xhtmlUtils)
|
||||||
|
// {
|
||||||
|
// this.xhtmlUtils = xhtmlUtils;
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BodyType getBodyType()
|
||||||
|
{
|
||||||
|
return BodyType.PLAIN_TEXT;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public OutputType getOutputType()
|
||||||
|
{
|
||||||
|
return OutputType.BLOCK;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String execute(Map<String, String> parameters, String bodyContent, ConversionContext conversionContext) throws MacroExecutionException
|
||||||
|
{
|
||||||
|
|
||||||
|
if (bodyContent != null) {
|
||||||
|
pageBuilderService.assembler().resources().requireWebResource("com.atlassian.plugins.confluence.markdown.confluence-markdown-macro:highlightjs");
|
||||||
|
|
||||||
|
MutableDataSet options = new MutableDataSet();
|
||||||
|
|
||||||
|
options.set(Parser.EXTENSIONS, Arrays.asList(
|
||||||
|
TablesExtension.create(),
|
||||||
|
StrikethroughSubscriptExtension.create(),
|
||||||
|
InsExtension.create(),
|
||||||
|
TaskListExtension.create(),
|
||||||
|
FootnoteExtension.create(),
|
||||||
|
WikiLinkExtension.create(),
|
||||||
|
DefinitionExtension.create(),
|
||||||
|
AnchorLinkExtension.create(),
|
||||||
|
AutolinkExtension.create(),
|
||||||
|
SuperscriptExtension.create(),
|
||||||
|
YouTubeLinkExtension.create()
|
||||||
|
|
||||||
|
));
|
||||||
|
|
||||||
|
|
||||||
|
String highlightjs = "<script>\n" +
|
||||||
|
"AJS.$('[data-macro-name=\"markdown\"] code').each(function(i, block) {\n" +
|
||||||
|
" hljs.highlightBlock(block);\n" +
|
||||||
|
" });\n" +
|
||||||
|
"</script>";
|
||||||
|
|
||||||
|
class privateRepositoryException extends Exception {
|
||||||
|
public privateRepositoryException(String message) {
|
||||||
|
super(message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Parser parser = Parser.builder(options).build();
|
||||||
|
HtmlRenderer renderer = HtmlRenderer.builder(options).build();
|
||||||
|
|
||||||
|
String exceptionsToReturn = "";
|
||||||
|
String html = "";
|
||||||
|
String toParse = "";
|
||||||
|
try {
|
||||||
|
URL importFrom = new URL(bodyContent);
|
||||||
|
BufferedReader in = new BufferedReader(
|
||||||
|
new InputStreamReader(importFrom.openStream())
|
||||||
|
);
|
||||||
|
String inputLine;
|
||||||
|
while ((inputLine = in.readLine()) != null) {
|
||||||
|
toParse = toParse + "\n" + inputLine;
|
||||||
|
}
|
||||||
|
in.close();
|
||||||
|
toParse = toParse.trim();
|
||||||
|
if (toParse.startsWith("<html>\n<head>\n <title>OpenID transaction in progress</title>")) {
|
||||||
|
throw new privateRepositoryException("Cannot import from private repository.");
|
||||||
|
}else {
|
||||||
|
Node document = parser.parse(toParse);
|
||||||
|
html = renderer.render(document) + highlightjs;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (MalformedURLException u) {
|
||||||
|
exceptionsToReturn = exceptionsToReturn + "<strong>Error with Markdown From URL macro: Invalid URL.</strong><br>Please enter a valid URL. If you are not trying to import markdown from a URL, use the Markdown macro instead of the Markdown from URL macro.<br>For support <a href='https://community.atlassian.com/t5/tag/addon-com.atlassian.plugins.confluence.markdown.confluence-markdown-macro/tg-p'>visit our Q&A in the Atlassian Community</a>. You can ask a new question by clicking the \"Create\" button on the top right of the Q&A.<br>";
|
||||||
|
}
|
||||||
|
catch (privateRepositoryException p) {
|
||||||
|
exceptionsToReturn = exceptionsToReturn + "<strong>Error with Markdown From URL macro: Importing from private Bitbucket repositories is not supported.</strong><br>Please make your repository public before importing. Alternatively, you can copy and paste your markdown into the Markdown macro.<br>If you are allowed access, you can find the markdown file <a href='" + bodyContent + "'>here</a>.<br>For support <a href='https://community.atlassian.com/t5/tag/addon-com.atlassian.plugins.confluence.markdown.confluence-markdown-macro/tg-p'>visit our Q&A in the Atlassian Community</a>. You can ask a new question by clicking the \"Create\" button on the top right of the Q&A.<br>";
|
||||||
|
}
|
||||||
|
catch (FileNotFoundException f) {
|
||||||
|
exceptionsToReturn = exceptionsToReturn + "<strong>Error with Markdown From URL macro: URL does not exist.</strong><br>" + bodyContent + "<br>Please double check your URL. Perhaps you made a typo or perhaps the page has been moved.<br>This can also be caused by changing the Github repository containing the file from public to private. If this is the case go back to the raw file and re-copy the link.<br>For support <a href='https://community.atlassian.com/t5/tag/addon-com.atlassian.plugins.confluence.markdown.confluence-markdown-macro/tg-p'>visit our Q&A in the Atlassian Community</a>. You can ask a new question by clicking the \"Create\" button on the top right of the Q&A.<br>";
|
||||||
|
}
|
||||||
|
catch (IOException e) {
|
||||||
|
exceptionsToReturn = exceptionsToReturn + "<strong>Error with Markdown From URL macro: Unexpected error.</strong><br>" + e.toString() + "<br>For support <a href='https://community.atlassian.com/t5/tag/addon-com.atlassian.plugins.confluence.markdown.confluence-markdown-macro/tg-p'>visit our Q&A in the Atlassian Community</a>. You can ask a new question by clicking the \"Create\" button on the top right of the Q&A.<br>";
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
if (exceptionsToReturn != "") {
|
||||||
|
html = "<p style='background: #ffe0e0; border-radius: 5px; padding: 10px;'>" + exceptionsToReturn + "</p>";
|
||||||
|
}
|
||||||
|
return html;
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasBody() {
|
||||||
|
return true; //To change body of implemented methods use File | Settings | File Templates.
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public RenderMode getBodyRenderMode() {
|
||||||
|
return RenderMode.NO_RENDER; //To change body of implemented methods use File | Settings | File Templates.
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String execute(Map map, String s, RenderContext renderContext) throws MacroException {
|
||||||
|
try {
|
||||||
|
return execute(map, s, new DefaultConversionContext(renderContext));
|
||||||
|
} catch (MacroExecutionException e) {
|
||||||
|
throw new MacroException(e.getMessage(),e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -10,6 +10,7 @@ import com.atlassian.confluence.xhtml.api.MacroDefinitionHandler;
|
|||||||
import com.atlassian.confluence.xhtml.api.XhtmlContent;
|
import com.atlassian.confluence.xhtml.api.XhtmlContent;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@@ -17,18 +18,48 @@ import com.atlassian.renderer.RenderContext;
|
|||||||
import com.atlassian.renderer.v2.RenderMode;
|
import com.atlassian.renderer.v2.RenderMode;
|
||||||
import com.atlassian.renderer.v2.macro.BaseMacro;
|
import com.atlassian.renderer.v2.macro.BaseMacro;
|
||||||
import com.atlassian.renderer.v2.macro.MacroException;
|
import com.atlassian.renderer.v2.macro.MacroException;
|
||||||
import org.pegdown.Parser;
|
|
||||||
import org.pegdown.PegDownProcessor;
|
|
||||||
|
|
||||||
|
//import com.atlassian.plugin.spring.scanner.annotation.component.Scanned;
|
||||||
|
import com.atlassian.plugin.spring.scanner.annotation.imports.ComponentImport;
|
||||||
|
import com.atlassian.webresource.api.assembler.PageBuilderService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
|
import com.vladsch.flexmark.ast.Node;
|
||||||
|
import com.vladsch.flexmark.ext.gfm.strikethrough.StrikethroughSubscriptExtension;
|
||||||
|
import com.vladsch.flexmark.ext.tables.TablesExtension;
|
||||||
|
import com.vladsch.flexmark.ext.ins.InsExtension;
|
||||||
|
import com.vladsch.flexmark.ext.definition.DefinitionExtension;
|
||||||
|
import com.vladsch.flexmark.ext.gfm.tasklist.TaskListExtension;
|
||||||
|
import com.vladsch.flexmark.ext.footnotes.FootnoteExtension;
|
||||||
|
import com.vladsch.flexmark.ext.wikilink.WikiLinkExtension;
|
||||||
|
import com.vladsch.flexmark.ext.autolink.AutolinkExtension;
|
||||||
|
import com.vladsch.flexmark.ext.anchorlink.AnchorLinkExtension;
|
||||||
|
import com.vladsch.flexmark.superscript.SuperscriptExtension;
|
||||||
|
import com.vladsch.flexmark.ext.youtube.embedded.YouTubeLinkExtension;
|
||||||
|
import com.vladsch.flexmark.html.HtmlRenderer;
|
||||||
|
import com.vladsch.flexmark.parser.Parser;
|
||||||
|
import com.vladsch.flexmark.util.options.MutableDataSet;
|
||||||
|
|
||||||
|
|
||||||
|
//@Scanned
|
||||||
public class MarkdownMacro extends BaseMacro implements Macro
|
public class MarkdownMacro extends BaseMacro implements Macro
|
||||||
{
|
{
|
||||||
|
|
||||||
private final XhtmlContent xhtmlUtils;
|
private final XhtmlContent xhtmlUtils;
|
||||||
|
|
||||||
public MarkdownMacro(XhtmlContent xhtmlUtils)
|
private PageBuilderService pageBuilderService;
|
||||||
{
|
|
||||||
|
@Autowired
|
||||||
|
public MarkdownMacro(@ComponentImport PageBuilderService pageBuilderService, XhtmlContent xhtmlUtils) {
|
||||||
|
this.pageBuilderService = pageBuilderService;
|
||||||
this.xhtmlUtils = xhtmlUtils;
|
this.xhtmlUtils = xhtmlUtils;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// public MarkdownMacro(XhtmlContent xhtmlUtils)
|
||||||
|
// {
|
||||||
|
// this.xhtmlUtils = xhtmlUtils;
|
||||||
|
// }
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BodyType getBodyType()
|
public BodyType getBodyType()
|
||||||
{
|
{
|
||||||
@@ -44,9 +75,41 @@ public class MarkdownMacro extends BaseMacro implements Macro
|
|||||||
@Override
|
@Override
|
||||||
public String execute(Map<String, String> parameters, String bodyContent, ConversionContext conversionContext) throws MacroExecutionException
|
public String execute(Map<String, String> parameters, String bodyContent, ConversionContext conversionContext) throws MacroExecutionException
|
||||||
{
|
{
|
||||||
PegDownProcessor translator = new PegDownProcessor(Parser.ALL);
|
|
||||||
String output = translator.markdownToHtml(bodyContent);
|
|
||||||
return output;
|
pageBuilderService.assembler().resources().requireWebResource("com.atlassian.plugins.confluence.markdown.confluence-markdown-macro:highlightjs");
|
||||||
|
|
||||||
|
MutableDataSet options = new MutableDataSet();
|
||||||
|
|
||||||
|
options.set(Parser.EXTENSIONS, Arrays.asList(
|
||||||
|
TablesExtension.create(),
|
||||||
|
StrikethroughSubscriptExtension.create(),
|
||||||
|
InsExtension.create(),
|
||||||
|
TaskListExtension.create(),
|
||||||
|
FootnoteExtension.create(),
|
||||||
|
WikiLinkExtension.create(),
|
||||||
|
DefinitionExtension.create(),
|
||||||
|
AnchorLinkExtension.create(),
|
||||||
|
AutolinkExtension.create(),
|
||||||
|
SuperscriptExtension.create(),
|
||||||
|
YouTubeLinkExtension.create()
|
||||||
|
|
||||||
|
));
|
||||||
|
|
||||||
|
|
||||||
|
String highlightjs = "<script>\n" +
|
||||||
|
"AJS.$('[data-macro-name=\"markdown\"] code').each(function(i, block) {\n" +
|
||||||
|
" hljs.highlightBlock(block);\n" +
|
||||||
|
" });\n" +
|
||||||
|
"</script>";
|
||||||
|
|
||||||
|
Parser parser = Parser.builder(options).build();
|
||||||
|
HtmlRenderer renderer = HtmlRenderer.builder(options).build();
|
||||||
|
|
||||||
|
Node document = parser.parse(bodyContent);
|
||||||
|
String html = renderer.render(document ) + highlightjs; // "<p>This is <em>Sparta</em></p>\n"
|
||||||
|
return html;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
BIN
src/main/resources/.DS_Store
vendored
BIN
src/main/resources/.DS_Store
vendored
Binary file not shown.
@@ -7,29 +7,46 @@
|
|||||||
<param name="plugin-logo">images/pluginLogo.png</param>
|
<param name="plugin-logo">images/pluginLogo.png</param>
|
||||||
<param name="atlassian-data-center-compatible">true</param>
|
<param name="atlassian-data-center-compatible">true</param>
|
||||||
</plugin-info>
|
</plugin-info>
|
||||||
|
|
||||||
<xhtml-macro name="markdown"
|
<xhtml-macro name="markdown"
|
||||||
class="com.atlassian.plugins.confluence.markdown.MarkdownMacro"
|
class="com.atlassian.plugins.confluence.markdown.MarkdownMacro"
|
||||||
key="markdown"
|
key="markdown"
|
||||||
icon="/download/resources/com.atlassian.plugins.confluence.markdown.confluence-markdown-macro/images/pluginIcon.png"
|
icon="/download/resources/com.atlassian.plugins.confluence.markdown.confluence-markdown-macro/images/pluginIcon.png"
|
||||||
documentation-url="http://daringfireball.net/projects/markdown/">
|
documentation-url="https://spec.commonmark.org/0.28/">
|
||||||
<category name="formatting"/>
|
<category name="formatting"/>
|
||||||
<parameters>
|
<parameters />
|
||||||
<parameter name="extended" type="boolean" default ="true">
|
|
||||||
</parameter>
|
|
||||||
</parameters>
|
|
||||||
</xhtml-macro>
|
</xhtml-macro>
|
||||||
<macro name="markdown"
|
<macro name="markdown"
|
||||||
class="com.atlassian.plugins.confluence.markdown.MarkdownMacro"
|
class="com.atlassian.plugins.confluence.markdown.MarkdownMacro"
|
||||||
key="markdown.wiki"
|
key="markdown.wiki"
|
||||||
icon="/download/resources/com.atlassian.plugins.confluence.markdown.confluence-markdown-macro/images/pluginIcon.png"
|
icon="/download/resources/com.atlassian.plugins.confluence.markdown.confluence-markdown-macro/images/pluginIcon.png"
|
||||||
documentation-url="http://daringfireball.net/projects/markdown/">
|
documentation-url="https://spec.commonmark.org/0.28/">
|
||||||
<category name="formatting"/>
|
<category name="formatting"/>
|
||||||
<parameters>
|
<parameters />
|
||||||
<parameter name="extended" type="boolean" default ="true">
|
</macro>
|
||||||
</parameter>
|
<xhtml-macro name="markdown-from-url"
|
||||||
</parameters>
|
class="com.atlassian.plugins.confluence.markdown.MarkdownFromURLMacro"
|
||||||
|
key="markdown-from-url"
|
||||||
|
icon="/download/resources/com.atlassian.plugins.confluence.markdown.confluence-markdown-macro/images/pluginIcon.png"
|
||||||
|
documentation-url="https://spec.commonmark.org/0.28/">
|
||||||
|
<category name="formatting"/>
|
||||||
|
<parameters />
|
||||||
|
</xhtml-macro>
|
||||||
|
<macro name="markdown-from-url"
|
||||||
|
class="com.atlassian.plugins.confluence.markdown.MarkdownFromURLMacro"
|
||||||
|
key="markdown-from-url.wiki"
|
||||||
|
icon="/download/resources/com.atlassian.plugins.confluence.markdown.confluence-markdown-macro/images/pluginIcon.png"
|
||||||
|
documentation-url="https://spec.commonmark.org/0.28/">
|
||||||
|
<category name="formatting"/>
|
||||||
|
<parameters />
|
||||||
</macro>
|
</macro>
|
||||||
<resource type="i18n" name="markdown" location="markdownproperties/markdown"/>
|
<resource type="i18n" name="markdown" location="markdownproperties/markdown"/>
|
||||||
|
<resource type="i18n" name="markdown-from-url" location="markdown-from-url-properties/markdown-from-url"/>
|
||||||
<resource type="download" name="images/" key="images" location="images/"/>
|
<resource type="download" name="images/" key="images" location="images/"/>
|
||||||
|
|
||||||
|
<web-resource key="highlightjs" name="Highlight.js" >
|
||||||
|
<resource type="download" name="highlight.min.js" location="js/highlight.min.js" />
|
||||||
|
<resource type="download" name="highlight.min.css" location="css/highlight.min.css" />
|
||||||
|
</web-resource>
|
||||||
|
|
||||||
</atlassian-plugin>
|
</atlassian-plugin>
|
||||||
|
|||||||
1
src/main/resources/css/highlight.min.css
vendored
Normal file
1
src/main/resources/css/highlight.min.css
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
.hljs{display:block;overflow-x:auto;padding:0.5em;background:#F0F0F0}.hljs,.hljs-subst{color:#444}.hljs-comment{color:#888888}.hljs-keyword,.hljs-attribute,.hljs-selector-tag,.hljs-meta-keyword,.hljs-doctag,.hljs-name{font-weight:bold}.hljs-type,.hljs-string,.hljs-number,.hljs-selector-id,.hljs-selector-class,.hljs-quote,.hljs-template-tag,.hljs-deletion{color:#880000}.hljs-title,.hljs-section{color:#880000;font-weight:bold}.hljs-regexp,.hljs-symbol,.hljs-variable,.hljs-template-variable,.hljs-link,.hljs-selector-attr,.hljs-selector-pseudo{color:#BC6060}.hljs-literal{color:#78A960}.hljs-built_in,.hljs-bullet,.hljs-code,.hljs-addition{color:#397300}.hljs-meta{color:#1f7199}.hljs-meta-string{color:#4d99bf}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 958 B |
Binary file not shown.
|
Before Width: | Height: | Size: 4.3 KiB |
3
src/main/resources/js/highlight.min.js
vendored
Normal file
3
src/main/resources/js/highlight.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -0,0 +1,2 @@
|
|||||||
|
com.atlassian.plugins.confluence.markdown.confluence-markdown-macro.markdown-from-url.label=Markdown From URL
|
||||||
|
com.atlassian.plugins.confluence.markdown.confluence-markdown-macro.markdown-from-url.desc=This macro dynamically imports Markdown from a URL and renders it into HTML.
|
||||||
@@ -1,3 +1 @@
|
|||||||
com.atlassian.plugins.confluence.markdown.confluence-markdown-macro.markdown.desc=This macro renders text in Markdown syntax into HTML.
|
com.atlassian.plugins.confluence.markdown.confluence-markdown-macro.markdown.desc=This macro renders Markdown into HTML.
|
||||||
com.atlassian.plugins.confluence.markdown.confluence-markdown-macro.markdown.param.extended.label=Enable extended Markdown properties:
|
|
||||||
com.atlassian.plugins.confluence.markdown.confluence-markdown-macro.markdown.param.extended.desc=Find info about extended Markdown at: <a href="https://github.com/sirthias/pegdown#readme">https://github.com/sirthias/pegdown#readme</a>
|
|
||||||
@@ -1,3 +1 @@
|
|||||||
com.atlassian.plugins.confluence.markdown.confluence-markdown-macro.markdown.desc=Dieses Makro wandelt Markdown in HTML um.
|
com.atlassian.plugins.confluence.markdown.confluence-markdown-macro.markdown.desc=Dieses Makro wandelt Markdown in HTML um.
|
||||||
com.atlassian.plugins.confluence.markdown.confluence-markdown-macro.markdown.param.extended.label=Aktivieren sich weiter Eigenschaften Markdown:
|
|
||||||
com.atlassian.plugins.confluence.markdown.confluence-markdown-macro.markdown.param.extended.desc=Befindet sich information \u00FCber Extended Markdown: <a href="https://github.com/sirthias/pegdown#readme">https://github.com/sirthias/pegdown#readme</a>
|
|
||||||
@@ -1,3 +1 @@
|
|||||||
com.atlassian.plugins.confluence.markdown.confluence-markdown-macro.markdown.desc=Ce macro converti le text format\u00E9 selon Markdown vers HTML
|
com.atlassian.plugins.confluence.markdown.confluence-markdown-macro.markdown.desc=Ce macro converti Markdown vers HTML
|
||||||
com.atlassian.plugins.confluence.markdown.confluence-markdown-macro.markdown.param.extended.label=Activez les propri\u00E9t\u00E9s avanc\u00E9es de Markdown:Pour plus d'information sur
|
|
||||||
com.atlassian.plugins.confluence.markdown.confluence-markdown-macro.markdown.param.extended.desc=Pour plus d'information sur les propri\u00E9t\u00E9s avanc\u00E9es de Markdown: <a href="https://github.com/sirthias/pegdown#readme">https://github.com/sirthias/pegdown#readme</a>
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
com.atlassian.plugins.confluence.markdown.confluence-markdown-macro.markdown.desc=Ce macro converti le text format\u00E9 selon Markdown vers HTML
|
||||||
Reference in New Issue
Block a user