This commit is contained in:
Kovid Goyal 2008-02-28 19:07:07 +00:00
parent 9853ffaed3
commit 7f5f76f260
13 changed files with 303 additions and 45 deletions

View File

@ -0,0 +1,117 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
<head>
<meta name="author" content="Kovid Goyal" />
<meta name="copyright" content="&copy; 2008 Kovid Goyal" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title></title>
<link rel="stylesheet" type="text/css" href="styles/common.css" />
<style type="text/css">
h2 {
font-family: monospace;
}
</style>
</head>
<body>
<h1 class="documentHeading" id="FrequentlyAskedQuestions">Frequently Asked Questions</h1>
<div class="toc" id="toc">
<ul>
<li><a href="#Whatdevicesdoeslibprs500support">What devices does libprs500 support?</a></li>
<li><a href="#Whatformatsdoeslibprs500readmetadatafrom">What formats does libprs500 read metadata from?</a></li>
<li><a href="#Whatformatsdoeslibprs500supportconversiontofrom">What formats does libprs500 support conversion to/from?</a></li>
<li><a href="#WhatarethebestformatstoconverttoLRF">What are the best formats to convert to LRF?</a></li>
<li><a href="#WhydoesthePDFconversionlosesomeimages">Why does the PDF conversion lose some images?</a></li>
<li><a href="#Wherearethebookfilesstored">Where are the book files stored?</a></li>
<li><a href="#CanIsavemybookstothedisk">Can I save my books to the disk?</a></li>
<li><a href="#Iusedlibprs500totransfersomebookstomyreaderandnowtheSONYsoftwarehangseverytimeIconnectthereader">I used libprs500 to transfer some books to my reader, and now the SONY software hangs every time I connect the reader?</a></li>
<li><a href="#NoimagesintheLRFfileafterconversionfromHTML">No images in the LRF file after conversion from HTML?</a></li>
<li><a href="#CanIuseweb2lrftodownloadanarbitrarywebsite">Can I use web2lrf to download an arbitrary website?</a></li>
<li><a href="#Iwantsomefeatureaddedtolibprs500.WhatcanIdo">I want some feature added to libprs500. What can I do?</a></li>
<li><a href="#HowdoIusesomeoftheadvancedfeaturesoftheconversiontools">How do I use some of the advanced features of the conversion tools?</a></li>
</ul>
</div>
<h2 id="Whatdevicesdoeslibprs500support">What devices does libprs500 support?</h2>
<p>
At the moment libprs500 has full support for the SONY PRS500 and PRS505. However, using the "save to disk" function you can use it with any ebook reader that exports itself as a USB disk.
</p>
<h2 id="Whatformatsdoeslibprs500readmetadatafrom">What formats does libprs500 read metadata from?</h2>
<p>
libprs500 reads metadata from the following formats: LRF, PDF, LIT, RTF, OPF, MOBI, PRC, EPUB.
In addition it can write metadata to: LRF, RTF, OPF
</p>
<h2 id="Whatformatsdoeslibprs500supportconversiontofrom">What formats does libprs500 support conversion to/from?</h2>
<p>
libprs500 supports the conversion of the following formats to LRF: HTML, LIT, MOBI, PRC, EPUB, RTF, TXT, PDF and LRS. It also supports the conversion of LRF to LRS and HTML(upcoming). Note that libprs500 does not support the conversion of DRMed ebooks.
</p>
<h2 id="WhatarethebestformatstoconverttoLRF">What are the best formats to convert to LRF?</h2>
<p>
In order of decreasing preference: LIT, MOBI, HTML, PRC, RTF, TXT, PDF
</p>
<h2 id="WhydoesthePDFconversionlosesomeimages">Why does the PDF conversion lose some images?</h2>
<p>
The PDF conversion tries to extract the text and images from the PDF file and convert them to and HTML based ebook. Some PDF files have images in a format that cannot be extracted (vector images).
</p>
<h2 id="Wherearethebookfilesstored">Where are the book files stored?</h2>
<p>
When you import books into the library, they are stored in a database. The database location can be found out by clicking the configuration button (The button with the icon of a hammer next to the search bar).
</p>
<h2 id="CanIsavemybookstothedisk">Can I save my books to the disk?</h2>
<p>
You can save your books to the disk by selecting the books and clicking the "Save to disk" button. Your books will be saved in nicely organized folders.
</p>
<h2 id="Iusedlibprs500totransfersomebookstomyreaderandnowtheSONYsoftwarehangseverytimeIconnectthereader">I used libprs500 to transfer some books to my reader, and now the SONY software hangs every time I connect the reader?</h2>
<p>
You should not use both libprs500 and Connect to transfer books to the reader. You can fix this problem by:
</p>
<ul><li>Removing any storage cards from your reader.
</li><li>Deleting the file media.xml from the reader's main memory using windows explorer (search for the file to find all locations where it is present). Note that by doing this you will lose all your collections, bookmarks, history etc.
</li><li>Unplugging the reader and waiting till the list of books shows up again
</li><li>Re-connecting the reader and starting the SONY software
</li></ul><h2 id="NoimagesintheLRFfileafterconversionfromHTML">No images in the LRF file after conversion from HTML?</h2>
<p>
If you use the GUI to convert an HTML file, you have to create a zip file with the HTML file and any images it references and then convert that ZIP file to LRF.
</p>
<h2 id="CanIuseweb2lrftodownloadanarbitrarywebsite">Can I use web2lrf to download an arbitrary website?</h2>
<pre class="showcmd">web2lrf --url http://mywebsite.com default</pre>
<h2 id="Iwantsomefeatureaddedtolibprs500.WhatcanIdo">I want some feature added to libprs500. What can I do?</h2>
<p>
You have two choices:
</p>
<ol>
<li>Create a patch by hacking on libprs500 and send it to me for review and inclusion. See
<a class="wiki" href="http://libprs500.kovidgoyal.net/wiki/Development">Development</a>.
</li>
<li><a href="http://libprs500.kovidgoyal.net/newticket">Open a ticket</a> (you have to register and login first) and hopefully I will find the time to implement your feature.
</li>
</ol>
<h2 id="HowdoIusesomeoftheadvancedfeaturesoftheconversiontools">How do I use some of the advanced features of the conversion tools?</h2>
<p>
You can get help on any individual feature of the converters by mousing over it in the GUI or running html2lrf --help at a terminal. A good place to start is to look at the following demo files that demonstrate some of the advanced features:
</p>
<ul><li><a href="http://libprs500.kovidgoyal.net/downloads/html-demo.zip">html-demo.zip</a>
</li><li><a href="http://libprs500.kovidgoyal.net/downloads/txt-demo.zip">txt-demo.zip</a>
</li></ul>
<hr />
<div class="footer">
<p>
<a href="http://validator.w3.org/check?uri=referer">
<img src="images/valid.png" alt="Valid XHTML 1.1" height="31" width="88" />
</a><br />
Created by Kovid Goyal &copy; 2008
</p>
</div>
</body>
</html>

View File

@ -6,6 +6,7 @@
<head> <head>
<meta name="author" content="Kovid Goyal" /> <meta name="author" content="Kovid Goyal" />
<meta name="copyright" content="2008 Kovid Goyal" /> <meta name="copyright" content="2008 Kovid Goyal" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>The Graphical User Interface</title> <title>The Graphical User Interface</title>
<link rel="stylesheet" type="text/css" href="styles/common.css" /> <link rel="stylesheet" type="text/css" href="styles/common.css" />
</head> </head>
@ -14,15 +15,21 @@
<h1 class="documentHeading">The Graphical User Interface</h1> <h1 class="documentHeading">The Graphical User Interface</h1>
<p> <p>
The Graphical User Interface <i>(GUI)</i> provides access to all The Graphical User Interface <i>(GUI)</i> provides access to all
library management and ebook format conversion features. The interface library management and ebook format conversion features. The basic workflow
is divided into various sections: for using libprs500 is to first add books to the library from your hard disk.
libprs500 will automatically try to read metadata from the books and add them
to its internal database. Once they are in the database, you can performa various
<a href="#actions">actions</a> on them that include conversion from one format to another,
transfer to the reading device, viewing on your computer, editing metadata, including covers, etc.
</p>
<p>
The interface is divided into various sections:
</p> </p>
<ul> <ul>
<li><a href="#actions">Actions</a></li> <li><a href="#actions">Actions</a></li>
<li><a href="#catalogs">Catalogs</a></li> <li><a href="#catalogs">Catalogs</a></li>
<li><a href="#search">Search</a></li> <li><a href="#search_sort">Search &amp; Sort</a></li>
<li><a href="#configuration">Configuration</a></li> <li><a href="#configuration">Configuration</a></li>
<li><a href="#library">Library</a></li>
<li><a href="#book_details">Book Details</a></li> <li><a href="#book_details">Book Details</a></li>
<li><a href="#jobs">Jobs</a></li> <li><a href="#jobs">Jobs</a></li>
</ul> </ul>
@ -114,7 +121,7 @@
</li> </li>
<li> <li>
<b>Edit metadata in bulk</b>: This allows you to edit common metadata fields for large numbers of books simulataneously. It <b>Edit metadata in bulk</b>: This allows you to edit common metadata fields for large numbers of books simulataneously. It
operates on all the books you have selected in the <a href="#library">Library view</a>. operates on all the books you have selected in the <a href="#search_sort">Library view</a>.
</li> </li>
</ul> </ul>
@ -224,28 +231,101 @@ Author
<hr /> <hr />
<h2 class="sectionHeading" id="catalogs">Catalogs</h2> <h2 class="sectionHeading" id="catalogs">Catalogs</h2>
<div><img src="images/catalogs.png" alt="Catalogs"/></div> <div><img src="images/catalogs.png" alt="Catalogs"/></div>
<p>
A <i>catalog</i> is a collection of books. libprs500 can manage three different catalogs:
</p>
<ul>
<li>
<b>Library</b>: This is a collection of books stored in a database file on your computers hard disk.
<b>Reader</b>: This is a collection of books stored in the main memory of your ebook reader. It will be available
when you connect
<b>Card</b>: This is a collection of books stored on the storage card in your reader. Note that libprs500 supports
only a single storage card at a time.
</li>
</ul>
<hr /> <hr />
<h2 class="sectionHeading" id="search">Search</h2> <h2 class="sectionHeading" id="search_sort">Search &amp; Sort</h2>
<div><img src="images/search.png" alt="Search"/></div> <div><img src="images/search_sort.png" alt="Search &amp; Sort"/></div>
<p>
The Search &amp; Sort section allows you to perform several powerful actions
on your book collections.
</p>
<ul>
<li>
You can sort them by title, author, date, rating etc.
by clicking on the column titles.
</li>
<li>
You can search for a particular book or set of books using the search bar. More on that
below.
</li>
<li>
You can quickly and conveniently edit metadata by double-clicking the entry you want changed
in the list.
</li>
<li>
You can perform <a href="#actions">actions</a> on sets to books. To select multiple books you can either:
<ul>
<li>Keep the <code>Ctrl</code> key pressed and click on the books you want selected.</li>
<li>Keep the <code>Shift</code> key pressed and click on the starting and ending book of a range
of books you want selected.</li>
</ul>
</li>
<li>
You can configure which fields you want displayed by using the <a href="#configuration">Configuration</a> dialog.
</li>
</ul>
<h3 class="subsectionHeading">The Search Interface</h3>
<p>
You can search all the metadata by entering search terms in the search bar. Searches are case insensitive.
For example:
</p>
<pre style="background: #eeeeee">
Asimov Foundation format:lrf
</pre>
<p>
This will match all books in your library that have <code>Asimov</code> and <code>Foundation</code> in their metadata
and are available in the LRF format. You can build advanced search queries easily using the "Advanced Search Dialog"
by clicking the button <img src="images/search_button.png" alt="Search button" style="vertical-align: middle"/>.<br /><br />
</p>
<table>
<tr>
<td><img src="images/search.png" alt="Advanced Search Dialog" /></td>
<td>
You can search on individual fields as shown. The "Negate" checkbox implies that only results that
do not match the search expression will be returned. You can require all the search criteria to match
or any of them.
</td>
</tr>
</table>
<hr /> <hr />
<h2 class="sectionHeading" id="configuration">Configuration</h2> <h2 class="sectionHeading" id="configuration">Configuration</h2>
<div><img src="images/configuration.png" alt="Configuration" /></div> <p>
The configuration dialog allows you to set some global defaults used by all of libprs500. To access it, click the
<hr /> <img src="images/configuration.png" alt="Configuration" /> button.
<h2 class="sectionHeading" id="library">Library</h2> </p>
<div><img src="images/library.png" alt="Library"/></div>
<p>multiple selection</p>
<hr /> <hr />
<h2 class="sectionHeading" id="book_details">Book Details</h2> <h2 class="sectionHeading" id="book_details">Book Details</h2>
<div><img src="images/book_details.png" alt="Book Details" /></div> <div><img src="images/book_details.png" alt="Book Details" /></div>
<p>
The Book Details display shows you extra information and the cover for the currently selected book.
</p>
<hr /> <hr />
<h2 class="sectionHeading" id="jobs">Jobs</h2> <h2 class="sectionHeading" id="jobs">Jobs</h2>
<div><img src="images/jobs.png" alt="Jobs" /></div> <div><img src="images/jobs.png" alt="Jobs" /></div>
<p>
The Jobs panel shows you the number of currently running jobs. Jobs are tasks that run in a separate
process, they include converting ebooks and talking to your reader device.
You can click on the jobs panel to access the list of jobs.
Once a job has completed, by clicking it in the list, you can see a detailed log from that job. This is useful
to debug jobs that may not have completed successfully.
</p>
<hr /> <hr />
<div class="footer"> <div class="footer">

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 724 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

View File

@ -6,6 +6,7 @@
<head> <head>
<meta name="author" content="Kovid Goyal" /> <meta name="author" content="Kovid Goyal" />
<meta name="copyright" content="&copy; 2008 Kovid Goyal" /> <meta name="copyright" content="&copy; 2008 Kovid Goyal" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>libprs500 User Manual</title> <title>libprs500 User Manual</title>
</head> </head>

View File

@ -14,6 +14,11 @@
<section ref="gui.html" title="The Graphical User Interface"> <section ref="gui.html" title="The Graphical User Interface">
<section ref="gui.html#actions" title="Actions" /> <section ref="gui.html#actions" title="Actions" />
<section ref="gui.html#catalogs" title="Catalogs" />
<section ref="gui.html#search_sort" title="Search &amp; Sort" />
<section ref="gui.html#configuration" title="Configuration" />
<section ref="gui.html#book_details" title="Book Details" />
<section ref="gui.html#jobs" title="Jobs" />
</section> </section>
<section ref="cli-index.html" title="The Command Line Interface"> <section ref="cli-index.html" title="The Command Line Interface">
@ -38,7 +43,23 @@
<section ref="cli-web2disk.html" title="web2disk" /> <section ref="cli-web2disk.html" title="web2disk" />
<section ref="cli-web2lrf.html" title="web2lrf" /> <section ref="cli-web2lrf.html" title="web2lrf" />
</section> </section>
</toc>
<section ref="faq.html" title="Frequently Asked Questions">
<section ref="faq.html#Whatdevicesdoeslibprs500support" title="What devices does libprs500 support?" />
<section ref="faq.html#Whatformatsdoeslibprs500readmetadatafrom" title="What formats does libprs500 read metadata from?" />
<section ref="faq.html#Whatformatsdoeslibprs500supportconversiontofrom" title="What formats does libprs500 support conversion to/from?" />
<section ref="faq.html#WhatarethebestformatstoconverttoLRF" title="What are the best formats to convert to LRF?" />
<section ref="faq.html#WhydoesthePDFconversionlosesomeimages" title="Why does the PDF conversion lose some images?" />
<section ref="faq.html#Wherearethebookfilesstored" title="Where are the book files stored?" />
<section ref="faq.html#CanIsavemybookstothedisk" title="Can I save my books to the disk?" />
<section ref="faq.html#Iusedlibprs500totransfersomebookstomyreaderandnowtheSONYsoftwarehangseverytimeIconnectthereader" title="I used libprs500 to transfer some books to my reader, and now the SONY software hangs every time I connect the reader?" />
<section ref="faq.html#NoimagesintheLRFfileafterconversionfromHTML" title="No images in the LRF file after conversion from HTML?" />
<section ref="faq.html#CanIuseweb2lrftodownloadanarbitrarywebsite" title="Can I use web2lrf to download an arbitrary website?" />
<section ref="faq.html#Iwantsomefeatureaddedtolibprs500.WhatcanIdo" title="I want some feature added to libprs500. What can I do?" />
<section ref="faq.html#HowdoIusesomeoftheadvancedfeaturesoftheconversiontools" title="How do I use some of the advanced features of the conversion tools?" />
</section>
</toc>
<files> <files>
<file>cli-isbndb.html</file> <file>cli-isbndb.html</file>
@ -46,6 +67,7 @@
<file>cli-mobi2lrf.html</file> <file>cli-mobi2lrf.html</file>
<file>cli-lrf-meta.html</file> <file>cli-lrf-meta.html</file>
<file>cli-lit2lrf.html</file> <file>cli-lit2lrf.html</file>
<file>faq.html</file>
<file>cli-lrf2lrs.html</file> <file>cli-lrf2lrs.html</file>
<file>cli-index.html</file> <file>cli-index.html</file>
<file>cli-web2lrf.html</file> <file>cli-web2lrf.html</file>
@ -68,7 +90,8 @@
<file>images/edit_meta_information.png</file> <file>images/edit_meta_information.png</file>
<file>images/remove_books.png</file> <file>images/remove_books.png</file>
<file>images/book_details.png</file> <file>images/book_details.png</file>
<file>images/library.png</file> <file>images/search_sort.png</file>
<file>images/search_button.png</file>
<file>images/convert_ebooks.png</file> <file>images/convert_ebooks.png</file>
<file>images/add_books.png</file> <file>images/add_books.png</file>
<file>images/save_to_disk.png</file> <file>images/save_to_disk.png</file>

View File

@ -30,5 +30,6 @@
<item url="libprs500.webprj" uploadstatus="1" /> <item url="libprs500.webprj" uploadstatus="1" />
<item url="templates/navtree.html" /> <item url="templates/navtree.html" />
<item url="start.html" /> <item url="start.html" />
<item url="faq.html" />
</project> </project>
</webproject> </webproject>

View File

@ -18,7 +18,7 @@
import sys, glob, mechanize, time, subprocess, os, re, shutil import sys, glob, mechanize, time, subprocess, os, re, shutil
from tempfile import NamedTemporaryFile from tempfile import NamedTemporaryFile
from xml.etree.ElementTree import parse, tostring, fromstring from xml.etree.ElementTree import parse, tostring, fromstring, Element
from BeautifulSoup import BeautifulSoup from BeautifulSoup import BeautifulSoup
# Load libprs500 from source copy # Load libprs500 from source copy
@ -48,7 +48,7 @@ def update_manifest(src='libprs500.qhp'):
open(src, 'wb').write(raw+'\n') open(src, 'wb').write(raw+'\n')
def validate_html(): def validate():
br = browser() br = browser()
for f in glob.glob('*.html'): for f in glob.glob('*.html'):
if f.startswith('preview-'): if f.startswith('preview-'):
@ -90,6 +90,44 @@ def compile_help():
subprocess.call((QTA, '-collectionFile', 'libprs500.qhc')) subprocess.call((QTA, '-collectionFile', 'libprs500.qhc'))
def populate_section(secref, items, src='libprs500.qhp'):
root = parse(src).getroot()
toc = root.find('filterSection').find('toc')
sec = None
for c in toc.findall('section'):
if c.attrib['ref'] == secref:
sec = c
break
attr = sec.attrib.copy()
sec.clear()
sec.attrib = attr
sec.text = '\n%16s'%' '
secs = ['<section ref="%s" title="%s" />\n'%i for i in items]
sec.tail = '\n\n%12s'%' '
for i in secs:
el = fromstring(i)
sec.append(el)
if secs.index(i) == len(secs)-1:
el.tail = '\n%12s'%' '
else:
el.tail = '\n%16s'%' '
raw = tostring(root, 'UTF-8')
open(src, 'wb').write(raw)
def populate_faq(src='libprs500.qhp'):
soup = BeautifulSoup(open('faq.html').read().decode('UTF-8'))
items = []
toc = soup.find('div', id="toc")
for a in toc('a', href=True):
items.append(('faq.html%s'%a['href'], a.string))
populate_section('faq.html', items, src=src)
def generate_cli_docs(src='libprs500.qhp'): def generate_cli_docs(src='libprs500.qhp'):
documented_cmds = [] documented_cmds = []
undocumented_cmds = [] undocumented_cmds = []
@ -164,27 +202,11 @@ def generate_cli_docs(src='libprs500.qhp'):
open('cli-index.html', 'wb').write(template.replace('%body', body)) open('cli-index.html', 'wb').write(template.replace('%body', body))
root = parse(src).getroot()
toc = root.find('filterSection').find('toc')
sec = None
for c in toc.findall('section'):
if c.attrib['ref'] == 'cli-index.html':
sec = c
break
attr = sec.attrib.copy()
sec.clear()
sec.attrib = attr
cmds = [i[0] for i in documented_cmds] cmds = [i[0] for i in documented_cmds]
secs = ['<section ref="cli-%s.html" title="%s" />\n'%(i, i) for i in cmds] items = [('cli-%s.html'%i, i) for i in cmds]
[sec.append(fromstring(i)) for i in secs] populate_section('cli-index.html', items, src=src)
raw = tostring(root, 'UTF-8')
raw = re.sub(r'(<section ref="cli-[^<>]*?/>)', r'\n \1', raw)
raw = raw.replace('</section></toc>', '\n </section>\n </toc>')
raw = raw.replace(' <section ref="cli-index.html', ' <section ref="cli-index.html')
open(src, 'wb').write(raw+'\n')
def create_html_interface(src='libprs500.qhp'): def create_html_interface(src='libprs500.qhp'):
@ -219,22 +241,33 @@ def create_html_interface(src='libprs500.qhp'):
open('navtree.html', 'wb').write(template.replace('%tree', tree)+'\n') open('navtree.html', 'wb').write(template.replace('%tree', tree)+'\n')
def all(args=sys.argv): def all(opts):
generate_cli_docs() generate_cli_docs()
populate_faq()
update_manifest() update_manifest()
create_html_interface() create_html_interface()
compile_help() compile_help()
validate_html() if opts.validate:
validate()
return 0 return 0
if __name__ == '__main__': if __name__ == '__main__':
if len(sys.argv) == 1: from libprs500 import OptionParser
parser = OptionParser()
parser.add_option('--validate', default=False, action='store_true',
help='Validate all HTML files against their DTDs.')
opts, args = parser.parse_args()
if len(args) == 0:
clean() clean()
sys.exit(all()) sys.exit(all(opts))
elif len(sys.argv) == 2: elif len(args) == 1:
func = eval(sys.argv[1]) func = eval(args[0])
fargs = []
if args[0] == 'all':
fargs = [opts]
if func is None: if func is None:
print >>sys.stderr, 'Unknown target', sys.argv(1) print >>sys.stderr, 'Unknown target', sys.argv(1)
sys.exit(1) sys.exit(1)
sys.exit(func()) sys.exit(func(*fargs))

View File

@ -6,6 +6,7 @@
<head> <head>
<meta name="author" content="Kovid Goyal" /> <meta name="author" content="Kovid Goyal" />
<meta name="copyright" content="&copy; 2008 Kovid Goyal" /> <meta name="copyright" content="&copy; 2008 Kovid Goyal" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>libprs500 User Manual</title> <title>libprs500 User Manual</title>
<link rel="stylesheet" type="text/css" href="styles/common.css" /> <link rel="stylesheet" type="text/css" href="styles/common.css" />
</head> </head>

View File

@ -6,6 +6,7 @@
<head> <head>
<meta name="author" content="Kovid Goyal" /> <meta name="author" content="Kovid Goyal" />
<meta name="copyright" content="&copy; 2008 Kovid Goyal" /> <meta name="copyright" content="&copy; 2008 Kovid Goyal" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title></title> <title></title>
<link rel="stylesheet" type="text/css" href="styles/common.css" /> <link rel="stylesheet" type="text/css" href="styles/common.css" />
</head> </head>

View File

@ -2,6 +2,7 @@
"http://www.w3.org/TR/html4/loose.dtd"> "http://www.w3.org/TR/html4/loose.dtd">
<html> <html>
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script src="http://code.jquery.com/jquery-latest.js" type="text/javascript"></script> <script src="http://code.jquery.com/jquery-latest.js" type="text/javascript"></script>
<link rel="stylesheet" href="http://dev.jquery.com/view/trunk/plugins/treeview/jquery.treeview.css" type="text/css"> <link rel="stylesheet" href="http://dev.jquery.com/view/trunk/plugins/treeview/jquery.treeview.css" type="text/css">
<link rel="stylesheet" href="styles/common.css" type="text/css"> <link rel="stylesheet" href="styles/common.css" type="text/css">