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