组件modules:
1.<resource>
<resource type="download" name="myimage.gif" location="includes/
images/myimage.gif">
<param name="content-type" value="image/gif"/>
</resource>
<resource type="velocity" name="template" location="com/example/plugin/template.vm"/>
<resource type="i18n" name="i18n" location="exampleplugin" />
1.1 resource表示在插件中添加可下载的资源,这些资源是非Java文件,例如:js、CSS、图片文件、marco帮助文件、本地属性文件(property file)等。
1.2 对resource的定义,可以作为插件的一部分,也可以作为插件组件的一部分。如果需要定义多个CSS,JS资源,可以都放在web resource组件中定义。
1.3 location表示完整路径时,不需要加/;当使用namePattern或指向一个目录资源时,加 / 。
1.4 定义CSS中的图片信息:
如果a.css中需要用到b.css中的图片pic.png, 在a.css中可以有如下定义:
background-image: url(b/pic.png);
如果a.css中需要用到项目中images/icons下的图片pic.png,在a.css中可以有如下定义:
background-image: url(../../../images/icons/pic.png);
1.5 资源类型type:告诉组件这个资源将怎样被使用。类型的值将根据应用程序的不同而不一样。
如果是web resource,类型必须是“download”。
2. <web-item>
<web-item key="google_home" name="Google Home" section="system.admin/example1" weight="10">
<description key="item.google.home.desc">Simple link to google.com.</description>
<label key="item.google.home.label" />
<link linkId="google_home">http://google.com</link>
</web-item>
label: key值(i18n)用于查找该链接所表示的文本内容。
3.<web-panel>
<web-panel key="report-panel-key" location="com.atlassian.jira.jira-projects-plugin:report-page">
<resource name="view" type="soy" location=":project-subpages-soy/JIRA.Project.Report.Templates.page"/>
<context-provider class="com.atlassian.jira.projects.page.report.ReportPageContextProvider"/>
</web-panel>
3.1 key--------唯一标识符,当需要引用插件上下文中的资源(Java代码或JS等)时,用key来找到这个资源。
3.2 location-------这是web panel被渲染在主机程序中的位置。例如,在下面的配置中,点击“Reports” 会找到名为“JIRA.Project.Report.Templates.page"的 soy 视图文件。
3.2.1 一个web-panel所使用到的资源文件,既可以像上面那样用 location 来定义,也可以就作为 atlassian-plugin.xml配置的一部分,把资源的内容就写在资源元素本身中。
<web-item key="report-page" section="jira.project.sidebar.navigation" weight="400">
<label key="project.page.report.title"/> <!--Reports-->
<link>/projects/$pathEncodedProjectKey?selectedItem=com.atlassian.jira.jira-projects-plugin:report-page</link>
<param name="iconClass" value="aui-icon-large agile-icon-report"/>
<condition class="com.atlassian.jira.projects.api.condition.IsOfProjectTypeCondition" invert="true">
<param name="projectType">service_desk</param>
</condition>
</web-item>
3.3 context-provider--------动态添加到视图文件(velocity)上下文中的面板(panel)元素。目前,一个web-panel中只能添加一个context-provider。其中的类要继承 AbstractJiraContextProvider.
3.4 condition --------显示面板所需要满足的条件,有多个条件时,父元素可使用逻辑运算符,例如:<conditions type="AND"></conditions>
3.5 param------参数用来渲染到视图模板中显示,参数值可以写在元素的属性中,也可以写在文本节点里。参数值可以是具体的文本,也可以是来自于 context-provider下面的类中的一个变量。
4.web resource
4.1 web resource和resource一样,也是用来定义js、CSS文件等可下载的资源。
4.2 web resource和resource的不同是,它可以添加到页面header的顶端。
4.3 transformation元素:这个元素只在插件框架2.5和以后的版本中可用,用来定义一个在web resource中可用的 transformer。设置该元素的用途是在静态资源批量传递到浏览器前对资源进行操作。可以在<transformer>元素中添 加任意属性和子元素来传递信息。
4.4 如何在代码中关联资源:
pageBuilderService.assembler().resources().requireWebResource("plugin Key:web-resource Key");
4.5 context元素: 用途是将web resource 关联到指定类型的视图界面,例如动态的在指定界面用js创建HTML内容。
<context>atl.general</context>
4.5.1 为视图界面添加自定义的context:
例如,有如下context定义:
<context>com.acme.plugin.fancy-context</context>
在视图模板中添加:
$webResourceManager.requireResourcesForContext("com.acme.plugin.fancy-context")