Skip to content
Browse files

A alternative clean&Simple design for lift home.

  • Loading branch information...
1 parent 4748f78 commit 87dedd845131bb4acc742769cb0f5ec516fa54ca @karma4u101 karma4u101 committed
View
127 site/api_docs.cms.xml
@@ -1,53 +1,78 @@
<cms path="/api_docs" serve="true" type="html" locale="en_US" host="liftweb.net">
- <tag name="name" value="api_docs"/>
- <tag name="menu" value="API Docs"/>
- <tag name="order" value="4"/>
- <content>
- <lift:surround with="default" at="content">
- <head>
- <title>Lift :: API Documentation</title>
- </head>
-
- <div class="row-fluid">
- <div class="span12">
-
- <div class="row-fluid">
- <div class="span9">
-
- <h1>Lift API Docs</h1>
-
- <p>
- <a href="http://scala-tools.org/mvnsites/liftweb-2.4/">Lift 2.4 API documentation</a> and the
- <a href="http://scala-tools.org/mvnsites/liftweb-2.4.tar.bz2">tarball</a>.
- </p>
-
- <p>
- <a href="http://scala-tools.org/mvnsites/liftweb-2.3/">Lift 2.3 API documentation</a> and the
- <a href="http://scala-tools.org/mvnsites/liftweb-2.3.tar.bz2">tarball</a>.
- </p>
-
- <p>
- <a href="http://scala-tools.org/mvnsites/liftweb-2.2/framework/scaladocs/index.html">Lift 2.2 documentation</a> |
- <a href="http://scala-tools.org/mvnsites/liftweb-2.2.tar.bz2">Doc tarball</a> |
- <a href="http://vscaladoc.alchim31.net/navigator/api/lift_2.8.1/2.2-RC1">Lift 2.2-RC1 (Scala 2.8) docs</a> (note: there were no material API changes between Lift 2.2-RC1 and Lift 2.2, we will update this link when DavidB rebuilds the VScalaDoc2-based documentation)
- </p>
-
- <p><a href="http://main.scala-tools.org/mvnsites/liftweb-2.1/framework/scaladocs/index.html">Lift 2.1 API documentation</a> (Note the Scala 2.7.7 docs cover all the 2.8 APIs and VScalaDoc is not yet available for Scala 2.8)</p>
-
- <p><a href="http://scala-tools.org/mvnsites/liftweb-2.1.tar.bz2">Lift 2.1 API doc tarball</a> (Note unified ScalaDocs are coming very soon)</p>
-
- <p><a href="http://main.scala-tools.org/mvnsites/liftweb-2.0/framework/scaladocs/index.html">Lift 2.0 API documentation</a></p>
-
- <p><a href="http://scala-tools.org/mvnsites/liftweb-1.0.2/lift-webkit/scaladocs/index.html">Lift 1.0.2 WebKit API documentation</a></p>
-
- </div>
- <div class="span3">
- <lift:embed what="col2"/>
- </div>
- </div>
-
- </div>
- </div>
- </lift:surround>
- </content>
+ <tag name="name" value="api_docs" />
+ <tag name="menu" value="API Docs" />
+ <tag name="order" value="4" />
+ <content>
+ <lift:surround with="default" at="content">
+ <head>
+ <title>Lift :: API Documentation</title>
+ </head>
+
+ <div class="row-fluid">
+ <div class="span12">
+
+ <div class="row-fluid">
+ <div class="span9">
+
+ <h1>Lift API Docs</h1>
+
+ <p>
+ <a href="http://scala-tools.org/mvnsites/liftweb-2.4/">Lift 2.4 API documentation</a>
+ and the
+ <a href="http://scala-tools.org/mvnsites/liftweb-2.4.tar.bz2">tarball</a>
+ .
+ </p>
+
+ <p>
+ <a href="http://scala-tools.org/mvnsites/liftweb-2.3/">Lift 2.3 API documentation</a>
+ and the
+ <a href="http://scala-tools.org/mvnsites/liftweb-2.3.tar.bz2">tarball</a>
+ .
+ </p>
+
+ <p>
+ <a
+ href="http://scala-tools.org/mvnsites/liftweb-2.2/framework/scaladocs/index.html">Lift 2.2 documentation</a>
+ |
+ <a href="http://scala-tools.org/mvnsites/liftweb-2.2.tar.bz2">Doc tarball</a>
+ |
+ <a
+ href="http://vscaladoc.alchim31.net/navigator/api/lift_2.8.1/2.2-RC1">Lift 2.2-RC1 (Scala 2.8) docs</a>
+ (note: there were no material API changes between Lift 2.2-RC1
+ and Lift 2.2, we will update this link when DavidB rebuilds the
+ VScalaDoc2-based documentation)
+ </p>
+
+ <p>
+ <a
+ href="http://main.scala-tools.org/mvnsites/liftweb-2.1/framework/scaladocs/index.html">Lift 2.1 API documentation</a>
+ (Note the Scala 2.7.7 docs cover all the 2.8 APIs and VScalaDoc
+ is not yet available for Scala 2.8)
+ </p>
+
+ <p>
+ <a href="http://scala-tools.org/mvnsites/liftweb-2.1.tar.bz2">Lift 2.1 API doc tarball</a>
+ (Note unified ScalaDocs are coming very soon)
+ </p>
+
+ <p>
+ <a
+ href="http://main.scala-tools.org/mvnsites/liftweb-2.0/framework/scaladocs/index.html">Lift 2.0 API documentation</a>
+ </p>
+
+ <p>
+ <a
+ href="http://scala-tools.org/mvnsites/liftweb-1.0.2/lift-webkit/scaladocs/index.html">Lift 1.0.2 WebKit API documentation</a>
+ </p>
+
+ </div>
+ <div class="span3">
+ <lift:embed what="col2" />
+ </div>
+ </div>
+
+ </div>
+ </div>
+ </lift:surround>
+ </content>
</cms>
View
201 site/community.cms.xml
@@ -1,95 +1,126 @@
<cms path="/community" serve="true" type="html" locale="en_US" host="liftweb.net">
- <tag name="name" value="community"/>
- <tag name="menu" value="Community"/>
- <tag name="order" value="5"/>
- <content>
- <lift:surround with="default" at="content">
- <head>
- <title>Lift :: Community</title>
- </head>
-
- <div class="row-fluid">
- <div class="span12">
+ <tag name="name" value="community" />
+ <tag name="menu" value="Community" />
+ <tag name="order" value="5" />
+ <content>
+ <lift:surround with="default" at="content">
+ <head>
+ <title>Lift :: Community</title>
+ </head>
- <div class="row-fluid">
- <div class="span9">
+ <div class="row-fluid">
+ <div class="span12">
- <h1>The Lift Community</h1>
- <p>
- The Lift community strives to be a warm and welcoming place to newbies and seasoned users alike.
- If you've got a question, the community will try to provide a substantive answer (not RTFM.)
- </p>
+ <div class="row-fluid">
+ <div class="span9">
- <p>
- The <a href="http://groups.google.com/group/liftweb">Lift mailing list</a> is the official support channel for Lift.
- The IRC channel is a popular, but unofficial, support channel for Lift.
- </p>
-
- <p>
- The following are not ways to get support for Lift:
- <ul>
- <li>Personal email to one of the committers (unless you have a relationship with that committer)</li>
- <li>Personal IM with the committers (unless you know them very well)</li>
- <li>Twitter... the Lift committers don't monitor Twitter for Lift support requests</li>
- <li>GitHub... don't use GitHub messages.
- None of the Lift committer will pull from your repository.
- The Lift IP is clean which means that unless you are a committer and you have written the code yourself,
- it doesn't get into Lift. This allows businesses to use Lift knowing what the provenance of the code is.
- </li>
- </ul>
- </p>
+ <h1>The Lift Community</h1>
+ <p>
+ The Lift community strives to be a warm and welcoming place to
+ newbies and seasoned users alike.
+ If you've got a question, the community will try to provide a
+ substantive answer (not RTFM.)
+ </p>
- <p>
- Please be polite on the Lift mailing list. Please say "please" and "thank you."
- The community tries to be timely with answers, but very often a question may not get an
- answer for a few days. Being a squeaky wheel about getting an answer will not make it
- happen any faster. There are people on the Lift list who are consultants. If you need
- support in a timely manner and are willing to pay, please make that offer.
- </p>
+ <p>
+ The
+ <a href="http://groups.google.com/group/liftweb">Lift mailing list</a>
+ is the official support channel for Lift.
+ The IRC channel is a popular, but unofficial, support channel for
+ Lift.
+ </p>
- <p>
- Disagreements... there are plenty of ways to approach technical issues. Lift was built from user
- feedback and we try to foster a community in which feedback is encouraged. But this
- implies certain ground rules:
- <ul>
- <li>You can disagree with a person's opinion, but please continue to respect the person</li>
- <li>Using words like "nightmare", "sucks", and other similar words will not help your cause.
- Please spend time working on the positives of your position rather than focusing on the
- negatives of other peoples' positions.</li>
- <li>You may have to agree to disagree</li>
- </ul>
- </p>
+ <p>
+ The following are not ways to get support for Lift:
+ <ul>
+ <li>Personal email to one of the committers (unless you have a
+ relationship with that committer)</li>
+ <li>Personal IM with the committers (unless you know them very
+ well)</li>
+ <li>Twitter... the Lift committers don't monitor Twitter for
+ Lift support requests</li>
+ <li>GitHub... don't use GitHub messages.
+ None of the Lift committer will pull from your repository.
+ The Lift IP is clean which means that unless you are a committer
+ and you have written the code yourself,
+ it doesn't get into Lift. This allows businesses to use Lift
+ knowing what the provenance of the code is.
+ </li>
+ </ul>
+ </p>
- <p>
- New member of the group are moderated (this radically reduces spam). You may have to wait
- 2 to 24 hours for a post to be moderated. Please do not repost the same question if you don't
- see it show up immediately.
- </p>
-
- <p>
- Lift is an open source project done entirely by volunteers. The Lift documentation is not professional.
- If you would like improvements to the documentation, please write wiki articles. Posting complaints
- about the documentation on the mailing list does not help it appear faster. Posting questions
- and summarizing the answer into a wiki post on the other hand will earn you faster and more detailed
- answers in the future.
- </p>
+ <p>
+ Please be polite on the Lift mailing list. Please say "please" and
+ "thank you."
+ The community tries to be timely with answers, but very often a
+ question may not get an
+ answer for a few days. Being a squeaky wheel about getting an answer
+ will not make it
+ happen any faster. There are people on the Lift list who are
+ consultants. If you need
+ support in a timely manner and are willing to pay, please make that
+ offer.
+ </p>
- <p>
- Please also read <a href="http://lift.la/the-loyal-opposition">The Loyal Opposition</a>.
- Before opening a ticket, please discuss it on the Lift Google Group. For more information,
- <a href="https://www.assembla.com/wiki/show/liftweb/Creating_tickets">Creating Tickets</a>
- outlines the rules for opening tickets. We have this policy to keep Lift-related discussions
- in the open and available to every community member.
- </p>
+ <p>
+ Disagreements... there are plenty of ways to approach technical
+ issues. Lift was built from user
+ feedback and we try to foster a community in which feedback is
+ encouraged. But this
+ implies certain ground rules:
+ <ul>
+ <li>You can disagree with a person's opinion, but please
+ continue to respect the person</li>
+ <li>Using words like "nightmare", "sucks", and other similar
+ words will not help your cause.
+ Please spend time working on the positives of your position rather
+ than focusing on the
+ negatives of other peoples' positions.
+ </li>
+ <li>You may have to agree to disagree</li>
+ </ul>
+ </p>
- </div>
- <div class="span3">
- <lift:embed what="col2"/>
- </div>
- </div>
-
- </div>
- </div>
- </lift:surround>
- </content>
+ <p>
+ New member of the group are moderated (this radically reduces
+ spam). You may have to wait
+ 2 to 24 hours for a post to be moderated. Please do not repost
+ the same question if you don't
+ see it show up immediately.
+ </p>
+
+ <p>
+ Lift is an open source project done entirely by volunteers. The Lift
+ documentation is not professional.
+ If you would like improvements to the documentation, please write
+ wiki articles. Posting complaints
+ about the documentation on the mailing list does not help it appear
+ faster. Posting questions
+ and summarizing the answer into a wiki post on the other hand will
+ earn you faster and more detailed
+ answers in the future.
+ </p>
+
+ <p>
+ Please also read
+ <a href="http://lift.la/the-loyal-opposition">The Loyal Opposition</a>
+ .
+ Before opening a ticket, please discuss it on the Lift Google Group.
+ For more information,
+ <a href="https://www.assembla.com/wiki/show/liftweb/Creating_tickets">Creating Tickets</a>
+ outlines the rules for opening tickets. We have this policy to
+ keep Lift-related discussions
+ in the open and available to every community member.
+ </p>
+
+ </div>
+ <div class="span3">
+ <lift:embed what="col2" />
+ </div>
+ </div>
+
+ </div>
+ </div>
+ </lift:surround>
+ </content>
</cms>
View
20 site/demo.cms.xml
@@ -0,0 +1,20 @@
+<cms path="/wiki" serve="true" type="html" locale="en_US" host="liftweb.net">
+ <tag name="redirect" value="http://demo.liftweb.net" />
+ <tag name="name" value="demo" />
+ <tag name="menu" value="Demo" />
+ <tag name="order" value="10" />
+ <content>
+ <lift:surround with="default" at="content">
+ <head>
+ <title>Lift :: Demo</title>
+ </head>
+
+ <script>
+ // <![CDATA[
+ window.location = "http://demo.liftweb.net";
+ // ]]>
+ </script>
+
+ </lift:surround>
+ </content>
+</cms>
View
206 site/download.cms.xml
@@ -1,96 +1,124 @@
<cms path="/download" serve="true" type="html" locale="en_US" host="liftweb.net">
- <tag name="name" value="download"/>
- <tag name="menu" value="Download"/>
- <tag name="order" value="3"/>
- <content>
- <lift:surround with="default" at="content">
- <head>
- <title>Lift :: Download</title>
- </head>
+ <tag name="name" value="download" />
+ <tag name="menu" value="Download" />
+ <tag name="order" value="3" />
+ <content>
+ <lift:surround with="default" at="content">
+ <head>
+ <title>Lift :: Download</title>
+ </head>
- <div class="row-fluid">
- <div class="span12">
+ <div class="row-fluid">
+ <div class="span12">
- <div class="row-fluid">
- <div class="span9">
-
- <h1>DOWNLOAD and run using the Simply Build Tool (sbt)</h1>
- <p>
- <h2>*Note about jQuery and <a href="/jquery">Lift 2.5</a></h2>
- <div>Download</div>
- <ul>
- <li>Lift 2.4 release:
- <a href="https://github.com/lift/lift_24_sbt/tarball/master">TAR</a> or
- <a href="https://github.com/lift/lift_24_sbt/zipball/master">Zip</a>.
- <br/>
- Expand the project and cd into the directory and the "scala_28/lift_basic" subdirectory.
- Then type <pre><code>sbt update ~jetty-run</code></pre>
- and you should be able to browse to
- <code>http://localhost:8080</code> and see your running
- Lift app.
- <hr/>
- </li>
- <li>Lift 2.3 release:
- <a href="https://github.com/lift/lift_23_sbt/tarball/master">TAR</a> or
- <a href="https://github.com/lift/lift_23_sbt/zipball/master">Zip</a>.
- <br/>
- Expand the project and cd into the directory and the "lift_basic" subdirectory.
- Then type <pre><code>sbt update ~jetty-run</code></pre>
- and you should be able to browse to
- <code>http://localhost:8080</code> and see your running
- Lift app.
- <hr/>
- </li>
+ <div class="row-fluid">
+ <div class="span9">
- <li>Lift 2.2 release
- <a href="https://github.com/lift/lift_22_sbt/tarball/2.2">Tar</a> or
- <a href="https://github.com/lift/lift_22_sbt/zipball/2.2">Zip</a>.
- </li>
+ <h1>
+ Download
+ <small>and run using the Simply Build Tool (sbt)</small>
+ </h1>
+ <p>
+ <div class="alert alert-info">
+ *Note about jQuery and
+ <a href="/jquery">Lift 2.5</a>
+ </div>
- <li>
- Lift 2.1 release <a href="http://github.com/lift/lift_21_sbt/tarball/Lift_21">Tar</a> or
- <a href="http://github.com/lift/lift_21_sbt/zipball/Lift_21">Zip</a>
- </li>
- </ul>
-
- Expand the project and cd into the newly created
- directory. Then type <pre><code>sbt update ~jetty-run</code></pre>
- and you should be able to browse to
- <code>http://localhost:8080</code> and see your running
- Lift app.
- </p>
- <!--
- <h1>DOWNLOAD and run using Maven</h1>
-
- <p>If you already have <a href="http://maven.apache.org/download.html">Apache Maven 2.2.0+</a>
- or later installed and configured on your system, you already have everything you need to get started.
- If you currently don't have Maven installed, you can either install Maven manually using
- <a href="http://maven.apache.org/download.html">these instructions</a>. Alternatively, you can use
- one of our installers below:</p>
- <div id="macosx">
- <h2>Mac OSX (10.4+)</h2>
- <p>Download the installer <a href="http://scala-tools.org/lift_installer.dmg">here</a></p>
- </div>
- <div id="windows">
- <h2>Windows</h2>
- <p>Download the installer <a href="http://scala-tools.org/lift_installer.exe">here</a></p>
- </div>
- <div id="linux">
- <h2>Linux</h2>
- <p>For linux, we recommend that you use your native package management system to install
- maven. If you are unsure how to do this, please refer to your OS documentation.</p>
- -->
- <p>If you are having problems getting started on Linux, head over to
- the <a href="http://groups.google.com/group/liftweb">mailing list.</a></p>
- <!-- </div> -->
+ <div>
+ <span class="label label-info">Download</span>
+ </div>
+ <ul>
+ <li>
+ Lift 2.4 release:
+ <a href="https://github.com/lift/lift_24_sbt/tarball/master">TAR</a>
+ or
+ <a href="https://github.com/lift/lift_24_sbt/zipball/master">Zip</a>
+ .
+ <br />
+ Expand the project and cd into the directory and the
+ "scala_28/lift_basic" subdirectory.
+ Then type
+ <pre>
+ <code>sbt update ~jetty-run</code>
+ </pre>
+ and you should be able to browse to
+ <code>http://localhost:8080</code>
+ and see your running
+ Lift app.
+ <hr />
+ </li>
+ <li>
+ Lift 2.3 release:
+ <a href="https://github.com/lift/lift_23_sbt/tarball/master">TAR</a>
+ or
+ <a href="https://github.com/lift/lift_23_sbt/zipball/master">Zip</a>
+ .
+ <br />
+ Expand the project and cd into the directory and the
+ "lift_basic" subdirectory.
+ Then type
+ <pre>
+ <code>sbt update ~jetty-run</code>
+ </pre>
+ and you should be able to browse to
+ <code>http://localhost:8080</code>
+ and see your running
+ Lift app.
+ <hr />
+ </li>
- </div>
- <div class="span3">
- <lift:embed what="col2"/>
- </div>
- </div>
- </div>
- </div>
- </lift:surround>
- </content>
+ <li>
+ Lift 2.2 release
+ <a href="https://github.com/lift/lift_22_sbt/tarball/2.2">Tar</a>
+ or
+ <a href="https://github.com/lift/lift_22_sbt/zipball/2.2">Zip</a>
+ .
+ </li>
+
+ <li>
+ Lift 2.1 release
+ <a href="http://github.com/lift/lift_21_sbt/tarball/Lift_21">Tar</a>
+ or
+ <a href="http://github.com/lift/lift_21_sbt/zipball/Lift_21">Zip</a>
+ </li>
+ </ul>
+
+ Expand the project and cd into the newly created
+ directory. Then type
+ <pre>
+ <code>sbt update ~jetty-run</code>
+ </pre>
+ and you should be able to browse to
+ <code>http://localhost:8080</code>
+ and see your running
+ Lift app.
+ </p>
+ <!-- <h1>DOWNLOAD and run using Maven</h1> <p>If you already have
+ <a href="http://maven.apache.org/download.html">Apache Maven 2.2.0+</a> or
+ later installed and configured on your system, you already have everything
+ you need to get started. If you currently don't have Maven installed, you
+ can either install Maven manually using <a href="http://maven.apache.org/download.html">these
+ instructions</a>. Alternatively, you can use one of our installers below:</p>
+ <div id="macosx"> <h2>Mac OSX (10.4+)</h2> <p>Download the installer <a href="http://scala-tools.org/lift_installer.dmg">here</a></p>
+ </div> <div id="windows"> <h2>Windows</h2> <p>Download the installer <a href="http://scala-tools.org/lift_installer.exe">here</a></p>
+ </div> <div id="linux"> <h2>Linux</h2> <p>For linux, we recommend that you
+ use your native package management system to install maven. If you are unsure
+ how to do this, please refer to your OS documentation.</p> -->
+ <p>
+ If you are having problems getting started on Linux, head over
+ to
+ the
+ <a href="http://groups.google.com/group/liftweb">mailing list.</a>
+ </p>
+ <!-- </div> -->
+
+ </div>
+ <div class="span3">
+ <lift:embed what="col2" />
+ </div>
+ </div>
+ </div>
+ </div>
+ </lift:surround>
+ </content>
</cms>
View
129 site/getting_started.cms.xml
@@ -1,53 +1,78 @@
-<cms path="/getting_started" serve="true" type="html" locale="en_US" host="liftweb.net" valid_from="2010/09/01">
- <tag name="name" value="getting_started"/>
- <tag name="menu" value="Getting Started"/>
- <tag name="order" value="2"/>
- <content>
- <lift:surround with="default" at="content">
- <head>
- <title>Lift :: Getting Started</title>
- </head>
-
- <div class="row-fluid">
- <div class="span12">
-
- <div class="row-fluid">
- <div class="span9">
- <h1>Getting Started</h1>
- <p>
- It's easy to <a href="http://simply.liftweb.net/index-Chapter-2.html#toc-Chapter-2">Get Started</a> with Lift.
- The Chat app that you build demonstrates a bunch of Lift's advanced features and how easy those
- features are accessed.
- </p>
-
- <h2>From an MVC background</h2>
- <p>
- If you're coming from an MVC background (like Rails, Struts, etc.), there's a
- <a href="http://simply.liftweb.net/index-Chapter-13.html#toc-Chapter-13">Chapter for you</a>.
- The code examples are included and you can run them yourself.
- </p>
-
- <h2>Some Videos</h2>
- <p>
- <ul>
- <li>Mar 2011 <a href="http://skillsmatter.com/podcast/scala/talk-by-david-pollak-creator-of-lift "> Lift: Transforming Web Development</a> by David Pollak</li>
-
- <li>Mar 2011 <a href="http://skillsmatter.com/podcast/scala/lift-framework-qa "> Q&amp;A on the Lift Framework</a> by David Pollak</li>
- <li>Jan 2011 <a href="http://tunaforcats.com/2011-01-04_Lift_Basics.wmv "> Basic #Lift training session video (unedited, WMV format)</a> by David Pollak, also available <a href="http://vimeo.com/18496998 "> on Vimeo</a></li>
-
- <li><a href="http://liftweb.blip.tv/ "> Lift on Blip.TV</a></li>
- </ul>
- </p>
-
- </div>
- <div class="span3">
- <lift:embed what="col2"/>
- </div>
- </div>
-
-
- </div>
- </div>
- </lift:surround>
- </content>
+<cms path="/getting_started" serve="true" type="html" locale="en_US"
+ host="liftweb.net" valid_from="2010/09/01">
+ <tag name="name" value="getting_started" />
+ <tag name="menu" value="Getting Started" />
+ <tag name="order" value="2" />
+ <content>
+ <lift:surround with="default" at="content">
+ <head>
+ <title>Lift :: Getting Started</title>
+ </head>
+
+ <div class="row-fluid">
+ <div class="span12">
+
+ <div class="row-fluid">
+ <div class="span9">
+ <h1>Getting Started</h1>
+ <p>
+ It's easy to
+ <a
+ href="http://simply.liftweb.net/index-Chapter-2.html#toc-Chapter-2">Get Started</a>
+ with Lift.
+ The Chat app that you build demonstrates a bunch of Lift's advanced
+ features and how easy those
+ features are accessed.
+ </p>
+
+ <h2>From an MVC background</h2>
+ <p>
+ If you're coming from an MVC background (like Rails, Struts,
+ etc.), there's a
+ <a
+ href="http://simply.liftweb.net/index-Chapter-13.html#toc-Chapter-13">Chapter for you</a>
+ .
+ The code examples are included and you can run them yourself.
+ </p>
+
+ <h2>Some Videos</h2>
+ <p>
+ <ul>
+ <li>
+ Mar 2011
+ <a
+ href="http://skillsmatter.com/podcast/scala/talk-by-david-pollak-creator-of-lift "> Lift: Transforming Web Development</a>
+ by David Pollak
+ </li>
+
+ <li>
+ Mar 2011
+ <a href="http://skillsmatter.com/podcast/scala/lift-framework-qa "> Q&amp;A on the Lift Framework</a>
+ by David Pollak
+ </li>
+ <li>
+ Jan 2011
+ <a href="http://tunaforcats.com/2011-01-04_Lift_Basics.wmv "> Basic #Lift training session video (unedited, WMV
+ format)</a>
+ by David Pollak, also available
+ <a href="http://vimeo.com/18496998 "> on Vimeo</a>
+ </li>
+
+ <li>
+ <a href="http://liftweb.blip.tv/ "> Lift on Blip.TV</a>
+ </li>
+ </ul>
+ </p>
+
+ </div>
+ <div class="span3">
+ <lift:embed what="col2" />
+ </div>
+ </div>
+
+
+ </div>
+ </div>
+ </lift:surround>
+ </content>
</cms>
View
17 site/happening/lift_co.cms.xml
@@ -17,10 +17,10 @@
<div class="row-fluid">
<div class="span12">
<div class="row-fluid">
- <div class="span8">
- <h2>Lift Co. Commercial Support for Lift</h2>
+ <div class="span9">
+ <h1>Lift Co. Commercial Support for Lift</h1>
<div class="row-fluid">
- <div class="span6">
+ <div class="span6">
<div class="icon"></div>
<h2>SLA Backed Support</h2>
<p>
@@ -38,8 +38,8 @@
Get the peace of mind that comes with Lift SLA-backed support.
</p>
<a href="http://liftweb.com">Find out more ></a>
- </div>
- <div class="span6">
+ </div>
+ <div class="span6">
<div class="icon"></div>
<h2>Training</h2>
<p>
@@ -57,9 +57,9 @@
</p>
<a href="http://liftweb.com">Find out more ></a>
</div>
- </div>
+ </div>
<div class="row-fluid">
- <div class="span6">
+ <div class="span6">
<div class="icon"></div>
<h2>Consulting</h2>
<p>
@@ -95,8 +95,9 @@
<a href="http://liftweb.com">Find out more ></a>
</div>
</div>
+
</div>
- <div class="span4">
+ <div class="span3">
<lift:embed what="col2" />
</div>
</div>
View
117 site/index.cms.xml
@@ -1,51 +1,70 @@
<cms path="/index" serve="true" type="html" locale="en_US" host="liftweb.net">
-<tag name="menu" value="Home"/>
-<tag name="order" value="1"/>
-<content>
- <lift:surround with="default" at="content" quotes="true">
- <head>
- <title>Lift :: Home</title>
- </head>
-
- <div class="row-fluid">
- <div class="span12">
-
- <lift:embed what="logocontainer"/>
-
- <div class="row-fluid">
- <div class="span9">
-
- <h1>What is Lift?</h1>
- <p>Lift is the most powerful, most secure web framework available today.
- There are <a href="http://seventhings.liftweb.net">Seven Things</a>
- that distinguish Lift from other web frameworks.
- Lift applications are:
- </p>
- <ul>
- <li>Secure -- Lift apps are resistant to common vulnerabilities including many of the OWASP Top 10</li>
- <li>Developer centeric -- Lift apps are fast to build, concise and easy to maintain</li>
- <li>Scalable -- Lift apps are high performance and scale in the real world to handle insane traffic levels</li>
- <li>Interactive like a desktop app -- Lift's Comet support is unparalled and Lift's ajax support is super-easy and very secure</li>
- </ul>
-
- <p>Read an <lift:a name="lift_overview">overview</lift:a> of how Lift achieves these important goals.</p>
-
- <p>Lift open source software licensed under an Apache 2.0 license.</p>
-
- <p><a href="http://demo.liftweb.net">See a Demo</a></p>
-
- <p>Because Lift applications are written in Scala, an elegant JVM language, you can still use your favorite Java libraries and deploy to your favorite Servlet Container and app server. Use the code you've already written and deploy to the container you've already configured!</p>
-
- </div>
- <div class="span3">
- <lift:embed what="col2"/>
- </div>
- </div>
-
-
- </div>
- </div>
-
- </lift:surround>
-</content>
+ <tag name="menu" value="Home" />
+ <tag name="order" value="1" />
+ <content>
+ <lift:surround with="default" at="content" quotes="true">
+ <head>
+ <title>Lift :: Home</title>
+ </head>
+
+ <div class="row-fluid">
+ <div class="span12">
+
+ <lift:embed what="logocontainer" />
+
+ <div class="row-fluid">
+ <div class="span9">
+
+ <h1>What is Lift?</h1>
+ <p>
+ Lift is the most powerful, most secure web framework available
+ today.
+ There are
+ <a href="http://seventhings.liftweb.net">Seven Things</a>
+ that distinguish Lift from other web frameworks.
+ Lift applications are:
+ </p>
+ <ul>
+ <li>Secure -- Lift apps are resistant to common vulnerabilities
+ including many of the OWASP Top 10</li>
+ <li>Developer centeric -- Lift apps are fast to build, concise
+ and easy to maintain</li>
+ <li>Scalable -- Lift apps are high performance and scale in the
+ real world to handle insane traffic levels</li>
+ <li>Interactive like a desktop app -- Lift's Comet support is
+ unparalled and Lift's ajax support is super-easy and very
+ secure</li>
+ </ul>
+
+ <p>
+ Read an
+ <lift:a name="lift_overview">overview</lift:a>
+ of how Lift achieves these important goals.
+ </p>
+
+ <p>Lift open source software licensed under an Apache 2.0
+ license.</p>
+
+ <p>
+ <a href="http://demo.liftweb.net">See a Demo</a>
+ </p>
+
+ <p>Because Lift applications are written in Scala, an elegant JVM
+ language, you can still use your favorite Java libraries and
+ deploy to your favorite Servlet Container and app server. Use
+ the code you've already written and deploy to the container
+ you've already configured!</p>
+
+ </div>
+ <div class="span3">
+ <lift:embed what="col2" />
+ </div>
+ </div>
+
+
+ </div>
+ </div>
+
+ </lift:surround>
+ </content>
</cms>
View
121 site/jquery.cms.xml
@@ -1,52 +1,79 @@
<cms path="/jquery" serve="true" type="html" locale="en_US" host="liftweb.net">
- <tag name="name" value="jQuery"/>
- <!--<tag name="menu" value="Download"/>-->
- <!--<tag name="order" value="3"/>-->
- <content>
- <lift:surround with="default" at="content">
- <head>
- <title>Lift :: Using jQuery</title>
- </head>
+ <tag name="name" value="jQuery" />
+ <!--<tag name="menu" value="Download"/> -->
+ <!--<tag name="order" value="3"/> -->
+ <content>
+ <lift:surround with="default" at="content">
+ <head>
+ <title>Lift :: Using jQuery</title>
+ </head>
- <div class="row-fluid">
- <div class="span12">
+ <div class="row-fluid">
+ <div class="span12">
- <div class="row-fluid">
- <div class="span9">
-
- <h1>Including jQuery in your project</h1>
- <p>Up until Lift 2.4, we included two versions of jQuery, 1.3 and 1.4. But both are very old versions by now. After some discussions on the
- mailing list we decided that the best solution moving forward was to require users include their own version of jQuery.</p>
- <h2>Options:</h2>
- <h3>Host your own</h3>
- <p>You can download jQuery and include it on your projects webapp/js folder (you may have to create the js folder).
- Then you reference this jQuery file in your template by using:
- <pre><code>&lt;script type="text/javascript" src="/js/jquery-1.7.2.min.js" id="jquery"&gt;
- &lt;/script&gt;</code></pre>
- </p>
- <h3>Use a CDN</h3>
- <p>Instead of downloading jQuery to your project, you just reference jQuery in your tempalte like this:
- <pre><code>&lt;script type="text/javascript"
- src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" id="jquery"&gt;
- &lt;/script&gt;</code></pre>
- </p>
- <h3>Use the lift-jquery-module module</h3>
- <p>This is a module written by one of the Lift committers, Peter Petersson.
- The idea behind this module is that it will provide easy jquery upgrade/downgrade of upstream updates.
- The module provides min version(s) of the jQuery file(s) in production mode, while providing the regular
- uncompressed version during development.<br></br>
- This is a separate module to allow rapid release cycles to keep up with jQuery upstream.
- </p>
- <p>Please refer to the <a href="https://github.com/karma4u101/lift-jquery-module">README.md</a> file for instructions on using this module</p>
- <p>If you are having problems getting started, head over to the <a href="http://groups.google.com/group/liftweb">mailing list.</a></p>
+ <div class="row-fluid">
+ <div class="span9">
- </div>
- <div class="span3">
- <lift:embed what="col2"/>
- </div>
- </div>
- </div>
- </div>
- </lift:surround>
- </content>
+ <h1>Including jQuery in your project</h1>
+ <p>Up until Lift 2.4, we included two versions of jQuery, 1.3 and
+ 1.4. But both are very old versions by now. After some
+ discussions on the
+ mailing list we decided that the best solution moving forward was to
+ require users include their own version of jQuery.
+ </p>
+ <h2>Options:</h2>
+ <h3>Host your own</h3>
+ <p>
+ You can download jQuery and include it on your projects
+ webapp/js folder (you may have to create the js folder).
+ Then you reference this jQuery file in your template by using:
+ <pre>
+ <code>&lt;script type="text/javascript"
+ src="/js/jquery-1.7.2.min.js" id="jquery"&gt;
+ &lt;/script&gt;</code>
+ </pre>
+ </p>
+ <h3>Use a CDN</h3>
+ <p>
+ Instead of downloading jQuery to your project, you just
+ reference jQuery in your tempalte like this:
+ <pre>
+ <code>&lt;script type="text/javascript"
+ src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"
+ id="jquery"&gt;
+ &lt;/script&gt;</code>
+ </pre>
+ </p>
+ <h3>Use the lift-jquery-module module</h3>
+ <p>
+ This is a module written by one of the Lift committers, Peter
+ Petersson.
+ The idea behind this module is that it will provide easy jquery
+ upgrade/downgrade of upstream updates.
+ The module provides min version(s) of the jQuery file(s) in
+ production mode, while providing the regular
+ uncompressed version during development.
+ <br></br>
+ This is a separate module to allow rapid release cycles to keep
+ up with jQuery upstream.
+ </p>
+ <p>
+ Please refer to the
+ <a href="https://github.com/karma4u101/lift-jquery-module">README.md</a>
+ file for instructions on using this module
+ </p>
+ <p>
+ If you are having problems getting started, head over to the
+ <a href="http://groups.google.com/group/liftweb">mailing list.</a>
+ </p>
+
+ </div>
+ <div class="span3">
+ <lift:embed what="col2" />
+ </div>
+ </div>
+ </div>
+ </div>
+ </lift:surround>
+ </content>
</cms>
View
339 site/lift_overview.cms.xml
@@ -1,99 +1,242 @@
-<cms path="/lift_overview" serve="true" type="html" locale="en_US" host="liftweb.net">
- <tag name="name" value="lift_overview"/>
-<content>
- <lift:surround with="default" at="content">
- <head>
- <title>Lift :: Lift Overview</title>
- </head>
-
- <div class="row-fluid">
- <div class="span12">
-
- <div class="row-fluid">
- <div class="span9">
-
-<div class="post-text">
-
-<p>Lift is composed on discrete elements. Lift support the likes of JNDI, JTA, JPA, etc. The fact that you're not forced to uses these elements of J/EE is a strong indication of Lift's modular design.</p>
-
-<ul>
-<li>Lift's view philosophy is "let the developer decide." Lift offers a templating mechanism that does not allow any logic code in the view, a view mechanism based on executing Scala code and Scala's XML literals, and a view mechanism based on Scalate (see <a href="http://scalate.fusesource.org/">http://scalate.fusesource.org/</a> ). If you choose the XML templating mechanism, then you choose how much, if any, mark-up belongs in your business logic. You cannot express any business logic in Lift's XML templates.</li>
-<li>Lift's Object &lt;-> Persistence philosophy is "let the developer decide." Lift has Mapper which is an ActiveRecord style object relational mapper. It gets the job done for small projects. Lift support JPA. Lift has a Record abstraction that supports shuttling objects into and out of relational databases, into and out of NoSQL stores (Lift includes native support for CouchDB and MongoDB, but the adapter layers are a few hundred lines of code, so if you want Cassandra or something else, it's not a lot of work to get it.) Basically, Lift the Web Framework has no dependence on how objects are materialized into a session. Further, the session and request cycles are open such that inserting transaction hooks into the request/response cycle is simple.</li>
-<li>Lift's philosophy is "the server team needs to know one language, not multiple languages." This means that configuration is done via Scala. This means that we didn't have to implement 40% of Java's language constructs in XML syntax to create flexible configuration options. It means that the compiler syntax and type-checks the configuration data so you don't get any weird XML parsing or incorrect data at runtime. In means that you don't have to have IDEs that understand the particulars of the annotations that you're using based on the library that you're using.</li>
-</ul>
-
-<p>I wrote this: <a href="http://blog.lostlake.org/index.php?/archives/16-Web-Framework-Manifesto.html">http://blog.lostlake.org/index.php?/archives/16-Web-Framework-Manifesto.html</a> before I started writing Lift. To a great degree, and to a greater degree than is true for any other web framework that I know of, Lift meets these goals.</p>
-
-<p>Lift at its core seeks to abstract away the HTTP request/response cycle rather than placing object wrappers around the HTTP Request. At the practical level, this means that most any action that a user can take (submitting form elements, doing Ajax, etc.) is represented by a GUID in the browser and a function on the server. When the GUID is presented as part of the an HTTP request, the function is applied (called) with the supplied parameters. Because the GUIDs are hard to predict and session-specific, replay attacks and many parameter tampering attacks are far more difficult with Lift than most other web frameworks, including Spring. It also means that developers are more productive because they are focusing on user actions and the business logic associated with user actions rather than the plumbing of packing and unpacking an HTTP request. For example, code for accepting or rejecting a Foursquare friend request:</p>
-
-<pre><code>ajaxButton("Accept", () =&gt; {request.accept.save;
- SetHtml("acceptrejectspan", &lt;span/&gt;}) ++
-ajaxButton("Reject", () =&gt; {request.reject.save;
- SetHtml("acceptrejectspan", &lt;span/&gt;})
-
-</code></pre>
-
-<p>It's that simple. Because the friendRequest is in the scope when the function is created, the function closes over the scope... there's no need to expose the primary key of the friend request or do anything else... just define the text of the button (it can be localized or it can be pulled from an XHTML template or it can be pulled from a localized template) and the function to execute when the button is pushed. Lift takes care of assigning the GUID, setting up the Ajax call (via jQuery or YUI, and yes, you can add your own favorite JavaScript library), doing automatic retries with back-offs, avoiding connection starvation by queuing Ajax requests, etc.</p>
-
-<p>Lift's philosophy of GUID associated with function has the dual benefit of much better security and much better developer productivity. The GUID -> Function association has proven very durable... the same construct works for normal forms, ajax, comet, multi-page wizards, etc.</p>
-
-<p>The next core piece of Lift is keeping the high level abstractions around for as long as possible. On the page generation side, that means building the page as XHTML elements and keeping the page as XHTML until just before streaming the response. The benefits are resistance to cross site scripting errors, the ability to move CSS tags to the head and scripts to the bottom of the page after the page has been composed, and the ability to rewrite the page based on the target browser. On the input side, URLs can be re-written to extract parameters (both query and path parameters) in a type-safe manner, high level, security checked data is available for processing very early in the request cycle. For example, here's how to define servicing of a REST request:</p>
-
-<pre><code> serve {
- case "api" :: "user" :: AsUser(user) :: _ XmlGet _ =&gt; &lt;b&gt;{user.name}&lt;/b&gt;
-
- case "api" :: "user" :: AsUser(user) :: _ JsonGet _ =&gt; JStr(user.name)
- }
-</code></pre>
-
-<p>Using Scala's built-in pattern matching, we match an incoming request, extract the third part of the path and get the User that corresponds to that value, and even apply access control checks (does the current session or request have permissions to access the given User record). So, by the time the User instance hits the application logic, it's vetted.</p>
-
-<p>With these two core pieces, Lift has a tremendous advantage in terms of security. To give you an idea of the magnitude of Lift's security that doesn't get in the way of features, Rasmus Lerdorg ( <a href="http://en.wikipedia.org/wiki/Rasmus_Lerdorf">http://en.wikipedia.org/wiki/Rasmus_Lerdorf</a> ) who did security for Yahoo! had this to say about FourSquare (one of the Lift poster-child sites):</p>
-
-<blockquote>
- <p>Four stars to @foursquare - 1st site
- in a while I have taken a good look at
- that didn't have a single security
- issue (that I could find)</p>
-
-</blockquote>
-
-<p><a href="http://twitter.com/rasmus/status/5929904263">http://twitter.com/rasmus/status/5929904263</a></p>
-
-<p>At the time, Foursquare had one engineer working on the code (not that @harryh isn't a super-genius) and his main focus was re-writing the PHP version of Foursquare while coping with weekly traffic doubling.</p>
-
-<p>The last part of Lift's security focus is SiteMap. It's a unified access control, site navigation, and menu system. The developer defines the access control rules for each page using Scala code (e.g. <code>If(User.loggedIn _)</code> or <code>If(User.superUser _)</code>) and those access control rules are applied before any page rendering starts. This is much like Spring Security, except that it's baked in from the beginning of the project and the access control rules are unified with the rest of the application so you don't have to have process for updating the security rules in XML when the URLs change or the methods that calculate the access control change.</p>
-
-<p>To summarize so far, Lift's design philosophy gives you the benefits of baked in access control, resistance to the OWASP top 10 security vulnerabilities, much better Ajax support and much higher developer productivity.</p>
-
-<p>But Lift also gives you the best Comet support of any web framework around. That's why Novell chose Lift to power their Pulse product ( <a href="http://www.novell.com/products/pulse/">http://www.novell.com/products/pulse/</a> ) and here's what Novell has to say about Lift:</p>
-
-<blockquote>
- <p>Lift is the kind of web framework that
- enables you as a developer to
- concentrate on the big picture.
- Strong, expressive typing and
- higher-level features like the
- built-in Comet support allow you to
- focus on innovating instead of the
- plumbing. Building a rich, real-time
- web application like Novell Pulse
- requires a framework with the power of
- Lift under the covers.</p>
-</blockquote>
-
-<p>So, Lift is not just another me-too MVC framework. It's a framework that's got some core design principals behind it that have matured very well. It's a framework that gives the dual advantages of security and developer productivity. Lift is a framework that's built in layers and gives the developer the right choices based on their needs... choices for view generation, choices for persistence, etc.</p>
-
-<p>Scala and Lift give developers a much better experience than the melange of XML, annotations, and other idioms that make up Spring.</p>
-
-</div>
- </div>
- <div class="span3">
- <lift:embed what="col2"/>
- </div>
- </div>
- </div>
- </div>
- </lift:surround>
-</content>
+<cms path="/lift_overview" serve="true" type="html" locale="en_US"
+ host="liftweb.net">
+ <tag name="name" value="lift_overview" />
+ <content>
+ <lift:surround with="default" at="content">
+ <head>
+ <title>Lift :: Lift Overview</title>
+ </head>
+
+ <div class="row-fluid">
+ <div class="span12">
+
+ <div class="row-fluid">
+ <div class="span9">
+
+ <div class="post-text">
+
+ <p>Lift is composed on discrete elements. Lift support the likes
+ of JNDI, JTA, JPA, etc. The fact that you're not forced to uses
+ these elements of J/EE is a strong indication of Lift's modular
+ design.</p>
+
+ <ul>
+ <li>
+ Lift's view philosophy is "let the developer decide." Lift
+ offers a templating mechanism that does not allow any logic
+ code in the view, a view mechanism based on executing Scala
+ code and Scala's XML literals, and a view mechanism based on
+ Scalate (see
+ <a href="http://scalate.fusesource.org/">http://scalate.fusesource.org/</a>
+ ). If you choose the XML templating mechanism, then you choose
+ how much, if any, mark-up belongs in your business logic. You
+ cannot express any business logic in Lift's XML templates.
+ </li>
+ <li>Lift's Object &lt;-> Persistence philosophy is "let the
+ developer decide." Lift has Mapper which is an ActiveRecord
+ style object relational mapper. It gets the job done for small
+ projects. Lift support JPA. Lift has a Record abstraction that
+ supports shuttling objects into and out of relational
+ databases, into and out of NoSQL stores (Lift includes native
+ support for CouchDB and MongoDB, but the adapter layers are a
+ few hundred lines of code, so if you want Cassandra or
+ something else, it's not a lot of work to get it.) Basically,
+ Lift the Web Framework has no dependence on how objects are
+ materialized into a session. Further, the session and request
+ cycles are open such that inserting transaction hooks into the
+ request/response cycle is simple.</li>
+ <li>Lift's philosophy is "the server team needs to know one
+ language, not multiple languages." This means that
+ configuration is done via Scala. This means that we didn't
+ have to implement 40% of Java's language constructs in XML
+ syntax to create flexible configuration options. It means that
+ the compiler syntax and type-checks the configuration data so
+ you don't get any weird XML parsing or incorrect data at
+ runtime. In means that you don't have to have IDEs that
+ understand the particulars of the annotations that you're
+ using based on the library that you're using.</li>
+ </ul>
+
+ <p>
+ I wrote this:
+ <a
+ href="http://blog.lostlake.org/index.php?/archives/16-Web-Framework-Manifesto.html">http://blog.lostlake.org/index.php?/archives/16-Web-Framework-Manifesto.html
+ </a>
+ before I started writing Lift. To a great degree, and to a
+ greater degree than is true for any other web framework that I
+ know of, Lift meets these goals.
+ </p>
+
+ <p>Lift at its core seeks to abstract away the HTTP
+ request/response cycle rather than placing object wrappers
+ around the HTTP Request. At the practical level, this means
+ that most any action that a user can take (submitting form
+ elements, doing Ajax, etc.) is represented by a GUID in the
+ browser and a function on the server. When the GUID is
+ presented as part of the an HTTP request, the function is
+ applied (called) with the supplied parameters. Because the
+ GUIDs are hard to predict and session-specific, replay attacks
+ and many parameter tampering attacks are far more difficult
+ with Lift than most other web frameworks, including Spring. It
+ also means that developers are more productive because they are
+ focusing on user actions and the business logic associated with
+ user actions rather than the plumbing of packing and unpacking
+ an HTTP request. For example, code for accepting or rejecting a
+ Foursquare friend request:</p>
+
+ <pre>
+ <code>ajaxButton("Accept", () =&gt; {request.accept.save;
+ SetHtml("acceptrejectspan", &lt;span/&gt;}) ++
+ ajaxButton("Reject", () =&gt; {request.reject.save;
+ SetHtml("acceptrejectspan", &lt;span/&gt;})
+
+ </code>
+ </pre>
+
+ <p>It's that simple. Because the friendRequest is in the scope
+ when the function is created, the function closes over the
+ scope... there's no need to expose the primary key of the
+ friend request or do anything else... just define the text of
+ the button (it can be localized or it can be pulled from an
+ XHTML template or it can be pulled from a localized template)
+ and the function to execute when the button is pushed. Lift
+ takes care of assigning the GUID, setting up the Ajax call (via
+ jQuery or YUI, and yes, you can add your own favorite
+ JavaScript library), doing automatic retries with back-offs,
+ avoiding connection starvation by queuing Ajax requests, etc.
+ </p>
+
+ <p>Lift's philosophy of GUID associated with function has the
+ dual benefit of much better security and much better developer
+ productivity. The GUID -> Function association has proven very
+ durable... the same construct works for normal forms, ajax,
+ comet, multi-page wizards, etc.</p>
+
+ <p>The next core piece of Lift is keeping the high level
+ abstractions around for as long as possible. On the page
+ generation side, that means building the page as XHTML elements
+ and keeping the page as XHTML until just before streaming the
+ response. The benefits are resistance to cross site scripting
+ errors, the ability to move CSS tags to the head and scripts to
+ the bottom of the page after the page has been composed, and
+ the ability to rewrite the page based on the target browser. On
+ the input side, URLs can be re-written to extract parameters
+ (both query and path parameters) in a type-safe manner, high
+ level, security checked data is available for processing very
+ early in the request cycle. For example, here's how to define
+ servicing of a REST request:</p>
+
+ <pre>
+ <code> serve {
+ case "api" :: "user" :: AsUser(user) :: _ XmlGet _ =&gt;
+ &lt;b&gt;{user.name}&lt;/b&gt;
+
+ case "api" :: "user" :: AsUser(user) :: _ JsonGet _ =&gt;
+ JStr(user.name)
+ }
+ </code>
+ </pre>
+
+ <p>Using Scala's built-in pattern matching, we match an incoming
+ request, extract the third part of the path and get the User
+ that corresponds to that value, and even apply access control
+ checks (does the current session or request have permissions to
+ access the given User record). So, by the time the User
+ instance hits the application logic, it's vetted.</p>
+
+ <p>
+ With these two core pieces, Lift has a tremendous advantage in
+ terms of security. To give you an idea of the magnitude of
+ Lift's security that doesn't get in the way of features, Rasmus
+ Lerdorg (
+ <a href="http://en.wikipedia.org/wiki/Rasmus_Lerdorf">http://en.wikipedia.org/wiki/Rasmus_Lerdorf</a>
+ ) who did security for Yahoo! had this to say about FourSquare
+ (one of the Lift poster-child sites):
+ </p>
+
+ <blockquote>
+ <p>Four stars to @foursquare - 1st site
+ in a while I have taken a good look at
+ that didn't have a single security
+ issue (that I could find)
+ </p>
+
+ </blockquote>
+
+ <p>
+ <a href="http://twitter.com/rasmus/status/5929904263">http://twitter.com/rasmus/status/5929904263</a>
+ </p>
+
+ <p>At the time, Foursquare had one engineer working on the code
+ (not that @harryh isn't a super-genius) and his main focus was
+ re-writing the PHP version of Foursquare while coping with
+ weekly traffic doubling.</p>
+
+ <p>
+ The last part of Lift's security focus is SiteMap. It's a
+ unified access control, site navigation, and menu system. The
+ developer defines the access control rules for each page using
+ Scala code (e.g.
+ <code>If(User.loggedIn _)</code>
+ or
+ <code>If(User.superUser _)</code>
+ ) and those access control rules are applied before any page
+ rendering starts. This is much like Spring Security, except
+ that it's baked in from the beginning of the project and the
+ access control rules are unified with the rest of the
+ application so you don't have to have process for updating the
+ security rules in XML when the URLs change or the methods that
+ calculate the access control change.
+ </p>
+
+ <p>To summarize so far, Lift's design philosophy gives you the
+ benefits of baked in access control, resistance to the OWASP
+ top 10 security vulnerabilities, much better Ajax support and
+ much higher developer productivity.</p>
+
+ <p>
+ But Lift also gives you the best Comet support of any web
+ framework around. That's why Novell chose Lift to power their
+ Pulse product (
+ <a href="http://www.novell.com/products/pulse/">http://www.novell.com/products/pulse/</a>
+ ) and here's what Novell has to say about Lift:
+ </p>
+
+ <blockquote>
+ <p>Lift is the kind of web framework that
+ enables you as a developer to
+ concentrate on the big picture.
+ Strong, expressive typing and
+ higher-level features like the
+ built-in Comet support allow you to
+ focus on innovating instead of the
+ plumbing. Building a rich, real-time
+ web application like Novell Pulse
+ requires a framework with the power of
+ Lift under the covers.
+ </p>
+ </blockquote>
+
+ <p>So, Lift is not just another me-too MVC framework. It's a
+ framework that's got some core design principals behind it that
+ have matured very well. It's a framework that gives the dual
+ advantages of security and developer productivity. Lift is a
+ framework that's built in layers and gives the developer the
+ right choices based on their needs... choices for view
+ generation, choices for persistence, etc.</p>
+
+ <p>Scala and Lift give developers a much better experience than
+ the melange of XML, annotations, and other idioms that make up
+ Spring.</p>
+
+ </div>
+ </div>
+ <div class="span3">
+ <lift:embed what="col2" />
+ </div>
+ </div>
+ </div>
+ </div>
+ </lift:surround>
+ </content>
</cms>
View
203 site/lift_vs_spring.cms.xml
@@ -1,75 +1,130 @@
-<cms path="/lift_vs_spring" serve="true" type="html" locale="en_US" host="liftweb.net">
- <tag name="name" value="lift_vs_spring"/>
-<content>
- <lift:surround with="default" at="content">
- <head>
- <title>Lift :: Lift vs. Spring</title>
- </head>
-
- <div class="row-fluid">
- <div class="span12">
-
- <div class="row-fluid">
- <div class="span9">
-
- <div class="post-text"><p>Lift's Comet Architecture which was selected by Novell to power their Pulse product after they evaluated a number of different technologies.</p>
-
-<p>Lift's Comet implementation uses a single HTTP connection to poll for changes to an arbitrary number of components on the page. Each component has a version number. The long poll includes the version number and the component GUID. On the server side, a listener is attached to all of the GUIDs listed in the long poll requests. If any of the components has a higher version number (or the version number increases during the period of the long poll), the deltas (a set of JavaScript describing the change from each version) is sent to the client. The deltas are applied and the version number on the client is set to the highest version number for the change set.</p>
-
-<p>Lift integrates long polling with session management so that if a request comes into the same URL during a long poll that would cause connection starvation, the long poll is terminated to avoid connection starvation (some browsers have a maximum of 2 HTTP connections per named server, others have a max of 6). Lift also supports DNS wild-carded servers for long poll requests such that each tab in the browser can do long polling against a different DNS wildcarded server. This avoids the connection starvation issues.</p>
-
-<p>Lift dynamically detects the container the Servlet is running in and on Jetty 6 &amp; 7 and (soon) Glassfish, Lift will use the platform's "continuations" implementation to avoid using a thread during the long poll.</p>
-
-<p>Lift's JavaScript can sit on top of jQuery and YUI (and could sit on top of Prototype/Scriptaculous as well.) The actual polling code includes back-off on connection failures and other "graceful" ways of dealing with transient connection failures.</p>
-
-<p>I've looked at Atmosphere, CometD, Akka (all JVM-oriented Comet technologies). None had (at the time I evaluated them) support for multiple components per page or connection starvation avoidance.</p>
-
-<p>Novell started from scratch and chose Lift to power Pulse for some very good reasons.</p>
-
-<p>In terms of security, Lift beats Spring + Spring Security hands down. See <a href="http://www.mail-archive.com/liftweb@googlegroups.com/msg13020.html" rel="nofollow">http://www.mail-archive.com/liftweb@googlegroups.com/msg13020.html</a></p>
-
-<p>Basically, Lift's security is baked into your application. Lift apps are resistant to common problems (cross site scripting, replay attacks, cross site request forgeries) by default. Lift apps are resistant to parameter tampering by default. Lift's sitemap defines site navigation and access control rules. This means you never have a link that someone can't click on. You don't need to have an external filter (e.g., Spring Security) that you have to configure independently from you app (whoops... moved a page, but forgot to make sure the Spring Security XML file was updated.)</p>
-
-<p>Oh... and if you don't want to use a templating language, here's a complete Lift Comet chat component:</p>
-
-<pre><code>class Chat extends CometActor with CometListener {
- private var msgs: List[String] = Nil
-
- def registerWith = ChatServer
-
- override def lowPriority = {
- case m: List[String] =&gt; msgs = m; reRender(false)
- }
-
- def render = {
- &lt;div&gt;
- &lt;ul&gt;
- {
- msgs.reverse.map(m =&gt; &lt;li&gt;{m}&lt;/li&gt;)
- }
- &lt;/ul&gt;
-
- &lt;lift:form&gt;
- {
- SHtml.text("", s =&gt; ChatServer ! s)
- }
- &lt;input type="submit" value="Chat"/&gt;
- &lt;/lift:form&gt;
- &lt;/div&gt;
- }
-}
-
-</code></pre>
-
-<p>And to insert this into a page: <code>&lt;lift:comet type="Chat"/&gt;</code></p>
-</div>
- </div>
- <div class="span3">
- <lift:embed what="col2"/>
- </div>
- </div>
- </div>
- </div>
- </lift:surround>
-</content>
+<cms path="/lift_vs_spring" serve="true" type="html" locale="en_US"
+ host="liftweb.net">
+ <tag name="name" value="lift_vs_spring" />
+ <content>
+ <lift:surround with="default" at="content">
+ <head>
+ <title>Lift :: Lift vs. Spring</title>
+ </head>
+
+ <div class="row-fluid">
+ <div class="span12">
+
+ <div class="row-fluid">
+ <div class="span9">
+
+ <div class="post-text">
+ <p>Lift's Comet Architecture which was selected by Novell to
+ power their Pulse product after they evaluated a number of
+ different technologies.</p>
+
+ <p>Lift's Comet implementation uses a single HTTP connection to
+ poll for changes to an arbitrary number of components on the
+ page. Each component has a version number. The long poll
+ includes the version number and the component GUID. On the
+ server side, a listener is attached to all of the GUIDs listed
+ in the long poll requests. If any of the components has a
+ higher version number (or the version number increases during
+ the period of the long poll), the deltas (a set of JavaScript
+ describing the change from each version) is sent to the client.
+ The deltas are applied and the version number on the client is
+ set to the highest version number for the change set.</p>
+
+ <p>Lift integrates long polling with session management so that
+ if a request comes into the same URL during a long poll that
+ would cause connection starvation, the long poll is terminated
+ to avoid connection starvation (some browsers have a maximum of
+ 2 HTTP connections per named server, others have a max of 6).
+ Lift also supports DNS wild-carded servers for long poll
+ requests such that each tab in the browser can do long polling
+ against a different DNS wildcarded server. This avoids the
+ connection starvation issues.</p>
+
+ <p>Lift dynamically detects the container the Servlet is running
+ in and on Jetty 6 &amp; 7 and (soon) Glassfish, Lift will use
+ the platform's "continuations" implementation to avoid using a
+ thread during the long poll.</p>
+
+ <p>Lift's JavaScript can sit on top of jQuery and YUI (and could
+ sit on top of Prototype/Scriptaculous as well.) The actual
+ polling code includes back-off on connection failures and other
+ "graceful" ways of dealing with transient connection failures.
+ </p>
+
+ <p>I've looked at Atmosphere, CometD, Akka (all JVM-oriented
+ Comet technologies). None had (at the time I evaluated them)
+ support for multiple components per page or connection
+ starvation avoidance.</p>
+
+ <p>Novell started from scratch and chose Lift to power Pulse for
+ some very good reasons.</p>
+
+ <p>
+ In terms of security, Lift beats Spring + Spring Security hands
+ down. See
+ <a
+ href="http://www.mail-archive.com/liftweb@googlegroups.com/msg13020.html"
+ rel="nofollow">http://www.mail-archive.com/liftweb@googlegroups.com/msg13020.html
+ </a>
+ </p>
+
+ <p>Basically, Lift's security is baked into your application.
+ Lift apps are resistant to common problems (cross site
+ scripting, replay attacks, cross site request forgeries) by
+ default. Lift apps are resistant to parameter tampering by
+ default. Lift's sitemap defines site navigation and access
+ control rules. This means you never have a link that someone
+ can't click on. You don't need to have an external filter
+ (e.g., Spring Security) that you have to configure
+ independently from you app (whoops... moved a page, but forgot
+ to make sure the Spring Security XML file was updated.)</p>
+
+ <p>Oh... and if you don't want to use a templating language,
+ here's a complete Lift Comet chat component:</p>
+
+ <pre>
+ <code>class Chat extends CometActor with CometListener {
+ private var msgs: List[String] = Nil
+
+ def registerWith = ChatServer
+
+ override def lowPriority = {
+ case m: List[String] =&gt; msgs = m; reRender(false)
+ }
+
+ def render = {
+ &lt;div&gt;
+ &lt;ul&gt;
+ {
+ msgs.reverse.map(m =&gt; &lt;li&gt;{m}&lt;/li&gt;)
+ }
+ &lt;/ul&gt;
+
+ &lt;lift:form&gt;
+ {
+ SHtml.text("", s =&gt; ChatServer ! s)
+ }
+ &lt;input type="submit" value="Chat"/&gt;
+ &lt;/lift:form&gt;
+ &lt;/div&gt;
+ }
+ }
+
+ </code>
+ </pre>
+
+ <p>
+ And to insert this into a page:
+ <code>&lt;lift:comet type="Chat"/&gt;</code>
+ </p>
+ </div>
+ </div>
+ <div class="span3">
+ <lift:embed what="col2" />
+ </div>
+ </div>
+ </div>
+ </div>
+ </lift:surround>
+ </content>
</cms>
View
32 site/quotes/dale.cms.xml
@@ -1,20 +1,16 @@
<cms path="/quotes/dale" type="html" locale="en_US" host="liftweb.net">
-<content>
- <div>
- <div class="left">&ldquo;</div>
- <div class="center">
- <h1>
- The first rule of Lift is: It's easier than you think.
- <br/>
- <br/>
-
- The deeper I get the more I think that the cognitive barrier to
- understanding Lift is that one expects things to be so much more work
- than it actually is.
- </h1>
- Paul Dale
- </div>
- <div class="right">&rdquo;</div>
- </div>
-</content>
+ <content>
+ <div id="lh-quote" class="well">
+ <blockquote class="pull-right">
+ <h2>It's easier than you think!</h2>
+ <p class="lead">
+ The first rule of Lift is: It's easier than you think.
+ The deeper I get the more I think that the cognitive barrier to
+ understanding Lift is that one expects things to be so much more
+ work than it actually is.
+ </p>
+ <small>Paul Dale</small>
+ </blockquote>
+ </div>
+ </content>
</cms>
View
28 site/quotes/ebay.cms.xml
@@ -1,14 +1,18 @@
<cms path="/quotes/ebay" type="html" locale="en_US" host="liftweb.net">
-<content>
-<div>
- <div class="left">&ldquo;</div>
- <div class="center">
- <h1>
- Lift is the only new framework in the last four years to offer fresh and innovative approaches to web development. It's not just some incremental improvements over the status quo, it redefines the state of the art. If you are a web developer, you should learn Lift. Even if you don't wind up using it everyday, it will change the way you approach web applications.
- </h1>
- Michael Galpin, Developer, eBay
- </div>
- <div class="right">&rdquo;</div>
-</div>
-</content>
+ <content>
+ <div id="lh-quote" class="well">
+ <blockquote class="pull-left">
+ <h2>State of the art!</h2>
+ <p class="lead">
+ Lift is the only new framework in the last four
+ years to offer fresh and innovative approaches to web development.
+ It's not just some incremental improvements over the status quo,
+ it redefines the state of the art. If you are a web developer,
+ you should learn Lift. Even if you don't wind up using it everyday,
+ it will change the way you approach web applications.
+ </p>
+ <small>Michael Galpin, Developer, eBay</small>
+ </blockquote>
+ </div>
+ </content>
</cms>
View
31 site/quotes/esme.cms.xml
@@ -1,17 +1,18 @@
<cms path="/quotes/esme" type="html" locale="en_US" host="liftweb.net">
-<content>
-<div class="hero-unit">
-<!-- <blockquote class="pull-right"> -->
- <h2>Comet made easy!</h2>
- <p>
- &ldquo;Lift's excellent 'Comet made easy' philosophy made it an absolute no-brainer
- as the choice of framework for the Apache ESME project. Additionally, the fact
- that Lift-based applications run unchanged on the SAP's NetWeaver CE Java
- application server makes this an intriguing approach for enterprise applications
- in the SAP world.&ldquo;
- </p>
- Darren Hague. SAP Mentor, ESME team lead
-<!-- </blockquote> -->
-</div>
-</content>
+ <content>
+ <div id="lh-quote" class="well">
+ <blockquote class="pull-left">
+ <h2>Comet made easy!</h2>
+ <p class="lead">
+ Lift's excellent 'Comet made easy' philosophy
+ made it an absoluteno-brainer as the choice of framework for the
+ Apache ESME project. Additionally, the fact that Lift-based
+ applications run unchangedon the SAP's NetWeaver CE Java
+ application server makes this an intriguing approach for enterprise
+ applications in the SAP world.
+ </p>
+ <small>Darren Hague. SAP Mentor, ESME team lead</small>
+ </blockquote>
+ </div>
+ </content>
</cms>
View
29 site/quotes/foursquare.cms.xml
@@ -1,14 +1,19 @@
<cms path="/quotes/foursquare" type="html" locale="en_US" host="liftweb.net">
-<content>
-<div>
- <div class="left">&ldquo;</div>
- <div class="center">
- <h1>
-Foursquare switched over to Scala &amp; Lift last September and we've been thrilled with the results. The ease of developing complex interactive ajax web pages enabled a very rapid port from our previous platform. In addition, the support we've gotten from David Pollak and the rest of the Lift team has been invaluable. It's clear they are very committed to making sure that production Lift deployments get all the attention they need to succeed.
- </h1>
- @harryh, Foursquare Engineering Tech Lead
- </div>
- <div class="right">&rdquo;</div>
-</div>
-</content>
+ <content>
+ <div id="lh-quote" class="well">
+ <blockquote class="pull-left">
+ <h2>The ease of developing!</h2>
+ <p class="lead">
+ Foursquare switched over to Scala &amp; Lift last September and we've been
+ thrilled with the results. The ease of developing complex
+ interactive ajax web pages enabled a very rapid port from our
+ previous platform. In addition, the support we've gotten from David
+ Pollak and the rest of the Lift team has been invaluable. It's
+ clear they are very committed to making sure that production Lift
+ deployments get all the attention they need to succeed.
+ </p>
+ <small>@harryh, Foursquare Engineering Tech Lead</small>
+ </blockquote>
+ </div>
+ </content>
</cms>
View
23 site/quotes/lukasz.cms.xml
@@ -1,14 +1,13 @@
<cms path="/quotes/lukasz" type="html" locale="en_US" host="liftweb.net">
-<content>
-<div>
- <div class="left">&ldquo;</div>
- <div class="center">
- <h1>
- Lift just rocks !
- </h1>
- Lukasz Kuczera, Lift Community Member
- </div>
- <div class="right">&rdquo;</div>
-</div>
-</content>
+ <content>
+ <div id="lh-quote" class="well">
+ <blockquote class="pull-right">
+ <h2>Lift just rocks !</h2>
+ <p class="lead">
+ ... Lift just rocks !
+ </p>
+ <small>Lukasz Kuczera, Lift Community Member</small>
+ </blockquote>
+ </div>
+ </content>
</cms>
View
30 site/quotes/luke.cms.xml
@@ -1,14 +1,20 @@
<cms path="/quotes/luke" type="html" locale="en_US" host="liftweb.net">
-<content>
-<div>
- <div class="left">&ldquo;</div>
- <div class="center">
- <h1>
-When I decided to put Innovation Games® online, I knew that I couldn't afford a massive development effort. I needed a small, sharp team who could leverage best-in-class tools to help us solve the problems we knew that we'd have to solve in creating a new kind of collaborative gaming experience on the web. David suggested Lift and Scala and initial testing proved that we could realize the developer efficiency and backend scalability that we felt was required to efficiently support thousands of simultaneous games.
- </h1>
- Luke Hohmann, CEO Enthiosys
- </div>
- <div class="right">&rdquo;</div>
-</div>
-</content>
+ <content>
+ <div id="lh-quote" class="well">
+ <blockquote class="pull-right">
+ <h2>Realize the developer efficiency!</h2>
+ <p class="lead">
+ When I decided to put Innovation Games® online, I knew that I couldn't
+ afford a massive development effort. I needed a small, sharp team
+ who could leverage best-in-class tools to help us solve the
+ problems we knew that we'd have to solve in creating a new kind of
+ collaborative gaming experience on the web. David suggested Lift
+ and Scala and initial testing proved that we could realize the
+ developer efficiency and backend scalability that we felt was
+ required to efficiently support thousands of simultaneous games.
+ </p>
+ <small>Luke Hohmann, CEO Enthiosys</small>
+ </blockquote>
+ </div>
+ </content>
</cms>
View
25 site/quotes/martin.cms.xml
@@ -1,14 +1,15 @@
<cms path="/quotes/martin" type="html" locale="en_US" host="liftweb.net">
-<content>
-<div>
- <div class="left">&ldquo;</div>
- <div class="center">
- <h1>
- The interest and excitement about Scala continues to grow. It's great to see Lift reaching the 1.0 milestone as this is a proof point for the maturity of Scala as a software platform.
- </h1>
- Martin Odersky, ACM Fellow, Father of Scala
- </div>
- <div class="right">&rdquo;</div>
-</div>
-</content>
+ <content>
+ <div id="lh-quote" class="well">
+ <blockquote class="pull-right">
+ <h2>Maturity of Scala as a software platform!</h2>
+ <p class="lead">
+ The interest and excitement about Scala continues to grow. It's great
+ to see Lift reaching the 1.0 milestone as this is a proof point for
+ the maturity of Scala as a software platform.
+ </p>
+ <small>Martin Odersky, ACM Fellow, Father of Scala</small>
+ </blockquote>
+ </div>
+ </content>
</cms>
View
31 site/quotes/novell.cms.xml
@@ -1,16 +1,19 @@
<cms path="/quotes/novell" type="html" locale="en_US" host="liftweb.net">
-<content>
-<div>
- <div class="left">&ldquo;</div>
- <div class="center">
- <h1>
- Lift is the kind of web framework that enables you as a developer to concentrate on the big picture. Strong, expressive typing and higher-level features like the built-in Comet support allow you to focus on innovating instead of the
- plumbing. Building a rich, real-time web application like Novell Pulse requires a framework with the power of Lift
- under the covers.
- </h1>
- David LaPalomento, Developer, Novell
- </div>
- <div class="right">&rdquo;</div>
-</div>
-</content>
+ <content>
+ <div id="lh-quote" class="well">
+ <blockquote class="pull-right">
+ <h2>Allow's you to focus on innovating!</h2>
+ <p class="lead">
+ Lift is the kind of web framework that enables you as a developer to
+ concentrate on the big picture. Strong, expressive typing and
+ higher-level features like the built-in Comet support allow you to
+ focus on innovating instead of the
+ plumbing. Building a rich, real-time web application like Novell Pulse
+ requires a framework with the power of Lift
+ under the covers.
+ </p>
+ <small>David LaPalomento, Developer, Novell</small>
+ </blockquote>
+ </div>
+ </content>
</cms>
View
31 site/quotes/pongr.cms.xml
@@ -1,18 +1,17 @@
<cms path="/quotes/pongr" type="html" locale="en_US" host="liftweb.net">
-<content>
-<div>
- <div class="left">&ldquo;</div>
- <div class="center">
- <h1>
- <a href="http://pongr.com">Pongr</a> launched our new product earlier this
- week
- As you know, we use (and love) Lift, and I just wanted to thank you
- for creating such an incredible framework. It continues to blow my
- mind every day!
- </h1>
- Zach Cox, Chief Software Architect, Pongr
- </div>
- <div class="right">&rdquo;</div>
-</div>
-</content>
+ <content>
+ <div id="lh-quote" class="well">
+ <blockquote class="pull-right">
+ <h2>Continues to blow my mind every day!</h2>
+ <p class="lead">
+ <a href="http://pongr.com">Pongr</a>
+ launched our new product earlier this week
+ As you know, we use (and love) Lift, and I just wanted to thank you
+ for creating such an incredible framework. It continues to blow my
+ mind every day!
+ </p>
+ <small>Zach Cox, Chief Software Architect, Pongr</small>
+ </blockquote>
+ </div>
+ </content>
</cms>
View
29 site/quotes/sgrouples.cms.xml
@@ -1,14 +1,19 @@
<cms path="/quotes/sgrouples" type="html" locale="en_US" host="liftweb.net">
-<content>
-<div>
- <div class="left">&ldquo;</div>
- <div class="center">
- <h1>
-Sgrouples is a social platform with a new approach to privacy and security on the web. Our team pushed Sgrouples from conceptual ideas to a publicly available release in just nine months. Some reasons we chose the Lift framework are its security-driven design and its stellar Ajax and Comet support. Lift paves the way for a secure, responsive real time application that is fun to use and even greater fun to develop.
- </h1>
- Torsten Uhlmann, Sgrouples
- </div>
- <div class="right">&rdquo;</div>
-</div>
-</content>
+ <content>
+ <div id="lh-quote" class="well">
+ <blockquote class="pull-right">
+ <h2>Security-driven design, with stellar Ajax and Comet support!</h2>
+ <p class="lead">
+ Sgrouples is a social platform with a new approach to privacy and security
+ on the web. Our team pushed Sgrouples from conceptual ideas to a
+ publicly available release in just nine months. Some reasons we
+ chose the Lift framework are its security-driven design and its
+ stellar Ajax and Comet support. Lift paves the way for a secure,
+ responsive real time application that is fun to use and even
+ greater fun to develop.
+ </p>
+ <small>Torsten Uhlmann, Sgrouples</small>
+ </blockquote>
+ </div>
+ </content>
</cms>
View
30 site/quotes/tackley.cms.xml
@@ -1,17 +1,17 @@
<cms path="/quotes/dale" type="html" locale="en_US" host="liftweb.net">
-<content>
- <div>
- <div class="left">&ldquo;</div>
- <div class="center">
- <h1>
- Thanks to its design, Lift encourages us to write concise, secure and performant web
- applications very rapidly. We're finding that Lift steps out of the way and
- allows us to concentrate on developing a great experience for the end user,
- more than any other web framework we've used.
- </h1>
- Graham Tackley, UK Guardian
- </div>
- <div class="right">&rdquo;</div>
- </div>
-</content>
+ <content>
+ <div id="lh-quote" class="well">
+ <blockquote class="pull-right">
+ <h2>Lift encourages us and steps out of the way!</h2>
+ <p class="lead">
+ Thanks to its design, Lift encourages us to write
+ concise, secure and performant web applications very rapidly.
+ We're finding that Lift steps out of the way and
+ allows us to concentrate on developing a great experience for the
+ end user, more than any other web framework we've used.
+ </p>
+ <small>Graham Tackley, UK Guardian</small>
+ </blockquote>
+ </div>
+ </content>
</cms>
View
27 site/quotes/tyler.cms.xml
@@ -1,16 +1,15 @@
<cms path="/quotes/tyler" type="html" locale="en_US" host="liftweb.net">
-<content>
- <div>
- <div class="left">&ldquo;</div>
- <div class="center">
- <h1>
- Just thanks for Lift.
- It's just so darn good.
- I'm one-manning this giant app and I couldn't do it with anything but Lift.
- </h1>
- Tyler Weir, author The Definitive Guide to Lift
- </div>
- <div class="right">&rdquo;</div>
- </div>
-</content>
+ <content>
+ <div id="lh-quote" class="well">
+ <blockquote class="pull-right">
+ <h2>It's just so darn good!</h2>
+ <p class="lead">
+ Just thanks for Lift. It's just so darn good.
+ I'm one-manning this giant app and I couldn't do it with anything but
+ Lift.
+ </p>
+ <small>Tyler Weir, author The Definitive Guide to Lift</small>
+ </blockquote>
+ </div>
+ </content>
</cms>
View
BIN site/src/images/logo-light.jpg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
196 site/src/style-app.cms.xml
@@ -0,0 +1,196 @@
+<cms path="/style/style-app.css" serve="true" type="css" host="liftweb.net">
+<content>
+<![CDATA[
+
+
+/* BASIC STRUCTURE
+*******************************************************************************/
+body {
+ /*background-image: url("../img/someImge.png");*/
+ background-position: 0 40px;
+ background-repeat: repeat-x;
+ padding-top: 50px;
+ position: relative;
+}
+
+/* HEDINGS FONTS
+*************************************************************************/
+h1, h2, h3 {
+ color: #000000;
+ font-family: Orbitron,Helvetica,Verdana,sans-serif;
+ font-weight: normal;
+ text-shadow: 2px 2px 2px #CCCCCC;
+}
+
+/* HEADER
+*************************************************************************/
+
+div#header div#hdr { float: left; max-width: 185px; height:99px; margin-left:20px; }
+
+.header-home { display:block; background: url('http://static.liftweb.com/logo.jpg') no-repeat; height: 89px; width: 185px;}
+.header-home span {
+ padding-left: 30px;
+ text-indent: -9999px;
+ float:left;
+ display: inline;
+}
+
+.header-home span a{
+ display: block;
+ height: 89px; width: 185px;
+}
+
+.lh-top-btn {
+ width:120px;
+ float:right;
+ margin-top:5px;
+ margin-left: 10px;
+ }
+
+/* MAIN QUOTE AREA
+*************************************************************************/
+#lh-quote.well { overflow: hidden;min-height:240px;}
+#lh-quote > blockquote > p.lead:after {
+ bottom: 3px;
+ content: "”";
+ right: -10px;
+ text-align: right;
+}
+#lh-quote > blockquote > p.lead:before {
+ content: "“";
+ left: -10px;
+ top: -11px;
+}
+#lh-quote > blockquote > p.lead:after,
+#lh-quote > blockquote > p.lead:before {
+ font-family: Georgia,Serif;
+ color:#ccc;
+ font-size: 36px;
+ font-weight: bold;
+}
+
+/* BOXES BOXEs BOXes BOxes Boxes
+*******************************************************************************/
+
+div.gradient-panel {
+ overflow: hidden;
+ display: inline-block;
+ float:left;
+ width:24%; min-width:204px;
+ min-height:90px;
+ border: none;
+ display: block;
+ padding: 10px;
+ margin: 0px 0.5% 15px 0.5%;
+ -moz-box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ -webkit-box-shadow: 1px 1px 1px 2px #C1C4BA;
+ -moz-box-shadow: 1px 1px 1px 2px #C1C4BA;
+ box-shadow: 1px 1px 1px 2px #C1C4BA;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+
+/* USER LOGOS
+*******************************************************************************/
+#logo-container {
+ display: block;
+ float:left;
+ width:100%;
+ background:#374e97;
+ border:1px solid #8a9bd5;
+ text-align:center;
+ padding:10px 0px;
+ margin:5px 0px 25px 0px;
+ -moz-box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 20px;
+ }
+#logo-container .logo {
+ float:left;
+ width:24%;
+ margin: 10px 0.5% 10px 0.5%;
+ text-align:center;
+
+ }
+
+/* FOOTER
+*******************************************************************************/
+#footer{ float:left; margin: 5px auto 0; width: 100%; height:auto; text-align:center; }
+#footer p {
+ font-family: "Warnock Pro", "Goudy Old Style", "Palatino",
+ "Book Antiqua", Georgia, serif;
+ font-style: italic;
+ font-weight: normal;
+ }
+.ftr-links {line-height: 18px; color:#888; font-size:0.9em; }
+.ftr-links a, .ftr-links a:visited, .ftr-copy a {color:#888; }
+.ftr-links a:hover {text-decoration:underline;}
+.ftr-copy { text-align:center; color:#000;}
+
+
+/* MEDIA stuff
+*************************************************************************/
+
+@media (max-width: 1040px) {
+ div.gradient-panel {width: 49%;min-height:70px;}
+ div.gradient-panel h1 {font-size:180%;}
+ #lh-quote.well {min-height:250px;}
+}
+
+@media (min-width: 768px) and (max-width: 979px) {
+ body {font-size: 80%; line-height: 16px; padding-top:0px;}
+ div.gradient-panel {width: 49%;min-height:70px;}
+ div.gradient-panel h1 {font-size:130%;}
+ div.gradient-panel p {font-size:100%;}
+ #logo-container .logo { width:44%;}
+ .lh-top-btn { width:90px;}
+ #lh-quote.well {min-height:300px;}
+}
+@media (max-width: 767px) {
+ body {font-size: 90%;line-height: 16px; padding-top:0px;}
+ div.gradient-panel h1 {font-size:120%;}
+ div.gradient-panel p {font-size:90%;}
+ div.gradient-panel {width:100%;min-height:70px;}
+ .lh-top-btn { width:70px;}
+ #logo-container .logo { width:44%;}
+ #lh-quote.well {min-height:400px;}
+}
+@media (max-width: 480px) {
+ body {font-size: 100%;line-height: 16px;padding-top:0px;}
+
+ div.box-gradient {width: 100%;min-height:90px; }
+ div.box-gradient h1 {font-size:120%;}
+ div.box-gradient span {font-size:70%;}
+ .lh-top-btn { width:90px;}
+ #logo-container .logo { width:95%;}
+ #lh-quote.well {min-height:550px;}
+}
+
+/*
+*************************************************************************/
+
+
+/* SUBNAV is currently not used
+*
+*.subnav {
+* background-color: #EEEEEE;
+* background-image: -moz-linear-gradient(center top , #F5F5F5 0%, #EEEEEE 100%);
+* background-repeat: repeat-x;
+* border: 1px solid #E5E5E5;
+* border-radius: 4px 4px 4px 4px;
+* height: 36px;
+* width: 100%;
+*}
+*************************************************************************/
+
+
+
+]]>
+</content>
+</cms>
View
613 site/team.cms.xml
@@ -1,267 +1,350 @@
<cms path="/team" serve="true" type="html" locale="en_US" host="liftweb.net">
- <tag name="name" value="team"/>
- <tag name="menu" value="Team"/>
- <tag name="order" value="7"/>
- <content>
- <lift:surround with="default" at="content">
- <head>
- <title>Lift :: Team</title>
- </head>
-
- <div class="row-fluid">
- <div class="span12">
-
- <div class="row-fluid">
- <div class="span9">
-
- <p>An awful lot of time and effort has gone into making lift the great
- bit of software it is today - so, to honor this effort, we felt it only
- right to honor those who have generously donated time to the project.</p>
- <hr />
- <h1 id="current-team">CURRENT TEAM</h1>
- <div >
- <h2>David Pollak &ndash; Founder</h2>
- <p>David Pollak has been writing commercial software since 1977. He wrote the
- first real-time spreadsheet and the worlds highest performance spreadsheet
- engine. Since 1996, David has been using and devising web development tools. As CTO
- of CMP Media, David oversaw the first large-scale deployment of WebLogic.
- David was CTO and VPE at Cenzic, a web application security company. David
- has also developed numerous commercial projects in Ruby on Rails.
- In 2007, David founded the Lift Framework open source project.</p>
- </div>
-
- <div >
- <h2>Tyler Weir</h2>
- <p>Currently a co-founder of Roboboogie Studios. In my former jobs I
- worked on compilers, desktop business apps and web applications.
- Along with Derek and Marius, I'm a co-author of the upcoming Lift
- book.</p>
- </div>
- <div >
- <h2>Derek Chen-Becker</h2>
- <p>A senior network engineer for a large company. I've been doing software
- development for over 14 years, with 12 years of Java experience. I started
- working with Scala 2 years ago and I've been working heavily with Lift since
- version 0.2 came out.</p>
- </div>
-
- <div >
- <h2>Indrajit Raychaudhuri</h2>
- <p>Indrajit manages Lift's builds and build environment
- including some serious mastery of both Maven and SBT.</p>
- </div>
-
- <div >
- <h2>Vassil Dichev</h2>
- <p>Vassil is a Lift user in the ESME project and
- contributes to Lift's TestKit.</p>
- </div>
-
- <div>
- <h2>Mads Hartmann Jensen</h2>
- <p>Mads is a energetic young developer from Copenhagen, Denmark. He's been a Lift committer since January 2010 and has been working on different parts of Lift. As part of his Google Summer of Code project in 2010 he created Lifty to make Lift developers more productive . When he's not caught up in various open source projects he's getting his bachelor in software development at the IT University of Copenhagen.</p>
- </div>
-
- <div>
- <h2>Jeppe Nejsum Madsen</h2>
- <p>Co-founder and CTO of FleetZone, a company that builds a SaaS platform for fleet management (based on Lift of course!).</p>
- </div>
-
- <div >
- <h2>Andreas Joseph Krogh</h2>
- <p>No description available.</p>
- </div>
-
- <div >
- <h2>Torsten Uhlmann</h2>
- <p>No description available.</p>
- </div>
-
- <div >
- <h2>Dave Whittaker</h2>
- <p>Dave maintains Lift's Squeryl-Record code.</p>
- </div>
-
- <div >
- <h2>Ján Raška</h2>
- <p>Ján contributes to Lift's Squeryl-Record code.</p>
- </div>
-
- <div >
- <h2>Franz Bettag</h2>
- <p>Black Belt DevOp, CEO and Developer located in Nuremberg, Germany. Franz has written some excellent examples for Lift and gave an awesome presentation about Lift and Akka at the Scala Lift Off London 2011. He's been active in the Community for quite some time and became Lift committer in January 2012.</p>
- </div>
-
- <div >
- <h2>Diego Medina</h2>
- <p>Diego is a super helpful, super excellent, super nice, and super skilled member of the Lift community. He's been active in the Community for quite some time and became Lift committer in Mars 2012.</p>