Hi Chris
Needed one clarification regarding the parameters passed for the iframe
generation. You have shown two method for generating the iframe below. I have
implemented the first using the container/gadgets.js file using the code in the
sample html files.
But in none of the sample files has been mentioned what parameters can be
passed to the gadget creating function, as i need to pass the st and other
details. Is there any sample html file with these parameters as well?
Regards,
Lini Haridas
Software Engineer
[EMAIL PROTECTED]
Clarion Technologies
SEI CMMI Level 3 Company
4th Floor, Great Eastern Plaza,
Airport Road,
Pune- 411 006,
Maharashtra, India.
Phone: +91 20 66020289
Mobile: +91 9823435917
www.clariontechnologies.co.in
----- Original Message -----
From: "Chris Chabot" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Friday, May 02, 2008 4:29 PM
Subject: Re: Questions about implementing shindig
> Hi Lini,
>
>> 1.. first of all, who generates the security token containing the
>> information about the owner, viewer and token id.
>
> The social network site (SNS in short) is the one that deals with the
> user information of all kinds (profiles, authentication, etc). So this
> site knows who the current user is (viewer), who the page belongs to
> (owner), what gadget this is (app id), which instance of it (mod id),
> and what preferences a user has (things like, country, language, but
> also user preferences for gadgets) .... none of this is 'created' by
> shindig, shindig consumes this information and uses it.
>
> So how you should imagine this is that:
> 1) The SNS creates a <iframe> and in the iframe url it puts a lot of
> info like the security token for instance, but also the app url, id,
> mod id, user preferences, etc.
> 2) Shindig recieves this url, and renders the gadget based on the
> input of step (1)
>
>> 2.. This token is then passed to the gadget server along with the
>> application url.
>
> Yes, plus some other info.
>
> There are 2 methods of doing this, one is that you use the methods
> provided by javascript/container/gadget.js to create gadget iframe's
> from javascript (feeding it the url, st, and all other info), see the
> example files in javascript/container to see how to do this.
>
> Or you could create your own iframe's on page rendering in PHP, this
> means you would include the basic files required for creating a token
> in your site (Crypto.php, BlobCrypter.php, GadgetToken.php,
> BasicBlobCrypter.php and BasicGadgetToken.php) and then do something
> like (forgive me if i make a syntax error or 2, i just woke up and my
> mail program doesn't make a good IDE) ps this assumes you fill in all
> the variables it uses below with info from your database:
>
> // these come from your DB, the user preferences of this user /
> gadget / module id combo
> $prefs = '';
> foreach ($gadget_user_prefs as $name => $value) {
> $prefs .= 'up_'.$name.'='.urlencode($value);
> }
>
> // create an encrypted security token using shindig's code and the
> owner/viewer/app/mod data from the site
> $securityToken = BasicGadgetToken::createFromValues(
> $owner,
> $viewer,
> $gadget_id,
> $_SERVER['HTTP_HOST'], // domain
> urlencode($gadget_url),
> $gadget_mod_id /* first gadget on the page would be '1', second 'has
> mod id 2'.. or some other identifiable number that determines which
> instance of the one gadget it is (you can have multiple of the same on
> a page) */
> );
>
> // and create the iframe url using the above info
> $iframe_url =
> $gadget_server_url.'/gadgets/ifr?'.
> "container=default".
> "&mid=".$gadget_mod_id.
> ((isset($_GET['nocache']) && $_GET['nocache'] == '1') ||
> isset($_GET['bpc']) && $_GET['bpc'] == '1' ? "&nocache=1" : '').
> "&country=".(!empty($country) ? $country : 'ALL').
> "&lang=".(!empty($lang) ? $lang : 'ALL').
> "&view=".$view. // view of the page, like 'home', 'profile', 'canvas'
> "&parent=".urlencode("http://".$_SERVER['HTTP_HOST']).
> $prefs.
> "&st=".$securityToken->toSerialForm().
> "&url=".urlencode($gadget_url).
> "#rpctoken=".rand(0,getrandmax());
>
> // Then the html to create the gadget would be:
> ?>
> <iframe width="<?=$my_prefered_site_width?>" scrolling="no" height="<?
> =!empty($gadget_height)?$gadget_height : '200'?>" frameborder="no"
> src="<?=$iframe_url?>" class="gadgets-gadget" name="remote_iframe_<?=
> $gadget_mod_id?>" id="remote_iframe_<?=$gadget_mod_id?>"></iframe>
> <?
>
> In my experience creating your own iframe's in PHP means the page
> loads a smoother (since there's no re-rendering when the page onLoad
> creates all the iframe's in javascript). But that does mean your
> responsible for updating the code as the spec changes or expands.
>
> To make a SNS you also need meta data of gadgets (title, directory
> title, author, etc). Shindig provides this metadata for you, see the
> sample-metadata.html in javascript/container for an example how to use
> this ... Your best bet is to use CURL to connect to this service from
> your site, and cache this info for 'some time' (could be from an hour
> to a day, but not much longer).
>
>> 3.. Now what will the gadget server do with this token?
>
> Both the social data server and the gadget server use this token to
> know who the viewer and owner is, and what the app id, mod id etc are.
>
>> 4.. If any site data is required, then the gadget server will call
>> the container for the data, the container will return the data as
>> json string to the gadget server. Is this correct?
>
> Incorrect. Shindig has 2 servers (located under /gadgets and /social),
> one of the renders gadgets and provides the meta data and proxy
> services.
>
> The other is the social data interface, which provides the
> infrastructure and wire format to communicate this info to your gadgets.
>
> To make this interface with your data source, you need to create a
> class that plugs into shindig following its interface definition, see
> php/src/socialdata/samplecontainer/*.php as a example of how to do this.
>
> The provided samplecontainer files are pretty basic as far as the
> amount of information they deal with, but they should give you the
> right idea.
>
> So create your own class(es), put them inside of the socialdata/
> directory (so the auto include can find them), and edit the config.php
> 'handlers' bit to the class name(s) you created. (aka something like
> 'handlers' => 'MySocialDataHandler' if your class is called
> MySocialDataHandler, and the file containing it is called
> MySocialDataHandler.php)
>
>
>> 5.. Now, out of this, what has been integrated in shindig?
>
> See the bits above :) You need to create:
> - the social network site (shindig isn't a SNS site, it just provides
> open social functionality)
> - the SNS needs to manage people, gadget info, gadget preferences etc
> - load info of your gadgets in your SNS through the metadata interface
> - generate the the iframe's with all the right info and security token
> - create a social data interface to your own data and plug this into
> the social data server
>
> Well then your mostly done, then you also need to create a
> UserPrefStore javascript file and data backend to store preferences.
> The javascript/container/cookiebaseduserpref.js has a basic
> implementation using cookies, something that is nice for a demo but
> not for a real site... so replace this with your own logic and your
> good to go :)
>
>> Can someone please reply to these points as based on this I need to
>> start my work.
>
>
> Currently the shindig list consists mostly out of shindig developers,
> or people from social network sites who already contributed too, or
> used shindig and know it quite well ... which is reflected in the lack
> of documentation, our apologies for that. I'm sure in the future this
> will improve. But for now i hope this gave you some idea on what to do
> and how to get started.
>
> -- Chris
>
>
>
> --
> This message has been scanned for viruses and
> dangerous content by MailScanner, and is
> believed to be clean.
--
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.