我想使用 java 脚本从链接问题弹出窗口中隐藏一些链接类型的问题链接向外和向内的字符串。
我曾尝试使用 java 脚本,但我没有从 java 脚本中获得弹出屏幕。
请看下面的截图:
谁能告诉我如何在java脚本中获得这个弹出屏幕?有没有其他方法可以隐藏这个?
感谢和问候,
雷努卡。
我想使用 java 脚本从链接问题弹出窗口中隐藏一些链接类型的问题链接向外和向内的字符串。
我曾尝试使用 java 脚本,但我没有从 java 脚本中获得弹出屏幕。
请看下面的截图:
谁能告诉我如何在java脚本中获得这个弹出屏幕?有没有其他方法可以隐藏这个?
感谢和问候,
雷努卡。
要隐藏每个页面的克隆问题链接:
编辑文件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();
之前的解决方案有一个问题:只有点击“Link Issue”-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();
}
然后,您可以做的只是注释和链接类型,将 [hidden] 放在链接名称中,它将对所有用户消失(它仍然可以通过编程方式添加或通过克隆创建)。
如果您没有 Scriptrunner 或不需要实现的动态特性,您仍然可以像上面在 hideIssueTypes() 中的答案中描述的 Kuf 一样硬编码值,如下所示:
AJS.$("#issue-link-link-type option[value*='clon']").remove();