378 lines
No EOL
22 KiB
HTML
378 lines
No EOL
22 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
|
|
<title>Client Side Cookbook — Documentation</title>
|
|
<link rel="stylesheet" href="_static/sphinxdoc.css" type="text/css" />
|
|
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
|
<script type="text/javascript">
|
|
var DOCUMENTATION_OPTIONS = {
|
|
URL_ROOT: '',
|
|
VERSION: '',
|
|
COLLAPSE_MODINDEX: false,
|
|
FILE_SUFFIX: '.html',
|
|
HAS_SOURCE: true
|
|
};
|
|
</script>
|
|
<script type="text/javascript" src="_static/jquery.js"></script>
|
|
<script type="text/javascript" src="_static/doctools.js"></script>
|
|
<link rel="top" title="Documentation" href="index.html" />
|
|
<link rel="up" title="Writing Scripts" href="writing_scripts.html" />
|
|
<link rel="next" title="Report Cookbook" href="report_cookbook.html" />
|
|
<link rel="prev" title="Server Side Cookbook" href="server_side_cookbook.html" />
|
|
</head>
|
|
<body>
|
|
<div style="background-color: #FFF; text-align: left; padding: 8px 0px"><img src="_static/banner300910.gif"></div>
|
|
<div class="related">
|
|
<h3>Navigation</h3>
|
|
<ul>
|
|
<li class="right" style="margin-right: 10px">
|
|
<a href="genindex.html" title="General Index"
|
|
accesskey="I">index</a></li>
|
|
<li class="right" >
|
|
<a href="modindex.html" title="Global Module Index"
|
|
accesskey="M">modules</a> |</li>
|
|
<li class="right" >
|
|
<a href="report_cookbook.html" title="Report Cookbook"
|
|
accesskey="N">next</a> |</li>
|
|
<li class="right" >
|
|
<a href="server_side_cookbook.html" title="Server Side Cookbook"
|
|
accesskey="P">previous</a> |</li>
|
|
<li><a href="index.html">Documentation</a> »</li>
|
|
<li><a href="build_app.html" >2. Building an Application</a> »</li>
|
|
<li><a href="writing_scripts.html" accesskey="U">Writing Scripts</a> »</li>
|
|
</ul>
|
|
</div>
|
|
<div class="sphinxsidebar">
|
|
<div class="sphinxsidebarwrapper">
|
|
<h3><a href="index.html">Table Of Contents</a></h3>
|
|
<ul>
|
|
<li><a class="reference external" href="">Client Side Cookbook</a><ul>
|
|
<li><a class="reference external" href="#fetch-customer-cell-no-and-email-id-based-on-name">Fetch customer cell no and email id based on name</a></li>
|
|
<li><a class="reference external" href="#form-events-triggers">Form Events (Triggers)</a></li>
|
|
<li><a class="reference external" href="#accessing-updating-field-objects">Accessing / Updating Field Objects</a></li>
|
|
<li><a class="reference external" href="#field-events-triggers">Field Events (Triggers)</a></li>
|
|
<li><a class="reference external" href="#overloading-link-field-queries">Overloading Link Field queries</a></li>
|
|
<li><a class="reference external" href="#setting-contextutal-help-tips">Setting contextutal help (Tips)</a></li>
|
|
<li><a class="reference external" href="#custom-ui-using-the-html-field">Custom UI using the HTML Field</a></li>
|
|
<li><a class="reference external" href="#useful-api-methods">Useful API Methods</a></li>
|
|
<li><a class="reference external" href="#using-templates">Using Templates</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
|
|
<h4>Previous topic</h4>
|
|
<p class="topless"><a href="server_side_cookbook.html"
|
|
title="previous chapter">Server Side Cookbook</a></p>
|
|
<h4>Next topic</h4>
|
|
<p class="topless"><a href="report_cookbook.html"
|
|
title="next chapter">Report Cookbook</a></p>
|
|
<h3>This Page</h3>
|
|
<ul class="this-page-menu">
|
|
<li><a href="_sources/client_side_cookbook.txt"
|
|
rel="nofollow">Show Source</a></li>
|
|
</ul>
|
|
<div id="searchbox" style="display: none">
|
|
<h3>Quick search</h3>
|
|
<form class="search" action="search.html" method="get">
|
|
<input type="text" name="q" size="18" />
|
|
<input type="submit" value="Go" />
|
|
<input type="hidden" name="check_keywords" value="yes" />
|
|
<input type="hidden" name="area" value="default" />
|
|
</form>
|
|
<p class="searchtip" style="font-size: 90%">
|
|
Enter search terms or a module, class or function name.
|
|
</p>
|
|
</div>
|
|
<script type="text/javascript">$('#searchbox').show(0);</script>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="document">
|
|
<div class="documentwrapper">
|
|
<div class="bodywrapper">
|
|
<div class="body">
|
|
|
|
<div class="section" id="client-side-cookbook">
|
|
<h1>Client Side Cookbook<a class="headerlink" href="#client-side-cookbook" title="Permalink to this headline">¶</a></h1>
|
|
<p>Standard Patterns for Client Side Scripts</p>
|
|
<div class="section" id="fetch-customer-cell-no-and-email-id-based-on-name">
|
|
<h2>Fetch customer cell no and email id based on name<a class="headerlink" href="#fetch-customer-cell-no-and-email-id-based-on-name" title="Permalink to this headline">¶</a></h2>
|
|
<p>This can be implemented using the standard fetch pattern:</p>
|
|
<div class="highlight-python"><div class="highlight"><pre><span class="n">cur_frm</span><span class="o">.</span><span class="n">add_fetch</span><span class="p">(</span><span class="s">'customer'</span><span class="p">,</span> <span class="s">'email_id'</span><span class="p">,</span> <span class="s">'customer_email'</span><span class="p">);</span>
|
|
<span class="n">cur_frm</span><span class="o">.</span><span class="n">add_fetch</span><span class="p">(</span><span class="s">'customer'</span><span class="p">,</span> <span class="s">'cell_no'</span><span class="p">,</span> <span class="s">'customer_cell_no'</span><span class="p">);</span>
|
|
</pre></div>
|
|
</div>
|
|
</div>
|
|
<div class="section" id="form-events-triggers">
|
|
<h2>Form Events (Triggers)<a class="headerlink" href="#form-events-triggers" title="Permalink to this headline">¶</a></h2>
|
|
<p>Standard Form-level Triggers are</p>
|
|
<ul class="simple">
|
|
<li>refresh - This is called whenever a new record is loaded, or a record is opened, or when a record is saved</li>
|
|
<li>onload - This is called the first time a record is loaded</li>
|
|
<li>setup - This is called the first time a Form is loaded</li>
|
|
</ul>
|
|
<p>Some Examples:</p>
|
|
<div class="highlight-python"><pre>cur_frm.cscript.refresh = function(doc, dt, dn) {
|
|
// set contextual help
|
|
|
|
cur_frm.clear_tip();
|
|
if(doc.city && !doc.location) cur_frm.set_tip("Its always a good idea to add location to the city");
|
|
}</pre>
|
|
</div>
|
|
</div>
|
|
<div class="section" id="accessing-updating-field-objects">
|
|
<h2>Accessing / Updating Field Objects<a class="headerlink" href="#accessing-updating-field-objects" title="Permalink to this headline">¶</a></h2>
|
|
<p>Every input / field in the Form is an instance of the <a title="_f.Field" class="reference external" href="form_widget.html#_f.Field"><tt class="xref docutils literal"><span class="pre">_f.Field</span></tt></a>. The reference to the field object
|
|
can be got using <cite>cur_frm.fields_dict</cite> property. This is a dictionary that contains reference to all field
|
|
objects by name or label (in case there is no name).</p>
|
|
<p>Properties of the field can be set by setting the <cite>df</cite> dictionary (which represents the <cite>DocField</cite>). Example:</p>
|
|
<div class="highlight-python"><pre>var f = cur_frm.fields_dict['first_name']
|
|
f.df.hidden = 1;
|
|
f.refresh();</pre>
|
|
</div>
|
|
</div>
|
|
<div class="section" id="field-events-triggers">
|
|
<h2>Field Events (Triggers)<a class="headerlink" href="#field-events-triggers" title="Permalink to this headline">¶</a></h2>
|
|
<p>Field <cite>onchange</cite> triggers can be set by declaring a function in the <cite>cur_frm.cscript</cite> object (namespace). The
|
|
function will be called when the onchange event will be triggered. The function will be passed 3 parameters</p>
|
|
<ul class="simple">
|
|
<li>doc - reference to the current main record</li>
|
|
<li>dt - reference to the DocType (this will be different to <cite>doc.doctype</cite> in case of a child (table) trigger)</li>
|
|
<li>dn - reference to the DocType (this will be different to <cite>doc.name</cite> in case of a child (table) trigger)</li>
|
|
</ul>
|
|
<p>Example:</p>
|
|
<div class="highlight-python"><pre>cur_frm.cscript.first_name(doc, dt, dn) {
|
|
if(doc.first_name.length < 3) {
|
|
msgprint("First Name should atleast be 3 characters long.")
|
|
}
|
|
}</pre>
|
|
</div>
|
|
</div>
|
|
<div class="section" id="overloading-link-field-queries">
|
|
<h2>Overloading Link Field queries<a class="headerlink" href="#overloading-link-field-queries" title="Permalink to this headline">¶</a></h2>
|
|
<p>If a filter is to be added to validate values that can be set by <cite>Link</cite> fields, it is necessary to
|
|
overload the exiting query method. This can be done by setting the <cite>get_query</cite> method on
|
|
the <cite>Field</cite> object. Example:</p>
|
|
<div class="highlight-python"><pre>// standard field
|
|
cur_frm.fields_dict['test_link'].get_query = function(doc,dt,dn) {
|
|
return "SELECT tabDocType.name FROM tabDocType WHERE IFNULL(tabDocType.issingle,0)=0 AND tabDocType.name LIKE '%s'"
|
|
}
|
|
|
|
// field in a grid
|
|
cur_frm.fields_dict['test_grid'].grid.get_field('my_link').get_query = function(doc,dt,dn) {
|
|
return "SELECT tabDocType.name FROM tabDocType WHERE IFNULL(tabDocType.issingle,0)=0 AND tabDocType.name LIKE '%s'"
|
|
}</pre>
|
|
</div>
|
|
</div>
|
|
<div class="section" id="setting-contextutal-help-tips">
|
|
<h2>Setting contextutal help (Tips)<a class="headerlink" href="#setting-contextutal-help-tips" title="Permalink to this headline">¶</a></h2>
|
|
<p>Contextual help can be set using the <a title="_f.Frm.set_tip" class="reference external" href="form_widget.html#_f.Frm.set_tip"><tt class="xref docutils literal"><span class="pre">_f.Frm.set_tip()</span></tt></a>, <a title="_f.Frm.append_tip" class="reference external" href="form_widget.html#_f.Frm.append_tip"><tt class="xref docutils literal"><span class="pre">_f.Frm.append_tip()</span></tt></a>, <a title="_f.Frm.clear_tip" class="reference external" href="form_widget.html#_f.Frm.clear_tip"><tt class="xref docutils literal"><span class="pre">_f.Frm.clear_tip()</span></tt></a>
|
|
methods. See Examples:</p>
|
|
<div class="highlight-python"><pre>cur_frm.cscript.refresh = function(doc, doctype, docname) {
|
|
cur_frm.clear_tip("")
|
|
if(doc.status="Draft") {
|
|
cur_frm.set_tip("This is a Draft, to publish, please check on 'Published' before saving")
|
|
}
|
|
if(doc.is_popular="Yes") {
|
|
cur_frm.append_tip("This post is popular!")
|
|
}
|
|
}</pre>
|
|
</div>
|
|
</div>
|
|
<div class="section" id="custom-ui-using-the-html-field">
|
|
<h2>Custom UI using the HTML Field<a class="headerlink" href="#custom-ui-using-the-html-field" title="Permalink to this headline">¶</a></h2>
|
|
<p>Custom UI Objects can be added to forms by using the HTML field. The object can be added in the form wrapper
|
|
and reset with latest values on the <cite>refresh</cite> event. Example:</p>
|
|
<div class="highlight-python"><pre>cur_frm.cscript.refresh = function(doc, dt, dn) {
|
|
var cs = cur_frm.cscript;
|
|
if(!cs.my_object) {
|
|
|
|
// lets add a listing
|
|
cs.my_object = new Listing();
|
|
..
|
|
..
|
|
}
|
|
|
|
cs.my_object.refresh();
|
|
}</pre>
|
|
</div>
|
|
</div>
|
|
<div class="section" id="useful-api-methods">
|
|
<h2>Useful API Methods<a class="headerlink" href="#useful-api-methods" title="Permalink to this headline">¶</a></h2>
|
|
<dl class="function">
|
|
<dt id="get_children">
|
|
<tt class="descname">get_children</tt><big>(</big><em>child_dt</em>, <em>parent</em>, <em>parentfield</em>, <em>parenttype</em><big>)</big><a class="headerlink" href="#get_children" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Get list of child records for the given parent record where:</p>
|
|
<ul class="simple">
|
|
<li>child_dt is the DocType of the child type</li>
|
|
<li>parent is ths name of the parent record</li>
|
|
<li>parentfield is the fieldname of the child table in the parent DocType</li>
|
|
<li>parenttype is the type of the Parent <cite>DocType</cite></li>
|
|
</ul>
|
|
</dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="get_field">
|
|
<tt class="descname">get_field</tt><big>(</big><em>doctype</em>, <em>fieldname</em>, <em>docname</em><big>)</big><a class="headerlink" href="#get_field" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Get the field metadata (<cite>DocField</cite> format) for the given field and given record.</p>
|
|
<p><strong>Note:</strong> Separate metadata is maintained for each field of each record. This is because metadata
|
|
can be changed by a script only for one record. For example, a field may be hidden in record A but
|
|
visible in record B. Hence same metadata cannot be referenced for the two records. Example:</p>
|
|
<div class="highlight-python"><div class="highlight"><pre><span class="n">f</span> <span class="o">=</span> <span class="n">get_field</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">doctype</span><span class="p">,</span> <span class="s">'first_name'</span><span class="p">,</span> <span class="n">doc</span><span class="o">.</span><span class="n">name</span><span class="p">);</span>
|
|
<span class="n">f</span><span class="o">.</span><span class="n">hidden</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
|
|
<span class="n">refresh_field</span><span class="p">(</span><span class="s">'first_name'</span><span class="p">);</span>
|
|
</pre></div>
|
|
</div>
|
|
</dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="get_server_fields">
|
|
<tt class="descname">get_server_fields</tt><big>(</big><em>method</em>, <em>arg</em>, <em>table_field</em>, <em>doc</em>, <em>dt</em>, <em>dn</em>, <em>allow_edit</em>, <em>call_back</em><big>)</big><a class="headerlink" href="#get_server_fields" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Update the values in the current record by calling a remote method. Example Client Side:</p>
|
|
<div class="highlight-python"><pre>cur_frm.cscript.contact_person = function(doc, cdt, cdn) {
|
|
if(doc.contact_person) {
|
|
var arg = {'customer':doc.customer_name,'contact_person':doc.contact_person};
|
|
get_server_fields('get_contact_details',docstring(arg),'',doc, cdt, cdn, 1);
|
|
}
|
|
}</pre>
|
|
</div>
|
|
<p>Server side version:</p>
|
|
<div class="highlight-python"><div class="highlight"><pre><span class="k">def</span> <span class="nf">get_contact_details</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">arg</span><span class="p">):</span>
|
|
<span class="n">arg</span> <span class="o">=</span> <span class="nb">eval</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span>
|
|
<span class="n">contact</span> <span class="o">=</span> <span class="n">sql</span><span class="p">(</span><span class="s">"select contact_no, email_id from `tabContact` where contact_name = '</span><span class="si">%s</span><span class="s">' and customer_name = '</span><span class="si">%s</span><span class="s">'"</span> <span class="o">%</span><span class="p">(</span><span class="n">arg</span><span class="p">[</span><span class="s">'contact_person'</span><span class="p">],</span><span class="n">arg</span><span class="p">[</span><span class="s">'customer'</span><span class="p">]),</span> <span class="n">as_dict</span> <span class="o">=</span> <span class="mi">1</span><span class="p">)</span>
|
|
<span class="n">ret</span> <span class="o">=</span> <span class="p">{</span>
|
|
<span class="s">'contact_no'</span> <span class="p">:</span> <span class="n">contact</span> <span class="ow">and</span> <span class="n">contact</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s">'contact_no'</span><span class="p">]</span> <span class="ow">or</span> <span class="s">''</span><span class="p">,</span>
|
|
<span class="s">'email_id'</span> <span class="p">:</span> <span class="n">contact</span> <span class="ow">and</span> <span class="n">contact</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s">'email_id'</span><span class="p">]</span> <span class="ow">or</span> <span class="s">''</span>
|
|
<span class="p">}</span>
|
|
<span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="n">ret</span><span class="p">)</span>
|
|
</pre></div>
|
|
</div>
|
|
</dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt>
|
|
<tt class="descname">$c_get_values(args, doc, dt, dn, user_callback)</tt></dt>
|
|
<dd><p>Similar to get_server_fields, but no serverside required:</p>
|
|
<div class="highlight-python"><pre>cur_frm.cscript.item_code = function(doc, dt, dn) {
|
|
var d = locals[dt][dn];
|
|
|
|
$c_get_values({
|
|
fields:'description,uom' // fields to be updated
|
|
,table_field:'sales_bom_items' // [optional] if the fields are in a table
|
|
,select:'description,stock_uom' // values to be returned
|
|
,from:'tabItem'
|
|
,where:'name="'+d.item_code+'"'
|
|
}, doc, dt, dn);
|
|
}</pre>
|
|
</div>
|
|
</dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="set_multiple">
|
|
<tt class="descname">set_multiple</tt><big>(</big><em>dt</em>, <em>dn</em>, <em>dict</em>, <em>table_field</em><big>)</big><a class="headerlink" href="#set_multiple" title="Permalink to this definition">¶</a></dt>
|
|
<dd>Set mutliple values from a dictionary to a record. In case of Table, pass <cite>tablefield</cite></dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="refresh_many">
|
|
<tt class="descname">refresh_many</tt><big>(</big><em>flist</em>, <em>dn</em>, <em>table_field</em><big>)</big><a class="headerlink" href="#refresh_many" title="Permalink to this definition">¶</a></dt>
|
|
<dd>Refresh multiple fields. In case of Table, pass <cite>tablefield</cite></dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="refresh_field">
|
|
<tt class="descname">refresh_field</tt><big>(</big><em>n</em>, <em>docname</em>, <em>table_field</em><big>)</big><a class="headerlink" href="#refresh_field" title="Permalink to this definition">¶</a></dt>
|
|
<dd>Refresh a field widget. In case of a table record, mention the <cite>table_field</cite> and row ID <cite>docname</cite></dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="set_field_tip">
|
|
<tt class="descname">set_field_tip</tt><big>(</big><em>fieldname</em>, <em>txt</em><big>)</big><a class="headerlink" href="#set_field_tip" title="Permalink to this definition">¶</a></dt>
|
|
<dd>Set <cite>txt</cite> comment on a field</dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="set_field_options">
|
|
<tt class="descname">set_field_options</tt><big>(</big><em>n</em>, <em>options</em><big>)</big><a class="headerlink" href="#set_field_options" title="Permalink to this definition">¶</a></dt>
|
|
<dd>Set <cite>options</cite> of a field and <cite>refresh</cite></dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="set_field_permlevel">
|
|
<tt class="descname">set_field_permlevel</tt><big>(</big><em>n</em>, <em>permlevel</em><big>)</big><a class="headerlink" href="#set_field_permlevel" title="Permalink to this definition">¶</a></dt>
|
|
<dd>Set <cite>permlevel</cite> of a field and <cite>refresh</cite></dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="hide_field">
|
|
<tt class="descname">hide_field</tt><big>(</big><em>n</em><big>)</big><a class="headerlink" href="#hide_field" title="Permalink to this definition">¶</a></dt>
|
|
<dd>Hide a field of fieldname <cite>n</cite> or a list of fields <cite>n</cite></dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="unhide_field">
|
|
<tt class="descname">unhide_field</tt><big>(</big><em>n</em><big>)</big><a class="headerlink" href="#unhide_field" title="Permalink to this definition">¶</a></dt>
|
|
<dd>Unhide a field of fieldname <cite>n</cite> or a list of fields <cite>n</cite></dd></dl>
|
|
|
|
</div>
|
|
<div class="section" id="using-templates">
|
|
<h2>Using Templates<a class="headerlink" href="#using-templates" title="Permalink to this headline">¶</a></h2>
|
|
<p>The standard Form UI Engine can be overridden using the templates. The <cite>template</cite> is HTML code and can be
|
|
set in the <cite>template</cite> field of the DocType. To render fields in the template, Element IDs must be set in a
|
|
specific pattern. The pattern is</p>
|
|
<ul class="simple">
|
|
<li>frm_[DocType]_[fieldname]</li>
|
|
</ul>
|
|
<p>See Example:</p>
|
|
<div class="highlight-python"><pre><h1>Contact Form</h1>
|
|
<table>
|
|
<tr>
|
|
<td>First Name</td>
|
|
<td id="frm_Contact_first_name"></td>
|
|
</tr>
|
|
<tr>
|
|
<td>Last Name</td>
|
|
<td id="frm_Contact_last_name"></td>
|
|
</tr>
|
|
<tr>
|
|
<td>Email ID</td>
|
|
<td id="frm_Contact_email"></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td><button onclick="cur_frm.save('Save', function() { loadpage('Thank You'); })">Save</button></td>
|
|
</tr>
|
|
</table></pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="clearer"></div>
|
|
</div>
|
|
<div class="related">
|
|
<h3>Navigation</h3>
|
|
<ul>
|
|
<li class="right" style="margin-right: 10px">
|
|
<a href="genindex.html" title="General Index"
|
|
>index</a></li>
|
|
<li class="right" >
|
|
<a href="modindex.html" title="Global Module Index"
|
|
>modules</a> |</li>
|
|
<li class="right" >
|
|
<a href="report_cookbook.html" title="Report Cookbook"
|
|
>next</a> |</li>
|
|
<li class="right" >
|
|
<a href="server_side_cookbook.html" title="Server Side Cookbook"
|
|
>previous</a> |</li>
|
|
<li><a href="index.html">Documentation</a> »</li>
|
|
<li><a href="build_app.html" >2. Building an Application</a> »</li>
|
|
<li><a href="writing_scripts.html" >Writing Scripts</a> »</li>
|
|
</ul>
|
|
</div>
|
|
<div class="footer">
|
|
© Copyright 2010, Rushabh Mehta.
|
|
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.3.
|
|
</div>
|
|
</body>
|
|
</html> |