Ok. Thanks.
A little more info.
Here¹s my code that works
var content = document.createElement( 'DIV' );
content.id = 'app-x';
document.getElementById( 'gadget-wrapper' ).appendChild( content
);
var gadgetSite = container.newGadgetSite( content );
container.navigateGadget( gadgetSite,
'http://www.google.com/ig/modules/horoscope.xml', [], {} );
> <div id="gadget-wrapper" class="gadgets-gadget-chrome"></div>
If all I do is change the id
content.id = 'app-1';
It stops working.
The iframe urls end up different too. In the first case it has the up_uid
that it needs to lookup the horoscope
//localhost:8080/opensocial/gadgets/ifr?url=http%3A%2F%2Fwww.google.com%2Fig
%2Fmodules%2Fhoroscope.xml&container=oclc&view=default&lang=en&country=US&de
bug=0&nocache=0&sanitize=0&v=86819abe8eb2f9f10cd8ec89420fc7a9&testmode=0&par
ent=http%3A%2F%2Flocalhost%3A8080&mid=app-x#up_day=&up_month=&up_selectedTab
=0&up_uid=80432da8a9d14b25f8f2e461562f6d65fc99a4f6&up_selectedFriend=0
In the second case it¹s empty
//localhost:8080/opensocial/gadgets/ifr?url=http%3A%2F%2Fwww.google.com%2Fig
%2Fmodules%2Fhoroscope.xml&container=oclc&view=default&lang=en&country=US&de
bug=0&nocache=0&sanitize=0&v=86819abe8eb2f9f10cd8ec89420fc7a9&testmode=0&par
ent=http%3A%2F%2Flocalhost%3A8080&mid=app-1#up_day=&up_month=&up_selectedTab
=0&up_uid=&up_selectedFriend=0
Strange. I¹ll keep you posted if I find anything else. If you have any
ideas, thanks. I¹m gonna dig into the appdata keys and see if numbers some
how mess it up.
Doug
On 8/2/11 12:17 PM, "Dan Dumont" <[email protected]> wrote:
> I haven't, is your container changing the id of the element or site after the
> fact?
>
> When I get back from vacation, I'll take a peek and see if it's anything in
> the common container code changing the id of the site.
>
> -----daviesd <[email protected]> wrote: -----
> To: <[email protected]>
> From: daviesd <[email protected]>
> Date: 08/02/2011 12:02PM
> Cc: Dan Dumont/Westford/IBM@Lotus
> Subject: Re: Example implementation for user prefs?
>
> Dan,
>
> Have you seen an timing issues with this setpref implementation? I am
> seeing strange things. I'm using the horoscope gadget which renders
> differently if the user preferences have been set (it shows your horoscope
> based on a uid). Sometimes this works and sometimes it doesn't. What's
> strange is it seems that switching the id of the html element (which then is
> used as the siteid) is what's causing the behavior to change. I'll do some
> more investigation, just wondered if you had seen any peculiarities like
> that.
>
> doug
>
>
> On 7/27/11 3:33 PM, "Dan Dumont" <[email protected]> wrote:
>
>> >
>>
http://opensocial-resources.googlecode.com/svn/spec/2.0/incubating/Core-Contai
>> > ner.xml#Configuring-The-Container
>> >
>> >
>> > When you insantiate the common container, you can provide these functions,
>> > keyed appropriately, via the config object.
>> >
>> > The GET_PREFERENCES function will be called as defined when making the
>> > metadata request to the server. The prefs will be supplied to the
>> > server, which will use any provided ones instead of default preferences
>> > when providing the metadata for a gadget. This all happens automatically
>> > in a call to navigate gadget...and now that I think about it, I forgot to
>> > include it in the preLoad method in the common container... I'll submit a
>> > patch shortly.
>> >
>> > The server side impl is totally up to you. I originally had in mind a
>> > client-side html5 store for a default implementation.
>> >
>> > The gadget site encapsulates the site ID. It will prefer the id attr of
>> > the site element you created the site with, otherwise it will default to
>> > an auto-incremented number.
>> >
>> > If you wish to persist preferences for a particular occurrence of a
>> > gadget(per gadget url instance), then you'll need to keep track of the
>> > site (the auto generated ids are less helpful), if you wish to provide
>> > "per gadget url" preferences you can just ignore they siteid and return or
>> > persist the preferences for all gadgets coming from that url.
>> >
>> >
>> >
>> >
>> > From: daviesd <[email protected]>
>> > To: <[email protected]>,
>> > Date: 07/27/2011 03:22 PM
>> > Subject: Re: Example implementation for user prefs?
>> >
>> >
>> >
>> > Dan,
>> >
>> > Nice! I'm still using 3.0.0-beta2, so hadn't seen this yet. Was there an
>> > earlier thread on how to use this? Can you explain how I hook into this
>> > and
>> > provide a server-side implementation? And does this mean when I call
>> > navigateGadget that I should now be providing a unique id for the siteId
>> > (maybe correlating to my spaceid?)?
>> >
>> > Thanks,
>> > doug
>> >
>> >
>> > On 7/27/11 1:50 PM, "Dan Dumont" <[email protected]> wrote:
>> >
>>> >> FYI, there have been some recent changes in the common container to
>> > expose
>>> >> a callback to the container page that allows for the persisting and
>>> >> retrieval of persisted preferences.
>>> >>
>>> >> /**
>>> >> * @see setprefs.js setprefs feature.
>>> >> */
>>> >> this.rpcRegister('set_pref', function(rpcArgs, key, value) {
>>> >> var site = rpcArgs[osapi.container.GadgetSite.RPC_ARG_KEY];
>>> >> var setPrefs =
>>> >> self.config_[osapi.container.ContainerConfig.SET_PREFERENCES];
>>> >> if (site && setPrefs) { // Check if site is not already closed.
>>> >> var data = {};
>>> >> for (var i = 2, j = arguments.length; i < j; i += 2) {
>>> >> data[arguments[i]] = arguments[i + 1];
>>> >> }
>>> >> setPrefs(site.getId(), site.getActiveGadgetHolder().getUrl(),
>> > data);
>>> >> }
>>> >> });
>>> >>
>>> >> A container may specify functions to the CommonContainer that will be
>>> >> called to retrieve and set preferences for a particular gadget.
>>> >> Please also note that gadget site id will now prefer the id attribute of
>>> >> the gadget site element, so that named locations for specific gadgets
>> > can
>>> >> have preferences persisted accordingly.
>>> >>
>>> >> If you are going to be providing a default preference persistence impl,
>> > it
>>> >> would be great if you could hook into this :)
>>> >>
>>> >>
>>> >>
>>> >> From: daviesd <[email protected]>
>>> >> To: <[email protected]>,
>>> >> Date: 07/27/2011 01:09 PM
>>> >> Subject: Re: Example implementation for user prefs?
>>> >>
>>> >>
>>> >>
>>> >> Paul,
>>> >>
>>> >> Sure. Give me a few days, I just got back from vacation. I'll have to
>>> >> figure
>>> >> out whether the container token will be sufficient for this, as I had to
>>> >> apply other patches to get the gadget token to be used.
>>> >>
>>> >> Thanks,
>>> >> doug
>>> >>
>>> >>
>>> >> On 7/27/11 12:58 PM, "Paul Lindner" <[email protected]> wrote:
>>> >>
>>>> >>> Can you write this up a patch so we can make this the default
>>>> >>> implementation? This is something I've been meaning to do for months.
>>>> >>>
>>>> >>> On Wed, Jul 27, 2011 at 8:58 AM, daviesd <[email protected]> wrote:
>>>> >>>
>>>>> >>>> Actually, I was lazy and went with the approach of layering userprefs
>>> >> on
>>>>> >>>> top
>>>>> >>>> of appdata as follows:
>>>>> >>>>
>>>>> >>>> container.rpcRegister('set_pref', function(rpcArgs, data) {
>>>>> >>>>
>>>>> >>>> var prefName = rpcArgs['a'][1];
>>>>> >>>> var prefKey = 'up_' + prefName;
>>>>> >>>> var prefValue = rpcArgs['a'][2];
>>>>> >>>>
>>>>> >>>> var data = {};
>>>>> >>>> data[prefKey] = prefValue;
>>>>> >>>>
>>>>> >>>> osapi.appdata.update({
>>>>> >>>> userid : '@me',
>>>>> >>>> groupid : '@self',
>>>>> >>>> appId : '@app',
>>>>> >>>> data : data
>>>>> >>>>
>>>>> >>>> }).execute(function(response) {
>>>>> >>>> });
>>>>> >>>> });
>>>>> >>>>
>>>>> >>>> This is with anticipation that appdata and userprefs will align as
>>>>> >>>> discussed
>>>>> >>>> here:
>>>>> >>>>
>>>>> >>>> http://code.google.com/p/opensocial-resources/issues/detail?id=1182
>>>>> >>>>
>>>>> >>>> Of course this also requires you to implement appdata server side.
>>> >> Right
>>>>> >>>> now I¹m just using the JsonDb implementation (in-memory), but we¹ll
be
>>>>> >>>> writing a persistent layer soon.
>>>>> >>>>
>>>>> >>>> I also ran into issues with the correct token (the gadget one with
the
>>>>> >>>> appid
>>>>> >>>> that you¹ll need to use to index the data) being passed to the
>>>>> appdata
>>>>> >>>> request. You can search for my other thread about this.
>>>>> >>>>
>>>>> >>>> doug
>>>>> >>>>
>>>>> >>>>
>>>>> >>>> On 7/25/11 6:53 PM, "Henry Saputra" <[email protected]> wrote:
>>>>> >>>>
>>>>>> >>>>> If you want the user pref to be persisted in the database you need
to
>>>>>> >>>>> implement the server handler for it.
>>>>>> >>>>>
>>>>>> >>>>> I remember Doug Davies has tried to add persistent layer for user
>>>>>> >>>>> pref. Maybe he could share his progress.
>>>>>> >>>>>
>>>>>> >>>>> Including him in the email.
>>>>>> >>>>>
>>>>>> >>>>> - Henry
>>>>>> >>>>>
>>>>>> >>>>> On Mon, Jul 25, 2011 at 3:42 PM, Mat Schaffer <[email protected]>
>> > wrote:
>>>>>>>> >>>>>>> So with some research it looks like I'm supposed to be
>>>>>>>> implementing
>>> >> my
>>>>> >>>> own
>>>>>>>> >>>>>>> server module. Is that pretty much accurate?
>>>>>>>> >>>>>>>
>>>>>>>> >>>>>>> Again, any advice or RTFMs (with a link to the respective FMs)
is
>>>>>>>> >>>>>>> appreciated.
>>>>>>>> >>>>>>>
>>>>>>>> >>>>>>> Thanks,
>>>>>>>> >>>>>>> Mat
>>>>>>>> >>>>>>>
>>>>>>>> >>>>>>> On Fri, Jul 22, 2011 at 10:20 AM, Mat Schaffer
>>>>>>>> <[email protected]>
>>>>> >>>> wrote:
>>>>>>>> >>>>>>>
>>>>>>>>>> >>>>>>>>> So I noticed that UserPref items don't work on the sample
>>> >> container
>>>>> >>>> which
>>>>>>>>>> >>>>>>>>> makes sense after finding this thread:
>>>>>>>>>> >>>>>>>>> http://markmail.org/message/tlwtlo4mrnrpz4w5
>>>>>>>>>> >>>>>>>>>
>>>>>>>>>> >>>>>>>>> Is there any good example of best-practice for implementing
user
>>>>> >>>> prefs in
>>>>>>>>>> >>>>>>>>> my containing application? Do I just make my own
>>>>> >>>> shindig-container.js and
>>>>>>>>>> >>>>>>>>> handleOpenUserPrefsDialog? And does the page we point to
just
>>> >> render
>>>>>>>>>> >>>>>>>>> information into a div with id of `this.id`?
>>>>>>>>>> >>>>>>>>>
>>>>>>>>>> >>>>>>>>> The gmodule code appears to be obfuscated, so it's a bit
hard to
>>>>> >>>> tell >>>
>>>>> >>>> what
>>>>>>>>>> >>>>>>>>> the right course of action would be. Any documentation or
>>> >> assistance
>>>>>>>> >>>>>>> would
>>>>>>>>>> >>>>>>>>> be appreciated.
>>>>>>>>>> >>>>>>>>>
>>>>>>>>>> >>>>>>>>> Thanks,
>>>>>>>>>> >>>>>>>>> Mat
>>>>>>>>>> >>>>>>>>>
>>>>>>>> >>>>>>>
>>>>>> >>>>>
>>>>>> >>>>>
>>>>> >>>>
>>>>> >>>>
>>>> >>>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>> >
>> >
>> >
>> >
>> >
>
>
>
>