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>