Intro Open Social and Dashboards

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    2 Favorites

    Intro Open Social and Dashboards - Presentation Transcript

    1. Intro to Atlassian Dashboards and OpenSocial Tim Moore, Atlassian Developer
    2. What Is the New Atlassian Dashboard?
    3. New Dashboard for JIRA 4.0
    4. New Dashboard for JIRA 4.0
    5. New Dashboard for JIRA 4.0
    6. New Dashboard for JIRA 4.0
    7. New Dashboard for JIRA 4.0
    8. New Dashboard for JIRA 4.0
    9. Integration with Non-Atlassian apps
    10. Solution: OpenSocial Gadgets
    11. What is OpenSocial?
    12. Social Data Model
    13. Web Service APIs
    14. Gadgets
    15. Seem Familiar?
    16. Seem Familiar?
    17. Gadgets are a Great Solution for Dashboards
    18. Built for Sharing Content
    19. Open Standards, Industry Support
    20. Apache Shindig
    21. Transitioning from Portlets
    22. Why Write Gadgets?
    23. Why Write Gadgets? Easy!
    24. Why Write Gadgets? Easy! Safe
    25. Why Write Gadgets? Easy! Safe Write Once, Display Everywhere
    26. Why Write Gadgets? Easy! Safe Write Once, Display Everywhere Non-Atlassian Containers, Too!
    27. What Do You Need to Know?
    28. What Do You Need to Know? A Dashboard Dissected
    29. What Do You Need to Know? A Dashboard Dissected Anatomy of a Gadget
    30. What Do You Need to Know? A Dashboard Dissected Anatomy of a Gadget Requesting Data from Web Services
    31. What Do You Need to Know? A Dashboard Dissected Anatomy of a Gadget Requesting Data from Web Services Gadgets in an Atlassian Plugin
    32. What Do You Need to Know? A Dashboard Dissected Anatomy of a Gadget Requesting Data from Web Services Gadgets in an Atlassian Plugin Where to Go to Learn More
    33. A Dashboard Dissected
    34. Anatomy of a Gadget
    35. Anatomy of a Gadget XML Spec File • Metadata, HTML Content, and JavaScript
    36. Anatomy of a Gadget XML Spec File • Metadata, HTML Content, and JavaScript Core JavaScript API • Access Preferences, Make Requests
    37. Anatomy of a Gadget XML Spec File • Metadata, HTML Content, and JavaScript Core JavaScript API • Access Preferences, Make Requests Gadget Features • Additional, Optional Capabilities & APIs
    38. XML Spec File
    39. <ModulePrefs>
    40. <ModulePrefs> <?xml version=\"1.0\" encoding=\"UTF-8\" ?> <Module> <ModulePrefs title=\"JIRA Issues\" author=\"Atlassian\" thumbnail=\"http://labs.atlassian.com/svn/GADGETS/ trunk/jira-issues/basic/jira-issues-thumbnail.png\" description=\"A list of recently created Issues\"> <Require feature=\"minimessage\" /> <Require feature=\"dynamic-height\" /> </ModulePrefs>
    41. <ModulePrefs> <?xml version=\"1.0\" encoding=\"UTF-8\" ?> <Module> <ModulePrefs title=\"JIRA Issues\" author=\"Atlassian\" thumbnail=\"http://labs.atlassian.com/svn/GADGETS/ trunk/jira-issues/basic/jira-issues-thumbnail.png\" description=\"A list of recently created Issues\"> <Require feature=\"minimessage\" /> <Require feature=\"dynamic-height\" /> </ModulePrefs>
    42. <ModulePrefs> <?xml version=\"1.0\" encoding=\"UTF-8\" ?> <Module> <ModulePrefs title=\"JIRA Issues\" author=\"Atlassian\" thumbnail=\"http://labs.atlassian.com/svn/GADGETS/ trunk/jira-issues/basic/jira-issues-thumbnail.png\" description=\"A list of recently created Issues\"> <Require feature=\"minimessage\" /> <Require feature=\"dynamic-height\" /> </ModulePrefs>
    43. <UserPref> <UserPref name=\"show_date\" display_name=\"Show Dates?\" datatype=\"bool\" default_value=\"true\"/> <UserPref name=\"show_summ\" display_name=\"Show Summaries?\" datatype=\"bool\" default_value=\"true\"/> <UserPref name=\"num_entries\" display_name=\"Number of Entries:\" default_value=\"5\" required=\"true\"/>
    44. <UserPref> <UserPref name=\"show_date\" display_name=\"Show Dates?\" datatype=\"bool\" default_value=\"true\"/> <UserPref name=\"show_summ\" display_name=\"Show Summaries?\" datatype=\"bool\" default_value=\"true\"/> <UserPref name=\"num_entries\" display_name=\"Number of Entries:\" default_value=\"5\" required=\"true\"/>
    45. <UserPref> <UserPref name=\"show_date\" display_name=\"Show Dates?\" datatype=\"bool\" default_value=\"true\"/> <UserPref name=\"show_summ\" display_name=\"Show Summaries?\" datatype=\"bool\" default_value=\"true\"/> <UserPref name=\"num_entries\" display_name=\"Number of Entries:\" default_value=\"5\" required=\"true\"/>
    46. <Content> <Content type=\"html\"><![CDATA[ <link rel=\"stylesheet\" href=\"http://labs.atlassian.com/svn/GADGETS/trunk/ jira-issues/basic/jira-issues.css\"> <div id=\"content_div\"></div> <script type=\"text/javascript\" src=\"http://labs.atlassian.com/svn/GADGETS/trunk/ jira-issues/basic/jira-issues.js\"></script> ]]></Content> </Module>
    47. JavaScript // Create minimessage factory var msg = new gadgets.MiniMessage(); // Show a small loading message to the user var loadMessage = msg.createStaticMessage(\"loading...\"); // Get configured user prefs var prefs = new gadgets.Prefs(); var showDate = prefs.getBool(\"show_date\"); var showSummary = prefs.getBool(\"show_summ\"); var numEntries = prefs.getInt(\"num_entries\"); // Fetch issues when the gadget loads gadgets.util.registerOnLoadHandler(fetchIssues);
    48. JavaScript // Create minimessage factory var msg = new gadgets.MiniMessage(); // Show a small loading message to the user var loadMessage = msg.createStaticMessage(\"loading...\"); // Get configured user prefs var prefs = new gadgets.Prefs(); var showDate = prefs.getBool(\"show_date\"); var showSummary = prefs.getBool(\"show_summ\"); var numEntries = prefs.getInt(\"num_entries\"); // Fetch issues when the gadget loads gadgets.util.registerOnLoadHandler(fetchIssues);
    49. JavaScript // Create minimessage factory var msg = new gadgets.MiniMessage(); // Show a small loading message to the user var loadMessage = msg.createStaticMessage(\"loading...\"); // Get configured user prefs var prefs = new gadgets.Prefs(); var showDate = prefs.getBool(\"show_date\"); var showSummary = prefs.getBool(\"show_summ\"); var numEntries = prefs.getInt(\"num_entries\"); // Fetch issues when the gadget loads gadgets.util.registerOnLoadHandler(fetchIssues);
    50. Requesting Data from Web Services
    51. Requesting Data from Web Services AJAX + DOM
    52. Requesting Data from Web Services AJAX + DOM Request Proxy
    53. Requesting Data from Web Services AJAX + DOM Request Proxy Trusted Apps + OAuth
    54. gadgets io . .makeRequest ) (
    55. What Can You Call?
    56. What Can You Call? Any URL
    57. What Can You Call? Any URL XML and JSON are the most useful
    58. What Can You Call? Any URL XML and JSON are the most useful REST-style APIs are the most convenient
    59. Fetching Issues function fetchIssues() { var url = \"http://jira.atlassian.com/sr/\" + \"jira.issueviews:searchrequest-xml\" + \"/temp/SearchRequest.xml?\" + \"created%3Aprevious=-1w&resolution=-1\" + \"&sorter/field=issuekey&sorter/order=DESC\" + \"&sorter/field=created&sorter/order=DESC\" + \"&tempMax=20\"; var params = {}; params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.DOM; gadgets.io.makeRequest(url, handleResponse, params); }
    60. Handling the Response function handleResponse(obj) { var domData = obj.data; var jiraIssues = { title : getTitle(domData), items : getItems(domData) }; renderJiraIssues(jiraIssues); msg.dismissMessage(loadMessage); gadgets.window.adjustHeight(); }
    61. Handling the Response function handleResponse(obj) { var domData = obj.data; var jiraIssues = { title : getTitle(domData), items : getItems(domData) }; renderJiraIssues(jiraIssues); msg.dismissMessage(loadMessage); gadgets.window.adjustHeight(); }
    62. Questions?
    63. Gadgets in an Atlassian Plugin
    64. Gadgets in an Atlassian Plugin Package into a Plugin JAR
    65. Gadgets in an Atlassian Plugin Package into a Plugin JAR Add <gadget> plugin module
    66. Gadgets in an Atlassian Plugin Package into a Plugin JAR Add <gadget> plugin module Install
    67. Directory Structure
    68. atlassian-plugin.xml
    69. atlassian-plugin.xml <atlassian-plugin key=\"com.atlassian.jira.issues-gadget\" name=\"JIRA Issues Gadget Plugin\" pluginsVersion=\"2\"> <plugin-info> <version>1.0</version> </plugin-info>
    70. Resources <resource type=\"download\" name=\"jira-issues-thumbnail.png\" location=\"jira-issues-thumbnail.png\"/> <web-resource key=\"resources\"> <resource type=\"download\" name=\"jira-issues.js\" location=\"jira-issues.js\"/> <resource type=\"download\" name=\"jira-issues.css\" location=\"jira-issues.css\"/> </web-resource>
    71. atlassian-plugin.xml <gadget key=\"jira-issues\" location=\"jira-issues.xml\"/>
    72. Gadget Pre-Processing
    73. Gadget Pre-Processing __ATLASSIAN_BASE_URL__
    74. Gadget Pre-Processing __ATLASSIAN_BASE_URL__ “#-directives”
    75. Gadget Pre-Processing __ATLASSIAN_BASE_URL__ “#-directives” • #staticResourceUrl
    76. Gadget Pre-Processing __ATLASSIAN_BASE_URL__ “#-directives” • #staticResourceUrl • #requireResource, & #includeResources
    77. Gadget Pre-Processing __ATLASSIAN_BASE_URL__ “#-directives” • #staticResourceUrl • #requireResource, & #includeResources More in the docs…
    78. Modified Gadget
    79. Modified Gadget <?xml version=\"1.0\" encoding=\"UTF-8\" ?> <Module> <ModulePrefs title=\"JIRA Issues\" author=\"Atlassian\" thumbnail=\"http://labs.atlassian.com/svn/GADGETS/ trunk/jira-issues/basic/jira-issues-thumbnail.png\" description=\"A list of recently created Issues\"> <Require feature=\"minimessage\" /> <Require feature=\"dynamic-height\" /> </ModulePrefs>
    80. Modified Gadget <?xml version=\"1.0\" encoding=\"UTF-8\" ?> <Module> <ModulePrefs title=\"JIRA Issues\" author=\"Atlassian\" thumbnail=\"http://labs.atlassian.com/svn/GADGETS/ thumbnail= trunk/jira-issues/basic/jira-issues-thumbnail.png\" '#staticResourceUrl(\"com.atlassian.jira.issues- gadget:jira-issues\", \"jira-issues-thumbnail.png\")' description=\"A list of recently created Issues\"> description=\"A list of recently created Issues\"> <Require feature=\"minimessage\" /> <Require feature=\"dynamic-height\" /> feature=\"minimessage\" /> <Require feature=\"dynamic-height\" /> </ModulePrefs> </ModulePrefs>
    81. Modified <Content> <Content type=\"html\"><![CDATA[ <link rel=\"stylesheet\" href=\"http://labs.atlassian.com/svn/GADGETS/trunk/ jira-issues/basic/jira-issues.css\"> <div id=\"content_div\"></div> <script type=\"text/javascript\" src=\"http://labs.atlassian.com/svn/GADGETS/trunk/ jira-issues/basic/jira-issues.js\"></script> ]]></Content> </Module>
    82. Modified <Content> <Content type=\"html\"><![CDATA[ #requireResource(\"com.atlassian.jira.issues- gadget:resources\") #includeResources() <div id=\"content_div\"></div> ]]></Content> </Module>
    83. Modified <Content> <Content type=\"html\"><![CDATA[ #requireResource(\"com.atlassian.jira.issues- gadget:resources\") <script> #includeResources() var url = \"__ATLASSIAN_BASE_URL__/sr/\" + <div\"jira.issueviews:searchrequest-xml\" + id=\"content_div\"></div> \"/temp/SearchRequest.xml?\" + ]]></Content> \"created%3Aprevious=-1w&resolution=-1\" + </Module> \"&sorter/field=issuekey&sorter/order=DESC\" + \"&sorter/field=created&sorter/order=DESC\" + \"&tempMax=20\"; </script> #includeResources() <div id=\"content_div\"></div>
    84. What Can You Call from a Gadget Plugin?
    85. What Can You Call from a Gadget Plugin? Existing URLs and REST APIs — no Java needed!
    86. What Can You Call from a Gadget Plugin? Existing URLs and REST APIs — no Java needed! Custom servlet or WebWork plugins
    87. What Can You Call from a Gadget Plugin? Existing URLs and REST APIs — no Java needed! Custom servlet or WebWork plugins Atlassian REST Plugin Module Type
    88. OAuth
    89. Whatʼs Next?
    90. Whatʼs Next? JavaScript Helper Libraries
    91. Whatʼs Next? JavaScript Helper Libraries Dashboard in More Atlassian Apps
    92. Whatʼs Next? JavaScript Helper Libraries Dashboard in More Atlassian Apps Gadgets Everywhere!
    93. Whatʼs Next? JavaScript Helper Libraries Dashboard in More Atlassian Apps Gadgets Everywhere! More OpenSocial
    94. If You Donʼt Remember Anything Else… Atlassian Dashboards are composed of Gadgets Atlassian Gadgets are OpenSocial Gadgets Gadgets are HTML, CSS, & JavaScript mini-apps that can be displayed in many containers Gadgets are defined by a static XML spec file Gadgets make use of web services via gadgets.io.makeRequest Gadgets can be packaged in Atlassian Plugins for improved portability and integration
    95. haveasec.com/summit SURVEY!!
    96. www.atlassian.com/opensocial
    SlideShare Zeitgeist 2009

    + Atlassian AtlassianAtlassian Atlassian Nominate

    custom

    735 views, 2 favs, 1 embeds more stats

    Atlassian is unveiling a new dashboard that will be more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 735
      • 703 on SlideShare
      • 32 from embeds
    • Comments 0
    • Favorites 2
    • Downloads 31
    Most viewed embeds
    • 32 views on http://www.atlassian.com

    more

    All embeds
    • 32 views on http://www.atlassian.com

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories