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 のログ作業にカスタム フィールドを追加するために行ったことを説明します...

まず、作業ログ ページを設定している JSP ファイルを見つける必要があります。カスタム フィールドを HTML で追加できます。JavaScript で作業を行います。

Jira は WebWork と呼ばれる非推奨のフレームワークを使用しているため、画面をカスタマイズする最善の方法は単純な HTML を使用することです。

とにかく、これは Tempo プラグインを使いたくない人のためのオプションです。

于 2014-04-30T17:53:40.983 に答える