Author: rbaxter85
Date: Wed Feb 29 23:31:00 2012
New Revision: 1295336
URL: http://svn.apache.org/viewvc?rev=1295336&view=rev
Log:
SHINDIG-1712
Cleanup open view APIs
Modified:
shindig/trunk/content/samplecontainer/examples/commoncontainer/cconviews.js
shindig/trunk/content/samplecontainer/examples/embeddedexperiences/EEContainer.js
shindig/trunk/content/samplecontainer/examples/embeddedexperiences/PhotoList.xml
shindig/trunk/content/samplecontainer/examples/embeddedexperiences/index.html
shindig/trunk/content/samplecontainer/examples/media-openGadgets/MediaUIOpenGadgets.js
shindig/trunk/features/src/main/javascript/features/open-views/viewenhancements-container.js
Modified:
shindig/trunk/content/samplecontainer/examples/commoncontainer/cconviews.js
URL:
http://svn.apache.org/viewvc/shindig/trunk/content/samplecontainer/examples/commoncontainer/cconviews.js?rev=1295336&r1=1295335&r2=1295336&view=diff
==============================================================================
--- shindig/trunk/content/samplecontainer/examples/commoncontainer/cconviews.js
(original)
+++ shindig/trunk/content/samplecontainer/examples/commoncontainer/cconviews.js
Wed Feb 29 23:31:00 2012
@@ -24,22 +24,30 @@
CommonContainer['views'] = CommonContainer['views'] || {};
/**
- * Method will be called to create the DOM element to place the Gadget Site in.
+ * Method will be called to create the DOM element to place the Gadget
+ * Site in.
*
- * @param {object} gadgetMetadata
- * gadget meta data for the gadget being opened in
+ * @param {Object}
+ * metadata: Gadget meta data for the gadget being opened in
* this GadgetSite.
- * @param {string=} opt_view
- * Optional parameter, the view that indicates the type of
- * GadgetSite.
- * @param {string=} opt_viewTarget
- * Optional parameter, the view target indicates where
- * to open the gadget.
- * @return {object} The DOM element to place the GadgetSite in.
+ * @param {Element}
+ * rel: The element to which opt_coordinates values are
+ * relative.
+ * @param {string=}
+ * opt_view: Optional parameter, the view that indicates the
+ * type of GadgetSite.
+ * @param {string=}
+ * opt_viewTarget: Optional parameter, the view target indicates
+ * where to open the gadget.
+ * @param {Object=}
+ * opt_coordinates: Object containing the desired absolute
+ * positioning css parameters (top|bottom|left|right) with
+ * appropriate values. All values are relative to the calling
+ * gadget.
+ * @return {Object} The DOM element to place the GadgetSite in.
*/
-
-CommonContainer.views.createElementForGadget = function(gadgetMetadata,
- opt_view, opt_viewTarget) {
+CommonContainer.views.createElementForGadget = function(metadata, rel,
opt_view, opt_viewTarget,
+ opt_coordinates) {
var surfaceView = 'default';
var viewTarget = 'default';
@@ -53,30 +61,39 @@ CommonContainer.views.createElementForGa
switch (viewTarget) {
case 'tab':
- return openInNewTab(gadgetMetadata);
+ return openInNewTab(metadata);
break;
case 'dialog':
- return openInDialog(false, surfaceView, true, gadgetMetadata);
+ return openInDialog(false, surfaceView, true, metadata);
break;
case 'modalDialog':
- return openInDialog(true, surfaceView, true, gadgetMetadata);
+ return openInDialog(true, surfaceView, true, metadata);
break;
default:
- return openInDialog(false, surfaceView, true, gadgetMetadata);
+ return openInDialog(false, surfaceView, true, metadata);
}
};
/**
- * Method will be called to create the DOM element to place the UrlSite in.
+ * Method will be called to create the DOM element to place the UrlSite
+ * in.
*
- * @param {string=} opt_viewTarget
- * Optional parameter, the view target to open. If not
+ * @param {Element}
+ * rel: The element to which opt_coordinates values are
+ * relative.
+ * @param {string=}
+ * opt_view: Optional parameter, the view to open. If not
* included the container should use its default view.
+ * @param {Object=}
+ * opt_coordinates: Object containing the desired absolute
+ * positioning css parameters (top|bottom|left|right) with
+ * appropriate values. All values are relative to the calling
+ * gadget.
* @return {Object} The DOM element to place the UrlSite object in.
*/
-CommonContainer.views.createElementForUrl = function(opt_viewTarget) {
+CommonContainer.views.createElementForUrl = function(rel, opt_viewTarget,
opt_coordinates) {
var viewTarget = 'dialog';
if (typeof opt_viewTarget != 'undefined') {
@@ -147,17 +164,21 @@ function openInDialog(modaldialog, view,
document.getElementById('content').appendChild(dialog);
if (isGadget) {
+ var id = 'dialog_' + dialog_counter;
// use jquery to create the dialog
- $('#dialog_' + dialog_counter).dialog({
+ $('#' + id).dialog({
resizable: false,
width: dialog_width, // height will be auto
modal: modaldialog, // set modal: true or false
- close: function(ev, ui) {
- var iframeid = document.getElementById('dialog_' + dialog_counter).
- getElementsByTagName('iframe')[0].id;
- var site = CommonContainer.getGadgetSiteByIframeId_(iframeid);
- CommonContainer.closeGadget(site);
- $(this).remove();
+ beforeClose: function(ev, ui) {
+ var dialogDiv = $('#' + id + ' iframe');
+ if(dialogDiv.length) {
+ //Means the user most likely clicked the 'x' in the dialog chrome
+ //If they clicked the OK or Cancel buttons in the dialog than the
gadget
+ //iFrame would have already been removed from the DOM
+ var site = CommonContainer.getGadgetSiteByIframeId_(dialogDiv[0].id);
+ CommonContainer.closeGadget(site);
+ }
}
});
return dialog;
Modified:
shindig/trunk/content/samplecontainer/examples/embeddedexperiences/EEContainer.js
URL:
http://svn.apache.org/viewvc/shindig/trunk/content/samplecontainer/examples/embeddedexperiences/EEContainer.js?rev=1295336&r1=1295335&r2=1295336&view=diff
==============================================================================
---
shindig/trunk/content/samplecontainer/examples/embeddedexperiences/EEContainer.js
(original)
+++
shindig/trunk/content/samplecontainer/examples/embeddedexperiences/EEContainer.js
Wed Feb 29 23:31:00 2012
@@ -26,32 +26,44 @@ $(document).ready(function() {
//Initiate the common container code and register any RPC listeners for
embedded experiences
-var CommonContainer = new osapi.container.Container({});
+var config = {};
+config[osapi.container.ContainerConfig.RENDER_DEBUG] = '1';
+var CommonContainer = new osapi.container.Container(config);
CommonContainer.init = new function() {
- CommonContainer.views.createElementForEmbeddedExperience =
function(opt_viewTarget, opt_coordinates, opt_rel) {
- if(opt_viewTarget == 'FLOAT' && opt_coordinates && opt_rel) {
- var offset = $(opt_rel).offset();
-
+ CommonContainer.views.createElementForEmbeddedExperience = function(rel,
opt_gadgetInfo,
+ opt_viewTarget, opt_coordinates){
+ if(opt_gadgetInfo && !opt_gadgetInfo.error) {
+ var title = opt_gadgetInfo.modulePrefs.title;
+ if(title) {
+ $('#title').html(opt_gadgetInfo.modulePrefs.title);
+ }
+ }
+ var top = $(rel).offset().top,
+ left = $(rel).offset().left;
+ if(opt_viewTarget == 'FLOAT' && opt_coordinates) {
$('#preview').css({
- top: (offset.top + opt_coordinates.top) +'px',
- left: (offset.left + opt_coordinates.left) + 'px',
+ top: (top + opt_coordinates.top) + 'px',
+ left: (left + opt_coordinates.left) + 'px',
+ 'margin-top': '0px',
position: 'absolute'
});
}
else {
$('#preview').css({
+ 'margin-top': top +'px',
top: 'auto',
left: 'auto',
position: 'static'
});
}
- return $('#preview').get(0);
+ return $('#previewSite').get(0);
};
CommonContainer.views.destroyElement = function(site) {
CommonContainer.ee.close(site);
+ $('#title').html('');
};
}
@@ -81,14 +93,15 @@ function closeCurrentGadget() {
if (currentEESite)
CommonContainer.ee.close(currentEESite);
- var preview = $('#preview').get(0);
- var previewChildren = preview.childNodes;
+ var previewSite = $('#previewSite').get(0);
+ var previewChildren = previewSite.childNodes;
if (previewChildren.length > 0) {
var iframe = previewChildren[0];
var iframeId = iframe.getAttribute('id');
var site = CommonContainer.getGadgetSiteByIframeId_(iframeId);
CommonContainer.ee.close(site);
}
+ $('#title').html('');
}
/**
Modified:
shindig/trunk/content/samplecontainer/examples/embeddedexperiences/PhotoList.xml
URL:
http://svn.apache.org/viewvc/shindig/trunk/content/samplecontainer/examples/embeddedexperiences/PhotoList.xml?rev=1295336&r1=1295335&r2=1295336&view=diff
==============================================================================
---
shindig/trunk/content/samplecontainer/examples/embeddedexperiences/PhotoList.xml
(original)
+++
shindig/trunk/content/samplecontainer/examples/embeddedexperiences/PhotoList.xml
Wed Feb 29 23:31:00 2012
@@ -99,8 +99,13 @@
var coordinates = $('#photo' + index).offset();
coordinates.left = coordinates.left + $('#photo' + index).width();
- var navigateCallback = function(site, metadata){currentSite =
site; console.log("Nagivate callback");};
- var returnCallback = function(returnValue){console.log("Return
Value: " + returnValue);};
+ var navigateCallback = function(site, metadata){
+ currentSite = site;
+ console.log("Nagivate callback");
+ };
+ var returnCallback = function(returnValue){
+ console.log("Return Value: " + returnValue);
+ };
gadgets.views.openEmbeddedExperience(returnCallback,
navigateCallback, eeDataModel, {
'viewTarget' : index == 0 ? 'preview' : 'FLOAT',
'coordinates' : coordinates
Modified:
shindig/trunk/content/samplecontainer/examples/embeddedexperiences/index.html
URL:
http://svn.apache.org/viewvc/shindig/trunk/content/samplecontainer/examples/embeddedexperiences/index.html?rev=1295336&r1=1295335&r2=1295336&view=diff
==============================================================================
---
shindig/trunk/content/samplecontainer/examples/embeddedexperiences/index.html
(original)
+++
shindig/trunk/content/samplecontainer/examples/embeddedexperiences/index.html
Wed Feb 29 23:31:00 2012
@@ -38,6 +38,10 @@
margin-left: 10px;
}
+ #previewSite {
+ height: 100%;
+ }
+
#accordion {
width: 50%;
float: left;
@@ -52,7 +56,10 @@
<div id="content">
<div id="accordion">
</div>
- <div id="preview"></div>
+ <div id="preview">
+ <div id="title"></div>
+ <div id="previewSite"></div>
+ </div>
<div style="clear: both;"/>
</div>
</body>
Modified:
shindig/trunk/content/samplecontainer/examples/media-openGadgets/MediaUIOpenGadgets.js
URL:
http://svn.apache.org/viewvc/shindig/trunk/content/samplecontainer/examples/media-openGadgets/MediaUIOpenGadgets.js?rev=1295336&r1=1295335&r2=1295336&view=diff
==============================================================================
---
shindig/trunk/content/samplecontainer/examples/media-openGadgets/MediaUIOpenGadgets.js
(original)
+++
shindig/trunk/content/samplecontainer/examples/media-openGadgets/MediaUIOpenGadgets.js
Wed Feb 29 23:31:00 2012
@@ -305,7 +305,7 @@ function MediaUI(social) {
var viewTarget = 'dialog';
function navigateCallback(site) {
- console.log('navigateCallback ');
+ gadgets.log('navigateCallback ');
}
gadgets.views.openUrl(url, navigateCallback, viewTarget);
@@ -342,7 +342,7 @@ function MediaUI(social) {
}
function navigateCallback(site, metadata) {
- console.log('navigateCallback');
+ gadgets.log('navigateCallback');
}
var viewParams = {'data': album};
@@ -362,8 +362,8 @@ function MediaUI(social) {
function resultCallback(result) {
if (result != null) {
- console.log('container width = ' + result.width);
- console.log('container height = ' + result.height);
+ gadgets.log('container width = ' + result.width);
+ gadgets.log('container height = ' + result.height);
}
}
// Just an example to show how to use the getContainerDimensions API,
@@ -372,20 +372,19 @@ function MediaUI(social) {
gadgets.window.getContainerDimensions(resultCallback);
function callback(newMediaItem) {
- var albumId = mediaItem == null ? album.id : mediaItem.albumId;
-
- social.updateMediaItem(viewer.id, albumId, mediaItem.id, newMediaItem,
+ if(newMediaItem) {
+ var albumId = mediaItem == null ? album.id : mediaItem.albumId;
+ social.updateMediaItem(viewer.id, albumId, mediaItem.id, newMediaItem,
function(response) {
- // publish("org.apache.shindig.mediaItem.updated", newMediaItem);
- social.getMediaItemsByAlbum(viewer.id, album.id,
- function(response) {
- renderMediaItems(album, response.list);
- });
- });
+ social.getMediaItemsByAlbum(viewer.id, album.id,
function(response) {
+ renderMediaItems(album, response.list);
+ });
+ });
+ }
}
function navigateCallback(site, metadata) {
- console.log('navigateCallback');
+ gadgets.log('navigateCallback');
}
var viewParams = {'data': {'album': album, 'mediaItem': mediaItem}};
@@ -405,7 +404,7 @@ function MediaUI(social) {
if (confirm("Delete '" + album.title + "'?")) {
social.deleteAlbum(viewer.id, album.id, function(response) {
publish('org.apache.shindig.album.deleted', album);
- console.log('delete album response: ' + JSON.stringify(response));
+ gadgets.log('delete album response: ' + JSON.stringify(response));
renderAlbumsByUser(viewer.id);
});
}
@@ -420,7 +419,7 @@ function MediaUI(social) {
social.deleteMediaItem(viewer.id, albumId, mediaItem.id,
function(response) {
publish('org.apache.shindig.mediaItem.deleted', mediaItem);
- console.log('delete mediaItem response: ' +
+ gadgets.log('delete mediaItem response: ' +
JSON.stringify(response));
social.getMediaItemsByAlbum(viewer.id, albumId, function(response)
{
renderMediaItems(album, response.list);
Modified:
shindig/trunk/features/src/main/javascript/features/open-views/viewenhancements-container.js
URL:
http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/open-views/viewenhancements-container.js?rev=1295336&r1=1295335&r2=1295336&view=diff
==============================================================================
---
shindig/trunk/features/src/main/javascript/features/open-views/viewenhancements-container.js
(original)
+++
shindig/trunk/features/src/main/javascript/features/open-views/viewenhancements-container.js
Wed Feb 29 23:31:00 2012
@@ -56,7 +56,9 @@
returnValue = returnValueMap[id],
resultCallback = resultCallbackMap[id];
- if (resultCallback) {
+ //Checking the truthiness of resultCallback is bad because 0 is a value
value
+ //check whether it is undefined
+ if (typeof resultCallback !== 'undefined') {
if (site.ownerId_) {
gadgets.rpc.call(site.ownerId_, 'gadgets.views.deliverResult', null,
resultCallback, returnValue
@@ -104,10 +106,10 @@
*/
function openGadget(rpcArgs, resultCallback, opt_params) {
- var navigateCallback = this.callback,
- siteOwnerId = this.f,
+ var navigateCallback = rpcArgs.callback,
+ siteOwnerId = rpcArgs.f,
gadgetUrl = '',
- orig_site = context.getGadgetSiteByIframeId_(this.f);
+ orig_site = context.getGadgetSiteByIframeId_(rpcArgs.f);
if ((typeof orig_site != 'undefined') &&
(typeof orig_site.getActiveSiteHolder() != 'undefined')) {
@@ -118,8 +120,7 @@
var view = '',
viewTarget = '',
viewParams = {},
- coordinates,
- rel;
+ coordinates;
if (opt_params) {
if (opt_params.view)
view = opt_params.view;
@@ -129,10 +130,10 @@
viewParams = opt_params.viewParams;
if(opt_params.coordinates) {
coordinates = opt_params.coordinates;
- rel = context.getGadgetSiteByIframeId_(this.f).getActiveSiteHolder()
- .getIframeElement();
}
}
+ var rel = context.getGadgetSiteByIframeId_(rpcArgs.f).getActiveSiteHolder()
+ .getIframeElement();
context.preloadGadget(gadgetUrl, function(result) {
/*
* result[gadgetUrl] : metadata
@@ -153,7 +154,7 @@
var renderParams = {},
site = context.newGadgetSite(
context.views.createElementForGadget(
- metadata, view, viewTarget, coordinates, rel
+ metadata, rel, view, viewTarget, coordinates
)
);
@@ -209,14 +210,13 @@
* discretion.
*/
function openEE(rpcArgs, resultCallback, dataModel, opt_params) {
- var navigateCallback = this.callback,
- siteOwnerId = this.f,
+ var navigateCallback = rpcArgs.callback,
+ siteOwnerId = rpcArgs.f,
gadgetUrl = dataModel.gadget;
- var navigateEE = function() {
+ var navigateEE = function(opt_metadata) {
var viewTarget = '',
viewParams = {},
- coordinates,
- rel;
+ coordinates;
if (opt_params) {
if (opt_params.viewTarget)
viewTarget = opt_params.viewTarget;
@@ -224,13 +224,13 @@
viewParams = opt_params.viewParams;
if (opt_params.coordinates) {
coordinates = opt_params.coordinates;
- rel =
context.getGadgetSiteByIframeId_(siteOwnerId).getActiveSiteHolder()
- .getIframeElement();
}
}
+ var rel =
context.getGadgetSiteByIframeId_(siteOwnerId).getActiveSiteHolder()
+ .getIframeElement();
var element = context.views.createElementForEmbeddedExperience(
- viewTarget, coordinates, rel
+ rel, opt_metadata, viewTarget, coordinates
);
var gadgetRenderParams = {};
@@ -276,7 +276,7 @@
return;
}
}
- navigateEE();
+ navigateEE(result[gadgetUrl]);
});
} else {
navigateEE();
@@ -309,13 +309,10 @@
* @returns {string} The ID of the site created, if a callback was
registered.
*/
function openUrl(rpcArgs, url, opt_viewTarget, opt_coordinates) {
- var rel;
- if (opt_coordinates) {
- rel = context.getGadgetSiteByIframeId_(this.f).getActiveSiteHolder()
+ var rel = context.getGadgetSiteByIframeId_(rpcArgs.f).getActiveSiteHolder()
.getIframeElement();
- }
var content_div = context.views.createElementForUrl(
- opt_viewTarget, opt_coordinates, rel
+ rel, opt_viewTarget, opt_coordinates
);
var site = context.newUrlSite(content_div);
@@ -328,7 +325,7 @@
// record who opened this site, so that if they use the siteId to close it
later,
// we don't inadvertently allow other gadgets to guess the id and close
the site.
- site.ownerId_ = this.f;
+ site.ownerId_ = rpcArgs.f;
return site.getId();
}
@@ -342,7 +339,7 @@
*/
function close(rpcArgs, opt_site) {
// opt_site may be 0, do not do a truthy test on the value.
- var orig_site = context.getGadgetSiteByIframeId_(this.f),
+ var orig_site = context.getGadgetSiteByIframeId_(rpcArgs.f),
site = typeof(opt_site) != 'undefined' && opt_site != null ?
context.getSiteById(opt_site) : orig_site;
@@ -350,7 +347,7 @@
return;
}
- if (site == orig_site || site.ownerId_ == this.f) {
+ if (site == orig_site || site.ownerId_ == rpcArgs.f) {
// The provided method must ultimately call container.closeGadget(site);
context.views.destroyElement(site);
}
@@ -366,7 +363,7 @@
*/
function setReturnValue(rpcArgs, returnValue) {
var site;
- if (site = context.getGadgetSiteByIframeId_(this.f)) {
+ if (site = context.getGadgetSiteByIframeId_(rpcArgs.f)) {
returnValueMap[site.getId()] = returnValue;
}
}
@@ -394,6 +391,9 @@
* @param {Object}
* metadata: Gadget meta data for the gadget being opened in
* this GadgetSite.
+ * @param {Element}
+ * rel: The element to which opt_coordinates values are
+ * relative.
* @param {string=}
* opt_view: Optional parameter, the view that indicates the
* type of GadgetSite.
@@ -405,13 +405,10 @@
* positioning css parameters (top|bottom|left|right) with
* appropriate values. All values are relative to the calling
* gadget.
- * @param {Element=}
- * opt_rel: The element to which opt_coordinates values are
- * relative.
* @return {Object} The DOM element to place the GadgetSite in.
*/
- 'createElementForGadget' : function(metadata, opt_view, opt_viewTarget,
- opt_coordinates, opt_rel) {
+ 'createElementForGadget' : function(metadata, rel, opt_view,
opt_viewTarget,
+ opt_coordinates) {
console.log('container need to define createElementForGadget
function');
},
@@ -419,23 +416,25 @@
* Method will be called to create the DOM element to place the embedded
* experience in.
*
+ *@param {Element}
+ * rel: The element to which opt_coordinates values are
+ * relative.
+ * @param {Object}
+ * opt_gadgetInfo: Info for the gadget embedded experience,
+ * if the data model contains a gadget URL.
* @param {string=}
* opt_viewTarget: Optional parameter, the view target
indicates
* where to open.
- *
* @param {Object=}
* opt_coordinates: Object containing the desired absolute
* positioning css parameters (top|bottom|left|right) with
* appropriate values. All values are relative to the calling
* gadget.
- * @param {Element=}
- * opt_rel: The element to which opt_coordinates values are
- * relative.
* @return {Object} The DOM element to place the embedded experience in.
*/
- 'createElementForEmbeddedExperience' : function(opt_viewTarget,
- opt_coordinates, opt_rel) {
+ 'createElementForEmbeddedExperience' : function(rel, opt_gadgetInfo,
opt_viewTarget,
+ opt_coordinates) {
console.log('container need to define ' +
'createElementForEmbeddedExperience function');
},
@@ -444,6 +443,9 @@
* Method will be called to create the DOM element to place the UrlSite
* in.
*
+ * @param {Element}
+ * rel: The element to which opt_coordinates values are
+ * relative.
* @param {string=}
* opt_view: Optional parameter, the view to open. If not
* included the container should use its default view.
@@ -452,14 +454,10 @@
* positioning css parameters (top|bottom|left|right) with
* appropriate values. All values are relative to the calling
* gadget.
- * @param {Element=}
- * opt_rel: The element to which opt_coordinates values are
- * relative.
* @return {Object} The DOM element to place the UrlSite object in.
*/
- 'createElementForUrl' : function(opt_viewTarget, opt_coordinates,
- opt_rel) {
+ 'createElementForUrl' : function(rel, opt_viewTarget, opt_coordinates) {
console.log('container need to define createElementForUrl function');
},