如何在Jira工作日志对话框中添加自定义字段

时间:2014-04-23 17:37:45

标签: jira jira-plugin atlassian-plugin-sdk

我想在我的JIRA工作日志对话框/屏幕中添加一个包含一些元素的组合框。组合框将在工作描述前添加一个字符串(如" [DEV] - ")。

看起来很简单,但我在Jira文档中找不到教程......

我见过这个名为Tempo的插件。但我想自己做这件事。不使用其他插件。

我正在考虑编辑jira的JSP页面,但我意识到当我更新jira版本时,我将不得不再次编辑JSP。所以,我认为最好的方法是开发一个插件。但我不知道如何。

3 个答案:

答案 0 :(得分:3)

我解决这个问题的方法是将我的新字段添加到logwork.jsp中。这是文本字段的代码和下拉列表。

        <page:applyDecorator name="auifieldgroup">
            <aui:textfield id="'numberOfDefects'" label="text('Number Of Defects')" mandatory="'false'" name="'numberOfDefects'" size="'short'" theme="'aui'" /><br>
        </page:applyDecorator>
        <page:applyDecorator name="auifieldgroup">
                <label for="select-example">Development Phase</label>
                <select class="select" id="developmentPhase" name="developmentPhase">
                    <option>testing</option>
                    <option>configuration</option>
                    <option>development</option>
                </select>
        </page:applyDecorator>

然后我使用了Atlassian提供的Servlet-Filter插件模块,并且过滤器配置为应用于匹配模式/secure/CreateWorklog.jspa的URL。这是在atlassian-plugin.xml。

  <servlet-filter name="Create Worklog Servlet Filter" i18n-name-key="create-worklog-servlet-filter.name" key="create-worklog-servlet-filter" class="com.pelletier.jira.servlet.filter.CreateWorklogServletFilter" location="before-dispatch" weight="200">
     <description key="create-worklog-servlet-filter.description">The Create Worklog Servlet Filter Plugin</description>
     <url-pattern>/secure/CreateWorklog.jspa</url-pattern>
     <dispatcher>REQUEST</dispatcher>
  </servlet-filter>

在我的Servlet-Filter类中,我能够从请求中获取新参数,并将它们写入我的数据库。 (不幸的是,不是Jira,我听说这是不赞成的)

public class CreateWorklogServletFilter implements Filter {


private JdbcTemplate jdbcTemplate = null;

//OSGi injects the JdbcTemplate
public CreateWorklogServletFilter(JdbcTemplate jdbcTemplate) {
    this.jdbcTemplate = jdbcTemplate;
}

@Override
public void init(FilterConfig filterConfig) throws ServletException {
}

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    chain.doFilter(request, response);

    //do stuff with new params from modified jsp
}

@Override
public void destroy() {
}

我熟悉spring,所以我在我的插件的META-INF / spring /目录中放了一个spring.xml文件,我的DataSource需要jars,META-INF / lib目录下需要数据库驱动程序。在spring.xml中配置的JdbcTemplate被放入OSGi包中(我认为),然后将其注入到我的ServletFilter实现的构造函数中。

答案 1 :(得分:2)

为了帮助其他尝试和我一样的人。我将描述我在Jira的日志工作中添加自定义字段所做的工作......

首先,您需要找到设置工作日志页面的de JSP文件。您可以通过HTML添加自定义字段e通过JavaScript执行工作。

Jira使用了一个名为WebWork的弃用框架,因此自定义屏幕的最佳方法是使用简单的HTML。

无论如何,这是一个不想使用Tempo插件的选项。

答案 2 :(得分:0)

我们选择使用Tempo在ServiceRocket上执行此操作,我们建议客户使用附加组件(插件)。一般而言,从长远来看,对两条信息(工作类型和工作描述)使用单一字段(工作描述)并不是一个好主意。