我想在我的 JIRA 工作日志对话框/屏幕中添加一个包含一些元素的组合框。组合框将在作品描述前添加一个字符串(如“[DEV] - ”)。
它看起来很简单,但我在 Jira 文档中找不到教程......
我见过这个叫做 Tempo 的插件。但我想自己做这件事。不使用其他插件。
我正在考虑编辑 jira 的 JSP 页面,但我意识到当我更新 jira 版本时,我将不得不再次编辑 JSP。所以,我认为最好的方法是开发一个插件。但我不知道怎么做。
我想在我的 JIRA 工作日志对话框/屏幕中添加一个包含一些元素的组合框。组合框将在作品描述前添加一个字符串(如“[DEV] - ”)。
它看起来很简单,但我在 Jira 文档中找不到教程......
我见过这个叫做 Tempo 的插件。但我想自己做这件事。不使用其他插件。
我正在考虑编辑 jira 的 JSP 页面,但我意识到当我更新 jira 版本时,我将不得不再次编辑 JSP。所以,我认为最好的方法是开发一个插件。但我不知道怎么做。
我对这个问题的解决方案是将我的新字段添加到 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 实现的构造函数中。
为了帮助其他和我一样尝试的人。我将描述我为在 Jira 的日志工作中添加自定义字段所做的工作......
首先,您需要找到设置工作日志页面的 de JSP 文件。您可以通过 HTML 添加自定义字段,并通过 JavaScript 完成工作。
Jira 使用了一个已弃用的名为 WebWork 的框架,因此自定义屏幕的最佳方式是使用简单的 HTML。
无论如何,对于不想使用 Tempo 插件的人来说,这是一个选项。
我们选择在 ServiceRocket 中使用 Tempo 来执行此操作,我们向我们的客户推荐该附加组件(插件)。一般来说,从长远来看,对两条信息(工作类型和工作描述)使用单个字段(工作描述)并不是一个好主意。