diff options
author | tavis_rudd <tavis_rudd> | 2006-01-11 07:58:07 +0000 |
---|---|---|
committer | tavis_rudd <tavis_rudd> | 2006-01-11 07:58:07 +0000 |
commit | 1764ae5ffa3cd4be5a9967649b152af19c5432c1 (patch) | |
tree | b9ba85bdd8e4f3027a3a8be365c65a38f212d6ab /www | |
parent | 8489c0ac9b6e9b7b617f03d841f1f92f23b88f92 (diff) | |
download | python-cheetah-1764ae5ffa3cd4be5a9967649b152af19c5432c1.tar.gz |
init import
Diffstat (limited to 'www')
29 files changed, 1083 insertions, 0 deletions
diff --git a/www/_SiteTemplate.tmpl b/www/_SiteTemplate.tmpl new file mode 100644 index 0000000..a94abc1 --- /dev/null +++ b/www/_SiteTemplate.tmpl @@ -0,0 +1,812 @@ +#from Cheetah.Utils.htmlEncode import htmlEncode +#################### +## Class attributes: +#attr navBarSep = '<span class="navBarSep">|</span>' +#attr title = 'Cheetah - The Python-Powered Template Engine' +#attr htmlExt = '.html' +#attr pageId = 'index' +## $apos used to avoid a syntax highlight issue in Emacs: +#attr apos = ''' +#attr currentYear = time.strftime("%Y",time.localtime(time.time())) +################################################################################ +## Everything outsite of '#blocks' from here to the next set of 3 commment bars +## is part of the template's .respond() method. .respond() is the default +## method and is linked into the template's __str__ method. +################################################################################ +#block doctypeEtc +<?xml version="1.0" encoding="UTF-8" ?> +<!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" xml:lang="en" lang="en"> +#end block +<head> +#block headTagContents +<title>$title</title> +<link rel="stylesheet" href="screen.css" type="text/css" /> +#end block headTagContents +</head> + +#block bodyTag:<body class="$pageId"> +#block body + #block banner + <div class="banner" align="center"> + <a href="index$htmlExt"><img + class="bannerImg" src="images/cheetah-face-black-medium.jpg" alt="" /></a> + + <a href="index$htmlExt"><img class="bannerText" src="images/banner_text.gif" + alt="Cheetah: The Python-Powered Template Engine" /></a> + </div> + #end block banner + <div class="pageOuterWrapper" align="center"> + <div class="pageInnerWrapper0"> + <div class="pageInnerWrapper1"> + #block navBar + #set pages = [page.split(',') for page in [ + 'index,Overview', + 'download,Download', + 'learn,Docs', + 'examples,Examples', + 'whouses,Who Uses It?', + 'praise,Testimonials', + 'contribute,Help Out', + ]] + <div align="center" class="navBarContainer"> + #for i, (url, title) in enumerate(pages) + <a class="navBar $(pageId.lower()==url and 'activePage' or '')" + href="$url$htmlExt">$title</a> + #if i+1<len(pages) then $navBarSep else '' + #end for + </div> + #end block navBar + + #block pageContentsWrapped + <div class="pageInnerWrapper2"> + <div class="pageInnerWrapper3"> + <div class="pageInnerWrapper4"> + <div class="pageInnerWrapper5"> + #block pageContents + #set contentsMethod = getattr(self, $pageId+'PageContents') + $contentsMethod() + #end block pageContents + #block pageContentsFooter + <div class="attributionFooter"> Cheetah was created by Tavis + Rudd, a freelance programmer and designer, with contributions + from many open source volunteers.<br/>Its documentation is + edited by Mike Orr, who also wrote its command line tool.</div> + $sourceforgeWebBug + #end block pageContentsFooter + </div> ## pageInnerWrapper5 + </div> ## pageInnerWrapper4 + </div> ## pageInnerWrapper3 + </div> ## pageInnerWrapper2 + #end block pageContentsWrapped + </div> ## pageInnerWrapper1 + </div> ## pageInnerWrapper0 + + #block footer + <div class="copyrightFooter" align="left"> + Copyright © 2001-$currentYear Tavis Rudd. All rights reserved. + </div> + #end block footer + </div> ## pageOuterWrapper +#end block body +</body> +</html> +################################################################################ +################################################################################ +################################################################################ +#def indexPageContents + <table> + <tr valign="top"> + <td> + <br /> + <div align="center"> + <img class="" src="images/cheetah-homepage-title.gif" alt="" /> + </div> + + <p>Cheetah is a Python-powered template engine and code generator. It can + be used standalone or combined with other tools and frameworks. Web + development is its principle use, but Cheetah is very flexible and is + also being used to generate C++ game code, Java, sql, form emails and + even Python code.</p> + + <p>Cheetah has a large and active user community. Products built with + Cheetah are used by most of the Fortune 500. One prominent new user is <a + href="http://reddit.com/">reddit.com</a>, a startup funded by Paul + Graham.</p> + + </td> + <td width="300"> + #set sep='<span class="sep">|</span>' + <div class="homePageUtilLinks"> + <a href="http://lists.sourceforge.net/lists/listinfo/cheetahtemplate-discuss" + >Mailing List</a>$sep<a href="docs/CHANGES">Changes</a>$sep<a + href="http://sourceforge.net/cvs/?group_id=28961">CVS</a> + </div> + + <div class="homePageQuotes">$shortPraiseSection</div> + <a class="quotesLink" href="praise$htmlExt">read more quotes</a> + </td> + </tr> + </table> + + <div class="homePageDownloadBar"> + <div class="homePageDownloadBarInner"> + <b>Download</b> <a + href="http://sourceforge.net/project/showfiles.php?group_id=28961">Cheetah 2.0rc1</a> (released on Jan 10, 2006) + </div> + </div> + + ################################################## + <p><b>Cheetah</b>:</p> + + <ul class="topLevel"> + <li><b>is supported by every major Python web framework</b>.</li> + + <li><b>is fully documented and is supported by an active user community</b>.</li> + + <li>can output/generate <b>any</b> text-based format.</li> + + <li>compiles templates into optimized, yet readable, Python code.</li> + + <li>blends the power and flexibility of Python with a simple template language + that non-programmers can understand. + </li> + + <li>gives template authors full access to any Python data structure, module, + function, object, or method in their templates. Meanwhile, it provides a way + for administrators to selectively restrict access to Python when needed. + </li> + + <li>makes code reuse easy by providing an object-oriented interface to + templates that is accessible from Python code or other Cheetah + templates. One template can subclass another and selectively + reimplement sections of it. Cheetah templates can be subclasses + of <b>any</b> Python class and vice-versa. + </li> + + <li>provides a simple, yet powerful, caching mechanism that can dramatically + improve the performance of a dynamic website. + </li> + + <li>encourages clean separation of content, graphic design, and program code. This leads + to highly modular, flexible, and reusable site architectures, shorter + development time, and HTML and program code that is easier to understand + and maintain. It is particularly well suited for team efforts. + </li> + + <li>can be used to generate static html via its command-line tool.</li> + + </ul> + + ################################################## + <h2>What is the philosophy behind Cheetah?</h2> + + <p>Its design was guided by these principles:</p> + + <ul class="topLevel"> + <li>Python for the back end, Cheetah for the front end. Cheetah was + designed to complement Python, not replace it. + </li> + + <li>Cheetah$(apos)s core syntax should be easy for non-programmers to learn. + </li> + + <li>Cheetah should make code reuse easy by providing an object-oriented + interface to templates that is accessible from Python code or other + Cheetah templates. + </li> + + <li>Python objects, functions, and other data structures should be fully + accessible in Cheetah. + </li> + + <li>Cheetah should provide flow control and error handling. Logic + that belongs in the front end shouldn't be relegated to the + back end simply because it's complex. + </li> + + <li>It should be easy to <b>separate</b> content, graphic design, and program + code, but also easy to <b>integrate</b> them. + + <p>A clean separation makes it easier for a team of content writers, + HTML/graphic designers, and programmers to work together without stepping + on each other's toes and polluting each other's work. The HTML framework + and the content it contains are two separate things, and analytical + calculations (program code) is a third thing. Each team member should be + able to concentrate on their specialty and to implement their changes + without having to go through one of the others (i.e., the dreaded + "webmaster bottleneck"). </p> + + <p>While it should be easy to develop content, graphics and program code + separately, it should be easy to integrate them together into a website. In + particular, it should be easy: </p> + + <ul> + <li>for <b>programmers</b> to create reusable components and functions + that are accessible and understandable to designers. + </li> + <li>for <b>designers</b> to mark out placeholders for content and + dynamic components in their templates. + </li> + <li>for <b>designers</b> to soft-code aspects of their design that are + either repeated in several places or are subject to change. + </li> + <li>for <b>designers</b> to reuse and extend existing templates and thus + minimize duplication of effort and code. + </li> + <li>and, of course, for <b>content writers</b> to use the templates that + designers have created.</li> + </ul> + </li> + </ul> + +#end def +################################################################################ +#def learnPageContents + + <h3>Official Documentation</h3> + + <p><b>Cheetah Users' Guide:</b> ##' + <a href="docs/users_guide_html/"><b>HTML</b></a> + <a href="docs/users_guide_html_multipage/">Multi-page HTML</a> + <a href="docs/users_guide.ps">Postscript</a> + <a href="docs/users_guide.txt">Text</a> + <a href="docs/users_guide.pdf">PDF</a> + </p> + + <p><b>Cheetah Developers$(apos) Guide:</b> + <A href="docs/devel_guide_html/"><B>HTML</B></a> + <A href="docs/devel_guide_html_multipage/">Multi-page HTML</a> + <A href="docs/devel_guide.ps">Postscript</a> + <A href="docs/devel_guide.txt">Text</a> + <A href="docs/devel_guide.pdf">PDF</a> + </p> + + <p> Also see the latest + <A href="docs/CHANGES">CHANGES</a>, + <A href="docs/TODO">TODO</a>, + <A href="docs/BUGS">BUGS</a>. + </p> + + <p> The LaTeX source for the Users' Guide and Developers' Guide is in the CVS + module <b>CheetahDocs</b> at SourceForge, <a + href="http://sourceforge.net/cvs/?group_id=28961">http://sourceforge.net/cvs/?group_id=28961</a>.</p> + + <h3>Unofficial Documentation and Articles</h3> + + <p><a href="$('http://www-128.ibm.com/developerworks/opensource/library/' + 'os-pythcheetah/?ca=dgr-lnxw06PythonCheetah')">Building and filling out + templates with Python and Cheetah</a> by Leonard Richardson, Software Engineer + at CollabNet. Published in IBM Developer Works, August 9th, 2005. Leonard + Richardson is the author of many Python applications and libraries, including + NewsBruiser and Beautiful Soup. He is a co-author of the new tome Beginning + Python, from Wrox.</p> + + <p><a + href="http://www.onlamp.com/pub/a/python/2005/01/13/cheetah.html">Python-Powered + Templates with Cheetah</a> by Andrew Glover, founder and CTO of Vanward + Technologies, a company specializing in building automated testing frameworks. + Published in O'Reilly's ONLamp.com, January 13th, 2005</p> + + <p><A href="http://www.devshed.com/c/a/Python/Templating-with-Cheetah/">Templating with + Cheetah</a>, a DevShed article by Peyton McCullough. Published in December 2005.</p> + + <p>The <A href="Py10.html">Python10 conference paper</a> about Cheetah, by + Tavis Rudd, Mike Orr, and Ian Bicking. It provides a high-level introduction + to Cheetah and the philosophy behind its design. Published in December + 2001.</p> + + <p><A href="http://linuxgazette.net/117/orr.html">Templating in Python</a>, a + Linux Gazette article by Mike Orr. Published in Issue 117 of Linux Gazette, + August 2005.</p> + + <p><A href="docs/OnePageTutorial.html">One-Page Tutorial</a> for template + maintainers. Covers a few basic concepts.</p> + + <p> <a href="http://wingware.com/python/success/st-andrews">Python Success + Stories: Python Enterprise-Wide at the University of St Andrews in + Scotland</a> by Hamish Lawson. Cheetah is used for the presentation + layer. Hamish Lawson is a software developer in the IT Services department at + the University of St Andrews, Scotland. Published January 17th, 2003.</p> + + <p><a + href="http://www.codegeneration.net/tiki-read_article.php?articleId=39">Code + Generation Network - Case Study with Peter White</a>, an interview that + discusses using Cheetah for generating Java code in a financial services + application. "Given my recent experience with Python and Cheetah, I can't + imagine an easier way to generate code!" Published March 1st, 2004.</p> + + <p>Cheetah is covered in <a + href="$('http://www.amazon.com/exec/obidos/tg/detail/-/0596001886/' + 'ref=pd_sim_b_2/002-9262270-4252038?%5Fencoding=UTF8&v=glance')">Python in a + Nutshell</a>, by Alex Martelli. Alex writes on the Cheetah list: "Nutshell + readers looking for templating engines will be tempted by my ultra-brief + coverage enough to come visit the Cheetah site and get stunned. Indeed, I'm + impressed enough that I plan to cover _only_ Cheetah as the one tool for any + serious templating need."</p> + + <p>It is also introduced in the New Riders book <a + href="http://www.informit.com/title/0735710902">Python Web Programming</a>, by + Steve Holden. Steve writes "Although the software is still in beta at the + time of writing, it is already stable and easy to use either with or without + Webware. It looks as though Cheetah will be useful to many web projects, as + well as any others that need flexible template substitution of a general + nature." Published Jan 8th, 2002.</p> + +#end def +################################################################################ +#def downloadPageContents + + <p>The most <a + href="$('http://sourceforge.net/project/showfiles.php?' + 'group_id=28961&package_id=20864&release_id=375898')">recent + stable release</a> was 1.0 on Dec 4, 2005. Don$(apos)t let the version number fool + you. Cheetah has been <b>stable, production quality, post-beta code since + 2001</b>. All new releases since then (40+) have been almost <b>100% backwards + compatible</b>.</p> + + <p>The most <a + href="http://sourceforge.net/project/showfiles.php?group_id=28961">recent + development release</a> was 2.0rc1 on Jan 10, 2006.</p> + + <p>Here$(apos)s the documentation on <a + href="http://cheetahtemplate.org/docs/CHANGES">recent changes</a>.</p> + + <p>You can also get the current unreleased development version of Cheetah from + our <a href="http://sourceforge.net/cvs/?group_id=28961">CVS + repository</a>.</p> + + <p>Cheetah is included in FreeBSD and most major Linux distributions: + Gentoo, Fedora, Debian, and Ubuntu among others.</p> + + <p><b>IMPORTANT NOTE TO WINDOWS USERS:</b> If you are using windows and Python + 2.4, you should either use one of the .exe releases or grab <a + href="http://prdownloads.sourceforge.net/cheetahtemplate/_namemapper.pyd?download">_namemapper.pyd + from the 0.9.17rc1 release</a> and install it wherever your system puts + Cheetah/NameMapper.py. This is a compiled copy of the C version of NameMapper + (provided by Kevin Dangoor). Using it results in dramatic performance + benefits.</p> + +#end def +################################################################################ +#def examplesPageContents +<p>Here's a very simple example that illustrates some of Cheetah's basic syntax:</p> + +<dl><dd><pre class="verbatim"> +#call htmlEncode + #raw + <html> + <head><title>$title</title></head> + <body> + <table> + #for $client in $clients + <tr> + <td>$client.surname, $client.firstname</td> + <td><a href="mailto:$client.email">$client.email</a></td> + </tr> + #end for + </table> + </body> + </html> + #end raw +#end call +</pre></dl> + +<p>Compare this with PSP:</p> + +<dl><dd><pre class="verbatim"> +#call htmlEncode + #raw + <html> + <head><title><%=title%></title></head> + <body> + <table> + <% for client in clients: %> + <tr> + <td><%=client['surname']%>, <%=client'[firstname']%></td> + <td><a href="mailto:<%=client['email']%>"> + <%=client['email']%></a></td> + </tr> + <%end%> + </table> + </body> + </html> + #end raw +#end call +</pre></dl> + +<p>See the <a href="learn$htmlExt">documentation</a> for more examples.</p> + +#end def +################################################################################ +#def whousesPageContents + + #def displayLinesAsList(arg): + #for ln in arg.splitlines() + #set ln = $ln.strip + #if not ln + #continue + #end if + <li>$ln.strip</li> + #end for + #end def + + #def makeLink(link, title=None) + <a href="$link">#if title then title else link#</a> #slurp + #end def + <table class="whoUsesTable"> + <tr valign="top"> + <td> + + <p>Cheetah is being used in a wide variety of commercial, government, + academic, personal, and open-source projects & products. Products + built with Cheetah are used by most of the Fortune 500. + + <ul class="topLevel"> + <li>One major example of commercial use are the email gateway appliances from + <a href="http://www.ironport.com/products/">IronPort Systems</a>, which are + used by the largest corporations and ISPs in the world. IronPort$(apos)s products + contain over a million lines of Python and use Cheetah plus <a + href="http://aquarium.sf.net">Aquarium</a> for their user interfaces.</li> + + <li>A prominent example of government use is <a + href="http://www.incidentnews.gov/">Incident News</a>, which provides news, + photos, and other information about spill incidents and response actions in + the U.S. A larger private site is used to feed the items on the public + site. The site is maintained by the Hazardous Materials Response Division, + Office of Response and Restoration, National Ocean Service, National Oceanic + and Atmospheric Administration (NOAA), in support of U.S. Coast Guard incident + response operations.</li> + + <li>The <a href="http://www.st-andrews.ac.uk/">University of St. Andrews</a>, + in Scotland, uses Python + Cheetah for their student records system. + St. Andrews is the 3rd oldest university in the English speaking world. See + this <a href="http://wingware.com/python/success/st-andrews">write-up</a> for + details.</li> + + <li>It is supported by, and used with, every major Python web + development framework: + + <ul> + #call displayLinesAsList + $pythonFrameworksUsing(includeWrapperText=False,sep='',includeWebwareInList=True) + #end call + </ul> + </li> + + <li>Cheetah is included in FreeBSD and most major Linux distributions: + Gentoo, Fedora, Debian, and Ubuntu among others.</li> + + #call displayLinesAsList + <a href="http://info.patientwire.com/">PatientWire</a> + <a href="http://reddit.com/">reddit.com</a> + <a href="http://gentooexperimental.org/meatoo/">Gentoo Linux</a> + $makeLink('http://bosco.tigris.org/') A JMI-compliant template-based code generator. #slurp + It reads XMI files and generates the corresponding source code, #slurp + in different object-oriented languages (Java, Eiffel, Python, C++). #slurp + In the case of Java, the generated code implements the JMI interfaces. + $makeLink('http://www.intertwingly.net/blog/') (blog of Sam Ruby, Apache Foundation Director) + $makeLink('http://www.electronicappraiser.com/') + $makeLink('http://www.instasong.com/InstaSong/') + $makeLink('http://www.axiomfire.com/') All internal tools and live eDialogues built with Cheetah + $makeLink('http://initd.org/') (makers of psycopg and pysqlite) + $makeLink('http://www.asti-usa.com/') #slurp + (Andrew Kuchling is currently porting their large web app to Cheetah) + $makeLink('http://linuxgazette.com/') + $makeLink('http://pyblosxom.sourceforge.net/') + $makeLink('http://pyds.muensterland.org/') + $makeLink('http://faces.homeip.net/') + $makeLink('http://map.wirelesslondon.info/') + $makeLink('http://tboard.sourceforge.net/') + $makeLink('http://singleshot.org/') + $makeLink('http://www.python-hosting.com/') + $makeLink('http://www.petersblog.org/') + ###$makeLink('http://www.usenix.org/events/lisa03/tech/' + ##'full_papers/giridharagopal/giridharagopal_html/') + $makeLink('http://tools.arlut.utexas.edu/DryDock/') #slurp + a large web-publishing application focussed on workflow + $makeLink('http://wiki.osuosl.org/display/DEV/OJBDoc') + #end call + + <li>Cheetah supports internationalization and has a large non-English userbase, including: + <ul> + #call displayLinesAsList + $makeLink('http://bank.muratordom.pl/') (Polish) + $makeLink('http://bank.muratorplus.pl/') (Polish) + $makeLink('http://www.encyclon.net/multiblast') (Korean) Bioinformatics Tool + $makeLink('http://www.aufeinander.de/') (German) + $makeLink('http://www.katechese.at/') (German) + $makeLink('http://www.herschberger.at/') (German) + $makeLink('http://www.oejhw.or.at/') (German) + $makeLink('http://www.go-direct.at/') (German) + $makeLink('http://www.dmvoe.at/') (German) + $makeLink('http://seps.flibuste.net/') (French) + $makeLink('http://flibuste.net/') (French) + $makeLink('http://www.tac.cz/') (Czech) + $makeLink('http://www.cestovatel.cz/') (Czech) + $makeLink('http://www.iddk.ru/') (Russian) + $makeLink('http://shop.iddk.ru/') (Russian) + $makeLink('http://ustawki.net/') game-manager for soccer fans (Czech?) + #end call + </ul> + </li> + + ## http://snurf.bdash.net.nz/ + </ul> + </td> + ### + <td width="250"> + <ul> + #call displayLinesAsList + Dell + CNN + NASDAQ + Ebay + Sony + EDS + GAP + Maytag + PayPal + Juniper + Road Runner + Whirlpool + Capital One + Liberty Mutual + Continental Airlines + General Foods + Prudential Financial + Aetna + Imperial Optical + Wolf Bioscience + <i>Hundreds of eye-care practices</i> + John Hopkins University + Harvard University + University of St. Andrews + University of British Columbia + Ryder + AON + Franklin Templeton Investments + Manulife + Societe Generale + Juniper Networks + Masco + ADP + Liberty Mutual + RJ Renolds + Charter Communications + BNP Paribas + L.A. Care Health Plan + Salt Lake County + Grand Prairie ISD + ASTi + Reddit.com + LinuxGazette.com + HFD.com + #end call + </ul> + </td> + </tr> + </table> + +#end def +################################################################################ +#def contributePageContents + + <p>Cheetah is the work of many volunteers. If you use Cheetah, share your + experiences, tricks, customizations, and frustrations. Please join the <a + href="http://lists.sourceforge.net/mailman/listinfo/cheetahtemplate-discuss">mailing + list</a>.</p> + + <h3>Publicity</h3> + + <p>Help spread the word: blog about it, write articles about it, recommend it + to others, etc.</p> + + <h3>Bug reports and patches</h3> + + <p>If you think there is a bug in Cheetah, send a message to the email list with + the following information:</p> + + <ol> + <li>a description of what you were trying to do and what happened</li> + <li>all tracebacks and error output</li> + <li>your version of Cheetah</li> + <li>your version of Python</li> + <li>your operating system</li> + <li>whether you have changed anything in the Cheetah installation</li> + </ol> + + <h3>Example sites and tutorials</h3> + + <p>If you$(apos)re developing a website with Cheetah, please send a link to the + + email list so we can keep track of Cheetah sites. Also, if you discover new + and interesting ways to use Cheetah please share your experience and write a + quick tutorial about your technique.</p> + + <h3>Test cases</h3> + <p>Cheetah is packaged with a regression testing suite that is run with each + new release to ensure that everything is working as expected and that recent + changes haven$(apos)t broken anything. The test cases are in the Cheetah.Tests + + module. If you find a reproduceable bug please consider writing a test case + that will pass only when the bug is fixed. Send any new test cases to the + email list with the subject-line "new test case for Cheetah." </p> + +#end def +################################################################################ +#def praisePageContents + #call $shortPraiseSection + $formatQuote("There is no better solution than Cheetah.", 'Wilk') + + ##http://www.pythonweb.org/projects/webmodules/doc/0.5.3/html_multipage/lib/example-file-web-template-cheetah.html + $formatQuote("Cheetah is a powerful, stable and well documented templating system.", 'James Gardner') + + ##http://keithdevens.com/weblog/archive/2003/Nov/17/Python.Cheetah + $formatQuote("Cheetah is very nice. Good code even!", 'Keith Devens') + + $formatQuote("""People with a strong PHP background absolutely love Cheetah for being Smarty, + but much, much better.""", 'Marek Baczynski') + + ##post on cheetah list about initd.org + $formatQuote('i did it in a single night (i _love_ cheetah templates ;)', + '<a href="http://initd.org/">Federico Di Gregorio</a>, developer of psycopg') + + $formatQuote("""Cheetah seems to be practically the only web templating + format with decent taste. On top of that, it doesn't try to limit the + programmers with needless restrictions and hoops. ... reddit.com was + recently rewritten with Python and Cheetah Templates. The project seems + to have gone really well and the former-Lisp developers really enjoyed + Cheetah's simple syntax.""", '''<a href="http://www.aaronsw.com/">Aaron + Swartz</a>, co-author of the RSS 1.0 spec''') + + $formatQuote("""I am using Smarty and I know it very well, but compiled Cheetah + Templates with its inheritance approach is much powerful and easier to + use than Smarty.""", 'Jaroslaw Zabiello') + + $formatQuote("""A cheetah template can inherit from a python class, or a cheetah + template, and a Python class can inherit from a cheetah template. This + brings the full power of OO programming facilities to the templating + system, and simply blows away other templating systems.""", 'Mike Meyer') + + $formatQuote('Love your work guys.', 'Alex Le Dain') + + $formatQuote("""Cheetah has successfully been introduced as a replacement for the + overweight XSL Templates for code generation. Despite the power of XSL + (and notably XPath expressions), code generation is better suited to + Cheetah as templates are much easier to implement and manage.""", + '''The <a + href="http://fear.sourceforge.net/docs/latest/guide/Build.html#id2550573">FEAR</a> + development team''') + + ##http://www.thescripts.com/forum/post365058-2.html + $formatQuote("I'm greatly in favour of Cheetah.", 'Sybren Stuvel') + + ##http://blog.kodemaniak.de/archives/10-Python-template-system.html + $formatQuote("Cheetah is very powerful and flexible.", 'Carsten Saathoff') + + ## http://groups.google.com/group/turbogears/tree/browse_frm/thread/bb7a6115ca7028c9/4bd4ca24aa61d75c?rnum=111&q=cheetah+python&_done=%2Fgroup%2Fturbogears%2Fbrowse_frm%2Fthread%2Fbb7a6115ca7028c9%2F7bffb1c3622af7a4%3Flnk%3Dst%26q%3Dcheetah+python%26rnum%3D9%26#doc_7bffb1c3622af7a4 + $formatQuote("I've used Cheetah quite a bit and it's a very good package.", + '<a href="http://turbogears.org/">Kevin Dangoor</a>, lead developer of TurboGears') + + $formatQuote("""Cheetah is an extremely effective Python-powered template + engine that can generate any text-based format. Cheetah's impressive yet + simple template language (based on Python) can yield the most complex of + documents ... Cheetah is surprisingly simple to use""", + c'''<a href="http://www.onlamp.com/pub/a/python/2005/01/13/cheetah.html">Andrew + Glover</a>, in an article published on O$(apos)Reilly ONLamp.com''') + + ##http://groups.google.com/group/comp.lang.python/tree/browse_frm/thread/4865ad8dced9d4db/133ada37370deb55?rnum=1&q=cheetah+python&_done=%2Fgroup%2Fcomp.lang.python%2Fbrowse_frm%2Fthread%2F4865ad8dced9d4db%2Ff932e1952225168c%3Flnk%3Dst%26q%3Dcheetah+python%26rnum%3D95%26#doc_f932e1952225168c + + $formatQuote("Regarding the template engine, the best one I'm aware of is Cheetah.", 'Alessandro Bottoni') + + $formatQuote("""Just a quick note to say thanks for the work you've put into + Cheetah. I had this unholy hack of several perl scripts to do my html + templating. After seeing the light and moving to Python, I dreaded + rewriting all of that working code. But, after finding Cheetah, I seriously + had something working in under an hour that is way better than all of those + perl scripts that took me weeks to write. Awesome stuff.""", "Rob McMullen") + + $formatQuote("""I write to say THANK YOU again! I'm very pleased to see such a friendly + community. I appreciate your help! =)""", 'Timur Izhbulatov') + + $formatQuote("""I hand it to the makers: Cheetah is great stuff. I've used + WebMacro for years and this even improves on it. Specifically I like the + blocks/functions and the ability to dynamically derive (thanks to python for + that""", 'Torsten Rueger') + + ##http://groups.google.com/group/comp.lang.python/tree/browse_frm/thread/eac957ba7c426e30/3ebe6739c8c41752?rnum=31&q=cheetah+python&_done=%2Fgroup%2Fcomp.lang.python%2Fbrowse_frm%2Fthread%2Feac957ba7c426e30%2Fa3b9cd8f6cc9e640%3Flnk%3Dst%26q%3Dcheetah+python%26rnum%3D12%26#doc_c166b21577e3ad06 + $formatQuote("""But, the problem is PHP itself has so many bad features that I + prefer rather Python to PHP. And I like Cheetah's inheritence aproach + because it is scales very well for complicated web pages. I can develop + internet application much faster using Python (e.g. using application, very + cool and pythonic Cherry2) and Cheetah. And because extending templates + using OO techniques is tthe feature I like, I would rather choose Cheetach + than ZPT, SimleTAL, Nevow and similar solutions.""", 'Jaroslaw Zabiello') + + + ## http://groups.google.com/group/comp.lang.python/tree/browse_frm/thread/adbc3058a431f1b8/5b49623e0a8c782c?rnum=31&q=cheetah+template&_done=%2Fgroup%2Fcomp.lang.python%2Fbrowse_frm%2Fthread%2Fadbc3058a431f1b8%2F3a45e7ec2e495bd2%3Flnk%3Dst%26q%3Dcheetah+template%26rnum%3D67%26#doc_3a45e7ec2e495bd2 + $formatQuote("""Another great bonus of Spyce is that it can work with Cheetah, + the one templating system which I felt like I could live with.""", 'Jonathan P.') + + ## http://groups.google.com/group/comp.lang.python/tree/browse_frm/thread/6ac8c68b6060003e/f3a99fd7ec17d6d5?rnum=1&q=cheetah+template&_done=%2Fgroup%2Fcomp.lang.python%2Fbrowse_frm%2Fthread%2F6ac8c68b6060003e%2F40fe71c3d3ab0bd8%3Flnk%3Dst%26q%3Dcheetah+template%26rnum%3D22%26#doc_40fe71c3d3ab0bd8 + $formatQuote( + """My graphist and me found it excellent, fast, clear, simple, stable: Pythonic! + We found the others engines too verbose ... I use it to generate html, latex and xml""", + 'Wilk') + + $formatQuote("""I was going to try and learn Kid, but I'm in a bit of a hurry, + and Cheetah's much closer to what I'm used to.""", 'Dave Benjamin') + + $formatQuote("""Personally, I prefer to Cheetah Templates to PSP - it plays better in the OO + world, and I can use intelligent HTML/XML/SGML editors on the files.""", 'Mike Meyer') + + #end call +#end def +################################################################################ +#def formatQuote(quote, citation) + <div class="quote"> + <span class="quote">“$quote”</span> + <div class="citation"> + <cite>-$citation</cite> + </div> + </div> +#end def +################################################################################ +#def shortPraiseSection(extraItems=None) + + $formatQuote("I'm enamored with Cheetah", + '''<a + href="http://www.intertwingly.net/wiki/pie/SamRuby">Sam Ruby</a>, + senior member of IBM\'s Emerging Technologies Group & director of Apache Software Foundation''') + + $formatQuote("""Give Cheetah a try. You won't regret + it. ... Cheetah is a truly powerful system. ... Cheetah is a serious + contender for the 'best of breed' Python templating.""", + '''<a + href="http://conferences.oreillynet.com/cs/os2005/view/e_spkr/1541">Alex + Martelli</a>, Google uber techie, core Python developer + & author of several popular Python books''') + + #if extraItems then extraItems else '' + +#end def +################################################################################ +#def sourceforgeWebBug +<img src="http://sourceforge.net/sflogo.php?group_id=28961&type=1" + width="0" height="0" ## width="88" height="31" + border="0" alt="SourceForge.net Logo" /> +#end def +################################################################################ +#def pythonFrameworksUsing(includeWrapperText=True, sep=',', includeWebwareInList=False) + + #if includeWrapperText + <p>Cheetah was originally designed to integrate with <a + href="http://www.webwareforpython.org/">Webware for Python</a>, a + Python-powered application server, but it can be used with <b>any</b> Python + web framework. It is being used with + #end if + + #if includeWebwareInList + <a href="http://www.webwareforpython.org/">Webware for Python</a>$sep + #end if + <a href="http://aquarium.sourceforge.net/">Aquarium</a>$sep + <a href="http://www.modpython.org/">mod_python</a>$sep + <a href="http://quixote.ca/qx/TemplatingWithCheetah">Quixote</a>$sep + <a href="http://www.cherrypy.org/">CherryPy</a>, + <a href="http://www.turbogears.org/">TurboGears</a>$sep + <a href="http://www.djangoproject.com/">Django</a>$sep + <a href="http://pythonpaste.org/">Paste</a>$sep + <a href="http://subway.python-hosting.com/">Subway</a>$sep + <a href="http://www.pythonweb.org/projects/webmodules/">Python Web Modules</a>$sep + <a href="http://spyce.sourceforge.net/">Spyce</a>$sep + <a href="http://www.ivy.fr/tahchee/">Tahchee</a>$sep + <a href="http://www.cs.virginia.edu/~lab2q/">plain-old-cgi</a>$sep + + #if includeWrapperText + and others. Most of these frameworks provide automatic session, cookie, and + user management and can be used with almost any operating-system, web + server, or database.</p> + #end if +#end def diff --git a/www/images/banner copy.jpg b/www/images/banner copy.jpg Binary files differnew file mode 100755 index 0000000..173f8c6 --- /dev/null +++ b/www/images/banner copy.jpg diff --git a/www/images/banner2.jpg b/www/images/banner2.jpg Binary files differnew file mode 100755 index 0000000..44face0 --- /dev/null +++ b/www/images/banner2.jpg diff --git a/www/images/banner3.jpg b/www/images/banner3.jpg Binary files differnew file mode 100755 index 0000000..8b48927 --- /dev/null +++ b/www/images/banner3.jpg diff --git a/www/images/banner_cheetah.jpg b/www/images/banner_cheetah.jpg Binary files differnew file mode 100755 index 0000000..acb4439 --- /dev/null +++ b/www/images/banner_cheetah.jpg diff --git a/www/images/banner_text.gif b/www/images/banner_text.gif Binary files differnew file mode 100755 index 0000000..2f53297 --- /dev/null +++ b/www/images/banner_text.gif diff --git a/www/images/blank.gif b/www/images/blank.gif Binary files differnew file mode 100644 index 0000000..2e31f4e --- /dev/null +++ b/www/images/blank.gif diff --git a/www/images/bottom_border_shadow.gif b/www/images/bottom_border_shadow.gif Binary files differnew file mode 100644 index 0000000..9b0ba85 --- /dev/null +++ b/www/images/bottom_border_shadow.gif diff --git a/www/images/bottom_plus_leftcorner_border_shadow.gif b/www/images/bottom_plus_leftcorner_border_shadow.gif Binary files differnew file mode 100644 index 0000000..0a6d098 --- /dev/null +++ b/www/images/bottom_plus_leftcorner_border_shadow.gif diff --git a/www/images/cheetah-face-black-medium.jpg b/www/images/cheetah-face-black-medium.jpg Binary files differnew file mode 100755 index 0000000..fb4ad32 --- /dev/null +++ b/www/images/cheetah-face-black-medium.jpg diff --git a/www/images/cheetah-face-black.jpg b/www/images/cheetah-face-black.jpg Binary files differnew file mode 100755 index 0000000..ace02c8 --- /dev/null +++ b/www/images/cheetah-face-black.jpg diff --git a/www/images/cheetah-face-original.jpg b/www/images/cheetah-face-original.jpg Binary files differnew file mode 100755 index 0000000..a63cd21 --- /dev/null +++ b/www/images/cheetah-face-original.jpg diff --git a/www/images/cheetah-face.jpg b/www/images/cheetah-face.jpg Binary files differnew file mode 100755 index 0000000..dace106 --- /dev/null +++ b/www/images/cheetah-face.jpg diff --git a/www/images/cheetah-face_medium.jpg b/www/images/cheetah-face_medium.jpg Binary files differnew file mode 100755 index 0000000..261888b --- /dev/null +++ b/www/images/cheetah-face_medium.jpg diff --git a/www/images/cheetah-homepage-title.gif b/www/images/cheetah-homepage-title.gif Binary files differnew file mode 100644 index 0000000..91550ed --- /dev/null +++ b/www/images/cheetah-homepage-title.gif diff --git a/www/images/contents.gif b/www/images/contents.gif Binary files differnew file mode 100644 index 0000000..6d299c4 --- /dev/null +++ b/www/images/contents.gif diff --git a/www/images/img1.gif b/www/images/img1.gif Binary files differnew file mode 100644 index 0000000..cd78984 --- /dev/null +++ b/www/images/img1.gif diff --git a/www/images/img2.gif b/www/images/img2.gif Binary files differnew file mode 100644 index 0000000..d097a10 --- /dev/null +++ b/www/images/img2.gif diff --git a/www/images/index.gif b/www/images/index.gif Binary files differnew file mode 100644 index 0000000..32eecfb --- /dev/null +++ b/www/images/index.gif diff --git a/www/images/leftcorner_border_shadow.gif b/www/images/leftcorner_border_shadow.gif Binary files differnew file mode 100644 index 0000000..7191d04 --- /dev/null +++ b/www/images/leftcorner_border_shadow.gif diff --git a/www/images/modules.gif b/www/images/modules.gif Binary files differnew file mode 100644 index 0000000..f5860b6 --- /dev/null +++ b/www/images/modules.gif diff --git a/www/images/next.gif b/www/images/next.gif Binary files differnew file mode 100644 index 0000000..5dcaff8 --- /dev/null +++ b/www/images/next.gif diff --git a/www/images/previous.gif b/www/images/previous.gif Binary files differnew file mode 100644 index 0000000..de1da16 --- /dev/null +++ b/www/images/previous.gif diff --git a/www/images/right_border_shadow.gif b/www/images/right_border_shadow.gif Binary files differnew file mode 100644 index 0000000..d51bb4c --- /dev/null +++ b/www/images/right_border_shadow.gif diff --git a/www/images/sourceforge_logo.gif b/www/images/sourceforge_logo.gif Binary files differnew file mode 100644 index 0000000..08589d2 --- /dev/null +++ b/www/images/sourceforge_logo.gif diff --git a/www/images/spacer.gif b/www/images/spacer.gif Binary files differnew file mode 100755 index 0000000..5bfd67a --- /dev/null +++ b/www/images/spacer.gif diff --git a/www/images/top_border_shadow.gif b/www/images/top_border_shadow.gif Binary files differnew file mode 100644 index 0000000..7091807 --- /dev/null +++ b/www/images/top_border_shadow.gif diff --git a/www/images/up.gif b/www/images/up.gif Binary files differnew file mode 100644 index 0000000..a9d3e13 --- /dev/null +++ b/www/images/up.gif diff --git a/www/screen.css b/www/screen.css new file mode 100644 index 0000000..7b5a5b1 --- /dev/null +++ b/www/screen.css @@ -0,0 +1,271 @@ +body { + background-color: black; + padding-bottom: 20px; + color: #000033; + font-family: verdana, "Lucida Grande", arial, helvetica, sans-serif; +} + +.banner { + padding: 0px; + margin: 0px; + /* background-color: red; */ +} +.banner img { + padding: 0px; + margin: 0px; + border: 0px solid blue; + vertical-align: bottom; +} + +img.bannerText { + padding-left: 35px; +} + +h1 { +} +h1.mainText { + margin: 7px 2px; + font-weight: bold; + font-size: small; +} + +p, .mainText { + margin-left: 5px; +} +div.pageOuterWrapper { + padding-left: 5%; + padding-right: 5%; + text-align: center; +} + +div.pageInnerWrapper0 { +} + +div.pageInnerWrapper1 { + text-align: left; + border: 1px solid #6699FF; + background-color: #3366CC; + padding-left: 8px; + padding-right: 8px; + padding-bottom: 8px; +} + +div.pageInnerWrapper2 { + border: 1px solid #6699FF; + background-color: #6699FF; + padding: 0px; +} + +div.pageInnerWrapper3 { + border-bottom: 1px solid #222; + border-top: 1px solid #222; + border-right: 1px solid #222; + border-left: 0px solid #222; + background-color: white; + + background: + url("images/bottom_plus_leftcorner_border_shadow.gif") + white repeat-x top left; + padding-top: 7px; +} + +html>body div.pageInnerWrapper3 { + border-top: 0px solid black; + background: + url("images/bottom_border_shadow.gif") + white repeat-x top; + padding-top: 8px; +} + +/* ie6 ignores this selector */ +div.pageInnerWrapper3:before { + content: " "; + display: block; + width: 8px; + height: 8px; + background: + url("images/leftcorner_border_shadow.gif") + white repeat-y left; + position: absolute; + top: 0; + right: 0; + margin: -8px 0 0 0px; + border: 0px; + background-position: right top; +} + + +div.pageInnerWrapper4 { + background-color: white; + background: + url("images/right_border_shadow.gif") + white repeat-y left; + padding-left: 8px; +} + +div.pageInnerWrapper5 { + background-color: white; + padding: 15px; + padding-top: 7px; + padding-left: 7px; +} + +html>body div.pageInnerWrapper5 { + /* + background: + url("images/left_border_shadow.gif") + white repeat-y right; + */ +} + + +.navBarContainer { + color: white; + padding: 4px 0px; +} + +.navBar, a.navBar:link, a.navBar:visited { + text-decoration: none; + font-weight: bold; + font-size: small; + font-size: 12px; + color: white; +} + +a.navBar:hover, a.navBar:active { + text-decoration: underline; +} + +a.navBar.activePage { + color: #FFFF88; + text-decoration: none; +} + + +span.navBarSep { + color: #6699FF; + padding-left: 12px; + padding-right: 12px; +} + + +div.homePageUtilLinks { + margin-top: 22px; + padding: 5px; + border-bottom: 1px solid #ccc; + background-color: #f9f9f9; +} + +div.homePageUtilLinks span.sep { + color: #999; + padding-left: 12px; + padding-right: 12px; +} + +div.homePageQuotes { + border-left: 1px solid #ccc; + border-right: 1px solid #ccc; + border-bottom: 1px solid #ccc; + padding: 8px; +} + +div.quote { + font-size: 14px; + font-family: georgia, "Times New Roman", serif; + padding-top: 8px; + padding-bottom: 8px; +} + +div.citation { + padding-top: 8px; + color: #A69E8A; +} + +span.quote { + color: #333; +} +a.quotesLink, a.quotesLink:link, a.quotesLink:visited { + color: #A69E8A; +} + +div.homePageDownloadBar { + border-top: 1px solid #c1c5c9; + border-left: 1px solid #c1c5c9; + border-bottom: 1px solid #717579; + border-right: 1px solid #717579; + background-color: #f9f9f9; +} + +div.homePageDownloadBarInner { + border: 1px solid white; + background-color: #f0f0f0; + padding: 8px; +} + + + +.attributionFooter { + border-top: 1px solid #ddd; + padding-top: 10px; + padding-left: 10px; + padding-right: 30px; + font-size: 11px; + color: #666; +} + +.copyrightFooter { + font-size: 12px; + color: #ccc; +} +.sourceforgeFooter { + padding-top: 20px; + font-size: 11px; + color: white; +} +.insetBoxTitleContainer { + padding: 2px 5px; + font-weight: bold; + color: white; +} + +.insetBoxTitle { + text-decoration: none; + font-weight: bold; + font-size: x-small; + color: white; +} + +.insetBoxContainer { + padding: 2px 2px 2px 5px; +} + +.insetBox { + font-size: x-small; +} + +h1.insetBox { + margin: 5px 5px; + font-weight: bold; + font-size: x-small; + padding: 0px; +} + +p.insetBox { + margin: 2px 5px 7px 10px; + padding: 0px; +} + +a.insetBox:link, a.insetBox:visited { + text-decoration: none; + font-size: x-small; +} +a.insetBox:hover, a.insetBox:active { + text-decoration: underline; +} +.listItems { + margin-bottom: 200px; +} + +ul.topLevel > li { + margin-bottom: 8px; +} |