From OpenSocial Directory
Image:Example.jpg==Reviews==
Add a Review
Template:GiftGiverNo3336 Reviews
[edit] Comments
View Code
<?xml version="1.0" encoding="UTF-8"?>
<Module>
<ModulePrefs title="Gifter">
<Require feature="opensocial-0.7"/>
<Require feature="views" />
</ModulePrefs>
<Content type="html">
<![CDATA[
<style type="text/css">
div.main{
background-color: #FFFFFF;
}
div.giftSelector{
border: solid 1px black;
}
</style>
<div id="main">
<div id='give'>
<form id='gift_form'>
Give <span id='gifts'></span> to <span id='friends'></span>. <a href="javascript:void(0);" onclick='giveGift();'>Give!</a>
</form>
</div>
<div id="given">
</div>
<div id="received"></div>
</div>
<script>
/**
* @author spradeep
*/
_IG_RegisterOnloadHandler(init);
//var mode = opensocial.getEnvironment().getSurface();
//var modes = { canvas : 1, profile : 2 };
var imagesListLocation = 'http://pr-gadget.googlecode.com/svn/trunk/pr-gadget/images/paths.xml';
function getView() {
return gadgets.views.getCurrentView().getName();
}
function hideUnwantedViews(){
if (getView() == 'canvas') {
/* Do some canvas specific stuff here */
}
if (getView() == 'profile') {
_gel('give').style.display ='none';
}
}
function init() {
if (getView() == 'canvas') {
_IG_FetchContent(imagesListLocation, function loadImages(responseText){
var xmlobject = (new DOMParser()).parseFromString(responseText.replace('\r','').replace('\n',''), "text/xml");
if (xmlobject == null || typeof(xmlobject ) != "object") {
_gel("main").innerHTML = "<i> Invalid data.</i>";
return;
}
var docRoot = xmlobject.getElementsByTagName("imageLocations")[0];
var images = docRoot.getElementsByTagName("image");
if(!(images == null || images.length==0)){
for(var i=0; i< images.length; ++i){
var image = images[i];
var url=image.firstChild.data;
imgs[i]=_IG_GetImage(url);
imgs[i].style.height='100';
imgs[i].style.width='100';
}
}
hideUnwantedViews();
loadFriends();
makeOptionsMenu();
},{ refreshInterval: 0 });
}else
{
loadFriends();
}
}
var imgs = new Array();
function loadFriends() {
var req = opensocial.newDataRequest();
req.add(req.newFetchPersonRequest('VIEWER'), 'viewer');
req.add(req.newFetchPeopleRequest('VIEWER_FRIENDS'), 'viewerFriends');
req.add(req.newFetchPersonAppDataRequest('VIEWER', 'gifts'), 'data');
req.add(req.newFetchPersonAppDataRequest('VIEWER_FRIENDS', 'gifts'), 'viewerFriendData');
req.send(onLoadFriends);
}
function onLoadFriends(data) {
var viewer = data.get('viewer').getData();
var viewerFriends = data.get('viewerFriends').getData();
var giftData = data.get('data').getData();
var viewerfriendData = data.get('viewerFriendData').getData();
var friends = new Array();
var html='<select id="person">';
viewerFriends.each(function(person) {
var thumb = person.getField(opensocial.Person.Field.THUMBNAIL_URL);
// var profile = gadgets.util.getUrlParameters()["parent"] +
// person.getField(opensocial.Person.Field.PROFILE_URL);
html += '<option value="' + person.getId() + '">' + person.getDisplayName() +'<img src="' + thumb + '"/>'+ '</option>';
friends[person.getId()] = person.getDisplayName(); });
html+='</select>';
_gel('friends').innerHTML = html;
updateGiftList(viewer, giftData, friends);
updateReceivedList(viewer,viewerfriendData,viewerFriends);
}
function makeOptionsMenu() {
//var options = ['Balloon', 'Chocolate', 'Cookie', 'Shake -hand'];
var html = new Array();
/*html.push('<select id="nut">');
for (var i = 0; i<options.length; i++) {
html.push('<option value="' + i + '">' + options[i] + '</option>');
}
html.push('</select>');
*/
html.push('<div id="giftSelector" style="border: solid 1px black;width: 505px;height: 505px;">');
var k=0;
for(var i=0;i<5;++i){
html.push('<div id="row'+i+'">');
for(var j=0;j<5;++j,k++){
html.push('<div class="gift" id="col'+k+'" style="float: left;width: 100px;text-align: center;">');
//html.push(i*j+'');
//html.push('<img src="http://www.hscripts.com/freeimages/icons/vehicle/bike/motor-bike-clipart8.gif"/>');
html.push(imgs[k].innerHMTL);
html.push('</div>');
}
html.push('</div><br/>');
}
html.push('</div>');
_gel('gifts').innerHTML = html.join('');
decorateDivs();
}
function decorateDivs(){
for(var i=0;i<25;++i){
if(_gel('col'+i).addEventListener){
// FF
_gel('col'+i).setAttribute('onmouseover',"this.style.backgroundColor = 'gray';");
_gel('col'+i).setAttribute('onmouseout',"this.style.backgroundColor = '';");
// _gel('col'+i).setAttribute('onmousedown',"toggleBold(this);");
}
else{
// IE
_gel('col'+i).onmouseover = function(){
this.style.backgroundColor = 'gray';
}
_gel('col'+i).onmouseout = function(){
this.style.backgroundColor = '';
}
/* _gel('col'+i).onmousedown =function(){
toggleBold(this);
}*/
}
/*
_gel('col'+i).onmouseover=function(){highlight(this)};
_gel('col'+i).onmouseout= function(){ unhighlight(this)};
}
function highlight(obj){
obj.style.bgcolor='green';
}
function unhighlight(obj){
obj.style.bgcolor='none';
}*/
}}
var givenGifts = {};
function giveGift() {
var nut = _gel('nut').value;
var friend = _gel('person').value;
givenGifts[friend] = nut;
var json = gadgets.json.stringify(givenGifts);
var req = opensocial.newDataRequest();
req.add(req.newUpdatePersonAppDataRequest(opensocial.DataRequest.PersonId.VIEWER, 'gifts', json));
req.add(req.newFetchPersonRequest('VIEWER'), 'viewer');
req.add(req.newFetchPeopleRequest('VIEWER_FRIENDS'), 'viewerFriends');
req.add(req.newFetchPersonAppDataRequest('VIEWER', 'gifts'), 'data');
req.add(req.newFetchPersonAppDataRequest('VIEWER_FRIENDS', 'gifts'), 'viewerFriendData');
req.send(onLoadFriends);
}
function updateGiftList(viewer, data, friends) {
var json = data[viewer.getId()]['gifts'];
if (!json) {
givenGifts = {};
}
try {
givenGifts = gadgets.json.parse(json);
} catch (e) {
givenGifts = {};
}
var options = ['Balloon', 'Chocolate', 'Cookie', 'Shake -hand'];
var html = new Array();
html.push('You have given:');
html.push('<ul>');
for (i in givenGifts) {
if (+(i) > 0) {
html.push('<li>' + friends[i] + ' received ' + options[givenGifts[i]] + '</li>');
}
}
html.push('</ul>');
_gel('given').innerHTML = html.join('');
}
function updateReceivedList(viewer, data, friends) {
if(data==null || data.length==null){
_gel('received').innerHTML = 'You have not yet received any gifts';
return;
}
var viewerId = viewer.getId();
var options = ['Balloon', 'Chocolate', 'Cookie', 'Shake hand'];
var html = new Array();
html.push('You have received : <ul>');
friends.each(function(person) {
var personData = data[person.getId()];
if (personData) {
var json = data[person.getId()]['gifts'];
var gifts = {}
if (!json) {
gifts = {};
}
try {
gifts = gadgets.json.parse(json);
} catch (e) {
gifts = {};
}
for (i in gifts) {
if (+(i) > 0 && i == viewerId) {
html.push('<li>' + options[gifts[i]] + ' from ' + person.getDisplayName() + '</li>');
}
}
}
});
html.push('</ul>');
_gel('received').innerHTML = html.join('');
}
</script>
]]>
</Content>
</Module>
Page Rating
Rating: 3.5/5 (6 votes cast)