| <?xml version="1.0" encoding="UTF-8"?> |
| <!-- |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| --> |
| <Module> |
| <ModulePrefs title="ActivityStreams Gadget!"> |
| <Require feature="opensocial-0.9"/> |
| <Require feature="osapi"/> |
| <Require feature="dynamic-height"/> |
| </ModulePrefs> |
| |
| <Content type="html"> |
| <![CDATA[ |
| <script type="text/javascript" src="ActivityStreams.js"></script> |
| |
| <script type="text/javascript"> |
| // Stores the HTML for rendering |
| var htmlWelcome = ""; |
| var htmlActivities = ""; |
| var htmlActivityEntries = ""; |
| var htmlCreateActivityEntry = ""; |
| var htmlDeleteActivityEntry = ""; |
| var htmlGetActivityEntryId = ""; |
| |
| // ================= PEOPLE ================= |
| // Composes a list of friends |
| function displayWelcome() { |
| // Load the viewer, owner, and friends |
| ActivityStreams.loadPeople(); |
| alert("Loading friends..."); |
| |
| // Compose HTML |
| htmlWelcome = "Hi, " + viewer.getDisplayName() + "! You are viewing " + owner.getDisplayName() + "'s data. <br><br>"; |
| htmlWelcome += "Here is a list of your friends: <br>"; |
| htmlWelcome += "<lu>"; |
| viewerFriends.each(function(friend) { |
| htmlWelcome += "<li>" + friend.getDisplayName() + "</li>"; |
| }); |
| htmlWelcome += "</lu>"; |
| } |
| |
| // ================= ACTIVITY STREAMS ================= |
| // Form to input ActivityEntry |
| function displayCreateActivityEntry() { |
| htmlCreateActivityEntry = "<br><form name='form_postActivityEntry'>" |
| htmlCreateActivityEntry += "Post an ActivityEntry comment:<br>" |
| htmlCreateActivityEntry += "<input type='text' size=100 name ='activityEntryComment'>" |
| htmlCreateActivityEntry += "<input type='button' value='Post!' onclick='createActivityEntry(document.form_postActivityEntry.activityEntryComment.value)'>" |
| htmlCreateActivityEntry += "</form>" |
| } |
| |
| function createActivityEntry(comment) { |
| ActivityStreams.postActivityEntry(comment); |
| displayActivityEntries(); |
| refreshHTML(); |
| } |
| |
| function displayDeleteActivityEntry() { |
| htmlDeleteActivityEntry = "<br><form name='form_deleteActivityEntry'>" |
| htmlDeleteActivityEntry += "Delete an ActivityEntry by ID:<br>" |
| htmlDeleteActivityEntry += "<input type='text' size=100 name ='activityEntryId'>" |
| htmlDeleteActivityEntry += "<input type='button' value='Delete!' onclick='deleteActivityEntry(document.form_deleteActivityEntry.activityEntryId.value)'>" |
| htmlDeleteActivityEntry += "</form>" |
| } |
| |
| function deleteActivityEntry(activityEntryId) { |
| alert('Deleting Id: ' + activityEntryId); |
| ActivityStreams.deleteActivityEntry(activityEntryId); |
| displayActivityEntries(); |
| refreshHTML(); |
| } |
| |
| function displayGetActivityEntryId() { |
| htmlGetActivityEntryId = "<br><form name='form_getActivityEntryId'>" |
| htmlGetActivityEntryId += "Get an ActivityEntry by ID:<br>" |
| htmlGetActivityEntryId += "<input type='text' size=100 name ='activityEntryId'>" |
| htmlGetActivityEntryId += "<input type='button' value='Get!' onclick='getActivityEntryId(document.form_getActivityEntryId.activityEntryId.value)'>" |
| htmlGetActivityEntryId += "</form>" |
| } |
| |
| function getActivityEntryId(activityEntryId) { |
| alert('Getting Id: ' + activityEntryId); |
| ActivityStreams.loadActivityEntryId(activityEntryId); |
| displayActivities(); |
| refreshHTML(); |
| } |
| |
| function displayActivityEntries() { |
| // Load recent activityentries |
| ActivityStreams.loadActivityEntriesFriends(); |
| ActivityStreams.loadActivityEntriesViewer(); |
| alert('Loading ActivityEntries...'); |
| |
| // Compose HTML |
| htmlActivityEntries = "<br><br>All ActivityEntries: <br>"; |
| htmlActivityEntries += "<table border='1'>"; |
| htmlActivityEntries += "<tr>"; |
| htmlActivityEntries += "<td>Title</td>"; |
| htmlActivityEntries += "<td>Body</td>"; |
| htmlActivityEntries += "<td>Actor</td>"; |
| htmlActivityEntries += "<td>ID</td>"; |
| htmlActivityEntries += "<td>Posted</td>"; |
| htmlActivityEntries += "<td>Text</td>"; |
| htmlActivityEntries += "</tr>" |
| processActivityEntries(viewerActivityEntries); |
| processActivityEntries(friendActivityEntries); |
| htmlActivityEntries += "</table>"; |
| } |
| |
| function processActivityEntries(activityentries) { |
| for(idx = 0; idx < activityentries.list.length; idx++) { |
| htmlActivityEntries += "<tr>"; |
| htmlActivityEntries += "<td>" + activityentries.list[idx].title + "</td>"; |
| htmlActivityEntries += "<td>" + activityentries.list[idx].body + "</td>"; |
| htmlActivityEntries += "<td>" + activityentries.list[idx].actor.displayName + "</td>"; |
| htmlActivityEntries += "<td>" + activityentries.list[idx].id + "</td>"; |
| htmlActivityEntries += "<td>" + activityentries.list[idx].postedTime + "</td>"; |
| htmlActivityEntries += "<td><textarea>" + JSON.stringify(activityentries.list[idx]) + "</textarea></td>"; |
| htmlActivityEntries += "</tr>"; |
| } |
| } |
| |
| // ================= ACTIVITIES ================= |
| // Composes the list of activities by the viewer and friends |
| function displayActivities() { |
| // Load recent activities |
| ActivityStreams.loadActivitiesFriends(); |
| ActivityStreams.loadActivitiesViewer(); |
| alert('Loading Activities...'); |
| |
| // Compose HTML |
| htmlActivities = "<br><br>All Activities: <br>"; |
| htmlActivities += "<table border='1'>"; |
| htmlActivities += "<tr>"; |
| htmlActivities += "<td>Name</td>"; |
| htmlActivities += "<td>Title</td>"; |
| htmlActivities += "<td>Body</td>"; |
| htmlActivities += "<td>Images</td>"; |
| htmlActivities += "</tr>" |
| processActivities(viewerActivities); |
| processActivities(friendActivities); |
| htmlActivities += "</table>"; |
| } |
| |
| function processActivities(activities) { |
| for(idx = 0; idx < activities.list.length; idx++) { |
| htmlActivities += "<tr>"; |
| htmlActivities += "<td>" + activities.list[idx].userId + "</td>"; |
| htmlActivities += "<td>" + activities.list[idx].title + "</td>"; |
| htmlActivities += "<td>" + activities.list[idx].body + "</td>"; |
| var mediaItems = activities.list[idx].mediaItems; |
| if(mediaItems != null) { |
| for(itemIdx = 0; itemIdx < mediaItems.length; itemIdx++) { |
| if(mediaItems[itemIdx].type == "image") { |
| htmlActivities += "<td><img src='" + mediaItems[itemIdx].url + "' width=150 height=150/></td>"; |
| } |
| } |
| } |
| htmlActivities += "</tr>"; |
| } |
| } |
| |
| // =================== GADGET SET UP ================ |
| // Refreshes the HTML content |
| function refreshHTML() { |
| document.getElementById('message').innerHTML = htmlWelcome + htmlActivities + htmlActivityEntries + htmlCreateActivityEntry + htmlDeleteActivityEntry + htmlGetActivityEntryId; |
| gadgets.window.adjustHeight(); |
| } |
| |
| // Initializes the gadget |
| function init() { |
| displayWelcome(); |
| displayActivities(); |
| displayActivityEntries(); |
| displayCreateActivityEntry(); |
| displayDeleteActivityEntry(); |
| displayGetActivityEntryId(); |
| refreshHTML(); |
| } |
| |
| gadgets.util.registerOnLoadHandler(init); |
| </script> |
| <div id='message'></div> |
| ]]> |
| </Content> |
| </Module> |