XWiki AppWithinMinutes 在显示中添加自定义速度脚本
XWiki AppWithinMinutes add custom velocity script on display
我是 XWiki 的新手,不是 Java 开发人员。我想为具有 OS、环境等属性的服务器列表开发一个简单的 AppWithinMinutes 应用程序(让我们称之为 ServerCatalog)。这都是可行的。我可以从 AppWithinMinites UI.
开发它
我还开发了一个按标签列出所有页面的宏。
例如,当有人在我的 ServerCatalog 中创建一个条目时,说 SERVERD56 其中 D 代表开发环境。
当我们显示该条目时,我还想执行我开发的宏,以便它可以列出与标签 SERVERX56.
匹配的所有页面
请注意,我将 D 替换为 X 因此在执行宏之前,我想操作该页面标题并删除环境前缀(在本例中为 D 用于开发环境)和 X.
我希望清楚我想要完成的事情。如有不明之处请告知。
如果有人可以帮助我,我将不胜感激。
编辑:
正如 Eduard Moraru 所建议的那样,我尝试了以下操作:
我创建了一个名为“PageListByTag”的自定义宏。
由于 python 对字符串操作有更多的控制权,我在 ServerCatalogSheet
的末尾添加了以下内容
.
.
.
.
{{/html}}
{{/velocity}}
{{python}}
title = document.getTitle()
newTitle = title[:6] + "X" + title[6+1:]
print(newTitle)
{{/python}}
它有几个问题..
- 我的 html 标签已经结束。我不能再向其中注入任何新内容了
- 我无法在 velocity 标签内添加 python 代码,因为 XWiki 不允许嵌套脚本
- 如果我想使用 python
,我仍然不知道如何在 python 代码中调用我的宏
如果我可以使用速度替换字符串中的第 6 个字符,那么一切正常。我可以在速度脚本中使用宏,因为它在 html 边界内。
据我了解,您想自定义显示应用程序条目时使用的应用程序的“sheet”。
如果您查看文档中关于自定义的部分,您会得到很多关于您应该查看的地方的起点:
这一行会很有趣(还有上面关于 XWiki 应用程序如何工作的链接):
The sheet, which is used to display and edit application entries (e.g. HolidaySheet)
在您的情况下,要自定义的文档(在 wiki
语法模式下编辑)应该是 ServerCatalog.Code.ServerCatalogSheet
在该文档中,您有 AWM 自动生成的代码,您可以向其中添加对宏的调用。
## AWM generated code...
...
## Customization:
{{displayAssociatedPages /}}
然后,在这个宏中(在本例中称为 displayAssociatedPages
),您可以执行如下操作:
{{velocity}}
#set ($title = $doc.title)
## OR #set ($title = $doc.name), depending if your pages have titles
#if ($title.startsWith('SERVERD'))
#set ($tag = $title.replaceFirst('SERVERD', 'SERVERX'))
##
## We can reuse and customize this snippet: https://snippets.xwiki.org/xwiki/bin/view/Extension/Display%20pages%20with%20a%20specific%20tag/
##
#set ($references = $xwiki.tag.getDocumentsWithTag($tag))
#foreach($reference in $references)
#set ($document = $xwiki.getDocument($reference))
#set ($label = $document.getTitle())
[[$label>>$reference]]
#end
#end
{{/velocity}}
API 文档和更多信息位于 https://www.xwiki.org/xwiki/bin/view/Documentation/DevGuide/API/
此外,您应该明白,一旦您自定义了 AWM 应用程序,您在使用 AWM 本身编辑它时应该小心。例如,如果您添加一个新字段 AFAIK,您可能会冒着对 sheet 进行自定义的风险,如上例所示,被覆盖,因此您应该从文档历史记录中恢复它们并 re-apply 它们。
我是 XWiki 的新手,不是 Java 开发人员。我想为具有 OS、环境等属性的服务器列表开发一个简单的 AppWithinMinutes 应用程序(让我们称之为 ServerCatalog)。这都是可行的。我可以从 AppWithinMinites UI.
开发它
我还开发了一个按标签列出所有页面的宏。
例如,当有人在我的 ServerCatalog 中创建一个条目时,说 SERVERD56 其中 D 代表开发环境。
当我们显示该条目时,我还想执行我开发的宏,以便它可以列出与标签 SERVERX56.
匹配的所有页面
请注意,我将 D 替换为 X 因此在执行宏之前,我想操作该页面标题并删除环境前缀(在本例中为 D 用于开发环境)和 X.
我希望清楚我想要完成的事情。如有不明之处请告知。
如果有人可以帮助我,我将不胜感激。
编辑:
正如 Eduard Moraru 所建议的那样,我尝试了以下操作:
我创建了一个名为“PageListByTag”的自定义宏。 由于 python 对字符串操作有更多的控制权,我在 ServerCatalogSheet
的末尾添加了以下内容.
.
.
.
{{/html}}
{{/velocity}}
{{python}}
title = document.getTitle()
newTitle = title[:6] + "X" + title[6+1:]
print(newTitle)
{{/python}}
它有几个问题..
- 我的 html 标签已经结束。我不能再向其中注入任何新内容了
- 我无法在 velocity 标签内添加 python 代码,因为 XWiki 不允许嵌套脚本
- 如果我想使用 python ,我仍然不知道如何在 python 代码中调用我的宏
如果我可以使用速度替换字符串中的第 6 个字符,那么一切正常。我可以在速度脚本中使用宏,因为它在 html 边界内。
据我了解,您想自定义显示应用程序条目时使用的应用程序的“sheet”。
如果您查看文档中关于自定义的部分,您会得到很多关于您应该查看的地方的起点:
这一行会很有趣(还有上面关于 XWiki 应用程序如何工作的链接):
The sheet, which is used to display and edit application entries (e.g. HolidaySheet)
在您的情况下,要自定义的文档(在 wiki
语法模式下编辑)应该是 ServerCatalog.Code.ServerCatalogSheet
在该文档中,您有 AWM 自动生成的代码,您可以向其中添加对宏的调用。
## AWM generated code...
...
## Customization:
{{displayAssociatedPages /}}
然后,在这个宏中(在本例中称为 displayAssociatedPages
),您可以执行如下操作:
{{velocity}}
#set ($title = $doc.title)
## OR #set ($title = $doc.name), depending if your pages have titles
#if ($title.startsWith('SERVERD'))
#set ($tag = $title.replaceFirst('SERVERD', 'SERVERX'))
##
## We can reuse and customize this snippet: https://snippets.xwiki.org/xwiki/bin/view/Extension/Display%20pages%20with%20a%20specific%20tag/
##
#set ($references = $xwiki.tag.getDocumentsWithTag($tag))
#foreach($reference in $references)
#set ($document = $xwiki.getDocument($reference))
#set ($label = $document.getTitle())
[[$label>>$reference]]
#end
#end
{{/velocity}}
API 文档和更多信息位于 https://www.xwiki.org/xwiki/bin/view/Documentation/DevGuide/API/
此外,您应该明白,一旦您自定义了 AWM 应用程序,您在使用 AWM 本身编辑它时应该小心。例如,如果您添加一个新字段 AFAIK,您可能会冒着对 sheet 进行自定义的风险,如上例所示,被覆盖,因此您应该从文档历史记录中恢复它们并 re-apply 它们。