Changed the caching expiration policy from a expiration on get to a TTL on set, and...
[shindig.git] / javascript / samplecontainer / examples / SocialActivitiesWorld.xml
blob6f384bdb663a7bf7a9608c0a56836f227bec8043
1 <?xml version="1.0" encoding="UTF-8"?>
2 <Module>
3  <ModulePrefs title="Social Activities World">
4    <Require feature="opensocial-0.7"></Require>
5    <Require feature="dynamic-height"></Require>
6  </ModulePrefs>
7  <Content type="html">
8    <![CDATA[
9 <style type="text/css">
10   .streamtitle,
11   .socialHeading {
12     font-family:arial,helvetica,sans-serif;
13     font-size:13pt;
14     font-weight:bold;
15   }
17   .streamtitle {
18     background-color: #E0ECFF;
19     border-top: 1px solid blue;
20     padding: .25em;
21   }
23   .socialDescription a {
24     color:#999999;
25   }
27   .streamdescription,
28   .streamdescription a,
29   .streamdescription a:visited {
30     color:#408BFE;
31     font-size:12pt;
32     font-weight:bold;
33     text-decoration:underline;
34     font-family:arial,helvetica,sans-serif;
35   }
37   .streamurl a {
38     color:#008000;
39     font-size:10pt;
40     font-family:arial,helvetica,sans-serif;
41     text-decoration:underline;
42   }
44   .streamrow {
45     clear: both;
46   }
48   .streamrowline {
49     border-bottom:1px solid #DDE9F5;
50     clear:both;
51     height:0px;
52     margin:5px;
53   }
55   .streamcontents {
56     padding: .5em;
57   }
59   .streamhtmlcontents {
60     color:#333333;
61     font-size:10pt;
62     line-height:130%;
63     padding:2px 0pt 3px 10px;
64     font-family:arial,helvetica,sans-serif;
65   }
67   .mediaitems {
68     padding-left: 5em;
69   }
71   .addActivityDiv {
72     clear:both;
73     padding-bottom:15px;
74   }
76   #addActivityText {
77     color:#999999;
78     font-size:10pt;
79     font-weight:normal;
80     font-family:arial,helvetica,sans-serif;
81   }
83   .leftcolumn {
84     float: left;
85     width: 47%;
86   }
88   .rightcolumn {
89     float: right;
90     width: 47%;
91   }
93   #addActivity {
94     display:none;
95     border: 2px solid blue;
96     padding: .5em;
97   }
98 </style>
100 <script type="text/javascript">
102 gadgets.util.registerOnLoadHandler(refreshActivities);
104 function refreshActivities() {
105   var req = opensocial.newDataRequest();
106   if (!viewer) {
107     req.add(req.newFetchPersonRequest('VIEWER'), 'viewer');
108   }
109   req.add(req.newFetchActivitiesRequest('VIEWER'), 'viewerActivities');
110   req.add(req.newFetchActivitiesRequest('VIEWER_FRIENDS'), 'activities');
111   req.send(handleActivities);
114 function postNewActivity() {
115   var activityElement = document.getElementById('newActivity');
116   var mediaItem = new Array(opensocial.newActivityMediaItem("image", "http://cdn.davesdaily.com/pictures/784-awesome-hands.jpg", {'type' : 'image'}));
117   var activity = opensocial.newActivity({ 'title' : viewer.getDisplayName() + ' wrote: ' + activityElement.value,
118     'body' : 'write back!', 'mediaItems' : mediaItem});
120   activityElement.value = '';
121   opensocial.requestCreateActivity(activity, "HIGH", refreshActivities);
124 var viewer;
125 var activities;
126 function handleActivities(dataResponse) {
127   if (!viewer) {
128     viewer = dataResponse.get('viewer').getData();
129   }
130   activities = dataResponse.get('viewerActivities').getData()['activities'].asArray();
131   activities = activities.concat(dataResponse.get('activities').getData()['activities'].asArray());
132   document.getElementById('stream').style.display = 'block';
134   var html = '';
135   if (!activities || activities.length == 0) {
136     document.getElementById('stream').innerHTML = 'You do not have any activities yet';
137     return;
138   }
140   for (var i = 0; i < activities.length; i++) {
141     html += '<div class="streamrow">';
143     html += '<div class="streamdescription"><a href="' + activities[i].url + '">' + activities[i].getField('title') + '</a></div>';
145     html += '<div class="streamcontents">';
146     html += '<img src="http://www.google.com/s2/sharing/resources/static/images/quot.png?hl=en_US"/>';
148     var body = activities[i].getField('body') || '';
149     html += '<span class="streamhtmlcontents">' + body + '</span>';
150     html += '</div>';
152     html += '<div class="mediaitems">';
153     var mediaItems = activities[i].getField('mediaItems');
154     if (mediaItems) {
155       for (var j = 0; j < mediaItems.length; j++) {
156         if (mediaItems[j].getField('type') == 'image') {
157           html += '<img height="150px" style="padding-right:.5em;" src="' + mediaItems[j].getField('url') + '"/>';
158         }
159       }
160     }
161     html += '</div>';
163     var shortUrl = activities[i].getField('url');
164     if (shortUrl) {
165       if (shortUrl.indexOf('http://') == 0) {
166         shortUrl = shortUrl.substring(7);
167       }
168       html += '<div class="streamurl"><a href="' + activities[i].getField('url') + '">' + shortUrl + '</a></div>';
169     }
171     html += '</div>';
172     html += '<div class="streamrowline"></div>';
173   }
174   document.getElementById('stream').innerHTML = html;
175   gadgets.window.adjustHeight();
178 function hideShowDiv(divToShow, divToHide) {
179   document.getElementById(divToShow).style.display = 'block';
180   document.getElementById(divToHide).style.display = 'none';
182 </script>
184 <div class="streamtitle">Activities from your friends</div>
185 <div class="addActivityDiv">
186   <a id="addActivityText" href="#" onclick="hideShowDiv('addActivity','addActivityText'); return false;"> Add your own activity </a>
187   <span id="addActivity">
188     <input id="newActivity" type="text"/>
189     <input type="button" onclick="postNewActivity(); return false;" value="add"/>
190     <input type="button" onclick="hideShowDiv('addActivityText','addActivity'); return false;" value="cancel"/>
191   </span>
192 </div>
193 <div id="stream" style="display:none"></div>
196 </Content>
197 </Module>