You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shindig.apache.org by do...@apache.org on 2008/09/06 02:58:06 UTC

svn commit: r692598 - /incubator/shindig/trunk/javascript/samplecontainer/samplecontainer.js

Author: doll
Date: Fri Sep  5 17:58:06 2008
New Revision: 692598

URL: http://svn.apache.org/viewvc?rev=692598&view=rev
Log:
SHINDIG-474. Slightly modified patch from Nicolaas Matthijs. The gadgets in the samplecontainer now display titles correctly by making a metadata call to the gadget server.

Modified:
    incubator/shindig/trunk/javascript/samplecontainer/samplecontainer.js

Modified: incubator/shindig/trunk/javascript/samplecontainer/samplecontainer.js
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/javascript/samplecontainer/samplecontainer.js?rev=692598&r1=692597&r2=692598&view=diff
==============================================================================
--- incubator/shindig/trunk/javascript/samplecontainer/samplecontainer.js (original)
+++ incubator/shindig/trunk/javascript/samplecontainer/samplecontainer.js Fri Sep  5 17:58:06 2008
@@ -106,20 +106,24 @@
 
   function reloadStateFile(opt_callback) {
     sendRequestToServer('setstate', 'POST',
-        {"fileurl" : stateFileUrl},
+        gadgets.io.encodeValues({"fileurl" : stateFileUrl}),
         opt_callback);
   };
 
-  function sendRequestToServer(url, method, opt_postParams, opt_callback) {
+  function sendRequestToServer(url, method, opt_postParams, opt_callback, opt_excludeSecurityToken) {
     // TODO: Should re-use the jsoncontainer code somehow
     opt_postParams = opt_postParams || {};
 
     var makeRequestParams = {
       "CONTENT_TYPE" : "JSON",
       "METHOD" : method,
-      "POST_DATA" : gadgets.io.encodeValues(opt_postParams)};
+      "POST_DATA" : opt_postParams};
 
-    gadgets.io.makeNonProxiedRequest(socialDataPath + url + "?st=" + gadget.secureToken,
+    if (!opt_excludeSecurityToken) {
+	  url = socialDataPath + url + "?st=" + gadget.secureToken;
+    }
+
+    gadgets.io.makeNonProxiedRequest(url,
       function(data) {
         data = data.data;
         if (opt_callback) {
@@ -130,6 +134,54 @@
     );
   };
 
+  function generateGadgets(metadata) {
+	// TODO: The gadget.js file should really have a clearGadgets method
+    gadgets.container.gadgets_ = {};
+    for (var i = 0; i < metadata.gadgets.length; i++) {
+      gadget = gadgets.container.createGadget(
+          {'specUrl': metadata.gadgets[i].url, 'title': metadata.gadgets[i].title});
+      gadget.setServerBase('../../');
+      gadget.secureToken = escape(generateSecureToken());
+      gadgets.container.addGadget(gadget);
+    }
+
+    gadgets.container.layoutManager.setGadgetChromeIds(['gadget-chrome']);
+    reloadStateFile(function() {
+      gadgets.container.renderGadgets();
+    });
+  };
+
+  function refreshGadgets(metadata) {
+	// TODO: The gadget.js file should really have a getGadgets method
+    for (var gadget in gadgets.container.gadgets_) {
+      var newtitle = metadata.gadgets[0].title;
+      var specUrl = metadata.gadgets[0].url;
+      gadgets.container.gadgets_[gadget].title = newtitle;
+      gadgets.container.gadgets_[gadget].specUrl = specUrl;
+    }
+    reloadStateFile(function() {
+      gadgets.container.renderGadgets();
+    });
+  }
+
+  function requestGadgetMetaData(opt_callback) {
+    var request = {
+      context: {
+        country: "default",
+        language: "default",
+        view: "default",
+        container: "default"
+      },
+      gadgets: [{
+        url: gadgetUrl,
+        moduleId: 1
+      }]
+    };
+
+    sendRequestToServer("/gadgets/metadata", "POST", 
+        gadgets.json.stringify(request), opt_callback, true);
+  }
+
   /**
    * Public Functions
    */
@@ -152,20 +204,12 @@
     // Render gadget
     document.getElementById("gadgetUrl").value = gadgetUrl;
 
-    gadget = gadgets.container.createGadget({'specUrl': gadgetUrl});;
-    gadget.setServerBase('../../');
-
     // Viewer and Owner
     document.getElementById("viewerId").value = viewerId;
     document.getElementById("ownerId").value = ownerId;
-    gadget.secureToken = escape(generateSecureToken());
 
-    gadgets.container.addGadget(gadget);
-    gadgets.container.layoutManager.setGadgetChromeIds(['gadget-chrome']);
-    reloadStateFile(function() {
-      gadgets.container.renderGadgets();
-    });
-  };
+    requestGadgetMetaData(generateGadgets);
+  }
 
   shindig.samplecontainer.unpackFormState = function() {
     useCaja = document.getElementById("useCajaCheckbox").checked;
@@ -187,13 +231,9 @@
     ownerId = document.getElementById("ownerId").value;
     gadgetUrl = document.getElementById("gadgetUrl").value;
 
-    gadget.secureToken = escape(generateSecureToken());
-    gadget.specUrl = gadgetUrl;
     shindig.cookies.set(gadgetUrlCookie, encodeURIComponent(gadgetUrl));
 
-    reloadStateFile(function() {
-      gadgets.container.renderGadgets();
-    });
+    requestGadgetMetaData(refreshGadgets);
   };
 
   shindig.samplecontainer.dumpStateFile = function() {