将 bootstrap 添加到 jira servlet 插件中

Adding bootstrap into jira servlet plugin

我有一个非常简单的 Servlet 插件,我想在上面添加 bootstrap。

首先,我必须在我的 Atlassian 中添加所有 Bootstrap 资源-plugin.xml:

<web-resource key="purism-resources" name="purism Web Resources">
<dependency>com.atlassian.auiplugin:ajs</dependency>
<resource type="download" name="purism.css" location="/css/purism.css"/>
<resource type="download" name="purism.js" location="/js/purism.js"/>
<resource type="download" name="jquery.min.js" location="/js/jquery.min.js"/>

<!-- comeco bootstrap-->
<resource type="download" name="bootstrap.js" location="/bootstrap/js/bootstrap.js"/>
<resource type="download" name="bootstrap.min.js" location="/bootstrap/js/bootstrap.min.js"/>
<resource type="download" name="bootstrap-treeview.js" location="/bootstrap/js/bootstrap-treeview.js"/>
<resource type="download" name="bootstrap-treeview.min.js" location="/bootstrap/js/bootstrap-treeview.min.js"/>
<resource type="download" name="npm.js" location="/bootstrap/js/npm.js"/>
<resource type="download" name="jquery.js" location="/bootstrap/js/jquery.js"/>
<resource type="download" name="bootstrap.css" location="/bootstrap/css/bootstrap.css"/>
<resource type="download" name="bootstrap.min.css" location="/bootstrap/css/purism.css"/>
<resource type="download" name="bootstrap-theme" location="/bootstrap/css/bootstrap-theme.css"/>
<resource type="download" name="bootstrap-theme.min.css" location="/bootstrap/css/bootstrap-theme.min.css"/>
<resource type="download" name="bootstrap-treeview.min.css" location="/bootstrap/css/bootstrap-treeview.min.css"/>
<resource type="download" name="res/" location="/bootstrap"/>
<!-- fim bootstrap-->

<resource type="download" name="images/" location="/images"/>
<context>purism</context>

p.s。所有这些补丁都是正确的。 而且,从我的 servlet 将呈现我的速度,著名的 pagebuilderservice:

    @Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
{
    pageBuilderService.assembler().resources().requireWebResource("com.plugins.purism.purism:purism-resources");
    templateRenderer.render(TREE_VIEWER, resp.getWriter());
}

我的速度(很简单):

    <html>
<head>
    <title>teste</title>
    <!-- Required Stylesheets -->
    <link href="bootstrap.css" rel="stylesheet">

    <!-- Required Javascript -->
    <script src="jquery.js"></script>
    <script src="bootstrap-treeview.js"></script>

</head>
<body>
<div id="tree"></div>

</body>
</html>

我的问题是,当我尝试使用时遇到了这些错误: $('#tree').treeview({data: getTree()});

GET http://localhost:8080/plugins/servlet/res/jquery.js 
treeservlet:15 GET http://localhost:8080/plugins/servlet/res/bootstrap-treeview.js 
treeservlet:5 GET http://localhost:8080/plugins/servlet/bootstrap.css 
treeservlet:11 GET http://localhost:8080/plugins/servlet/res/bootstrap.css 
treeservlet:8 GET http://localhost:8080/plugins/servlet/jquery.js 
treeservlet:9 GET http://localhost:8080/plugins/servlet/bootstrap-treeview.js 
VM1591:3 Uncaught TypeError: $(...).treeview is not a function(…)

有人知道如何将 Bootstrap 资源添加到 Jira Plugin Servlet 中吗?

谢谢!

移除

<!-- Required Stylesheets -->
<link href="bootstrap.css" rel="stylesheet">

<!-- Required Javascript -->
<script src="jquery.js"></script>
<script src="bootstrap-treeview.js"></script>

来自您的 Velocity,因为我们正试图通过调用 requireWebResources() 来实现这一点,以便获得正确的资源路径。有这些行会复制它。

正如您在评论中提到的,为 decorator 添加元标记(这些在 JIRA 5.0 中已更改,我相信仍然与 JIRA 6 和 JIRA 7 相关(经过 OP 测试))。

例如,如果您希望页面顶部(页眉)和页脚具有 JIRA 导航栏,请使用

<meta name="decorator" content="atl.general">

在您的情况下,您选择了管理页面样式:

<meta name="decorator" content="atl.admin">

如果您想完全自己设计页面样式并且没有 Atlassian 品牌或样式,请使用:

<meta name="decorator" content="blank">

为什么这有效(我认为!)

如果您不添加装饰器,您使用 requireWebResource("com.plugins.purism.purism:purism-resources"); 声明的网络资源将不会添加到 <head> 元素中。这是因为没有任何东西会调用 drainIncludedResources() 方法来将所需的资源添加到 Velocity 模板。添加装饰器将调用 drainIncludedResources()* 以添加以 Atlassian 样式设置页面样式所需的资源。此调用还添加了通过调用 requireWebResource().

声明为需要的任何 Web 资源

*RequiredResources says the method JIRA calls is drainIncludedResources() but I can't find any documentation for this. The functionality should be the same as this includeResources() 方法的文档。