将引导程序添加到jira servlet插件

时间:2016-04-04 01:23:51

标签: twitter-bootstrap jira velocity jira-plugin

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

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

<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>

我的问题是,当我尝试使用时,我得到了这些错误: $(&#39;#tree&#39;)。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中?

谢谢!

1 个答案:

答案 0 :(得分:3)

删除

<!-- 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的文档说JIRA调用的方法是drainIncludedResources(),但我找不到任何相关文档。该功能应与此includeResources()方法相同。