![Page 1: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/1.jpg)
Go Go Gadgets!Building an OpenSocial Application
1
Mark HalvorsonCommunity Member, OpenSocial Foundation BoardChief Imagineer, Atlassian Software
Email: [email protected]: @halv0112
Monday, December 6, 2010
![Page 2: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/2.jpg)
What is an ‘Imagineer’?Monday, December 6, 2010
![Page 3: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/3.jpg)
Take things that exist...
!" #"
Monday, December 6, 2010
![Page 4: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/4.jpg)
...and make something different.
Monday, December 6, 2010
![Page 5: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/5.jpg)
Monday, December 6, 2010
![Page 6: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/6.jpg)
Agenda
•What it is a Gadget•Why Atlassian chose OpenSocial•Application Portability
•Why you should too!•Application Sharing
6Monday, December 6, 2010
![Page 7: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/7.jpg)
What is OpenSocial?
7Monday, December 6, 2010
![Page 8: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/8.jpg)
Social Data Model
8Monday, December 6, 2010
![Page 9: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/9.jpg)
Web Service APIs
9Monday, December 6, 2010
![Page 10: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/10.jpg)
Gadgets
10Monday, December 6, 2010
![Page 11: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/11.jpg)
Our Problem
11Monday, December 6, 2010
![Page 12: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/12.jpg)
Before
FishEyeSourceCode
JIRAIssues&Tasks
ConfluenceWiki
12
•Enterprise Apps are Silos
Monday, December 6, 2010
![Page 13: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/13.jpg)
13
Emphasize Teams, Projects & Tasks over Tools
Monday, December 6, 2010
![Page 14: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/14.jpg)
13
Emphasize Teams, Projects & Tasks over Tools
Monday, December 6, 2010
![Page 15: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/15.jpg)
13
Emphasize Teams, Projects & Tasks over Tools
Monday, December 6, 2010
![Page 16: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/16.jpg)
13
Emphasize Teams, Projects & Tasks over Tools
Monday, December 6, 2010
![Page 17: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/17.jpg)
Too Many Dashboards
14Monday, December 6, 2010
![Page 18: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/18.jpg)
Too Many Dashboards
14Monday, December 6, 2010
![Page 19: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/19.jpg)
Cross-Product Sharing
15Monday, December 6, 2010
![Page 20: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/20.jpg)
Integration with Non-Atlassian apps
16Monday, December 6, 2010
![Page 21: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/21.jpg)
Solution: OpenSocial Gadgets
17Monday, December 6, 2010
![Page 22: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/22.jpg)
Gadgets
18
are a Great Solution for Dashboard
Monday, December 6, 2010
![Page 23: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/23.jpg)
Open standard for enterprise application connection
After
19
viewcompleteproject
singleacCvity
Monday, December 6, 2010
![Page 24: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/24.jpg)
Not just about portals,or internal applications.
Managers Do Email
viewacCvity&status
createissues
20Monday, December 6, 2010
![Page 25: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/25.jpg)
Open Standards, Industry Support
21Monday, December 6, 2010
![Page 26: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/26.jpg)
Why Write Gadgets?
•They’re easy!
•They use stable, widely accessible and understood technologies
•Write once, display everywhere
22Monday, December 6, 2010
![Page 27: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/27.jpg)
The Obligatory Hello World Example
23Monday, December 6, 2010
![Page 28: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/28.jpg)
The Obligatory Hello World Example
23Monday, December 6, 2010
![Page 29: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/29.jpg)
Anatomy of a Gadget
24Monday, December 6, 2010
![Page 30: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/30.jpg)
Anatomy of a Gadget
•XML Spec File•Metadata, HTML Content, and JavaScript
24Monday, December 6, 2010
![Page 31: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/31.jpg)
Anatomy of a Gadget
•XML Spec File•Metadata, HTML Content, and JavaScript
•Core JavaScript API•Access Preferences, Make Requests
24Monday, December 6, 2010
![Page 32: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/32.jpg)
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
24Monday, December 6, 2010
![Page 33: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/33.jpg)
XML Spec File
25Monday, December 6, 2010
![Page 34: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/34.jpg)
<ModulePrefs>
26Monday, December 6, 2010
![Page 35: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/35.jpg)
<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>
26Monday, December 6, 2010
![Page 36: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/36.jpg)
<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>
26Monday, December 6, 2010
![Page 37: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/37.jpg)
<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>
26Monday, December 6, 2010
![Page 38: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/38.jpg)
<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"/>
27Monday, December 6, 2010
![Page 39: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/39.jpg)
<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"/>
27Monday, December 6, 2010
![Page 40: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/40.jpg)
<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"/>
27Monday, December 6, 2010
![Page 41: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/41.jpg)
<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>
28Monday, December 6, 2010
![Page 42: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/42.jpg)
<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>
28Monday, December 6, 2010
![Page 43: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/43.jpg)
Views - DEFAULT view
29Monday, December 6, 2010
![Page 44: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/44.jpg)
Views - DEFAULT view
29Monday, December 6, 2010
![Page 45: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/45.jpg)
Views - DEFAULT view
30Monday, December 6, 2010
![Page 46: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/46.jpg)
Views - DEFAULT view
30Monday, December 6, 2010
![Page 47: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/47.jpg)
Views - CANVAS view
31Monday, December 6, 2010
![Page 48: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/48.jpg)
Views - CANVAS view
31Monday, December 6, 2010
![Page 49: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/49.jpg)
Views - DEFAULT view (in Gmail)
32Monday, December 6, 2010
![Page 50: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/50.jpg)
Views - DEFAULT view (in Gmail)
32Monday, December 6, 2010
![Page 51: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/51.jpg)
Views - CANVAS view (in Gmail)
33Monday, December 6, 2010
![Page 52: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/52.jpg)
Views - CANVAS view (in Gmail)
33Monday, December 6, 2010
![Page 53: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/53.jpg)
Views - Custom view
34Monday, December 6, 2010
![Page 54: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/54.jpg)
Wallboards
Gadgets go beyond theJIRA Dashboardonto your wall!
35Monday, December 6, 2010
![Page 55: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/55.jpg)
Wallboards
Gadgets go beyond theJIRA Dashboardonto your wall!
35Monday, December 6, 2010
![Page 56: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/56.jpg)
JavaScript
// Create minimessage factoryvar msg = new gadgets.MiniMessage();// Show a small loading message to the uservar loadMessage = msg.createStaticMessage("loading...");
// Get configured user prefsvar 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 loadsgadgets.util.registerOnLoadHandler(fetchIssues);
36Monday, December 6, 2010
![Page 57: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/57.jpg)
JavaScript
// Create minimessage factoryvar msg = new gadgets.MiniMessage();// Show a small loading message to the uservar loadMessage = msg.createStaticMessage("loading...");
// Get configured user prefsvar 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 loadsgadgets.util.registerOnLoadHandler(fetchIssues);
36Monday, December 6, 2010
![Page 58: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/58.jpg)
JavaScript
// Create minimessage factoryvar msg = new gadgets.MiniMessage();// Show a small loading message to the uservar loadMessage = msg.createStaticMessage("loading...");
// Get configured user prefsvar 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 loadsgadgets.util.registerOnLoadHandler(fetchIssues);
36Monday, December 6, 2010
![Page 59: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/59.jpg)
Requesting Data from Web Services
•AJAX + DOM
•OAuth
•Request Proxy
•
37Monday, December 6, 2010
![Page 60: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/60.jpg)
38Monday, December 6, 2010
![Page 61: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/61.jpg)
39Monday, December 6, 2010
![Page 62: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/62.jpg)
40Monday, December 6, 2010
![Page 63: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/63.jpg)
41Monday, December 6, 2010
![Page 64: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/64.jpg)
gadgets.io.makeRequest()
42Monday, December 6, 2010
![Page 65: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/65.jpg)
What Can You Call?
•Any URL
•XML and JSON are the most useful•
43Monday, December 6, 2010
![Page 66: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/66.jpg)
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);}
44Monday, December 6, 2010
![Page 67: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/67.jpg)
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();}
45Monday, December 6, 2010
![Page 68: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/68.jpg)
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();}
45Monday, December 6, 2010
![Page 69: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/69.jpg)
TextText
An ExampleReal World Example...Monday, December 6, 2010
![Page 70: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/70.jpg)
TextText
An ExampleReal World Example...Monday, December 6, 2010
![Page 71: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/71.jpg)
TextText
An ExampleReal World Example...Monday, December 6, 2010
![Page 72: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/72.jpg)
TextText
An ExampleReal World Example...Monday, December 6, 2010
![Page 73: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/73.jpg)
TextText
An ExampleReal World Example...Monday, December 6, 2010
![Page 74: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/74.jpg)
TextText
An ExampleReal World Example...Monday, December 6, 2010
![Page 75: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/75.jpg)
The Goal
The Goal47
Monday, December 6, 2010
![Page 76: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/76.jpg)
48The Result
Monday, December 6, 2010
![Page 77: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/77.jpg)
48The Result
Monday, December 6, 2010
![Page 78: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/78.jpg)
49Preferences
Monday, December 6, 2010
![Page 79: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/79.jpg)
Statistics
50Monday, December 6, 2010
![Page 80: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/80.jpg)
Let’s Take a Step Back.
51Monday, December 6, 2010
![Page 81: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/81.jpg)
Q: What is the purpose of an application?
52Monday, December 6, 2010
![Page 82: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/82.jpg)
Q: What is the purpose of an application?
•A: DO Something. Complete some process.
52Monday, December 6, 2010
![Page 83: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/83.jpg)
Anatomy of an Application
Context Content Ac(on
53Monday, December 6, 2010
![Page 84: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/84.jpg)
An ExampleGmail
Communica(on
ContactsMail
ReadWriteReply
54Monday, December 6, 2010
![Page 85: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/85.jpg)
Q: What is the purpose of a gadget?
55Monday, December 6, 2010
![Page 86: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/86.jpg)
Q: What is the purpose of a gadget?
•A: DO Something. Complete some process.
55Monday, December 6, 2010
![Page 87: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/87.jpg)
Gadget = ReusableMini‐ApplicaCon
Context
Content
Ac(on
AtomicUnitofWork
Ac(on
Context
Content
•or
56Monday, December 6, 2010
![Page 88: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/88.jpg)
Example - “Mini-Application”
JIRACommentGadget
JIRA‐1234
AddComment
UsersComment
57Monday, December 6, 2010
![Page 89: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/89.jpg)
JIRACommentGadget
Context
UsersComment
AddComment
58
Example - Unit of Work
Monday, December 6, 2010
![Page 90: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/90.jpg)
JIRACommentGadget
Context
UsersComment
AddComment
58
Example - Unit of Work
Monday, December 6, 2010
![Page 91: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/91.jpg)
Lesson Learned over time:
•Gadgets as “Units of Work” are...
• Easier to build
• Easier to use
• Easier to reuse
59Monday, December 6, 2010
![Page 92: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/92.jpg)
Composite Application
Gadget
Ac(on
Context
Content
Gadget
Ac(on
Context
Content
Context
Gadget
Ac(on
Add’lContext
ContentContent
Ac(on
60Monday, December 6, 2010
![Page 93: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/93.jpg)
Example - Gmail
GoogleCommunicaConApplicaCon
Gmail
Communica(on
ContactsMail
ReadWriteReply
GoogleTalk
IM
ReadWriteReply
Presence
61Monday, December 6, 2010
![Page 94: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/94.jpg)
<demo>
62Monday, December 6, 2010
![Page 95: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/95.jpg)
Get Satisfaction
63Monday, December 6, 2010
![Page 96: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/96.jpg)
Gadgets?
64
Monday, December 6, 2010
![Page 97: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/97.jpg)
Gadgets?
Gadget? Gadget?
64
Monday, December 6, 2010
![Page 98: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/98.jpg)
65Monday, December 6, 2010
![Page 99: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/99.jpg)
65
Gadget
Gadget!
Gadget
Monday, December 6, 2010
![Page 100: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/100.jpg)
Get Satisfactionpowered by JIRA
66Monday, December 6, 2010
![Page 101: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/101.jpg)
Gadgets!
67Monday, December 6, 2010
![Page 102: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/102.jpg)
Gadgets!
67Monday, December 6, 2010
![Page 103: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/103.jpg)
Gadgets!
67Gadget!
Gadget!
Monday, December 6, 2010
![Page 104: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/104.jpg)
68Monday, December 6, 2010
![Page 105: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/105.jpg)
68Monday, December 6, 2010
![Page 106: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/106.jpg)
</demo>
69Monday, December 6, 2010
![Page 107: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/107.jpg)
Summary - Why write gadgets?
•Easy!• Simple web based technologies mean anyone can write a gadget.
•Reusable!•Use in any OpenSocial Container. iGoogle, Gmail, JIVE, more every day.
•Fun!• Thinking about applications as atomic units of work add a new dimension to
application design.
70Monday, December 6, 2010
![Page 108: Go! Go! Gadgets. Writing an OpenSocial Application](https://reader038.vdocument.in/reader038/viewer/2022110307/5557b747d8b42a4a5d8b5373/html5/thumbnails/108.jpg)
Questions?
71
Resources• http://atlassian.com/opensocial
• http://www.opensocial.org
• http://atlassian.com/classroom
Monday, December 6, 2010