You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@rave.apache.org by Scott Wilson <sc...@gmail.com> on 2012/06/19 16:33:40 UTC

Embedded experiences across widget types

It was great seeing the Embedded experiences demo at the Rave Hackleton last week; this is a proposed feature for OpenSocial whereby widgets can be embedded into activity streams and other kinds of feeds with some context data, and looks like a really nice feature for users.

I had a look at the spec[1], and it actually wouldn't need any new code in Wookie to work fine for W3C Widgets too, and minimal additions to the W3C provider in Rave.

E.g., an embed referencing a widget identifier rather than OpenSocial XML file looks like this:

<embed>
	<gadget>http://wookie.apache.org/widgets/youtube</gadget>
	<context>9gW2YVBrNVA</context>
</embed>

In this case, we want the YouTube widget to be embedded, playing the specified movie.

To render, we can just push the context into the widget using widget preferences; in WookieWidgetService in rave-w3c-provider it would look like this:

    private W3CWidget getWidgetForViewer(Widget widget, String sharedDataKey, User viewer, String eeContextData){
       try {
            connectorService = getWookieConnectorService(wookieServerUrl, wookieApiKey, sharedDataKey);
            org.apache.wookie.connector.framework.User user = new org.apache.wookie.connector.framework.User(String.valueOf(viewer.getUsername()), viewer.getUsername());
            connectorService.setCurrentUser(user);
            
            WidgetInstance instance = connectorService.getOrCreateInstance(widget.getUrl());
	    // Now push the context data in for embedded experiences//
            connectorService.setPropertyForInstance(instance, false, "org.opensocial.ee.context", eeContext);
            return createWidget(instance);

The Widget can then call widget.preferences.getItem("org.opensocial.ee.context") to check for the movie id.

So if/when Rave does add support for embedded experiences, we can do so across widget types pretty trivially.

S

[1] http://docs.opensocial.org/display/OSD/Embedded+Experiences

Re: Embedded experiences across widget types

Posted by Scott Wilson <sc...@gmail.com>.
On 22 Jun 2012, at 18:11, Franklin, Matthew B. wrote:

> On 6/19/12 10:33 AM, "Scott Wilson" <sc...@gmail.com> wrote:
> 
>> It was great seeing the Embedded experiences demo at the Rave Hackleton
>> last week; this is a proposed feature for OpenSocial whereby widgets can
>> be embedded into activity streams and other kinds of feeds with some
>> context data, and looks like a really nice feature for users.
>> 
>> I had a look at the spec[1], and it actually wouldn't need any new code
>> in Wookie to work fine for W3C Widgets too, and minimal additions to the
>> W3C provider in Rave.
>> 
>> E.g., an embed referencing a widget identifier rather than OpenSocial XML
>> file looks like this:
>> 
>> <embed>
>> 	<gadget>http://wookie.apache.org/widgets/youtube</gadget>
>> 	<context>9gW2YVBrNVA</context>
>> </embed>
>> 
>> In this case, we want the YouTube widget to be embedded, playing the
>> specified movie.
>> 
>> To render, we can just push the context into the widget using widget
>> preferences; in WookieWidgetService in rave-w3c-provider it would look
>> like this:
>> 
>>   private W3CWidget getWidgetForViewer(Widget widget, String
>> sharedDataKey, User viewer, String eeContextData){
>>      try {
>>           connectorService = getWookieConnectorService(wookieServerUrl,
>> wookieApiKey, sharedDataKey);
>>           org.apache.wookie.connector.framework.User user = new
>> org.apache.wookie.connector.framework.User(String.valueOf(viewer.getUserna
>> me()), viewer.getUsername());
>>           connectorService.setCurrentUser(user);
>> 
>>           WidgetInstance instance =
>> connectorService.getOrCreateInstance(widget.getUrl());
>> 	    // Now push the context data in for embedded experiences//
>>           connectorService.setPropertyForInstance(instance, false,
>> "org.opensocial.ee.context", eeContext);
>>           return createWidget(instance);
>> 
>> The Widget can then call
>> widget.preferences.getItem("org.opensocial.ee.context") to check for the
>> movie id.
>> 
>> So if/when Rave does add support for embedded experiences, we can do so
>> across widget types pretty trivially.
> 
> Cool.  The only question I have is how would the rave javascript know
> whether or not to render this as an OS gadget or wookie?

If the actual stream was rendered by the Rave java code it could look up the value of <gadget> against the Rave widget repository - that would then return the widget type.

> 
>> 
>> S
>> 
>> [1] http://docs.opensocial.org/display/OSD/Embedded+Experiences
> 


Re: Embedded experiences across widget types

Posted by "Franklin, Matthew B." <mf...@mitre.org>.
On 6/19/12 10:33 AM, "Scott Wilson" <sc...@gmail.com> wrote:

>It was great seeing the Embedded experiences demo at the Rave Hackleton
>last week; this is a proposed feature for OpenSocial whereby widgets can
>be embedded into activity streams and other kinds of feeds with some
>context data, and looks like a really nice feature for users.
>
>I had a look at the spec[1], and it actually wouldn't need any new code
>in Wookie to work fine for W3C Widgets too, and minimal additions to the
>W3C provider in Rave.
>
>E.g., an embed referencing a widget identifier rather than OpenSocial XML
>file looks like this:
>
><embed>
>	<gadget>http://wookie.apache.org/widgets/youtube</gadget>
>	<context>9gW2YVBrNVA</context>
></embed>
>
>In this case, we want the YouTube widget to be embedded, playing the
>specified movie.
>
>To render, we can just push the context into the widget using widget
>preferences; in WookieWidgetService in rave-w3c-provider it would look
>like this:
>
>    private W3CWidget getWidgetForViewer(Widget widget, String
>sharedDataKey, User viewer, String eeContextData){
>       try {
>            connectorService = getWookieConnectorService(wookieServerUrl,
>wookieApiKey, sharedDataKey);
>            org.apache.wookie.connector.framework.User user = new
>org.apache.wookie.connector.framework.User(String.valueOf(viewer.getUserna
>me()), viewer.getUsername());
>            connectorService.setCurrentUser(user);
>            
>            WidgetInstance instance =
>connectorService.getOrCreateInstance(widget.getUrl());
>	    // Now push the context data in for embedded experiences//
>            connectorService.setPropertyForInstance(instance, false,
>"org.opensocial.ee.context", eeContext);
>            return createWidget(instance);
>
>The Widget can then call
>widget.preferences.getItem("org.opensocial.ee.context") to check for the
>movie id.
>
>So if/when Rave does add support for embedded experiences, we can do so
>across widget types pretty trivially.

Cool.  The only question I have is how would the rave javascript know
whether or not to render this as an OS gadget or wookie?

>
>S
>
>[1] http://docs.opensocial.org/display/OSD/Embedded+Experiences