Argh... Nevermind... I wasn't removing my up_siteid_ prefix from the
get_pref value before returning it.  This is working beautifully Dan.  Nice
job!

doug


On 7/28/11 12:19 PM, "daviesd" <davi...@oclc.org> wrote:

> Dan,
> 
> Are you sure about this?  I am having an issue now where I've implemented the
> plugin points you've provided but the gadget isn't recognizing the userprefs
> once set.  I'm pretty sure I need them at metadata time.
> 
> doug
> 
> 
> On 7/27/11 3:41 PM, "Dan Dumont" <ddum...@us.ibm.com> wrote:
> 
>> Correction:  the preferences to render with are a RENDER_PARAM and as such
>> are only needed when doing the gadget render, not the metadata request.
>> No patch needed.
>> 
>> 
>> 
>> From:   Dan Dumont/Westford/IBM@Lotus
>> To:     dev@shindig.apache.org,
>> Date:   07/27/2011 03:35 PM
>> Subject:        Re: Example implementation for user prefs?
>> 
>> 
>> 
>> 
http://opensocial-resources.googlecode.com/svn/spec/2.0/incubating/Core-Conta>>
i
>> 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
>>>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>>>>> 
>>>>> 
>>>>> 
>>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 


Reply via email to