package com.company.confluence.plugin;
import java.util.ArrayList;
import java.util.List;
import com.atlassian.confluence.content.render.xhtml.XhtmlException;
import com.atlassian.confluence.xhtml.api.MacroDefinition;
import com.atlassian.confluence.xhtml.api.MacroDefinitionHandler;
import java.util.Map;
import com.atlassian.confluence.xhtml.api.XhtmlContent;
import com.atlassian.confluence.content.render.xhtml.ConversionContext;
import com.atlassian.confluence.macro.Macro;
import com.atlassian.confluence.macro.MacroExecutionException;
public class MyConfluenceMacro implements Macro {
private final XhtmlContent xhtmlUtils;
public MyConfluenceMacro(XhtmlContent xhtmlUtils)
{
this.xhtmlUtils = xhtmlUtils;
}
public String execute(Map<String, String> parameters, String bodyContent,
ConversionContext conversionContext) throws MacroExecutionException {
String body = conversionContext.getEntity().getBodyAsString();
final List<MacroDefinition> macros = new ArrayList<MacroDefinition>();
System.out.println("===============================================");
System.out.println("Part 1");
System.out.println("===============================================");
try {
xhtmlUtils.handleMacroDefinitions(body, conversionContext,
new MacroDefinitionHandler() {
@Override
public void handle(MacroDefinition macroDefinition) {
macros.add(macroDefinition);
System.out.println("===============================================");
System.out.println("Part 2");
System.out.println("===============================================");
}
});
} catch (XhtmlException e) {
throw new MacroExecutionException(e);
}
StringBuilder builder = new StringBuilder();
builder.append("<p>");
if (!macros.isEmpty()) {
builder.append("<table width=\"50%\">");
builder.append("<tr><th>Macro Name</th><th>Has Body?</th></tr>");
for (MacroDefinition defn : macros) {
System.out.println("===============================================");
System.out.println("Part 3");
System.out.println("===============================================");
builder.append("<tr>");
builder.append("<td>").append(defn.getName())
.append("</td><td>").append(defn.hasBody())
.append("</td>");
builder.append("</tr>");
}
builder.append("</table>");
}
else
{
builder.append("you´ve done building yourself a macro! Nice Worku! Work Work!");
System.out.println("===============================================");
System.out.println("Part 4");
System.out.println("===============================================");
}
builder.append("</p>");
return builder.toString();
}
@Override
public BodyType getBodyType() {
return BodyType.NONE;
}
@Override
public OutputType getOutputType() {
return OutputType.BLOCK;
}
}
<atlassian-plugin key="${atlassian.plugin.key}" name="${project.name}" plugins-version="2">
<plugin-info>
<description>${project.description}</description>
<version>${project.version}</version>
<vendor name="${project.organization.name}" url="${project.organization.url}" />
</plugin-info>
<xhtml-macro name="company-confluence-macro" class="com.company.confluence.plugin.MyConfluenceMacro" key="my-macro">
<parameters/>
</xhtml-macro>
<!-- add our i18n resource -->
<resource type="i18n" name="i18n" location="company-confluence-macro"/>
</atlassian-plugin>
如果有人在创建汇流宏时遇到问题,则不推荐使用教程:
-图集-创建-汇合-宏
-删除测试文件夹
<xhtml-macro name="PLUGIN" class="com.project.xxx.mymacro" key="mymacro" icon="/download/resources/${project.groupId}.${project.artifactId}/images/pluginIcon.png">
<category name="external-content"/>
<parameters>
<parameter name="link" type="string" required="true"/>
</parameters>
<description>Inserts a calendar for the week into the current page</description>
</xhtml-macro>
-Atlas-Run
-Atlas-install-plugin
这在Atlas-6.2.6上对我很有效,我知道这个问题已经很老了,但仍然有问题。许多anwsers不清楚或已经不推荐...
我正在遵循关于为confluence Version5.9.7编写自定义宏的官方教程。我从教程中唯一改变的是插件名和包名,你可以在我附在这里的文件中看到。在运行altas-run.bat之后,我可以在system configuration页面中发现,插件已经成功安装并启用,同时具有两个模块。但是当我试图将此宏插入页面时,我在宏浏览器中找不到它。 为什么它抱怨没有找到XhtmlContent类型的
我正在尝试在Android Studio中安装飘飘。我已经在Android Studio中安装了颤动和飞镖插件,我还下载了颤动Sdk并设置了路径。 但是当我在终端运行Flutter Doctor时,它显示:Flutter插件未安装Dart插件未安装 以下是错误的图像: 我还尝试卸载颤动和飞镖插件并重新安装它们,但仍然收到相同的错误。 有人能帮我吗?
如何创建具有生成内联输出的主体的汇流宏?以下宏:
这可能吗?我所做的更改需要在服务器上被识别,以便更改不仅仅发生在我的计算机上。此外,我甚至不知道是否可以在不下载外部插件的情况下查看实际的源代码(由于某些原因,外部插件无法工作)。有人做过这样的事吗?
我已经根据Atlassian提供的基本/中级/高级教程创建了一个汇流蓝图插件。现在,我想更新页面模板,以包含一个带有嵌入CDATA的宏,其中CDATA中的URL包含要用用户输入的数据替换的部分。 尽管有反对解决方案的证据,但我希望有创意的人能知道我如何实现这一目标? 阿特拉斯SDK:6.2.14
颤振和飞镖已经安装!但仍然显示“未安装颤振插件;这增加了颤振特定的功能” 感谢你的帮助。