我想向外隐藏一些问题链接&使用java脚本从链接问题弹出窗口转发链接类型的字符串。
我尝试过使用java脚本,但是我没有从java脚本中获取弹出屏幕。
请参阅下面的屏幕截图:
有谁能告诉我如何在java脚本中获得此弹出屏幕? 有没有其他方法可以隐藏这个?
谢谢&的问候,
雷努卡。
答案 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();