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();