You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by rb...@apache.org on 2012/05/02 18:52:00 UTC
svn commit: r1333106 - in /shindig/trunk:
content/samplecontainer/examples/embeddedexperiences/
features/src/main/javascript/features/embeddedexperiences/
Author: rbaxter85
Date: Wed May 2 16:51:59 2012
New Revision: 1333106
URL: http://svn.apache.org/viewvc?rev=1333106&view=rev
Log:
SHINDIG-1760
Add registerConextListener API for embedded experiences
Modified:
shindig/trunk/content/samplecontainer/examples/embeddedexperiences/AlbumViewer.xml
shindig/trunk/content/samplecontainer/examples/embeddedexperiences/PhotoList.xml
shindig/trunk/features/src/main/javascript/features/embeddedexperiences/embedded_experiences_gadgets.js
shindig/trunk/features/src/main/javascript/features/embeddedexperiences/feature.xml
Modified: shindig/trunk/content/samplecontainer/examples/embeddedexperiences/AlbumViewer.xml
URL: http://svn.apache.org/viewvc/shindig/trunk/content/samplecontainer/examples/embeddedexperiences/AlbumViewer.xml?rev=1333106&r1=1333105&r2=1333106&view=diff
==============================================================================
--- shindig/trunk/content/samplecontainer/examples/embeddedexperiences/AlbumViewer.xml (original)
+++ shindig/trunk/content/samplecontainer/examples/embeddedexperiences/AlbumViewer.xml Wed May 2 16:51:59 2012
@@ -20,64 +20,58 @@
<Module>
<ModulePrefs title="Photo Album Viewer" description="View Photos From An Album" height="400" width="650">
<Require feature="embedded-experiences"></Require>
- <Require feature="dynamic-height"></Require>
<Require feature="open-views"></Require>
</ModulePrefs>
<Content type="html" view="embedded, default">
<![CDATA[
- <style type="text/css">
- .photo {
- float: left;
- margin-left: 20px;
- margin-right: 20px;
- margin-bottom: 70px;
- maring-top: 20px;
- padding: 2px 2px 2px 2px;
- border: 1px solid black;
- }
-
- #wrapper{
- border: 1px solid black;
- }
-
- #header{
- font-size: 120%;
- padding: 10px 10px 10px 10px;
- color: #0F67A1;
- }
-
- .clear{
- clear: both;
- }
+ <style type="text/css">
+ .photo {
+ float: left;
+ margin-left: 20px;
+ margin-right: 20px;
+ margin-bottom: 70px;
+ maring-top: 20px;
+ padding: 2px 2px 2px 2px;
+ border: 1px solid black;
+ }
+
+ #wrapper {
+ border: 1px solid black;
+ }
+
+ #header {
+ font-size: 120%;
+ padding: 10px 10px 10px 10px;
+ color: #0F67A1;
+ }
+
+ .clear {
+ clear: both;
+ }
</style>
- <script type="text/javascript">
- function initAlbum(){
- opensocial.data.getDataContext().registerListener('org.opensocial.ee.context', function(key){
- createAlbumHTML(opensocial.data.getDataContext().getDataSet(key));
- });
- }
-
- function createAlbumHTML(context){
- var photos = context.photoUrls;
- var result = "";
- for(var i = 0; i < photos.length; i++){
- result = result + '<div class="photo"><img src="' + photos[i] + '"/></div>';
- }
- document.getElementById('header').innerHTML = context.albumName;
- document.getElementById("album").innerHTML = result;
- gadgets.views.setReturnValue("Rendered Album");
- }
-
- gadgets.util.registerOnLoadHandler(initAlbum);
- </script>
-
- <div id="wrapper">
- <div id="header"></div>
- <div id="album"></div>
- <div class="clear"/>
- </div>
+ <script type="text/javascript">
+ function createAlbumHTML(context){
+ var photos = context.photoUrls;
+ var result = '';
+ for(var i = 0; i < photos.length; i++){
+ result = result + '<div class="photo"><img src="' + gadgets.io.getProxyUrl(photos[i]) + '"/></div>';
+ }
+ document.getElementById('header').innerHTML = context.albumName;
+ document.getElementById('album').innerHTML = result;
+ gadgets.views.setReturnValue('Rendered Album');
+ }
+ gadgets.util.registerOnLoadHandler(function() {
+ gadgets.ee.registerContextListener(createAlbumHTML);
+ });
+ </script>
+
+ <div id="wrapper">
+ <div id="header"></div>
+ <div id="album"></div>
+ <div class="clear"/>
+ </div>
]]>
</Content>
</Module>
Modified: shindig/trunk/content/samplecontainer/examples/embeddedexperiences/PhotoList.xml
URL: http://svn.apache.org/viewvc/shindig/trunk/content/samplecontainer/examples/embeddedexperiences/PhotoList.xml?rev=1333106&r1=1333105&r2=1333106&view=diff
==============================================================================
--- shindig/trunk/content/samplecontainer/examples/embeddedexperiences/PhotoList.xml (original)
+++ shindig/trunk/content/samplecontainer/examples/embeddedexperiences/PhotoList.xml Wed May 2 16:51:59 2012
@@ -54,15 +54,9 @@
<script type="text/javascript">
var currentSite;
-
- function initAlbum(){
- opensocial.data.getDataContext().registerListener('org.opensocial.ee.context', function(key){
- createAlbumHTML(opensocial.data.getDataContext().getDataSet(key));
- });
- };
var context;
function createAlbumHTML(context){
- this.context=context;
+ window.context=context;
var photos = context.photoUrls;
var result = "";
for(var i = 0; i < photos.length; i++){
@@ -72,8 +66,9 @@
$('#header').html(context.albumName);
$('#album').html(result);
};
-
- gadgets.util.registerOnLoadHandler(initAlbum);
+ gadgets.util.registerOnLoadHandler(function() {
+ gadgets.ee.registerContextListener(createAlbumHTML);
+ });
function showPreviewPhoto(index, eeGadget) {
Modified: shindig/trunk/features/src/main/javascript/features/embeddedexperiences/embedded_experiences_gadgets.js
URL: http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/embeddedexperiences/embedded_experiences_gadgets.js?rev=1333106&r1=1333105&r2=1333106&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/embeddedexperiences/embedded_experiences_gadgets.js (original)
+++ shindig/trunk/features/src/main/javascript/features/embeddedexperiences/embedded_experiences_gadgets.js Wed May 2 16:51:59 2012
@@ -17,12 +17,17 @@
* under the License.
*/
-gadgets['embeddedExperiences'] = gadgets['embeddedExperiences'] || {};
+gadgets['ee'] = gadgets['ee'] || {};
(function() {
+
+ var contextListeners = [];
+ var isContextSet = false;
+
/**
* Sets the context for this embedded experience.
- * @param {Object} context the embedded experiences context.
+ * @param {Object} context
+ * The embedded experiences context.
*/
function setDataContext(context) {
opensocial.data.DataContext.putDataSet('org.opensocial.ee.context', context);
@@ -31,15 +36,42 @@ gadgets['embeddedExperiences'] = gadgets
/**
* Init the embedded experiences feature. This calls an RPC handler to get
* the embedded experiences context and puts it in the gadgets data context.
- * @param {Object} config configuration for the feature.
+ * @param {Object} config
+ * Configuration for the feature.
*/
function init(config) {
gadgets.rpc.call(null, 'ee_gadget_rendered', setDataContext, {});
gadgets.rpc.register('ee_set_context', setDataContext);
+ opensocial.data.getDataContext().registerListener('org.opensocial.ee.context', function(key) {
+ var context = opensocial.data.getDataContext().getDataSet(key);
+ isContextSet = true;
+ var length = contextListeners.length;
+ for(var i = length; i--;) {
+ contextListeners[i](context);
+ }
+ });
};
if (gadgets.config) {
gadgets.config.register('embedded-experiences', null, init);
}
+ /**
+ * Registers a listener for when the embedded experiences context object is set for
+ * this gadget. This listener will be called whenever the context is set for the gadget.
+ *
+ * @param {Function} listener
+ * A function to be called when the listener is set.
+ */
+ gadgets.ee.registerContextListener = function(listener) {
+ //Add the listener regardless
+ contextListeners.push(listener);
+
+ //It could be that the context was already set before the gadget called this function
+ //so see if we have a context object in the data context and if we do call the listener
+ //back right away
+ if(isContextSet) {
+ listener(opensocial.data.getDataContext().getDataSet('org.opensocial.ee.context'));
+ }
+ };
}());
Modified: shindig/trunk/features/src/main/javascript/features/embeddedexperiences/feature.xml
URL: http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/embeddedexperiences/feature.xml?rev=1333106&r1=1333105&r2=1333106&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/embeddedexperiences/feature.xml (original)
+++ shindig/trunk/features/src/main/javascript/features/embeddedexperiences/feature.xml Wed May 2 16:51:59 2012
@@ -25,6 +25,7 @@ specific language governing permissions
<gadget>
<script src="embedded_experiences_gadgets.js" />
<api>
+ <exports type="js">gadgets.ee.registerContextListener</exports>
<exports type="rpc">ee_set_context</exports>
<uses type="rpc">ee_gadget_rendered</uses>
</api>