blob: 30890f57f29926fc71d4ed070ff531ce54c9441e [file] [log] [blame]
<?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="OpenSocialWrapper.js"></script>
<script type="text/javascript" src="ActivityStreamsRender.js"></script>
<script type="text/javascript">
social = new OpenSocialWrapper();
render = new ActivityStreamsRender();
// TODO: move this stuff into ActivityStreamRender (if you can...)
// Renders retrieval of an ActivityEntry by ID
function renderActivityEntryId(div, callback) {
var html = "<h2>Work with an ActivityEntry</h2>";
html += "ActivityEntry ID: <input type='text' size=40 id='activityEntryId'>";
html += "<input type='button' value='Retrieve' onclick='retrieveActivityEntryId()'>";
html += "<input type='button' value='Delete' onclick='deleteActivityEntryId()'><br>";
html += "Note: you must be the owner of the ActivityEntry to retrieve it.";
html += "<textarea id='activityEntryText' cols=75 rows=10>No entry to display...</textarea><br>";
document.getElementById(div).innerHTML = html;
callback();
}
// Deletes the activity entry
function deleteActivityEntryId() {
social.deleteActivityEntryById(document.getElementById('activityEntryId').value, function(response) {
document.getElementById('activityEntryText').value = 'No entry to display...';
render.renderActivityEntries('activityEntryies', refresh);
});
}
// Retrieves the activity entry
function retrieveActivityEntryId() {
social.getActivityEntryById(document.getElementById('activityEntryId').value, function(response) {
document.getElementById('activityEntryText').value = JSON.stringify(response);
});
}
// Creation form for activity entry
function renderCreateActivityEntry(div, callback) {
var htmlCreateActivityEntry = "<h1>ActivityStreams</h1>";
htmlCreateActivityEntry += "Demonstrates use of the ActivityStream service in Apache Shindig. This implementation follows the JSON draft specfication: http://activitystrea.ms/head/json-activity.html<br>";
htmlCreateActivityEntry += "<h2>Create an ActivityEntry</h2>";
htmlCreateActivityEntry += "<table>";
htmlCreateActivityEntry += "<tr>";
htmlCreateActivityEntry += "<td>Title</td>";
htmlCreateActivityEntry += "<td><input type='text' size=50 id='activityEntryTitle'></td>"
htmlCreateActivityEntry += "</tr>";
htmlCreateActivityEntry += "<tr>";
htmlCreateActivityEntry += "<td>Body</td>";
htmlCreateActivityEntry += "<td><input type='text' size=50 id='activityEntryBody'></td>"
htmlCreateActivityEntry += "</tr>";
htmlCreateActivityEntry += "<tr>";
htmlCreateActivityEntry += "<td>Object Name</td>";
htmlCreateActivityEntry += "<td><input type='text' size=50 id='activityObjectName'></td>"
htmlCreateActivityEntry += "</tr>";
htmlCreateActivityEntry += "<tr>";
htmlCreateActivityEntry += "<td>Object Summary</td>";
htmlCreateActivityEntry += "<td><input type='text' size=50 id='activityObjectSummary'></td>"
htmlCreateActivityEntry += "</tr>";
htmlCreateActivityEntry += "<tr>";
htmlCreateActivityEntry += "<td>Object Permalink</td>";
htmlCreateActivityEntry += "<td><input type='text' size=50 id='activityObjectPermalink'></td>"
htmlCreateActivityEntry += "</tr>";
htmlCreateActivityEntry += "</table>";
htmlCreateActivityEntry += "<table>";
htmlCreateActivityEntry += "<tr style='color:blue'>";
htmlCreateActivityEntry += "<td colspan='2'> Note: Per the ActivityStreams specification, only a single verb and object type are now supported.</td>";
htmlCreateActivityEntry += "</tr>";
htmlCreateActivityEntry += "<tr>";
htmlCreateActivityEntry += "<td>Verbs</td>";
htmlCreateActivityEntry += "<td>Object Types</td>";
htmlCreateActivityEntry += "</tr>";
htmlCreateActivityEntry += "<tr>";
htmlCreateActivityEntry += "<td><select MULTIPLE id='selectVerbs' size=10>";
htmlCreateActivityEntry += "<option value='markAsFavorite'>Mark as Favorite</option>";
htmlCreateActivityEntry += "<option value='startFollowing'>Start Following</option>";
htmlCreateActivityEntry += "<option value='markAsLiked'>Mark as Liked</option>";
htmlCreateActivityEntry += "<option value='makeFriend'>Make Friend</option>";
htmlCreateActivityEntry += "<option value='join'>Join</option>";
htmlCreateActivityEntry += "<option value='play'>Play</option>";
htmlCreateActivityEntry += "<option value='post'>Post</option>";
htmlCreateActivityEntry += "<option value='save'>Save</option>";
htmlCreateActivityEntry += "<option value='share'>Share</option>";
htmlCreateActivityEntry += "<option value='tag'>Tag</option>";
htmlCreateActivityEntry += "<option value='update'>Update</option>";
htmlCreateActivityEntry += "</select></td>";
htmlCreateActivityEntry += "<td><select MULTIPLE id='selectObjectTypes' size=10>";
htmlCreateActivityEntry += "<option value='article'>Article</option>";
htmlCreateActivityEntry += "<option value='audio'>Audio</option>";
htmlCreateActivityEntry += "<option value='bookmark'>Bookmark</option>";
htmlCreateActivityEntry += "<option value='comment'>Comment</option>";
htmlCreateActivityEntry += "<option value='file'>File</option>";
htmlCreateActivityEntry += "<option value='folder'>Folder</option>";
htmlCreateActivityEntry += "<option value='group'>Group</option>";
htmlCreateActivityEntry += "<option value='list'>List</option>";
htmlCreateActivityEntry += "<option value='note'>Note</option>";
htmlCreateActivityEntry += "<option value='person'>Person</option>";
htmlCreateActivityEntry += "<option value='photo'>Photo</option>";
htmlCreateActivityEntry += "<option value='photoAlbum'>Photo Album</option>";
htmlCreateActivityEntry += "<option value='place'>Place</option>";
htmlCreateActivityEntry += "<option value='playlist'>Playlist</option>";
htmlCreateActivityEntry += "<option value='product'>Product</option>";
htmlCreateActivityEntry += "<option value='review'>Review</option>";
htmlCreateActivityEntry += "<option value='service'>Service</option>";
htmlCreateActivityEntry += "<option value='status'>Status</option>";
htmlCreateActivityEntry += "<option value='video'>Video</option>";
htmlCreateActivityEntry += "</select></td>";
htmlCreateActivityEntry += "</table>";
htmlCreateActivityEntry += "<input type='button' value='Submit' onclick='createActivityEntry()'>";
htmlCreateActivityEntry += "<br><br>";
document.getElementById(div).innerHTML = htmlCreateActivityEntry;
callback();
}
function createActivityEntry() {
// Gather selected verbs
verbOptions = document.getElementById('selectVerbs');
selVerbs = [];
count = 0;
for(i = 0; i < verbOptions.options.length; i++) {
if(verbOptions.options[i].selected) {
selVerbs[count] = verbOptions.options[i].value;
count++;
}
}
// Gather selected types
typeOptions = document.getElementById('selectObjectTypes');
selTypes = [];
count = 0;
for(i = 0; i < typeOptions.options.length; i++) {
if(typeOptions.options[i].selected) {
selTypes[count] = typeOptions.options[i].value;
count++;
}
}
var title = blankToNull(document.getElementById('activityEntryTitle').value);
var body = blankToNull(document.getElementById('activityEntryBody').value)
var objectName = blankToNull(document.getElementById('activityObjectName').value);
var objectSummary = blankToNull(document.getElementById('activityObjectSummary').value);
var objectPermalink = blankToNull(document.getElementById('activityObjectPermalink').value);
social.postActivityEntry(title, body, selVerbs[0], viewer.id, viewer.name.formatted,
objectName, objectSummary, objectPermalink, selTypes[0],
function(response) {
render.renderActivityEntries('activityEntries', refresh);
});
}
function blankToNull(str) {
return (str == '' ? null : str);
}
// Adjusts the window height
function refresh() {
gadgets.window.adjustHeight();
}
// Initializes the gadget
function init() {
render.renderWelcome('welcome', refresh);
render.renderActivities('activities', refresh);
render.renderActivityEntries('activityEntries', refresh);
renderActivityEntryId('htmlGetEntry', refresh);
renderCreateActivityEntry('htmlCreateEntry', refresh);
}
gadgets.util.registerOnLoadHandler(init);
</script>
<div id='welcome'></div>
<div id='activities'></div>
<div id='htmlCreateEntry'></div>
<div id='htmlGetEntry'></div>
<div id='activityEntries'></div>
]]>
</Content>
</Module>