You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shindig.apache.org by zh...@apache.org on 2008/05/28 03:53:46 UTC
svn commit: r660778 - in /incubator/shindig/trunk/javascript/container:
gadgets.js sample-pubsub-publisher.xml sample-pubsub-subscriber.xml
sample-pubsub.html
Author: zhen
Date: Tue May 27 18:53:46 2008
New Revision: 660778
URL: http://svn.apache.org/viewvc?rev=660778&view=rev
Log:
Added "pubsub", an OpenSocial 0.8 feature for gadget-to-gadget communication.
Added:
incubator/shindig/trunk/javascript/container/sample-pubsub-publisher.xml
incubator/shindig/trunk/javascript/container/sample-pubsub-subscriber.xml
incubator/shindig/trunk/javascript/container/sample-pubsub.html
Modified:
incubator/shindig/trunk/javascript/container/gadgets.js
Modified: incubator/shindig/trunk/javascript/container/gadgets.js
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/javascript/container/gadgets.js?rev=660778&r1=660777&r2=660778&view=diff
==============================================================================
--- incubator/shindig/trunk/javascript/container/gadgets.js (original)
+++ incubator/shindig/trunk/javascript/container/gadgets.js Tue May 27 18:53:46 2008
@@ -483,7 +483,7 @@
gadgets.IfrGadget.prototype.cssClassTitleButton = 'gadgets-gadget-title-button';
gadgets.IfrGadget.prototype.cssClassGadgetContent = 'gadgets-gadget-content';
gadgets.IfrGadget.prototype.rpcToken = (0x7FFFFFFF * Math.random()) | 0;
-gadgets.IfrGadget.prototype.rpcRelay = 'files/rpc_relay.html';
+gadgets.IfrGadget.prototype.rpcRelay = 'files/container/rpc_relay.html';
gadgets.IfrGadget.prototype.getTitleBarContent = function(continuation) {
continuation('<div id="' + this.cssClassTitleBar + '-' + this.id +
@@ -545,7 +545,7 @@
(this.debug ? '&debug=1' : '') +
this.getAdditionalParams() +
this.getUserPrefsParams() +
- '&url=' + encodeURIComponent(this.specUrl) +
+ '&url=' + encodeURIComponent(this.specUrl) +
'#rpctoken=' + this.rpcToken +
(this.secureToken ? '&st=' + this.secureToken : '') +
(this.viewParams ?
Added: incubator/shindig/trunk/javascript/container/sample-pubsub-publisher.xml
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/javascript/container/sample-pubsub-publisher.xml?rev=660778&view=auto
==============================================================================
--- incubator/shindig/trunk/javascript/container/sample-pubsub-publisher.xml (added)
+++ incubator/shindig/trunk/javascript/container/sample-pubsub-publisher.xml Tue May 27 18:53:46 2008
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Module>
+<ModulePrefs title="Sample PubSub Publisher"
+ height="250">
+<Require feature="pubsub"/>
+</ModulePrefs>
+<Content type="html">
+<![CDATA[
+<script>
+function publish() {
+ var message = Math.random();
+ gadgets.pubsub.publish("random-number", message);
+ document.getElementById("output").innerHTML = message;
+}
+
+</script>
+<div>
+<input type="button" value="Publish a random number" onclick="publish()"/>
+</div>
+<div id="output">
+</div>
+]]>
+</Content>
+</Module>
Added: incubator/shindig/trunk/javascript/container/sample-pubsub-subscriber.xml
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/javascript/container/sample-pubsub-subscriber.xml?rev=660778&view=auto
==============================================================================
--- incubator/shindig/trunk/javascript/container/sample-pubsub-subscriber.xml (added)
+++ incubator/shindig/trunk/javascript/container/sample-pubsub-subscriber.xml Tue May 27 18:53:46 2008
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Module>
+<ModulePrefs title="Sample PubSub Subscriber"
+ height="250">
+<Require feature="pubsub"/>
+</ModulePrefs>
+<Content type="html">
+<![CDATA[
+<script>
+function callback(sender, message) {
+ document.getElementById("output").innerHTML =
+ "message : " + gadgets.util.escapeString(message + "") + "<br/>" +
+ "sender : " + gadgets.util.escapeString(sender);
+}
+
+function subscribe() {
+ gadgets.pubsub.subscribe("random-number", callback);
+}
+
+function unsubscribe() {
+ gadgets.pubsub.unsubscribe("random-number");
+ document.getElementById("output").innerHTML = "";
+}
+
+</script>
+<div>
+<input type="button" value="Subscribe" onclick="subscribe()"/>
+<input type="button" value="Unsubscribe" onclick="unsubscribe()"/>
+</div>
+<div id="output">
+</div>
+]]>
+</Content>
+</Module>
Added: incubator/shindig/trunk/javascript/container/sample-pubsub.html
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/javascript/container/sample-pubsub.html?rev=660778&view=auto
==============================================================================
--- incubator/shindig/trunk/javascript/container/sample-pubsub.html (added)
+++ incubator/shindig/trunk/javascript/container/sample-pubsub.html Tue May 27 18:53:46 2008
@@ -0,0 +1,72 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>Sample: PubSub</title>
+<!-- default container look and feel -->
+<link rel="stylesheet" href="gadgets.css">
+<script type="text/javascript" src="http://localhost:8080/gadgets/js/pubsub.js?c=1&debug=1"></script>
+<script type="text/javascript" src="util.js"></script>
+<script type="text/javascript" src="gadgets.js"></script>
+<script type="text/javascript">
+var my = {};
+
+my.gadgetSpecUrls = [
+ 'http://localhost:8080/gadgets/files/container/sample-pubsub-publisher.xml',
+ 'http://localhost:8080/gadgets/files/container/sample-pubsub-subscriber.xml',
+ 'http://localhost:8080/gadgets/files/container/sample-pubsub-subscriber.xml'
+];
+
+my.LayoutManager = function() {
+ gadgets.LayoutManager.call(this);
+};
+
+my.LayoutManager.inherits(gadgets.LayoutManager);
+
+my.LayoutManager.prototype.getGadgetChrome = function(gadget) {
+ var chromeId = 'gadget-chrome-' + gadget.id;
+ return chromeId ? document.getElementById(chromeId) : null;
+};
+
+my.init = function() {
+ gadgets.pubsubrouter.init(function(id) {
+ return my.gadgetSpecUrls[parseInt(id[id.length - 1])];
+ }, {
+ onSubscribe: function(sender, channel) {
+ log(sender + " subscribes to channel '" + channel + "'");
+ // return true to reject the request.
+ },
+ onUnsubscribe: function(sender, channel) {
+ log(sender + " unsubscribes from channel '" + channel + "'");
+ // return true to reject the request.
+ },
+ onPublish: function(sender, channel, message) {
+ log(sender + " publishes '" + message + "' to channel '" + channel + "'");
+ // return true to reject the request.
+ }
+ });
+ gadgets.container.layoutManager = new my.LayoutManager();
+};
+
+my.renderGadgets = function() {
+ for (var i = 0; i < my.gadgetSpecUrls.length; ++i) {
+ var gadget = gadgets.container.createGadget(
+ {specUrl: my.gadgetSpecUrls[i], title: (i ? "Subscriber" : "Publisher")});
+ gadgets.container.addGadget(gadget);
+ gadgets.container.renderGadget(gadget);
+ }
+};
+
+function log(message) {
+ document.getElementById("output").innerHTML += gadgets.util.escapeString(message) + "<br/>";
+}
+</script>
+</head>
+<body onLoad="my.init();my.renderGadgets()">
+ <h2>Sample: PubSub</h2>
+ <div id="gadget-chrome-0" class="gadgets-gadget-chrome"></div>
+ <div id="gadget-chrome-1" class="gadgets-gadget-chrome"></div>
+ <div id="gadget-chrome-2" class="gadgets-gadget-chrome"></div>
+ <div id="output" style="clear: left;">
+ </div>
+</body>
+</html>