1

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

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

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

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

4

3 回答 3

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很熟悉,所以我把一个spring.xml文件放在我插件的META-INF/spring/目录下,我的DataSource需要的jar和数据库驱动放在META-INF/lib目录下。spring.xml 中配置的 JdbcTemplate 被放入 OSGi 包(我认为),然后将其注入到我的 ServletFilter 实现的构造函数中。

于 2015-08-17T23:04:12.060 回答
2

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

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

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

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

于 2014-04-30T17:53:40.983 回答
0

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

于 2014-04-24T19:14:23.473 回答