Author: rbaxter85
Date: Tue Aug 30 22:29:23 2011
New Revision: 1163439

URL: http://svn.apache.org/viewvc?rev=1163439&view=rev
Log:
SHINDIG-1596
Committed for Stanton Sievers.
Adds aliasing to the common container and enables aliases for the default view.

Modified:
    shindig/trunk/config/container.js
    
shindig/trunk/features/src/main/javascript/features/container.gadget/gadget_holder.js
    
shindig/trunk/features/src/main/javascript/features/container.gadget/gadget_site.js
    
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/process/Processor.java

Modified: shindig/trunk/config/container.js
URL: 
http://svn.apache.org/viewvc/shindig/trunk/config/container.js?rev=1163439&r1=1163438&r2=1163439&view=diff
==============================================================================
--- shindig/trunk/config/container.js (original)
+++ shindig/trunk/config/container.js Tue Aug 30 22:29:23 2011
@@ -156,6 +156,11 @@
       "isOnlyVisible" : true,
       "urlTemplate" : "http://localhost${CONTEXT_ROOT}/gadgets/canvas?{var}";,
       "aliases" : ["FULL_PAGE"]
+    },
+    "default" : {
+      "isOnlyVisible" : false,
+      "urlTemplate" : "http://localhost${CONTEXT_ROOT}/gadgets/default?{var}";,
+      "aliases" : ["home", "profile", "canvas"]
     }
   },
   "tabs": {

Modified: 
shindig/trunk/features/src/main/javascript/features/container.gadget/gadget_holder.js
URL: 
http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/container.gadget/gadget_holder.js?rev=1163439&r1=1163438&r2=1163439&view=diff
==============================================================================
--- 
shindig/trunk/features/src/main/javascript/features/container.gadget/gadget_holder.js
 (original)
+++ 
shindig/trunk/features/src/main/javascript/features/container.gadget/gadget_holder.js
 Tue Aug 30 22:29:23 2011
@@ -138,7 +138,9 @@ osapi.container.GadgetHolder.prototype.g
 
 
 /**
- * @return {string} The view of current gadget.
+ * @return {string} The view of current gadget. This is the view that was 
actually rendered once
+ *         view aliases were applied.
+ * @see osapi.container.GadgetSite.prototype.render
  */
 osapi.container.GadgetHolder.prototype.getView = function() {
   return this.renderParams_[osapi.container.RenderParam.VIEW];

Modified: 
shindig/trunk/features/src/main/javascript/features/container.gadget/gadget_site.js
URL: 
http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/container.gadget/gadget_site.js?rev=1163439&r1=1163438&r2=1163439&view=diff
==============================================================================
--- 
shindig/trunk/features/src/main/javascript/features/container.gadget/gadget_site.js
 (original)
+++ 
shindig/trunk/features/src/main/javascript/features/container.gadget/gadget_site.js
 Tue Aug 30 22:29:23 2011
@@ -237,6 +237,10 @@ osapi.container.GadgetSite.prototype.onN
 
 /**
  * Render a gadget in this site, using a JSON gadget description.
+ *
+ * Note: A view provided in either renderParams or viewParams is subject to 
aliasing if the gadget
+ * does not support the view specified.
+ *
  * @param {Object} gadgetInfo the JSON gadget description.
  * @param {Object} viewParams Look at osapi.container.ViewParam.
  * @param {Object} renderParams Look at osapi.container.RenderParam.
@@ -250,16 +254,46 @@ osapi.container.GadgetSite.prototype.ren
     previousView = this.currentGadgetHolder_.getView();
   }
 
+  // Simple function to find a suitable alias
+  var findAliasInfo = function(viewConf) {
+    if (typeof viewConf !== 'undefined' && viewConf != null) {
+      var aliases = viewConf['aliases'] || [];
+      for (var i = 0; i < aliases.length; i++) {
+        if (gadgetInfo[osapi.container.MetadataResponse.VIEWS][aliases[i]]) {
+          return {'view':aliases[i],
+                  
'viewInfo':gadgetInfo[osapi.container.MetadataResponse.VIEWS][aliases[i]]};
+        }
+      }
+    }
+    return null;
+  };
+
   // Find requested view.
   var view = renderParams[osapi.container.RenderParam.VIEW] ||
       viewParams[osapi.container.ViewParam.VIEW] ||
       previousView;
   var viewInfo = gadgetInfo[osapi.container.MetadataResponse.VIEWS][view];
+  if (view && !viewInfo) {
+    var aliasInfo = findAliasInfo(gadgets.config.get('views')[view]);
+    if (aliasInfo) {
+      view = aliasInfo['view'];
+      viewInfo = aliasInfo['viewInfo'];
+    }
+  }
 
-  // Allow default view if requested view is not found.
-  if (!viewInfo && 
renderParams[osapi.container.RenderParam.ALLOW_DEFAULT_VIEW]) {
+  // Allow default view if requested view is not found.  No sense doing this 
if the view is already "default".
+  if (!viewInfo &&
+          renderParams[osapi.container.RenderParam.ALLOW_DEFAULT_VIEW]  &&
+          view != osapi.container.GadgetSite.DEFAULT_VIEW_) {
     view = osapi.container.GadgetSite.DEFAULT_VIEW_;
     viewInfo = gadgetInfo[osapi.container.MetadataResponse.VIEWS][view];
+    if (!viewInfo) {
+      var aliasInfo = findAliasInfo(gadgets.config.get('views')[view]);
+      if (aliasInfo) {
+        view = aliasInfo['view'];
+        viewInfo = aliasInfo['viewInfo'];
+      }
+    }
   }
 
   // Check if view exists.

Modified: 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/process/Processor.java
URL: 
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/process/Processor.java?rev=1163439&r1=1163438&r2=1163439&view=diff
==============================================================================
--- 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/process/Processor.java
 (original)
+++ 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/process/Processor.java
 Tue Aug 30 22:29:23 2011
@@ -122,6 +122,9 @@ public class Processor {
 
   /**
    * Attempts to extract the "current" view for the given gadget.
+   *
+   * There is common container JavaScript code that performs this same type of 
aliasing check before
+   * render. If the common container is being used, the view should never have 
to be aliased here.
    */
   private View getView(GadgetContext context, GadgetSpec spec) {
     String viewName = context.getView();


Reply via email to