我有一个我写的Jira小工具,我希望从汇合处使用。我在我的机器上本地运行Jira和Confluence。我将我的小工具安装到我的jira实例,并且我将两个实例链接为完全信任作为应用程序链接。我已在Confluence中安装了管理员的外部小工具部分。然后我创建了一个简单的页面,并通过select宏添加了我的小工具。当我点击我的小工具时,我的配置屏幕显示出现问题。它似乎缺少我的i18n资源,因为我看到这个标签gadget.common.project.label。此外,iframe不会扩展以包含我的所有配置。
以下是我的小工具在汇合中的样子:
以下是我的小工具gadget.xml的主要部分:
<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs title="__MSG_gadget.title__"
directory_title="__MSG_gadget.title__"
description="__MSG_gadget.description__"
author="__MSG_gadget.author__"
thumbnail='#staticResourceUrl("TechnicalDebtTracker:TechnicalDebtTracker-resources", "thumbnail.png")'>
<Optional feature="gadget-directory">
<Param name="categories">
. JIRA
</Param>
</Optional>
<Optional feature="atlassian.util"/>
<Optional feature="auth-refresh"/>
<Require feature="setprefs" />
<Require feature="dynamic-height"/>
<Require feature="settitle"/>
<Require feature="views"/>
<Require feature="oauthpopup"/>
#oauth
#supportedLocales("gadget.common,gadget.user.activity")
<Locale messages="__ATLASSIAN_BASE_URL__/download/resources/TechnicalDebtTracker/i18n/ALL_ALL.xml"/>
</ModulePrefs>
<UserPref name="isConfigured" datatype="hidden" default_value="false" />
<UserPref name="project" datatype="hidden" required="true" />
<UserPref name="methodology_type" datatype="hidden" required="true" default_value="scrum" />
<UserPref name="warning_threshold" datatype="hidden" required="true" default_value="10" />
<UserPref name="critical_threshold" datatype="hidden" required="true" default_value="20" />
<UserPref name="paid_down_period" datatype="hidden" required="true" default_value="90" />
<UserPref name="normal_color" datatype="hidden" required="true" default_value="#61F553" />
<UserPref name="warning_color" datatype="hidden" required="true" default_value="#FFFA66" />
<UserPref name="critical_color" datatype="hidden" required="true" default_value="#FF7A66" />
<UserPref name="refresh" datatype="hidden" default_value="false" />
<Content type="html">
<![CDATA[
#requireResource("com.atlassian.gadgets.publisher:ajs-gadgets")
#requireResource("com.atlassian.jira.gadgets:g-filter-results")
#requireResource("TechnicalDebtTracker:TechnicalDebtTracker-resources")
#includeResources()
(function ()
{
var gadget = AJS.Gadget({
baseUrl: "__ATLASSIAN_BASE_URL__",
useOauth: "/rest/gadget/1.0/currentUser",
config: {
descriptor: function(args) {
var gadget = this;
var projectPicker = AJS.gadget.fields.projectPicker(gadget, "project", args.projectOptions);
return {
fields: [
projectPicker,
{
id: "methodology_type-id",
userpref: "methodology_type",
label: "__MSG_gadget.config.SetMethodology__",
description: "",
type: "select",
selected: gadget.getPref("methodology_type"),
options: [
{
label:"Scrum",
value:"scrum"
},
{
label:"Kanban",
value:"kanban"
}
]
},
{
id: "warning_threshold-id",
userpref: "warning_threshold",
label: "__MSG_gadget.config.SetWarning__",
description: "__MSG_gadget.config.InStoryPoints__",
type: "text",
value: gadget.getPref("warning_threshold")
},
{
id: "critical_threshold-id",
userpref: "critical_threshold",
label: "__MSG_gadget.config.SetCritical__",
description: "__MSG_gadget.config.InStoryPoints__",
type: "text",
value: gadget.getPref("critical_threshold")
},
{
id: "paid_down_period-id",
userpref: "paid_down_period",
label: "__MSG_gadget.config.SetPaidDownPeriod__",
description: "__MSG_gadget.config.InDays__",
type: "text",
value: gadget.getPref("paid_down_period")
},
{
id: "normal_color-id",
userpref: "normal_color",
label: "__MSG_gadget.config.SetNormalColor__",
description: "__MSG_gadget.config.HexCode__",
type: "text",
value: gadget.getPref("normal_color")
},
{
id: "warning_color-id",
userpref: "warning_color",
label: "__MSG_gadget.config.SetWarningColor__",
description: "__MSG_gadget.config.HexCode__",
type: "text",
value: gadget.getPref("warning_color")
},
{
id: "critical_color-id",
userpref: "critical_color",
label: "__MSG_gadget.config.SetCriticalColor__",
description: "__MSG_gadget.config.HexCode__",
type: "text",
value: gadget.getPref("critical_color")
},
AJS.gadget.fields.nowConfigured()
]
};
},
args: function()
{
return [
{
key: "projectOptions",
ajaxOptions: "/rest/gadget/1.0/filtersAndProjects?showFilters=false"
},
];
}()
},
答案 0 :(得分:2)
看看我的“projectPicker”。我认为这可能会有所帮助:
AJS.$.extend(true, {}, AJS.gadget.fields.projectPicker(gadget, "project", args.projectOptions),
{description: "select a project",
label: "Project"}
)
你可以在这里添加你的消息:
AJS.$.extend(true, {}, AJS.gadget.fields.projectPicker(gadget, "project", args.projectOptions),
{description: "__MSG_gadget.common.project.label__",
label: "__MSG_gadget.common.project.description__"}
)