I have an RPC call being made inside a feature I am writing.  The handler 
lives in the container.  Here is the Javascript in my feature:

gadgets['foo'] = (function() {
        gadgets.rpc.call(null, 'bar', null, function(){....});

        return {
                getWorld : function(callback) {
                        gadgets.rpc.call(null, 'world', null, callback);
                }
})();

When the handler gets called in the container the function I pass in the 
rpc.call function (4th parameter) does not get passed into the handler. 
Even if I make the 4th parameter a JSON object containing a function it 
strips the function out of the object.  Is this done on purpose? 

The other problem I have is my world RPC handler, also residing in the 
container, will not receive the callback parameter either.  The odd part 
is that the world handler works fine if I don't have the gadget.rpc.call 
to bar above it.

Any help or explanation would be appreciated.

-Ryan

Email: [email protected]
Phone: 978-899-3041
developerWorks Profile



From:   Bastian Hofmann <[email protected]>
To:     [email protected], 
Date:   02/15/2011 03:53 AM
Subject:        Re: Manipulating Data Context From A Container



You could do this the other way round:

On the gadget side you could register yourself to the onload event
(gadgets.util.registerOnLoadHandler) and send an rpc call to the 
container.

gadgets.rpc.call('..', 'put_data_set', function(dataSets) {

opensocial.data.DataContext.
putDataSets(dataSets);


}, null);


The container side can create the data set object and pass it to the 
gadget
via the specified callback, which in turn sets the new dataset on the 
gadget
side:

gadgets.rpc.register('put_
data_set', function() {
  this.callback(object);
});


2011/2/15 Ryan J Baxter <[email protected]>

> Is there any way to know when a gadget is rendered in the container so I
> can make an RPC call to the gadget from the container?  The function
> callSameDomain is throwing an error, Same domain call failed: parent=
> incorrectly set., because targetEl.gadgets is undefined.  targetEl is 
the
> target window the RPC call is going to.  I am assuming targetEl.gadgets 
is
> undefined because the iFrame with the gadget has not completely rendered
> yet.  If I hold off on making the RCP call everything works fine.
>
> -Ryan
>
> Email: [email protected]
> Phone: 978-899-3041
> developerWorks Profile
>
>
>
> From:   Bastian Hofmann <[email protected]>
> To:     [email protected],
> Date:   02/14/2011 03:27 AM
> Subject:        Re: Manipulating Data Context From A Container
>
>
>
> No,
>
> if you add something like the following on the gadget side:
>
> gadgets.rpc.register('put_data_set', function(dataSets) {
>  opensocial.data.DataContext.putDataSets(dataSets);
> });
>
> you can call the rpc method put_data_set from your container:
>
> gadgets.rpc.call('gadget_iframe_id', 'put_data_set', null, {key: 
value});
>
> And the registered method will be called on the gadget side 
automatically.
>
> Hope this helps
>
> Bastian
>
> 2011/2/11 Ryan J Baxter <[email protected]>
>
> > Brian wouldn't this still require the gadget to call putDataSet?  I
> don't
> > want the gadget to have to do anything, instead I would like to put
> > something in the data context for a gadget from the container.  That 
way
> > the gadget can just use it.
> >
> > -Ryan
> >
> > Email: [email protected]
> > Phone: 978-899-3041
> > developerWorks Profile
> >
> >
> >
> > From:   Bastian Hofmann <[email protected]>
> > To:     [email protected],
> > Date:   02/10/2011 05:01 PM
> > Subject:        Re: Manipulating Data Context From A Container
> >
> >
> >
> > You probably will have to register the
> > opensocial.data.DataContext.putDataSet method as an rpc method on the
> > gadget
> > side and then use rpc to push the data from the container (similar to
> the
> > current implementation of a security token update (auth-refresh)).
> >
> > Cheers
> >
> > Bastian
> >
> > 2011/2/10 Ryan J Baxter <[email protected]>
> >
> > > I would like to be able to set something in a gadgets data context
> > object
> > > from the container.  The feature only provides the javascript API to
> the
> > > gadget, which makes sense.  It looks as though things are inserted
> into
> > > the data context object by injecting the javascript to do so when 
the
> > > gadget is rendered.  Looks like PipelineDataGadgetRewriter.java does
> > this.
> > >  Does anyone know is its possible to manipulate a gadget's data
> context
> > > object from the container?  At the moment it does not look like it 
is.
> > >
> > > -Ryan
> > >
> > > Email: [email protected]
> > > Phone: 978-899-3041
> > > developerWorks Profile
> > >
> > >
> >
> >
> >
> >
>
>
>
>



Reply via email to