Index: docs/epy/oauth2client.appengine.OAuth2Decorator-class.html |
=================================================================== |
new file mode 100644 |
--- /dev/null |
+++ b/docs/epy/oauth2client.appengine.OAuth2Decorator-class.html |
@@ -0,0 +1,536 @@ |
+<?xml version="1.0" encoding="ascii"?> |
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" |
+ "DTD/xhtml1-transitional.dtd"> |
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> |
+<head> |
+ <title>oauth2client.appengine.OAuth2Decorator</title> |
+ <link rel="stylesheet" href="epydoc.css" type="text/css" /> |
+ <script type="text/javascript" src="epydoc.js"></script> |
+</head> |
+ |
+<body bgcolor="white" text="black" link="blue" vlink="#204080" |
+ alink="#204080"> |
+<!-- ==================== NAVIGATION BAR ==================== --> |
+<table class="navbar" border="0" width="100%" cellpadding="0" |
+ bgcolor="#a0c0ff" cellspacing="0"> |
+ <tr valign="middle"> |
+ |
+ <!-- Tree link --> |
+ <th> <a |
+ href="module-tree.html">Trees</a> </th> |
+ |
+ <!-- Index link --> |
+ <th> <a |
+ href="identifier-index.html">Indices</a> </th> |
+ |
+ <!-- Help link --> |
+ <th> <a |
+ href="help.html">Help</a> </th> |
+ |
+ <th class="navbar" width="100%"></th> |
+ </tr> |
+</table> |
+<table width="100%" cellpadding="0" cellspacing="0"> |
+ <tr valign="top"> |
+ <td width="100%"> |
+ <span class="breadcrumbs"> |
+ <a href="oauth2client-module.html">Package oauth2client</a> :: |
+ <a href="oauth2client.appengine-module.html">Module appengine</a> :: |
+ Class OAuth2Decorator |
+ </span> |
+ </td> |
+ <td> |
+ <table cellpadding="0" cellspacing="0"> |
+ <!-- hide/show private --> |
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" |
+ onclick="toggle_private();">hide private</a>]</span></td></tr> |
+ <tr><td align="right"><span class="options" |
+ >[<a href="frames.html" target="_top">frames</a |
+ >] | <a href="oauth2client.appengine.OAuth2Decorator-class.html" |
+ target="_top">no frames</a>]</span></td></tr> |
+ </table> |
+ </td> |
+ </tr> |
+</table> |
+<!-- ==================== CLASS DESCRIPTION ==================== --> |
+<h1 class="epydoc">Class OAuth2Decorator</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.appengine-pysrc.html#OAuth2Decorator">source code</a></span></p> |
+<center> |
+<center> <map id="uml_class_diagram_for_oauth2cl_6" name="uml_class_diagram_for_oauth2cl_6"> |
+<area shape="rect" href="oauth2client.appengine.OAuth2Decorator-class.html#__init__" title="Constructor for OAuth2Decorator" alt="" coords="17,36,1188,55"/> |
+<area shape="rect" href="oauth2client.appengine.OAuth2Decorator-class.html#oauth_required" title="Decorator that starts the OAuth 2.0 dance." alt="" coords="17,55,1188,73"/> |
+<area shape="rect" href="oauth2client.appengine.OAuth2Decorator-class.html#oauth_aware" title="Decorator that sets up for OAuth 2.0 dance, but doesn't do it." alt="" coords="17,73,1188,92"/> |
+<area shape="rect" href="oauth2client.appengine.OAuth2Decorator-class.html#has_credentials" title="True if for the logged in user there are valid access Credentials." alt="" coords="17,92,1188,111"/> |
+<area shape="rect" href="oauth2client.appengine.OAuth2Decorator-class.html#authorize_url" title="Returns the URL to start the OAuth dance." alt="" coords="17,111,1188,129"/> |
+<area shape="rect" href="oauth2client.appengine.OAuth2Decorator-class.html#http" title="Returns an authorized http instance." alt="" coords="17,129,1188,148"/> |
+<area shape="rect" href="oauth2client.appengine.OAuth2Decorator-class.html" title="Utility for making OAuth 2.0 easier." alt="" coords="16,11,1189,149"/> |
+<area shape="rect" href="oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html" title="An OAuth2Decorator that builds from a clientsecrets file." alt="" coords="492,179,713,205"/> |
+</map> |
+ <img src="uml_class_diagram_for_oauth2cl_6.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_6" ismap="ismap" class="graph-without-title" /> |
+</center> |
+</center> |
+<hr /> |
+<pre class="literalblock"> |
+Utility for making OAuth 2.0 easier. |
+ |
+Instantiate and then use with oauth_required or oauth_aware |
+as decorators on webapp.RequestHandler methods. |
+ |
+Example: |
+ |
+ decorator = OAuth2Decorator( |
+ client_id='837...ent.com', |
+ client_secret='Qh...wwI', |
+ scope='https://www.googleapis.com/auth/plus') |
+ |
+ |
+ class MainHandler(webapp.RequestHandler): |
+ |
+ @decorator.oauth_required |
+ def get(self): |
+ http = decorator.http() |
+ # http is authorized with the user's Credentials and can be used |
+ # in API calls |
+ |
+</pre> |
+ |
+<!-- ==================== INSTANCE METHODS ==================== --> |
+<a name="section-InstanceMethods"></a> |
+<table class="summary" border="1" cellpadding="3" |
+ cellspacing="0" width="100%" bgcolor="white"> |
+<tr bgcolor="#70b0f0" class="table-header"> |
+ <td colspan="2" class="table-header"> |
+ <table border="0" cellpadding="0" cellspacing="0" width="100%"> |
+ <tr valign="top"> |
+ <td align="left"><span class="table-header">Instance Methods</span></td> |
+ <td align="right" valign="top" |
+ ><span class="options">[<a href="#section-InstanceMethods" |
+ class="privatelink" onclick="toggle_private();" |
+ >hide private</a>]</span></td> |
+ </tr> |
+ </table> |
+ </td> |
+</tr> |
+<tr> |
+ <td width="15%" align="right" valign="top" class="summary"> |
+ <span class="summary-type"> </span> |
+ </td><td class="summary"> |
+ <table width="100%" cellpadding="0" cellspacing="0" border="0"> |
+ <tr> |
+ <td><span class="summary-sig"><a href="oauth2client.appengine.OAuth2Decorator-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>, |
+ <span class="summary-sig-arg">client_id</span>, |
+ <span class="summary-sig-arg">client_secret</span>, |
+ <span class="summary-sig-arg">scope</span>, |
+ <span class="summary-sig-arg">auth_uri</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">https://accounts.google.com/o/oauth2/auth</code><code class="variable-quote">'</code></span>, |
+ <span class="summary-sig-arg">token_uri</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">https://accounts.google.com/o/oauth2/token</code><code class="variable-quote">'</code></span>, |
+ <span class="summary-sig-arg">user_agent</span>=<span class="summary-sig-default">None</span>, |
+ <span class="summary-sig-arg">message</span>=<span class="summary-sig-default">None</span>, |
+ <span class="summary-sig-arg">**kwargs</span>)</span><br /> |
+ Constructor for OAuth2Decorator</td> |
+ <td align="right" valign="top"> |
+ <span class="codelink"><a href="oauth2client.appengine-pysrc.html#OAuth2Decorator.__init__">source code</a></span> |
+ |
+ </td> |
+ </tr> |
+ </table> |
+ |
+ </td> |
+ </tr> |
+<tr class="private"> |
+ <td width="15%" align="right" valign="top" class="summary"> |
+ <span class="summary-type"> </span> |
+ </td><td class="summary"> |
+ <table width="100%" cellpadding="0" cellspacing="0" border="0"> |
+ <tr> |
+ <td><span class="summary-sig"><a name="_display_error_message"></a><span class="summary-sig-name">_display_error_message</span>(<span class="summary-sig-arg">self</span>, |
+ <span class="summary-sig-arg">request_handler</span>)</span></td> |
+ <td align="right" valign="top"> |
+ <span class="codelink"><a href="oauth2client.appengine-pysrc.html#OAuth2Decorator._display_error_message">source code</a></span> |
+ |
+ </td> |
+ </tr> |
+ </table> |
+ |
+ </td> |
+ </tr> |
+<tr> |
+ <td width="15%" align="right" valign="top" class="summary"> |
+ <span class="summary-type"> </span> |
+ </td><td class="summary"> |
+ <table width="100%" cellpadding="0" cellspacing="0" border="0"> |
+ <tr> |
+ <td><span class="summary-sig"><a href="oauth2client.appengine.OAuth2Decorator-class.html#oauth_required" class="summary-sig-name">oauth_required</a>(<span class="summary-sig-arg">self</span>, |
+ <span class="summary-sig-arg">method</span>)</span><br /> |
+ Decorator that starts the OAuth 2.0 dance.</td> |
+ <td align="right" valign="top"> |
+ <span class="codelink"><a href="oauth2client.appengine-pysrc.html#OAuth2Decorator.oauth_required">source code</a></span> |
+ |
+ </td> |
+ </tr> |
+ </table> |
+ |
+ </td> |
+ </tr> |
+<tr> |
+ <td width="15%" align="right" valign="top" class="summary"> |
+ <span class="summary-type"> </span> |
+ </td><td class="summary"> |
+ <table width="100%" cellpadding="0" cellspacing="0" border="0"> |
+ <tr> |
+ <td><span class="summary-sig"><a href="oauth2client.appengine.OAuth2Decorator-class.html#oauth_aware" class="summary-sig-name">oauth_aware</a>(<span class="summary-sig-arg">self</span>, |
+ <span class="summary-sig-arg">method</span>)</span><br /> |
+ Decorator that sets up for OAuth 2.0 dance, but doesn't do it.</td> |
+ <td align="right" valign="top"> |
+ <span class="codelink"><a href="oauth2client.appengine-pysrc.html#OAuth2Decorator.oauth_aware">source code</a></span> |
+ |
+ </td> |
+ </tr> |
+ </table> |
+ |
+ </td> |
+ </tr> |
+<tr> |
+ <td width="15%" align="right" valign="top" class="summary"> |
+ <span class="summary-type"> </span> |
+ </td><td class="summary"> |
+ <table width="100%" cellpadding="0" cellspacing="0" border="0"> |
+ <tr> |
+ <td><span class="summary-sig"><a href="oauth2client.appengine.OAuth2Decorator-class.html#has_credentials" class="summary-sig-name">has_credentials</a>(<span class="summary-sig-arg">self</span>)</span><br /> |
+ True if for the logged in user there are valid access Credentials.</td> |
+ <td align="right" valign="top"> |
+ <span class="codelink"><a href="oauth2client.appengine-pysrc.html#OAuth2Decorator.has_credentials">source code</a></span> |
+ |
+ </td> |
+ </tr> |
+ </table> |
+ |
+ </td> |
+ </tr> |
+<tr> |
+ <td width="15%" align="right" valign="top" class="summary"> |
+ <span class="summary-type"> </span> |
+ </td><td class="summary"> |
+ <table width="100%" cellpadding="0" cellspacing="0" border="0"> |
+ <tr> |
+ <td><span class="summary-sig"><a href="oauth2client.appengine.OAuth2Decorator-class.html#authorize_url" class="summary-sig-name">authorize_url</a>(<span class="summary-sig-arg">self</span>)</span><br /> |
+ Returns the URL to start the OAuth dance.</td> |
+ <td align="right" valign="top"> |
+ <span class="codelink"><a href="oauth2client.appengine-pysrc.html#OAuth2Decorator.authorize_url">source code</a></span> |
+ |
+ </td> |
+ </tr> |
+ </table> |
+ |
+ </td> |
+ </tr> |
+<tr> |
+ <td width="15%" align="right" valign="top" class="summary"> |
+ <span class="summary-type"> </span> |
+ </td><td class="summary"> |
+ <table width="100%" cellpadding="0" cellspacing="0" border="0"> |
+ <tr> |
+ <td><span class="summary-sig"><a href="oauth2client.appengine.OAuth2Decorator-class.html#http" class="summary-sig-name">http</a>(<span class="summary-sig-arg">self</span>)</span><br /> |
+ Returns an authorized http instance.</td> |
+ <td align="right" valign="top"> |
+ <span class="codelink"><a href="oauth2client.appengine-pysrc.html#OAuth2Decorator.http">source code</a></span> |
+ |
+ </td> |
+ </tr> |
+ </table> |
+ |
+ </td> |
+ </tr> |
+ <tr> |
+ <td colspan="2" class="summary"> |
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: |
+ <code>__delattr__</code>, |
+ <code>__format__</code>, |
+ <code>__getattribute__</code>, |
+ <code>__hash__</code>, |
+ <code>__new__</code>, |
+ <code>__reduce__</code>, |
+ <code>__reduce_ex__</code>, |
+ <code>__repr__</code>, |
+ <code>__setattr__</code>, |
+ <code>__sizeof__</code>, |
+ <code>__str__</code>, |
+ <code>__subclasshook__</code> |
+ </p> |
+ </td> |
+ </tr> |
+</table> |
+<!-- ==================== PROPERTIES ==================== --> |
+<a name="section-Properties"></a> |
+<table class="summary" border="1" cellpadding="3" |
+ cellspacing="0" width="100%" bgcolor="white"> |
+<tr bgcolor="#70b0f0" class="table-header"> |
+ <td colspan="2" class="table-header"> |
+ <table border="0" cellpadding="0" cellspacing="0" width="100%"> |
+ <tr valign="top"> |
+ <td align="left"><span class="table-header">Properties</span></td> |
+ <td align="right" valign="top" |
+ ><span class="options">[<a href="#section-Properties" |
+ class="privatelink" onclick="toggle_private();" |
+ >hide private</a>]</span></td> |
+ </tr> |
+ </table> |
+ </td> |
+</tr> |
+ <tr> |
+ <td colspan="2" class="summary"> |
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: |
+ <code>__class__</code> |
+ </p> |
+ </td> |
+ </tr> |
+</table> |
+<!-- ==================== METHOD DETAILS ==================== --> |
+<a name="section-MethodDetails"></a> |
+<table class="details" border="1" cellpadding="3" |
+ cellspacing="0" width="100%" bgcolor="white"> |
+<tr bgcolor="#70b0f0" class="table-header"> |
+ <td colspan="2" class="table-header"> |
+ <table border="0" cellpadding="0" cellspacing="0" width="100%"> |
+ <tr valign="top"> |
+ <td align="left"><span class="table-header">Method Details</span></td> |
+ <td align="right" valign="top" |
+ ><span class="options">[<a href="#section-MethodDetails" |
+ class="privatelink" onclick="toggle_private();" |
+ >hide private</a>]</span></td> |
+ </tr> |
+ </table> |
+ </td> |
+</tr> |
+</table> |
+<a name="__init__"></a> |
+<div> |
+<table class="details" border="1" cellpadding="3" |
+ cellspacing="0" width="100%" bgcolor="white"> |
+<tr><td> |
+ <table width="100%" cellpadding="0" cellspacing="0" border="0"> |
+ <tr valign="top"><td> |
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>, |
+ <span class="sig-arg">client_id</span>, |
+ <span class="sig-arg">client_secret</span>, |
+ <span class="sig-arg">scope</span>, |
+ <span class="sig-arg">auth_uri</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">https://accounts.google.com/o/oauth2/auth</code><code class="variable-quote">'</code></span>, |
+ <span class="sig-arg">token_uri</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">https://accounts.google.com/o/oauth2/token</code><code class="variable-quote">'</code></span>, |
+ <span class="sig-arg">user_agent</span>=<span class="sig-default">None</span>, |
+ <span class="sig-arg">message</span>=<span class="sig-default">None</span>, |
+ <span class="sig-arg">**kwargs</span>)</span> |
+ <br /><em class="fname">(Constructor)</em> |
+ </h3> |
+ </td><td align="right" valign="top" |
+ ><span class="codelink"><a href="oauth2client.appengine-pysrc.html#OAuth2Decorator.__init__">source code</a></span> |
+ </td> |
+ </tr></table> |
+ |
+ <pre class="literalblock"> |
+Constructor for OAuth2Decorator |
+ |
+Args: |
+ client_id: string, client identifier. |
+ client_secret: string client secret. |
+ scope: string or list of strings, scope(s) of the credentials being |
+ requested. |
+ auth_uri: string, URI for authorization endpoint. For convenience |
+ defaults to Google's endpoints but any OAuth 2.0 provider can be used. |
+ token_uri: string, URI for token endpoint. For convenience |
+ defaults to Google's endpoints but any OAuth 2.0 provider can be used. |
+ user_agent: string, User agent of your application, default to None. |
+ message: Message to display if there are problems with the OAuth 2.0 |
+ configuration. The message may contain HTML and will be presented on the |
+ web interface for any method that uses the decorator. |
+ **kwargs: dict, Keyword arguments are be passed along as kwargs to the |
+ OAuth2WebServerFlow constructor. |
+ |
+</pre> |
+ <dl class="fields"> |
+ <dt>Overrides: |
+ object.__init__ |
+ </dt> |
+ </dl> |
+</td></tr></table> |
+</div> |
+<a name="oauth_required"></a> |
+<div> |
+<table class="details" border="1" cellpadding="3" |
+ cellspacing="0" width="100%" bgcolor="white"> |
+<tr><td> |
+ <table width="100%" cellpadding="0" cellspacing="0" border="0"> |
+ <tr valign="top"><td> |
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">oauth_required</span>(<span class="sig-arg">self</span>, |
+ <span class="sig-arg">method</span>)</span> |
+ </h3> |
+ </td><td align="right" valign="top" |
+ ><span class="codelink"><a href="oauth2client.appengine-pysrc.html#OAuth2Decorator.oauth_required">source code</a></span> |
+ </td> |
+ </tr></table> |
+ |
+ <pre class="literalblock"> |
+Decorator that starts the OAuth 2.0 dance. |
+ |
+Starts the OAuth dance for the logged in user if they haven't already |
+granted access for this application. |
+ |
+Args: |
+ method: callable, to be decorated method of a webapp.RequestHandler |
+ instance. |
+ |
+</pre> |
+ <dl class="fields"> |
+ </dl> |
+</td></tr></table> |
+</div> |
+<a name="oauth_aware"></a> |
+<div> |
+<table class="details" border="1" cellpadding="3" |
+ cellspacing="0" width="100%" bgcolor="white"> |
+<tr><td> |
+ <table width="100%" cellpadding="0" cellspacing="0" border="0"> |
+ <tr valign="top"><td> |
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">oauth_aware</span>(<span class="sig-arg">self</span>, |
+ <span class="sig-arg">method</span>)</span> |
+ </h3> |
+ </td><td align="right" valign="top" |
+ ><span class="codelink"><a href="oauth2client.appengine-pysrc.html#OAuth2Decorator.oauth_aware">source code</a></span> |
+ </td> |
+ </tr></table> |
+ |
+ <pre class="literalblock"> |
+Decorator that sets up for OAuth 2.0 dance, but doesn't do it. |
+ |
+Does all the setup for the OAuth dance, but doesn't initiate it. |
+This decorator is useful if you want to create a page that knows |
+whether or not the user has granted access to this application. |
+From within a method decorated with @oauth_aware the has_credentials() |
+and authorize_url() methods can be called. |
+ |
+Args: |
+ method: callable, to be decorated method of a webapp.RequestHandler |
+ instance. |
+ |
+</pre> |
+ <dl class="fields"> |
+ </dl> |
+</td></tr></table> |
+</div> |
+<a name="has_credentials"></a> |
+<div> |
+<table class="details" border="1" cellpadding="3" |
+ cellspacing="0" width="100%" bgcolor="white"> |
+<tr><td> |
+ <table width="100%" cellpadding="0" cellspacing="0" border="0"> |
+ <tr valign="top"><td> |
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">has_credentials</span>(<span class="sig-arg">self</span>)</span> |
+ </h3> |
+ </td><td align="right" valign="top" |
+ ><span class="codelink"><a href="oauth2client.appengine-pysrc.html#OAuth2Decorator.has_credentials">source code</a></span> |
+ </td> |
+ </tr></table> |
+ |
+ <pre class="literalblock"> |
+True if for the logged in user there are valid access Credentials. |
+ |
+Must only be called from with a webapp.RequestHandler subclassed method |
+that had been decorated with either @oauth_required or @oauth_aware. |
+ |
+</pre> |
+ <dl class="fields"> |
+ </dl> |
+</td></tr></table> |
+</div> |
+<a name="authorize_url"></a> |
+<div> |
+<table class="details" border="1" cellpadding="3" |
+ cellspacing="0" width="100%" bgcolor="white"> |
+<tr><td> |
+ <table width="100%" cellpadding="0" cellspacing="0" border="0"> |
+ <tr valign="top"><td> |
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">authorize_url</span>(<span class="sig-arg">self</span>)</span> |
+ </h3> |
+ </td><td align="right" valign="top" |
+ ><span class="codelink"><a href="oauth2client.appengine-pysrc.html#OAuth2Decorator.authorize_url">source code</a></span> |
+ </td> |
+ </tr></table> |
+ |
+ <pre class="literalblock"> |
+Returns the URL to start the OAuth dance. |
+ |
+Must only be called from with a webapp.RequestHandler subclassed method |
+that had been decorated with either @oauth_required or @oauth_aware. |
+ |
+</pre> |
+ <dl class="fields"> |
+ </dl> |
+</td></tr></table> |
+</div> |
+<a name="http"></a> |
+<div> |
+<table class="details" border="1" cellpadding="3" |
+ cellspacing="0" width="100%" bgcolor="white"> |
+<tr><td> |
+ <table width="100%" cellpadding="0" cellspacing="0" border="0"> |
+ <tr valign="top"><td> |
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">http</span>(<span class="sig-arg">self</span>)</span> |
+ </h3> |
+ </td><td align="right" valign="top" |
+ ><span class="codelink"><a href="oauth2client.appengine-pysrc.html#OAuth2Decorator.http">source code</a></span> |
+ </td> |
+ </tr></table> |
+ |
+ <pre class="literalblock"> |
+Returns an authorized http instance. |
+ |
+Must only be called from within an @oauth_required decorated method, or |
+from within an @oauth_aware decorated method where has_credentials() |
+returns True. |
+ |
+</pre> |
+ <dl class="fields"> |
+ </dl> |
+</td></tr></table> |
+</div> |
+<br /> |
+<!-- ==================== NAVIGATION BAR ==================== --> |
+<table class="navbar" border="0" width="100%" cellpadding="0" |
+ bgcolor="#a0c0ff" cellspacing="0"> |
+ <tr valign="middle"> |
+ |
+ <!-- Tree link --> |
+ <th> <a |
+ href="module-tree.html">Trees</a> </th> |
+ |
+ <!-- Index link --> |
+ <th> <a |
+ href="identifier-index.html">Indices</a> </th> |
+ |
+ <!-- Help link --> |
+ <th> <a |
+ href="help.html">Help</a> </th> |
+ |
+ <th class="navbar" width="100%"></th> |
+ </tr> |
+</table> |
+<table border="0" cellpadding="0" cellspacing="0" width="100%%"> |
+ <tr> |
+ <td align="left" class="footer"> |
+ Generated by Epydoc 3.0.1 on Tue Jun 5 09:03:08 2012 |
+ </td> |
+ <td align="right" class="footer"> |
+ <a target="mainFrame" href="http://epydoc.sourceforge.net" |
+ >http://epydoc.sourceforge.net</a> |
+ </td> |
+ </tr> |
+</table> |
+ |
+<script type="text/javascript"> |
+ <!-- |
+ // Private objects are initially displayed (because if |
+ // javascript is turned off then we want them to be |
+ // visible); but by default, we want to hide them. So hide |
+ // them unless we have a cookie that says to show them. |
+ checkCookie(); |
+ // --> |
+</script> |
+</body> |
+</html> |