Dan, Thanks. This is working for the most part, however I'm having issues with the GET_PREFERENCES function. In my implementation I need to gadget site (not just the id) so I do
var site = self.sites_[siteId]; This returns me the right site, however then when I go to get the gadget holder var holder = site.getActiveGadgetHolder(); It's null. It appears this should be either returning the loading or current gadget holder. Just wondering if the get_preferences is being called too early before things are setup completely. doug On 7/27/11 3:33 PM, "Dan Dumont" <ddum...@us.ibm.com> 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 <davi...@oclc.org> > To: <dev@shindig.apache.org>, > 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" <ddum...@us.ibm.com> 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 <davi...@oclc.org> >> To: <dev@shindig.apache.org>, >> 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" <lind...@inuus.com> 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 <davi...@oclc.org> 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" <henry.sapu...@gmail.com> 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 <m...@schaffer.me> > 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 <m...@schaffer.me> >>>> 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 >>>>>>>>> >>>>>>> >>>>> >>>>> >>>> >>>> >>> >> >> >> >> >> > > > > >