如何使用javascript在Jira 5.1.8的问题链接弹出窗口中隐藏一些问题链接类型?

时间:2013-01-24 06:59:46

标签: javascript jira

我想向外隐藏一些问题链接&使用java脚本从链接问题弹出窗口转发链接类型的字符串。

我尝试过使用java脚本,但是我没有从java脚本中获取弹出屏幕。

请参阅下面的屏幕截图:

Hide Issue Link types

有谁能告诉我如何在java脚本中获得此弹出屏幕? 有没有其他方法可以隐藏这个?

谢谢&的问候,

雷努卡。

2 个答案:

答案 0 :(得分:0)

要在每个页面隐藏克隆问题链接:

编辑文件system-webresources-plugin.xml(应位于/ atlassian-jira / WEB-INF / classes /),并将此代码添加到<web-resource key="jira-fields">

    <resource type="download" name="myScript.js" location="/includes/jira/field/script.js">
        <param name="source" value="webContextStatic"/>
    </resource>

,而不是/includes/jira/field/myScript.js写下这个:

AJS.$(document).ready(function() {
    if (AJS.$("#link-type option[value*='clon']").size() > 0) {
        // will work even when right clicking on More 
        // Actions->Link & open it into a new window
        AJS.$("#link-type option[value*='clon']").remove()
    } else if (AJS.$("#link-issue").size() > 0) {
        // will work in case the link menu showing via popup
        AJS.$("#link-issue").click(function(){
            // wait for the popup to show, and remove the clone options
            setTimeout(function (){
                AJS.$("#link-type option[value*='clon']").remove();
             }, 300);
        });
    }
});

重新启动Jira,它就是它!

该脚本将一个函数附加到链接菜单打开,而不是让菜单加载0.3秒,并删除不需要的项目。如果它不适合您,请尝试将超时从300提高到500-1000。

在jira 4上,改为运行:

    AJS.$("#issue-link-link-type option[value*='clon']").remove();

答案 1 :(得分:0)

之前的解决方案有一个问题: 它仅在点击“链接问题”-Menu-Item时有效。 当我使用Point(。) - Shortcut-Menu时,它不会删除问题类型。

我已经建立了以下解决方案:

JS-结合-部分:

AJS.$(document).ready(function() {
JIRA.bind(JIRA.Events.NEW_CONTENT_ADDED, function(e, context, reason) {
     hideIssueLinkTypes();
  });
});

JS-后备功能:

function hideIssueLinkTypes() {
var apiURL = "/rest/scriptrunner/latest/custom/getHiddenLinkTypes"

  $.getJSON( apiURL, {
  }).done(function( objectData ) {
      $.each( objectData, function( i, item ) {
        var issueLinkType = item.issueLinkType[0];
        AJS.$("#link-type option[value='"+issueLinkType.inwardDescription+"']").remove();
        AJS.$("#link-type option[value='"+issueLinkType.outwardDescription+"']").remove();
      });
    });
}

Scriptrunner-REST-端点:

import com.onresolve.scriptrunner.runner.rest.common.CustomEndpointDelegate
import groovy.json.JsonBuilder
import groovy.transform.BaseScript
import com.atlassian.jira.issue.link.DefaultIssueLinkTypeManager
import com.atlassian.jira.issue.link.IssueLinkTypeManager
import com.atlassian.jira.issue.link.IssueLinkType
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.config.properties.ApplicationProperties

import javax.ws.rs.core.MultivaluedMap
import javax.ws.rs.core.Response


@BaseScript CustomEndpointDelegate delegate

String HIDDEN_IDENT="[hidden]"

getHiddenLinkTypes(httpMethod: "GET") { MultivaluedMap queryParams, String body ->   

    def appProperties = ((ApplicationProperties) ComponentAccessor.getComponentOfType(ApplicationProperties.class));
    def appClonersLinkTypeName = appProperties.getDefaultBackedText("jira.clone.linktype.name");

    def jsBuilder=new JsonBuilder();
    def issueLinkTypes = ((IssueLinkTypeManager) ComponentAccessor.getComponentOfType(IssueLinkTypeManager.class)).getIssueLinkTypes();

    jsBuilder issueLinkTypes.findAll({it.getName().contains(HIDDEN_IDENT) || it.getName()==appClonersLinkTypeName }),
    { IssueLinkType linkType ->
        issueLinkType linkType.getId(),
        name: linkType.getName(),
        inwardDescription: linkType.getInward(),
        outwardDescription: linkType.getOutward()
    }

    return Response.ok(jsBuilder.toString()).build();
}

你可以做的只是注释和链接类型,将[隐藏]放在链接名称中,它将为所有用户消失(它仍然可以通过编程方式添加或通过克隆创建)。

如果您没有Scriptrunner或者不需要实现的动态特性,您仍然可以将值硬编码为上面在hideIssueTypes()上面的答案中描述的Kuf,如下所示:

AJS.$("#issue-link-link-type option[value*='clon']").remove();