Developer
Documentation
Resources
Get Support
Sign in
Developer
Get Support
Sign in
DOCUMENTATION
Cloud
Data Center
Resources
Sign in
Developer
Sign in
DOCUMENTATION
Cloud
Data Center
Resources
Sign in
Last updated Dec 8, 2017

Example of gadget XML specification

Below is the code from the JIRA Introduction gadget.

Note about Path to Resource

Note that the resource com.atlassian.jira.gadgets:common is specific to JIRA.

The path to the Atlassian Gadgets JavaScript Framework is as follows:

  • In Atlassian Gadgets 1.0.x, the JavaScript framework is available in JIRA only and is not part of the Atlassian Gadgets framework. The path in JIRA 4.0.x is: #requireResource("com.atlassian.jira.gadgets:common").
  • In Atlassian Gadgets 2.0 and later, the JavaScript framework has been extracted from JIRA and made part of the Gadgets framework. The path is: #requireResource("com.atlassian.gadgets.publisher:ajs-gadgets")

The JIRA Introduction Gadget

1
2
<?xml version="1.0" encoding="UTF-8" ?>
<Module>
  <ModulePrefs
      title="__MSG_gadget.introduction.title__"
      directory_title="__MSG_gadget.introduction.title__"
      description="__MSG_gadget.introduction.description__"
      author="Atlassian"
      author_affiliation="Atlassian" author_location="Sydney, Australia"
      title_url="http://www.atlassian.com/"
      screenshot="#staticResourceUrl("com.atlassian.jira.gadgets:average-age-chart-gadget", "intro-screenshot.png")"
      thumbnail="#staticResourceUrl("com.atlassian.jira.gadgets:average-age-chart-gadget", "intro-thumb.png")">
  <Optional feature="gadget-directory">
  <Param name="categories">JIRA</Param>
  </Optional>
  <Require feature="dynamic-height" />
  <Require feature="settitle" />
  #supportedLocales("gadget.common,gadget.introduction")
  </ModulePrefs>
  <Content type="html">
  <![CDATA[
        #requireResource("com.atlassian.jira.gadgets:common")
        #includeResources()
        <div id="intro-content"><div class="fullyCentered loading"></div></div>
        <script type="text/javascript">
            jQuery.namespace("jira.app.intro");
            jira.app.intro = function(){
                var response = function(){
                    var resize = function(){gadgets.window.adjustHeight();};

                    return function(response){
                        if (response.rc != 200){
                            AJS.log("Error on server call '__ATLASSIAN_BASE_URL__/rest/gadget/1.0/intro'.  Return code: " + response.rc);
                            var fragment = response.text.match(/<body[^>]*>([\S\s]*)<\/body[^>]*>/);
                            if (fragment && fragment.length > 0) {
                                jQuery("body").html("<div style=\"padding:0 20px\">" + fragment[1] + "</div>");
                                resize();
                            }
                            return;
                        }
                        if (response.data && response.data.html){
                            jQuery("#intro-content").removeClass("loading").html(response.data.html);
                        }
                        else {
                            jQuery("#intro-content").removeClass("loading").html("__MSG_gadget.introduction.welcome__");
                        }
                        resize();
                    };
                }();

                var setTitle = function(){
                    var isLocal = function(){return window.location.href.indexOf("__ATLASSIAN_BASE_URL__/plugins/servlet/gadgets/ifr") == 0;};
                    var instanceNameResponse = function(response){
                        if (response.data && response.data.instanceName){
                            gadgets.window.setTitle(response.data.instanceName + ": __MSG_gadget.introduction.title__");
                        }
                    };
                    return function(){
                        if (!isLocal()){
                            var params = {};
                            params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.JSON;
                            params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.GET;
                            gadgets.io.makeRequest("__ATLASSIAN_BASE_URL__/rest/gadget/1.0/instanceName", instanceNameResponse, params);
                        }
                    };
                }();
                return function(){
                    setTitle();
                    var params = {};
                    params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.JSON;
                    params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.GET;
                    gadgets.io.makeRequest("__ATLASSIAN_BASE_URL__/rest/gadget/1.0/intro", response, params);

                };
            }();
            gadgets.util.registerOnLoadHandler(jira.app.intro);
        </script>


  ]]>
  </Content>
</Module>

Creating your Gadget XML Specification

Rate this page: