[Lift] Re: Getting started: Rendering a template (Definitive Guide)

2009-08-16 Thread Morris Jones

marius d. wrote:
> I believe the book describes the SiteMap quite extensively. Yes, if
> you are using SiteMap then you have to add your new page to the
> SiteMap.

I have no doubt that it's there in great detail.  I just stumbled trying 
to experiment with it before I knew what I was doing, or got to that 
chapter.  :)  Thanks ...

Cheers,
Mojo
-- 
Morris Jones
Monrovia, CA
http://www.whiteoaks.com
Old Town Astronomers: http://www.otastro.org
http://twitter.com/mojo_la

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~--~~~~--~~--~--~---



[Lift] Re: lift-openid broken

2009-08-16 Thread marius d.

Thank you for pointing this out. Most likely I'll make the corrections
today.

Br's,
Marius

On Aug 17, 1:48 am, Vassil  wrote:
> Hello guys,
>
> It seems the HTTP refactoring around 10 days ago broke OpenId. Here's
> a small patch that made it work for me:
>
> --- dpp-liftweb-e845b3c129baf16bc35b46df9ee5b5049d4aee3a/lift-openid/
> src/main/scala/net/liftweb/openid/OpenId.scala     2009-08-16
> 17:36:58.0 +0300
> +++ dpp-liftweb-fixed/lift-openid/src/main/scala/net/liftweb/openid/
> OpenId.scala        2009-08-17 01:43:46.0 +0300
> @@ -267,7 +267,7 @@
>
>      // retrieve the previously stored discovery information
>      val discovered = httpReq.session.attribute("openid-disc") match {
> -      case Full(d: DiscoveryInformation)=> d
> +      case d: DiscoveryInformation=> d
>        case _ => throw ResponseShortcutException.redirect("/")
>      }
>
> @@ -275,7 +275,7 @@
>      var receivingURL = httpReq.url
>      val queryString = httpReq.queryString openOr ""
>      if (queryString != null && queryString.length() > 0) {
> -      receivingURL += "?" + httpReq.queryString;
> +      receivingURL += "?" + queryString;
>      }
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~--~~~~--~~--~--~---



[Lift] Re: Debug log level

2009-08-16 Thread Derek Chen-Becker
log4j itself looks for a log4j.properties or log4j.xml file in the
classpath, so that would work whether you're using Lift or not.

Derek

On Sun, Aug 16, 2009 at 6:14 PM, Naftoli Gugenheim wrote:

>
> Thanks. The book makes it sound like the file should be called log4j.props,
> and the repository has files called log4j.properties. I haven't used log4j
> before, but apparently putting one of the log4j.properties files in, named
> default.log4j.props, worked, so I guess it needed that prefix.
>
>
> -
> Derek Chen-Becker wrote:
>
> Provide your own log4j configuration. IIRC, you should be able to create a
> default.log4j.xml or default.log4j.props file and put it in
> src/main/resources/props/ to customize the log4j config.
>
> Derek
>
> On Sun, Aug 16, 2009 at 3:48 PM, Naftoli Gugenheim  >wrote:
>
> >
> > How do you set the log level to include debug output?
> >
> > >
> >
>
>
>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~--~~~~--~~--~--~---



[Lift] Re: slow down ajax?

2009-08-16 Thread marius d.

You can probably use this definition of ajaxText:

def ajaxText(value: String, jsFunc: Call, func: String => JsCmd)

See the jsFunc parameter. Essentially you are specifying your function
call that may have one parameter. To your parameter list List we'll
add a new parameter which is the ajax invocation function. In other
words your code gets that function that does the ajax call meaning
that you have the control over when the ajax call is made.

Br's,
Marius

On Aug 17, 8:55 am, "marius d."  wrote:
> Would you please post a code snippet with what you're doing? (a
> minimalistic example)
>
> Br's,
> Marius
>
> On Aug 17, 7:41 am, g-man  wrote:
>
> > I am moving nicely with my 'save all dates as millis and let the
> > client localize for display' project, learning while enhancing the
> > ToDo sample app.
>
> > I have added a 'dueOn' field, and that is displayed as swappable
> > ajaxText, similar to the other fields in the tutorial.
>
> > I have enabled datepicker for the ajaxText field via jQuery, and have
> > a parsing function attached an event listener, so when datepicker
> > finishes, the date is converted to millis, ready for Lift to send back
> > to the server and save.
>
> > So far, all good.
>
> > The problem is that Lift's ajax starts ('onblur') before it has a
> > chance to see the new date value, so the new value is never saved.
>
> > What I need is a way to tell Lift to wait until after my parser has
> > had a chance to write the changed value.
>
> > I like the ajax style, so I don't want to make a 'submit' form, and
> > 'onchange' won't do it either, because the value is actually changed
> > twice (once to a formatted date, once to millis).
>
> > What I need is some way to say, 'OK to start ajax now'!
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~--~~~~--~~--~--~---



[Lift] Re: slow down ajax?

2009-08-16 Thread marius d.

Would you please post a code snippet with what you're doing? (a
minimalistic example)

Br's,
Marius

On Aug 17, 7:41 am, g-man  wrote:
> I am moving nicely with my 'save all dates as millis and let the
> client localize for display' project, learning while enhancing the
> ToDo sample app.
>
> I have added a 'dueOn' field, and that is displayed as swappable
> ajaxText, similar to the other fields in the tutorial.
>
> I have enabled datepicker for the ajaxText field via jQuery, and have
> a parsing function attached an event listener, so when datepicker
> finishes, the date is converted to millis, ready for Lift to send back
> to the server and save.
>
> So far, all good.
>
> The problem is that Lift's ajax starts ('onblur') before it has a
> chance to see the new date value, so the new value is never saved.
>
> What I need is a way to tell Lift to wait until after my parser has
> had a chance to write the changed value.
>
> I like the ajax style, so I don't want to make a 'submit' form, and
> 'onchange' won't do it either, because the value is actually changed
> twice (once to a formatted date, once to millis).
>
> What I need is some way to say, 'OK to start ajax now'!
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~--~~~~--~~--~--~---



[Lift] Re: Getting started: Rendering a template (Definitive Guide)

2009-08-16 Thread marius d.

I believe the book describes the SiteMap quite extensively. Yes, if
you are using SiteMap then you have to add your new page to the
SiteMap.

Br's,
Marius

On Aug 17, 8:27 am, Morris Jones  wrote:
> Derek Williams wrote:
> > The  tag is used to reference another template that will
> > contain your template. If you have only added index.html you can try
> > removing the  tag and see if that works, or find the
> > place in the Guide that explains how to create a template that can be
> > used with surround.
>
> Thanks for the response Derek!  So I took out the  tag
> from my test file, and turned it into a basic HTML page with  and
>  and  elements and no Lift elements.  Still the browser
> responds with: The Requested URL /mojo/index.html was not found on this
> server, though it's clearly there on the path.
>
> I guess the book is leaving something out, like having to add the path
> to the SiteMap or such?  Or maybe there's another configuration missing
> that isn't mentioned in the chapter.
>
> Cheers,
> Mojo
> --
> Morris Jones
> Monrovia, CAhttp://www.whiteoaks.com
> Old Town Astronomers:http://www.otastro.orghttp://twitter.com/mojo_la
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~--~~~~--~~--~--~---



[Lift] Re: Deploying

2009-08-16 Thread Morris Jones

Naftoli Gugenheim wrote:
> What's the best way to get a lift app running on a Ubuntu web server I can 
> SSH into with full permissions? It came with almost nothing installed.
> Thanks.

I'll take a shot at this, since the answer primarily involves Java and 
an application server.

It's not too difficult really.  You'll need to have a Java runtime 
installed, the latest Java 6 release recommended.  You can probably 
install this in /usr/local/java, and point JAVA_HOME to that directory. 
  Or without any root access, install it to your home directory and 
point JAVA_HOME there.  Try "java -version" and "which java" before you 
do that to see what's already on the machine.

Then get the latest Tomcat and unpack it in a directory as well.  Maven 
will build your WAR file with the "mvn package" command.  Drop the WAR 
file in Tomcat's webapps directory, and start up Tomcat.  By default 
your app will appear on the server's port 8080.

Or you can use Jetty instead of Tomcat, just as the Maven plug-in does.

Hope that helps a little ...

Mojo
-- 
Morris Jones
Monrovia, CA
http://www.whiteoaks.com
Old Town Astronomers: http://www.otastro.org
http://twitter.com/mojo_la

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~--~~~~--~~--~--~---



[Lift] Re: Getting started: Rendering a template (Definitive Guide)

2009-08-16 Thread Morris Jones

Derek Williams wrote:
> The  tag is used to reference another template that will 
> contain your template. If you have only added index.html you can try 
> removing the  tag and see if that works, or find the 
> place in the Guide that explains how to create a template that can be 
> used with surround.

Thanks for the response Derek!  So I took out the  tag 
from my test file, and turned it into a basic HTML page with  and 
 and  elements and no Lift elements.  Still the browser 
responds with: The Requested URL /mojo/index.html was not found on this 
server, though it's clearly there on the path.

I guess the book is leaving something out, like having to add the path 
to the SiteMap or such?  Or maybe there's another configuration missing 
that isn't mentioned in the chapter.

Cheers,
Mojo
-- 
Morris Jones
Monrovia, CA
http://www.whiteoaks.com
Old Town Astronomers: http://www.otastro.org
http://twitter.com/mojo_la

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~--~~~~--~~--~--~---



[Lift] IMPORTANT for H2 users

2009-08-16 Thread Naftoli Gugenheim

I fixed the H2 default schema to be PUBLIC (top level in H2 console is PUBLIC) 
rather than Empty (username).
This bug prevented one from schemifying a new database without creating the 
schema of the username first, and using the schema in the url.
However, if you use the schema in the URL lift may not be happy anymore.
Please inform the list of any related problem.
David, is there a way to override the connection's schema?
Thanks.


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~--~~~~--~~--~--~---



[Lift] slow down ajax?

2009-08-16 Thread g-man

I am moving nicely with my 'save all dates as millis and let the
client localize for display' project, learning while enhancing the
ToDo sample app.

I have added a 'dueOn' field, and that is displayed as swappable
ajaxText, similar to the other fields in the tutorial.

I have enabled datepicker for the ajaxText field via jQuery, and have
a parsing function attached an event listener, so when datepicker
finishes, the date is converted to millis, ready for Lift to send back
to the server and save.

So far, all good.

The problem is that Lift's ajax starts ('onblur') before it has a
chance to see the new date value, so the new value is never saved.

What I need is a way to tell Lift to wait until after my parser has
had a chance to write the changed value.

I like the ajax style, so I don't want to make a 'submit' form, and
'onchange' won't do it either, because the value is actually changed
twice (once to a formatted date, once to millis).

What I need is some way to say, 'OK to start ajax now'!
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~--~~~~--~~--~--~---



[Lift] Deploying

2009-08-16 Thread Naftoli Gugenheim

What's the best way to get a lift app running on a Ubuntu web server I can SSH 
into with full permissions? It came with almost nothing installed.
Thanks.

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~--~~~~--~~--~--~---



[Lift] Re: Getting started: Rendering a template (Definitive Guide)

2009-08-16 Thread Derek Williams
The  tag is used to reference another template that will
contain your template. If you have only added index.html you can try
removing the  tag and see if that works, or find the place in
the Guide that explains how to create a template that can be used with
surround.

-- 
Derek Williams

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~--~~~~--~~--~--~---



[Lift] Re: Getting started: Rendering a template (Definitive Guide)

2009-08-16 Thread Derek Williams
Sorry, reread your post, I thought you were starting from a completely blank
app. The problem is probably with the sitemap, you will have to add an entry
for your new file.


-- 
Derek Williams

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~--~~~~--~~--~--~---



[Lift] 1.1-SNAPSHOT broken in Google App Engine

2009-08-16 Thread Mark Tye

First, I want to say that I'm really impressed with Lift. It's a
pleasure to work with (now that I've figured it out) and it keeps
getting better.

I'm working on a Lift project that runs on Google App Engine. After an
extended period of development on a local dev server, I uploaded my
app and was surprised to discover it didn't work in the App Engine
environment anymore.

In the logs, I discovered that every request resulted in a HTTP 500
error. The root cause appeared to be a ClassNotFoundException thrown
by com.google.apphosting.runtime.security.UserClassLoader while
deserializing a net.liftweb.http.SessionToServletBridge. (Or possibly
some object that contains a SessionToServletBridge?)

I found an entry in the Google App Engine issue tracker noting
problems with the deserialization of certain objects from a Session:

http://code.google.com/p/googleappengine/issues/detail?id=1290

Some of the comments suggest that these objects are running afoul of
App Engine's JRE White List:

http://code.google.com/appengine/docs/java/jrewhitelist.html

But I looked at the source for SessionToServletBridge and did not see
any forbidden classes in the imports, so I'm not sure if that's the
problem in this case.

I was able get my app working again by reverting from the snapshot to
version 1.1-M4, so presumably, the change that's causing the problem
was introduced after the M4 milestone.

I don't know if compatibility with App Engine is a priority for the
Lift team, but if this doesn't get fixed, I face an ugly choice
between remaining frozen at 1.1-M4 as Lift development moves forward,
or migrating away from App Engine to another cloud solution. Is there
anything I can do to assist the diagnosis/resolution of this issue?

Thanks,
Mark

Here's the stack trace:

javax.servlet.ServletException: java.lang.RuntimeException:
java.lang.ClassNotFoundException:
net.liftweb.http.SessionToServletBridge
at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.handle
(AppVersionHandlerMap.java:239)
at org.mortbay.jetty.handler.HandlerWrapper.handle
(HandlerWrapper.java:139)
at org.mortbay.jetty.Server.handle(Server.java:313)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:
506)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete
(HttpConnection.java:830)
at com.google.apphosting.runtime.jetty.RpcRequestParser.parseAvailable
(RpcRequestParser.java:76)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
at
com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest
(JettyServletEngineAdapter.java:139)
at com.google.apphosting.runtime.JavaRuntime.handleRequest
(JavaRuntime.java:235)
at com.google.apphosting.base.RuntimePb$EvaluationRuntime
$6.handleBlockingRequest(RuntimePb.java:4823)
at com.google.apphosting.base.RuntimePb$EvaluationRuntime
$6.handleBlockingRequest(RuntimePb.java:4821)
at com.google.net.rpc.impl.BlockingApplicationHandler.handleRequest
(BlockingApplicationHandler.java:24)
at com.google.net.rpc.impl.RpcUtil.runRpcInApplication(RpcUtil.java:
359)
at com.google.net.rpc.impl.Server$2.run(Server.java:820)
at com.google.tracing.LocalTraceSpanRunnable.run
(LocalTraceSpanRunnable.java:56)
at com.google.tracing.LocalTraceSpanBuilder.internalContinueSpan
(LocalTraceSpanBuilder.java:516)
at com.google.net.rpc.impl.Server.startRpc(Server.java:775)
at com.google.net.rpc.impl.Server.processRequest(Server.java:348)
at com.google.net.rpc.impl.ServerConnection.messageReceived
(ServerConnection.java:436)
at com.google.net.rpc.impl.RpcConnection.parseMessages
(RpcConnection.java:319)
at com.google.net.rpc.impl.RpcConnection.dataReceived
(RpcConnection.java:290)
at com.google.net.async.Connection.handleReadEvent(Connection.java:
428)
at com.google.net.async.EventDispatcher.processNetworkEvents
(EventDispatcher.java:762)
at com.google.net.async.EventDispatcher.internalLoop
(EventDispatcher.java:207)
at com.google.net.async.EventDispatcher.loop(EventDispatcher.java:
101)
at com.google.net.rpc.RpcService.runUntilServerShutdown
(RpcService.java:251)
at com.google.apphosting.runtime.JavaRuntime$RpcRunnable.run
(JavaRuntime.java:374)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.RuntimeException:
java.lang.ClassNotFoundException:
net.liftweb.http.SessionToServletBridge
at com.google.apphosting.runtime.jetty.SessionManager.deserialize
(SessionManager.java:362)
at com.google.apphosting.runtime.jetty.SessionManager.loadSession
(SessionManager.java:280)
at com.google.apphosting.runtime.jetty.SessionManager.getSession
(SessionManager.java:255)
at org.mortbay.jetty.servlet.AbstractSessionManager.getHttpSession
(AbstractSessionManager.java:237)
at org.mortbay.jetty.Request.getSession(Request.java:998)
 

[Lift] Re: Debug log level

2009-08-16 Thread Naftoli Gugenheim

Thanks. The book makes it sound like the file should be called log4j.props, and 
the repository has files called log4j.properties. I haven't used log4j before, 
but apparently putting one of the log4j.properties files in, named 
default.log4j.props, worked, so I guess it needed that prefix.


-
Derek Chen-Becker wrote:

Provide your own log4j configuration. IIRC, you should be able to create a
default.log4j.xml or default.log4j.props file and put it in
src/main/resources/props/ to customize the log4j config.

Derek

On Sun, Aug 16, 2009 at 3:48 PM, Naftoli Gugenheim wrote:

>
> How do you set the log level to include debug output?
>
> >
>



--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~--~~~~--~~--~--~---



[Lift] lift-openid broken

2009-08-16 Thread Vassil

Hello guys,

It seems the HTTP refactoring around 10 days ago broke OpenId. Here's
a small patch that made it work for me:

--- dpp-liftweb-e845b3c129baf16bc35b46df9ee5b5049d4aee3a/lift-openid/
src/main/scala/net/liftweb/openid/OpenId.scala 2009-08-16
17:36:58.0 +0300
+++ dpp-liftweb-fixed/lift-openid/src/main/scala/net/liftweb/openid/
OpenId.scala2009-08-17 01:43:46.0 +0300
@@ -267,7 +267,7 @@

 // retrieve the previously stored discovery information
 val discovered = httpReq.session.attribute("openid-disc") match {
-  case Full(d: DiscoveryInformation)=> d
+  case d: DiscoveryInformation=> d
   case _ => throw ResponseShortcutException.redirect("/")
 }

@@ -275,7 +275,7 @@
 var receivingURL = httpReq.url
 val queryString = httpReq.queryString openOr ""
 if (queryString != null && queryString.length() > 0) {
-  receivingURL += "?" + httpReq.queryString;
+  receivingURL += "?" + queryString;
 }

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~--~~~~--~~--~--~---



[Lift] Re: Debug log level

2009-08-16 Thread Derek Chen-Becker
Provide your own log4j configuration. IIRC, you should be able to create a
default.log4j.xml or default.log4j.props file and put it in
src/main/resources/props/ to customize the log4j config.

Derek

On Sun, Aug 16, 2009 at 3:48 PM, Naftoli Gugenheim wrote:

>
> How do you set the log level to include debug output?
>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~--~~~~--~~--~--~---



[Lift] Re: CMS for Lift?

2009-08-16 Thread TylerWeir

> @Glenn - is your project public?

Seconded, toss it up on github and let the community start helping
out.

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~--~~~~--~~--~--~---



[Lift] Getting started: Rendering a template (Definitive Guide)

2009-08-16 Thread Mojo

I'm going through the Definitive Guide to Lift, and trying to do
experiments as I go through.

In through Chapter 3, Rendering with Templates, it describes how Lift
locates templates in the war file.

So to try it out, I tried the following within both the PocketChange
sample app, and the HelloWorld archetype project:

1. I created a new folder under src/main/webapp named mojo
2. I created index.html in that folder
3. I put some simple HTML markup inside a  tag
4. I started up the app with mvn jetty:run

However attempts to navigate to http://localhost:8080/mojo or /mojo/
or /mojo/index.html all return an error page that the requested URL
was not found on this server.

I've verified that the directory appears in the WAR file, just as the
"help" directory does in the PocketChange app.

So I must have missed something in the Definitive Guide chapter,
because I haven't (yet) found any other requirements to get Lift to
render a template.  What am I missing?  I didn't add any custom
dispatching to the sample app bootstraps.

I know I'll have a lot of basic bootstrapping questions like this.
I'm currently a Java SpringMVC webapp developer, and spent a year
working in Ruby on Rails in the past.

Regards,
Mojo
--
Morris Jones
m...@whiteoaks.com mojo...@gmail.com
http://mojo.whiteoaks.com
http://twitter.com/mojo_la

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~--~~~~--~~--~--~---



[Lift] Debug log level

2009-08-16 Thread Naftoli Gugenheim

How do you set the log level to include debug output?

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~--~~~~--~~--~--~---



[Lift] Re: CMS for Lift?

2009-08-16 Thread Timothy Perrett


I think Akka / GoatRodeo will make building such developments with Lift even
more compelling thanks to persistence systems like Cassandra.

@Glenn - is your project public?

Cheers, Tim

On 16/08/2009 19:13, "glenn"  wrote:

> 
> Philip,
> 
> I'm working on a cms system in Lift. Right now, it allows for content
> creation using wymeditor, which can be
> tagged and displayed as an atom feed. This code is runnable, simple as
> it is. I'm working on adding dynamic site map creation as well. Is
> this kind
> of what you have in mind by a CMS system.
> 
> I'm very interested in workiing with others on a CMS that can compete
> with any of the PHP varieties out there, such as Drupal and Wordpress.
> Most of these simply use plugins from one ore more javascript
> libraries out there for site creation, and Lift certainly  can do
> javascript as well as, if not
> better than, these systems.
> 
> Glenn...
> 
> On Aug 15, 11:08 pm, philip  wrote:
>> Hi,
>> 
>> Has anyone made a CMS for Liftweb? or I should say, in liftweb.
>> 
>> Thanks, Philip
> > 
> 



--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~--~~~~--~~--~--~---



[Lift] Re: Lift templates lack obvious stuff (?)

2009-08-16 Thread marius d.

You can use multiple bind pointx by the means of



  Your tag soup
  Your tag stue
  ...


 tag.

Br's,
Marius

On Aug 16, 9:34 pm, "incarn...@whiteants.net"
 wrote:
> Greetings. I've googled quite a while for a very obvious feature that
> all templating engines out there have and it seems like Lift does not.
> I'm talking about multiple bind tags in a template.
> Example should explain best.
>
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>
> So how am I supposed to insert parts of contents into these bind
> locations? In Facelets the ui:composition/ui:insert/ui:define tags do
> the job. And I rather do not understand the intention to have multiple
> bind locations in template while the lift:surround tag only allows one
> 'at' attribute. Can somebody explain this design please?
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~--~~~~--~~--~--~---



[Lift] Lift templates lack obvious stuff (?)

2009-08-16 Thread incarn...@whiteants.net

Greetings. I've googled quite a while for a very obvious feature that
all templating engines out there have and it seems like Lift does not.
I'm talking about multiple bind tags in a template.
Example should explain best.












So how am I supposed to insert parts of contents into these bind
locations? In Facelets the ui:composition/ui:insert/ui:define tags do
the job. And I rather do not understand the intention to have multiple
bind locations in template while the lift:surround tag only allows one
'at' attribute. Can somebody explain this design please?

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~--~~~~--~~--~--~---



[Lift] Re: CMS for Lift?

2009-08-16 Thread glenn

Philip,

I'm working on a cms system in Lift. Right now, it allows for content
creation using wymeditor, which can be
tagged and displayed as an atom feed. This code is runnable, simple as
it is. I'm working on adding dynamic site map creation as well. Is
this kind
of what you have in mind by a CMS system.

I'm very interested in workiing with others on a CMS that can compete
with any of the PHP varieties out there, such as Drupal and Wordpress.
Most of these simply use plugins from one ore more javascript
libraries out there for site creation, and Lift certainly  can do
javascript as well as, if not
better than, these systems.

Glenn...

On Aug 15, 11:08 pm, philip  wrote:
> Hi,
>
> Has anyone made a CMS for Liftweb? or I should say, in liftweb.
>
> Thanks, Philip
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~--~~~~--~~--~--~---



[Lift] Re: ScalaTest dependency

2009-08-16 Thread marius d.



On Aug 16, 6:56 pm, Derek Chen-Becker  wrote:
> I really like the idea of changing the logFunc type if everyone is OK with
> that. To further refine it, the trait could define three defs:
>
> def getStatements : List[(String,Long)]
> def getMetaCommands : List[(String,Long)]
> def getAll : List[(String,Long)]
>
> getAll would return the union of the first two, in proper sequential order.
> I could further refine this by making use of case classes instead of
> (String,Long):
>
> sealed abstract class DBLogEntry
> case class LoggedStatement(statement : String, duration : Long) extends
> DBLogEntry
> case class LoggedMetaCommand(statement : String, duration : Long) extends
> DBLogEntry
>
> I don't know enough detail on JDBC to know whether or not meta commands
> require round-trips to the DB or if the spec requires that they're all
> local, but it seems like we should just time everything.
>
> Thoughts?

I like it ... and I'd go for concrete cases classes(LoggedStatement,
LoggedMetaCommand ...) above as opposed to tupples. So at least you
got my vote :)

>
> On Sun, Aug 16, 2009 at 8:31 AM, marius d.  wrote:
>
> > On Aug 16, 5:18 pm, Derek Chen-Becker  wrote:
> > > Yeah, I was actually thinking about that same angle last night. Perhaps I
> > > could provide some control var on DB to enable detailed or basic logging?
>
> > Yeah ... or maybe for the logFunc to not pass just a query string but
> > an object (abstracted by a trait) and let the user extract from there
> > whatever is needed. Just the plain query and/or other stuff. Yes this
> > would mean a breaking change but I think a good one.
>
> > > I
> > > think that it would be very useful in some cases, for example, to know
> > that
> > > underlying code is setting max rows or max fetch size, but I agree that
> > most
> > > people will probably just want basic statements logged. Also, with a
> > > prepared statement someone *could* execute multiple queries in one go, so
> > I
> > > can't get rid of the list of stuff.
>
> > Totally agree, but please see my notes above.
>
> > > Another approach would be to give the
> > > logFuncs List to the Logging classes and then they could decide whether
> > to
> > > log (and time) each execution individually or all at once (if someone
> > sets
> > > batch mode, for example). What do you think?
>
> > Based on the above I'd probably opt in for a trait rather then the
> > List.
>
> > Perhaps :
>
> > trait LogStatement {
>
> >  def getStatement: (String, Long) // returns the statement and the
> > tiem spent
>
> >  def getDetailedInfo: List[String] // /returns your list
>
> > }
>
> > ... or you may be thinking of a better abstraction.
>
> > And logFuncs would become:
>
> > logFuncs: List[(LogStatement) => Any] = Nil
>
> > Br's,
> > Marius
>
> > > Derek
>
> > > On Sun, Aug 16, 2009 at 8:09 AM, marius d. 
> > wrote:
>
> > > > Derek,
>
> > > > I was looking to your code, GOOD stuff ! One thing though.The
> > > > LoggedStatement.toString would return a List of log entries and not a
> > > > query but the user's Log function expects a query and the time spent
> > > > on that query so there is a little miss match between when user's
> > > > function expects and what we're feeding to it. Also you are creating
> > > > strings like:
>
> > > > "Exec query \"%s\" : rs = %s".format(sql, rs)"
>
> > > > ...which may be perfect. But I wonder if user's won't expect just the
> > > > query/update and nothing else and they will do their own logging and
> > > > formatting.
>
> > > > Br's,
> > > > Marius
>
> > > > On Aug 16, 3:07 am, Derek Chen-Becker  wrote:
> > > > > I only fixed the groupId because maven was giving me a warning that
> > it
> > > > had
> > > > > changed. I can bump the versions to 0.9.5 this week and if that
> > builds
> > > > fine
> > > > > I'll check it in.
>
> > > > > On Sat, Aug 15, 2009 at 3:22 PM, Bill Venners 
> > wrote:
> > > > > > Hi Derek,
>
> > > > > > I noticed you checked in a change to Lift that updated the Maven
> > > > ScalaTest
> > > > > > ref. However the ref is to version 0.9.4, whereas the current
> > version
> > > > is
> > > > > > 0.9.5.
>
> > > > > > Thanks.
>
> > > > > > Bill
> > > > > > Bill Venners
> > > > > > Artima, Inc.
> > > > > >http://www.artima.com
>
> > > > > > On Aug 15, 2009, at 7:02 AM, Derek Chen-Becker <
> > dchenbec...@gmail.com>
> > > > > > wrote:
>
> > > > > > OK, a preliminary version of log wrappers is checked in on
> > > > > > wip-dcb-sql-log-wrappers. I'll merge it on Tuesday if no one sees
> > any
> > > > > > problems with it.
>
> > > > > > Derek
>
> > > > > > On Tue, Aug 11, 2009 at 11:08 AM, Derek Chen-Becker <<
> > > > dchenbec...@gmail.com>
> > > > > > dchenbec...@gmail.com> wrote:
>
> > > > > >> Will do.
>
> > > > > >> On Tue, Aug 11, 2009 at 2:33 AM, marius d. < <
> > marius.dan...@gmail.com
>
> > > > > >> marius.dan...@gmail.com> wrote:
>
> > > > > >>> Please do so. If you need any help for some reason (time
> > availability
> > > > > >>> etc.) please let me know. As a

[Lift] Re: ScalaTest dependency

2009-08-16 Thread Derek Chen-Becker
I really like the idea of changing the logFunc type if everyone is OK with
that. To further refine it, the trait could define three defs:

def getStatements : List[(String,Long)]
def getMetaCommands : List[(String,Long)]
def getAll : List[(String,Long)]

getAll would return the union of the first two, in proper sequential order.
I could further refine this by making use of case classes instead of
(String,Long):

sealed abstract class DBLogEntry
case class LoggedStatement(statement : String, duration : Long) extends
DBLogEntry
case class LoggedMetaCommand(statement : String, duration : Long) extends
DBLogEntry

I don't know enough detail on JDBC to know whether or not meta commands
require round-trips to the DB or if the spec requires that they're all
local, but it seems like we should just time everything.

Thoughts?

On Sun, Aug 16, 2009 at 8:31 AM, marius d.  wrote:

>
>
>
> On Aug 16, 5:18 pm, Derek Chen-Becker  wrote:
> > Yeah, I was actually thinking about that same angle last night. Perhaps I
> > could provide some control var on DB to enable detailed or basic logging?
>
> Yeah ... or maybe for the logFunc to not pass just a query string but
> an object (abstracted by a trait) and let the user extract from there
> whatever is needed. Just the plain query and/or other stuff. Yes this
> would mean a breaking change but I think a good one.
>
> > I
> > think that it would be very useful in some cases, for example, to know
> that
> > underlying code is setting max rows or max fetch size, but I agree that
> most
> > people will probably just want basic statements logged. Also, with a
> > prepared statement someone *could* execute multiple queries in one go, so
> I
> > can't get rid of the list of stuff.
>
> Totally agree, but please see my notes above.
>
> > Another approach would be to give the
> > logFuncs List to the Logging classes and then they could decide whether
> to
> > log (and time) each execution individually or all at once (if someone
> sets
> > batch mode, for example). What do you think?
>
> Based on the above I'd probably opt in for a trait rather then the
> List.
>
> Perhaps :
>
> trait LogStatement {
>
>  def getStatement: (String, Long) // returns the statement and the
> tiem spent
>
>  def getDetailedInfo: List[String] // /returns your list
>
> }
>
>
> ... or you may be thinking of a better abstraction.
>
> And logFuncs would become:
>
> logFuncs: List[(LogStatement) => Any] = Nil
>
>
> Br's,
> Marius
>
> >
> > Derek
> >
> > On Sun, Aug 16, 2009 at 8:09 AM, marius d. 
> wrote:
> >
> > > Derek,
> >
> > > I was looking to your code, GOOD stuff ! One thing though.The
> > > LoggedStatement.toString would return a List of log entries and not a
> > > query but the user's Log function expects a query and the time spent
> > > on that query so there is a little miss match between when user's
> > > function expects and what we're feeding to it. Also you are creating
> > > strings like:
> >
> > > "Exec query \"%s\" : rs = %s".format(sql, rs)"
> >
> > > ...which may be perfect. But I wonder if user's won't expect just the
> > > query/update and nothing else and they will do their own logging and
> > > formatting.
> >
> > > Br's,
> > > Marius
> >
> > > On Aug 16, 3:07 am, Derek Chen-Becker  wrote:
> > > > I only fixed the groupId because maven was giving me a warning that
> it
> > > had
> > > > changed. I can bump the versions to 0.9.5 this week and if that
> builds
> > > fine
> > > > I'll check it in.
> >
> > > > On Sat, Aug 15, 2009 at 3:22 PM, Bill Venners 
> wrote:
> > > > > Hi Derek,
> >
> > > > > I noticed you checked in a change to Lift that updated the Maven
> > > ScalaTest
> > > > > ref. However the ref is to version 0.9.4, whereas the current
> version
> > > is
> > > > > 0.9.5.
> >
> > > > > Thanks.
> >
> > > > > Bill
> > > > > Bill Venners
> > > > > Artima, Inc.
> > > > >http://www.artima.com
> >
> > > > > On Aug 15, 2009, at 7:02 AM, Derek Chen-Becker <
> dchenbec...@gmail.com>
> > > > > wrote:
> >
> > > > > OK, a preliminary version of log wrappers is checked in on
> > > > > wip-dcb-sql-log-wrappers. I'll merge it on Tuesday if no one sees
> any
> > > > > problems with it.
> >
> > > > > Derek
> >
> > > > > On Tue, Aug 11, 2009 at 11:08 AM, Derek Chen-Becker <<
> > > dchenbec...@gmail.com>
> > > > > dchenbec...@gmail.com> wrote:
> >
> > > > >> Will do.
> >
> > > > >> On Tue, Aug 11, 2009 at 2:33 AM, marius d. < <
> marius.dan...@gmail.com
> >
> > > > >> marius.dan...@gmail.com> wrote:
> >
> > > > >>> Please do so. If you need any help for some reason (time
> availability
> > > > >>> etc.) please let me know. As a note probably the wrappers should
> be
> > > > >>> only only when there is at least one log function registered.
> >
> > > > >>> Br's,
> > > > >>> Marius
> >
> > > > >>> On Aug 6, 11:48 pm, Derek Chen-Becker 
> wrote:
> > > > >>> > If there's a consensus that we want our own JDBC wrappers I'll
> go
> > > ahead
> > > > >>> and
> > > > >>> > write them.
> >
> > > > >>> > Derek

[Lift] Re: ScalaTest dependency

2009-08-16 Thread Derek Chen-Becker
1.1-SNAPSHOT has been bumped to 0.9.5 as well.

On Sun, Aug 16, 2009 at 8:22 AM, Derek Chen-Becker wrote:

> Also, I just pushed a bump to 0.9.5 for scalatest to 1.0_maint. It'll make
> it into 1.0.1.
>
> Derek
>
>
> On Sun, Aug 16, 2009 at 8:18 AM, Derek Chen-Becker 
> wrote:
>
>> Yeah, I was actually thinking about that same angle last night. Perhaps I
>> could provide some control var on DB to enable detailed or basic logging? I
>> think that it would be very useful in some cases, for example, to know that
>> underlying code is setting max rows or max fetch size, but I agree that most
>> people will probably just want basic statements logged. Also, with a
>> prepared statement someone *could* execute multiple queries in one go, so I
>> can't get rid of the list of stuff. Another approach would be to give the
>> logFuncs List to the Logging classes and then they could decide whether to
>> log (and time) each execution individually or all at once (if someone sets
>> batch mode, for example). What do you think?
>>
>> Derek
>>
>>
>> On Sun, Aug 16, 2009 at 8:09 AM, marius d. wrote:
>>
>>>
>>> Derek,
>>>
>>> I was looking to your code, GOOD stuff ! One thing though.The
>>> LoggedStatement.toString would return a List of log entries and not a
>>> query but the user's Log function expects a query and the time spent
>>> on that query so there is a little miss match between when user's
>>> function expects and what we're feeding to it. Also you are creating
>>> strings like:
>>>
>>> "Exec query \"%s\" : rs = %s".format(sql, rs)"
>>>
>>> ...which may be perfect. But I wonder if user's won't expect just the
>>> query/update and nothing else and they will do their own logging and
>>> formatting.
>>>
>>>
>>> Br's,
>>> Marius
>>>
>>> On Aug 16, 3:07 am, Derek Chen-Becker  wrote:
>>> > I only fixed the groupId because maven was giving me a warning that it
>>> had
>>> > changed. I can bump the versions to 0.9.5 this week and if that builds
>>> fine
>>> > I'll check it in.
>>> >
>>> > On Sat, Aug 15, 2009 at 3:22 PM, Bill Venners  wrote:
>>> > > Hi Derek,
>>> >
>>> > > I noticed you checked in a change to Lift that updated the Maven
>>> ScalaTest
>>> > > ref. However the ref is to version 0.9.4, whereas the current version
>>> is
>>> > > 0.9.5.
>>> >
>>> > > Thanks.
>>> >
>>> > > Bill
>>> > > Bill Venners
>>> > > Artima, Inc.
>>> > >http://www.artima.com
>>> >
>>> > > On Aug 15, 2009, at 7:02 AM, Derek Chen-Becker <
>>> dchenbec...@gmail.com>
>>> > > wrote:
>>> >
>>> > > OK, a preliminary version of log wrappers is checked in on
>>> > > wip-dcb-sql-log-wrappers. I'll merge it on Tuesday if no one sees any
>>> > > problems with it.
>>> >
>>> > > Derek
>>> >
>>> > > On Tue, Aug 11, 2009 at 11:08 AM, Derek Chen-Becker <<
>>> dchenbec...@gmail.com>
>>> > > dchenbec...@gmail.com> wrote:
>>> >
>>> > >> Will do.
>>> >
>>> > >> On Tue, Aug 11, 2009 at 2:33 AM, marius d. < <
>>> marius.dan...@gmail.com>
>>> > >> marius.dan...@gmail.com> wrote:
>>> >
>>> > >>> Please do so. If you need any help for some reason (time
>>> availability
>>> > >>> etc.) please let me know. As a note probably the wrappers should be
>>> > >>> only only when there is at least one log function registered.
>>> >
>>> > >>> Br's,
>>> > >>> Marius
>>> >
>>> > >>> On Aug 6, 11:48 pm, Derek Chen-Becker 
>>> wrote:
>>> > >>> > If there's a consensus that we want our own JDBC wrappers I'll go
>>> ahead
>>> > >>> and
>>> > >>> > write them.
>>> >
>>> > >>> > Derek
>>> >
>>> > >>> > On Thu, Aug 6, 2009 at 1:19 PM, marius d. <
>>> marius.dan...@gmail.com>
>>> > >>> wrote:
>>> >
>>> > >>> > > Probably building our own wrappers would be more lightweight
>>> then
>>> > >>> 3-rd
>>> > >>> > > party. Jus' guessing
>>> >
>>> > >>> > > Br's,
>>> > >>> > > Marius
>>> >
>>> > >>> > > On Aug 6, 9:58 pm, Derek Chen-Becker 
>>> wrote:
>>> > >>> > > > Well, I started looking at it and determined that the only
>>> way for
>>> > >>> us to
>>> > >>> > > > truly log the queries would be to essentially make our own
>>> wrappers
>>> > >>> over
>>> > >>> > > > Statement and PreparedStatement. There are projects
>>> (log4jdbc,
>>> > >>> notably)
>>> > >>> > > that
>>> > >>> > > > already do this, and in a transparent manner. I'm not sure
>>> that
>>> > >>> adding a
>>> > >>> > > > whole bunch of SQL logging directly to Lift is better than
>>> > >>> leveraging
>>> > >>> > > some
>>> > >>> > > > existing libraries to do it.
>>> >
>>> > >>> > > > Derek
>>> >
>>> > >>> > > > On Thu, Aug 6, 2009 at 11:03 AM, marius d. <
>>> > >>> marius.dan...@gmail.com>
>>> > >>> > > wrote:
>>> >
>>> > >>> > > > > Yeah we're aware of that. That is based on toString
>>> application
>>> > >>> which
>>> > >>> > > > > is JDBC driver dependent. I think Derek started some work
>>> on this
>>> > >>> to
>>> > >>> > > > > correct this behavior. Derek ?
>>> >
>>> > >>> > > > > Br's,
>>> > >>> > > > > Marius
>>> >
>>> > >>> > > > > On Aug 6, 8:01 pm, jon  wrote:
>>> > >>> > > > > > Hi,
>>> >
>>> > >>> > > > > > I 

[Lift] Re: ScalaTest dependency

2009-08-16 Thread marius d.



On Aug 16, 5:18 pm, Derek Chen-Becker  wrote:
> Yeah, I was actually thinking about that same angle last night. Perhaps I
> could provide some control var on DB to enable detailed or basic logging?

Yeah ... or maybe for the logFunc to not pass just a query string but
an object (abstracted by a trait) and let the user extract from there
whatever is needed. Just the plain query and/or other stuff. Yes this
would mean a breaking change but I think a good one.

> I
> think that it would be very useful in some cases, for example, to know that
> underlying code is setting max rows or max fetch size, but I agree that most
> people will probably just want basic statements logged. Also, with a
> prepared statement someone *could* execute multiple queries in one go, so I
> can't get rid of the list of stuff.

Totally agree, but please see my notes above.

> Another approach would be to give the
> logFuncs List to the Logging classes and then they could decide whether to
> log (and time) each execution individually or all at once (if someone sets
> batch mode, for example). What do you think?

Based on the above I'd probably opt in for a trait rather then the
List.

Perhaps :

trait LogStatement {

  def getStatement: (String, Long) // returns the statement and the
tiem spent

  def getDetailedInfo: List[String] // /returns your list

}


... or you may be thinking of a better abstraction.

And logFuncs would become:

logFuncs: List[(LogStatement) => Any] = Nil


Br's,
Marius

>
> Derek
>
> On Sun, Aug 16, 2009 at 8:09 AM, marius d.  wrote:
>
> > Derek,
>
> > I was looking to your code, GOOD stuff ! One thing though.The
> > LoggedStatement.toString would return a List of log entries and not a
> > query but the user's Log function expects a query and the time spent
> > on that query so there is a little miss match between when user's
> > function expects and what we're feeding to it. Also you are creating
> > strings like:
>
> > "Exec query \"%s\" : rs = %s".format(sql, rs)"
>
> > ...which may be perfect. But I wonder if user's won't expect just the
> > query/update and nothing else and they will do their own logging and
> > formatting.
>
> > Br's,
> > Marius
>
> > On Aug 16, 3:07 am, Derek Chen-Becker  wrote:
> > > I only fixed the groupId because maven was giving me a warning that it
> > had
> > > changed. I can bump the versions to 0.9.5 this week and if that builds
> > fine
> > > I'll check it in.
>
> > > On Sat, Aug 15, 2009 at 3:22 PM, Bill Venners  wrote:
> > > > Hi Derek,
>
> > > > I noticed you checked in a change to Lift that updated the Maven
> > ScalaTest
> > > > ref. However the ref is to version 0.9.4, whereas the current version
> > is
> > > > 0.9.5.
>
> > > > Thanks.
>
> > > > Bill
> > > > Bill Venners
> > > > Artima, Inc.
> > > >http://www.artima.com
>
> > > > On Aug 15, 2009, at 7:02 AM, Derek Chen-Becker 
> > > > wrote:
>
> > > > OK, a preliminary version of log wrappers is checked in on
> > > > wip-dcb-sql-log-wrappers. I'll merge it on Tuesday if no one sees any
> > > > problems with it.
>
> > > > Derek
>
> > > > On Tue, Aug 11, 2009 at 11:08 AM, Derek Chen-Becker <<
> > dchenbec...@gmail.com>
> > > > dchenbec...@gmail.com> wrote:
>
> > > >> Will do.
>
> > > >> On Tue, Aug 11, 2009 at 2:33 AM, marius d. < 
> > > >> marius.dan...@gmail.com> wrote:
>
> > > >>> Please do so. If you need any help for some reason (time availability
> > > >>> etc.) please let me know. As a note probably the wrappers should be
> > > >>> only only when there is at least one log function registered.
>
> > > >>> Br's,
> > > >>> Marius
>
> > > >>> On Aug 6, 11:48 pm, Derek Chen-Becker  wrote:
> > > >>> > If there's a consensus that we want our own JDBC wrappers I'll go
> > ahead
> > > >>> and
> > > >>> > write them.
>
> > > >>> > Derek
>
> > > >>> > On Thu, Aug 6, 2009 at 1:19 PM, marius d. 
> > > >>> wrote:
>
> > > >>> > > Probably building our own wrappers would be more lightweight then
> > > >>> 3-rd
> > > >>> > > party. Jus' guessing
>
> > > >>> > > Br's,
> > > >>> > > Marius
>
> > > >>> > > On Aug 6, 9:58 pm, Derek Chen-Becker 
> > wrote:
> > > >>> > > > Well, I started looking at it and determined that the only way
> > for
> > > >>> us to
> > > >>> > > > truly log the queries would be to essentially make our own
> > wrappers
> > > >>> over
> > > >>> > > > Statement and PreparedStatement. There are projects (log4jdbc,
> > > >>> notably)
> > > >>> > > that
> > > >>> > > > already do this, and in a transparent manner. I'm not sure that
> > > >>> adding a
> > > >>> > > > whole bunch of SQL logging directly to Lift is better than
> > > >>> leveraging
> > > >>> > > some
> > > >>> > > > existing libraries to do it.
>
> > > >>> > > > Derek
>
> > > >>> > > > On Thu, Aug 6, 2009 at 11:03 AM, marius d. <
> > > >>> marius.dan...@gmail.com>
> > > >>> > > wrote:
>
> > > >>> > > > > Yeah we're aware of that. That is based on toString
> > application
> > > >>> which
> > > >>> > > > > is JDBC driver dependent. I think Derek sta

[Lift] Re: Error adding expenses using Mysql

2009-08-16 Thread Derek Chen-Becker
OK, verified. Looks like we have a case mismatch in the code somewhere,
possibly Mapper. The table is created as "expense", but the queries are for
"Expense", and MySQL is very unhappy with that.

On Fri, Aug 14, 2009 at 9:21 AM, javier  wrote:

> In case it makes any difference, I am using MySQL 5.0.37 on a Mac
>
> On Aug 14, 7:43 am, Derek Chen-Becker  wrote:
> > I'll test against MySQL here and see if I can reproduce the issue.
> >
> > Derek
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~--~~~~--~~--~--~---



[Lift] Re: ScalaTest dependency

2009-08-16 Thread Derek Chen-Becker
Also, I just pushed a bump to 0.9.5 for scalatest to 1.0_maint. It'll make
it into 1.0.1.

Derek

On Sun, Aug 16, 2009 at 8:18 AM, Derek Chen-Becker wrote:

> Yeah, I was actually thinking about that same angle last night. Perhaps I
> could provide some control var on DB to enable detailed or basic logging? I
> think that it would be very useful in some cases, for example, to know that
> underlying code is setting max rows or max fetch size, but I agree that most
> people will probably just want basic statements logged. Also, with a
> prepared statement someone *could* execute multiple queries in one go, so I
> can't get rid of the list of stuff. Another approach would be to give the
> logFuncs List to the Logging classes and then they could decide whether to
> log (and time) each execution individually or all at once (if someone sets
> batch mode, for example). What do you think?
>
> Derek
>
>
> On Sun, Aug 16, 2009 at 8:09 AM, marius d. wrote:
>
>>
>> Derek,
>>
>> I was looking to your code, GOOD stuff ! One thing though.The
>> LoggedStatement.toString would return a List of log entries and not a
>> query but the user's Log function expects a query and the time spent
>> on that query so there is a little miss match between when user's
>> function expects and what we're feeding to it. Also you are creating
>> strings like:
>>
>> "Exec query \"%s\" : rs = %s".format(sql, rs)"
>>
>> ...which may be perfect. But I wonder if user's won't expect just the
>> query/update and nothing else and they will do their own logging and
>> formatting.
>>
>>
>> Br's,
>> Marius
>>
>> On Aug 16, 3:07 am, Derek Chen-Becker  wrote:
>> > I only fixed the groupId because maven was giving me a warning that it
>> had
>> > changed. I can bump the versions to 0.9.5 this week and if that builds
>> fine
>> > I'll check it in.
>> >
>> > On Sat, Aug 15, 2009 at 3:22 PM, Bill Venners  wrote:
>> > > Hi Derek,
>> >
>> > > I noticed you checked in a change to Lift that updated the Maven
>> ScalaTest
>> > > ref. However the ref is to version 0.9.4, whereas the current version
>> is
>> > > 0.9.5.
>> >
>> > > Thanks.
>> >
>> > > Bill
>> > > Bill Venners
>> > > Artima, Inc.
>> > >http://www.artima.com
>> >
>> > > On Aug 15, 2009, at 7:02 AM, Derek Chen-Becker > >
>> > > wrote:
>> >
>> > > OK, a preliminary version of log wrappers is checked in on
>> > > wip-dcb-sql-log-wrappers. I'll merge it on Tuesday if no one sees any
>> > > problems with it.
>> >
>> > > Derek
>> >
>> > > On Tue, Aug 11, 2009 at 11:08 AM, Derek Chen-Becker <<
>> dchenbec...@gmail.com>
>> > > dchenbec...@gmail.com> wrote:
>> >
>> > >> Will do.
>> >
>> > >> On Tue, Aug 11, 2009 at 2:33 AM, marius d. < <
>> marius.dan...@gmail.com>
>> > >> marius.dan...@gmail.com> wrote:
>> >
>> > >>> Please do so. If you need any help for some reason (time
>> availability
>> > >>> etc.) please let me know. As a note probably the wrappers should be
>> > >>> only only when there is at least one log function registered.
>> >
>> > >>> Br's,
>> > >>> Marius
>> >
>> > >>> On Aug 6, 11:48 pm, Derek Chen-Becker 
>> wrote:
>> > >>> > If there's a consensus that we want our own JDBC wrappers I'll go
>> ahead
>> > >>> and
>> > >>> > write them.
>> >
>> > >>> > Derek
>> >
>> > >>> > On Thu, Aug 6, 2009 at 1:19 PM, marius d. <
>> marius.dan...@gmail.com>
>> > >>> wrote:
>> >
>> > >>> > > Probably building our own wrappers would be more lightweight
>> then
>> > >>> 3-rd
>> > >>> > > party. Jus' guessing
>> >
>> > >>> > > Br's,
>> > >>> > > Marius
>> >
>> > >>> > > On Aug 6, 9:58 pm, Derek Chen-Becker 
>> wrote:
>> > >>> > > > Well, I started looking at it and determined that the only way
>> for
>> > >>> us to
>> > >>> > > > truly log the queries would be to essentially make our own
>> wrappers
>> > >>> over
>> > >>> > > > Statement and PreparedStatement. There are projects (log4jdbc,
>> > >>> notably)
>> > >>> > > that
>> > >>> > > > already do this, and in a transparent manner. I'm not sure
>> that
>> > >>> adding a
>> > >>> > > > whole bunch of SQL logging directly to Lift is better than
>> > >>> leveraging
>> > >>> > > some
>> > >>> > > > existing libraries to do it.
>> >
>> > >>> > > > Derek
>> >
>> > >>> > > > On Thu, Aug 6, 2009 at 11:03 AM, marius d. <
>> > >>> marius.dan...@gmail.com>
>> > >>> > > wrote:
>> >
>> > >>> > > > > Yeah we're aware of that. That is based on toString
>> application
>> > >>> which
>> > >>> > > > > is JDBC driver dependent. I think Derek started some work on
>> this
>> > >>> to
>> > >>> > > > > correct this behavior. Derek ?
>> >
>> > >>> > > > > Br's,
>> > >>> > > > > Marius
>> >
>> > >>> > > > > On Aug 6, 8:01 pm, jon  wrote:
>> > >>> > > > > > Hi,
>> >
>> > >>> > > > > > I have the following in boot:
>> > >>> > > > > >   DB.addLogFunc((query, len) => Log.info("The query:
>> "+query+"
>> > >>> took
>> > >>> > > > > > "+len+" milliseconds"))
>> >
>> > >>> > > > > > I was expecting the query parameter to be sql, but it's
>> > >>> actually some
>> > >>> > > > > > sort of

[Lift] Re: ScalaTest dependency

2009-08-16 Thread Derek Chen-Becker
Yeah, I was actually thinking about that same angle last night. Perhaps I
could provide some control var on DB to enable detailed or basic logging? I
think that it would be very useful in some cases, for example, to know that
underlying code is setting max rows or max fetch size, but I agree that most
people will probably just want basic statements logged. Also, with a
prepared statement someone *could* execute multiple queries in one go, so I
can't get rid of the list of stuff. Another approach would be to give the
logFuncs List to the Logging classes and then they could decide whether to
log (and time) each execution individually or all at once (if someone sets
batch mode, for example). What do you think?

Derek

On Sun, Aug 16, 2009 at 8:09 AM, marius d.  wrote:

>
> Derek,
>
> I was looking to your code, GOOD stuff ! One thing though.The
> LoggedStatement.toString would return a List of log entries and not a
> query but the user's Log function expects a query and the time spent
> on that query so there is a little miss match between when user's
> function expects and what we're feeding to it. Also you are creating
> strings like:
>
> "Exec query \"%s\" : rs = %s".format(sql, rs)"
>
> ...which may be perfect. But I wonder if user's won't expect just the
> query/update and nothing else and they will do their own logging and
> formatting.
>
>
> Br's,
> Marius
>
> On Aug 16, 3:07 am, Derek Chen-Becker  wrote:
> > I only fixed the groupId because maven was giving me a warning that it
> had
> > changed. I can bump the versions to 0.9.5 this week and if that builds
> fine
> > I'll check it in.
> >
> > On Sat, Aug 15, 2009 at 3:22 PM, Bill Venners  wrote:
> > > Hi Derek,
> >
> > > I noticed you checked in a change to Lift that updated the Maven
> ScalaTest
> > > ref. However the ref is to version 0.9.4, whereas the current version
> is
> > > 0.9.5.
> >
> > > Thanks.
> >
> > > Bill
> > > Bill Venners
> > > Artima, Inc.
> > >http://www.artima.com
> >
> > > On Aug 15, 2009, at 7:02 AM, Derek Chen-Becker 
> > > wrote:
> >
> > > OK, a preliminary version of log wrappers is checked in on
> > > wip-dcb-sql-log-wrappers. I'll merge it on Tuesday if no one sees any
> > > problems with it.
> >
> > > Derek
> >
> > > On Tue, Aug 11, 2009 at 11:08 AM, Derek Chen-Becker <<
> dchenbec...@gmail.com>
> > > dchenbec...@gmail.com> wrote:
> >
> > >> Will do.
> >
> > >> On Tue, Aug 11, 2009 at 2:33 AM, marius d. <  >
> > >> marius.dan...@gmail.com> wrote:
> >
> > >>> Please do so. If you need any help for some reason (time availability
> > >>> etc.) please let me know. As a note probably the wrappers should be
> > >>> only only when there is at least one log function registered.
> >
> > >>> Br's,
> > >>> Marius
> >
> > >>> On Aug 6, 11:48 pm, Derek Chen-Becker  wrote:
> > >>> > If there's a consensus that we want our own JDBC wrappers I'll go
> ahead
> > >>> and
> > >>> > write them.
> >
> > >>> > Derek
> >
> > >>> > On Thu, Aug 6, 2009 at 1:19 PM, marius d.  >
> > >>> wrote:
> >
> > >>> > > Probably building our own wrappers would be more lightweight then
> > >>> 3-rd
> > >>> > > party. Jus' guessing
> >
> > >>> > > Br's,
> > >>> > > Marius
> >
> > >>> > > On Aug 6, 9:58 pm, Derek Chen-Becker 
> wrote:
> > >>> > > > Well, I started looking at it and determined that the only way
> for
> > >>> us to
> > >>> > > > truly log the queries would be to essentially make our own
> wrappers
> > >>> over
> > >>> > > > Statement and PreparedStatement. There are projects (log4jdbc,
> > >>> notably)
> > >>> > > that
> > >>> > > > already do this, and in a transparent manner. I'm not sure that
> > >>> adding a
> > >>> > > > whole bunch of SQL logging directly to Lift is better than
> > >>> leveraging
> > >>> > > some
> > >>> > > > existing libraries to do it.
> >
> > >>> > > > Derek
> >
> > >>> > > > On Thu, Aug 6, 2009 at 11:03 AM, marius d. <
> > >>> marius.dan...@gmail.com>
> > >>> > > wrote:
> >
> > >>> > > > > Yeah we're aware of that. That is based on toString
> application
> > >>> which
> > >>> > > > > is JDBC driver dependent. I think Derek started some work on
> this
> > >>> to
> > >>> > > > > correct this behavior. Derek ?
> >
> > >>> > > > > Br's,
> > >>> > > > > Marius
> >
> > >>> > > > > On Aug 6, 8:01 pm, jon  wrote:
> > >>> > > > > > Hi,
> >
> > >>> > > > > > I have the following in boot:
> > >>> > > > > >   DB.addLogFunc((query, len) => Log.info("The query:
> "+query+"
> > >>> took
> > >>> > > > > > "+len+" milliseconds"))
> >
> > >>> > > > > > I was expecting the query parameter to be sql, but it's
> > >>> actually some
> > >>> > > > > > sort of guid
> >
> > >>> > > > > > "INFO - The query: 6839c016-0122-f09a-9c96-003844e8
> took 5
> > >>> > > > > > milliseconds"
> >
> > >>> > > > > > Any ideas?
> > >>> > > > > > I'm running with derby.
> >
> > >>> > > > > > Thanks,
> >
> > >>> > > > > > Jon
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Gro

[Lift] Re: Symlinks and Javascript Files

2009-08-16 Thread Derek Chen-Becker
OK, this is not Lift's error message, but rather Jetty's. You need to set
the following property to tell Jetty not to check symlinks:

-Dorg.mortbay.util.FileResource.checkAliases=False

Derek

On Fri, Aug 14, 2009 at 1:28 PM, Peter Robinett wrote:

>
> It is not in my site map. I did try the ResourceServer with the
> symlinked script in the 'js' subdir.
>
> Peter
>
> On Aug 14, 6:43 am, Derek Chen-Becker  wrote:
> > Is the path to that file defined in your SiteMap?  In the case of using
> > ResourceServer, the "js" that you've tried means that the script should
> be
> > under a "js" subdir.
> >
> > Derek
> >
> > On Thu, Aug 13, 2009 at 7:57 PM, Peter Robinett  >wrote:
> >
> >
> >
> > > My Lift project is in a git repository and to the repository I've
> > > added a submodule. Since right now I only want one javascript file
> > > from this submodule, my thought was to make the directory src/main/
> > > webroot/js and then make a symbolic link to the javascript file in
> > > question. Unfortunately, when I try to request the file at
> > >http://localhost:9090/js/jquery.sparkline.js, I get a 403 response
> > > that says the page is not defined in my sitemap. There was no note of
> > > the request in the stdout.
> >
> > > Thinking that the js subdirectory is the problem, I then tried making
> > > the symlink in the webroot directory and got a 404 error. On stdout it
> > > said:
> > > 2009-08-13 18:38:23.051::WARN:  Aliased resource: file:/Users/peter/
> > > Sites/Equal%20Networks/server/src/main/webapp/
> > > jquery.sparkline.js==file:/Users/peter/Sites/Equal%20Networks/server/
> > > vendors/dashboard/www/jquery.sparkline.js
> >
> > > From this I gather than Lift is troubled by the presence of a symlink
> > > and refused to acknowledge its presence. Is this true? If so, why?
> >
> > > From the thread last week on ExtJS I see a discussion on loading files
> > > in webroot, including supporting a css directory by adding the
> > > following to Boot.scala:
> > > ResourceServer.allow {
> > >  case "css" :: _ => true
> > > }
> >
> > > I already have a css file being served from a directory in the exact
> > > same location without any additions to Boot.scala. Nonetheless, I
> > > tried the following:
> > > ResourceServer.allow {
> > >  case "js" :: _ => true
> > > }
> >
> > > Unfortunately, this had no effect. So, how can I get my symlinked
> > > javascript to be server? Or should I just give up on symlinks
> > > altogether (I'm not a git master, so perhaps that was the wrong
> > > approach anyway).
> >
> > > Peter Robinett
> >
> > > PS I'm on 1.1-SNAPSHOT.
> > > PPS The YUI Compressor works well. Very cool.
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~--~~~~--~~--~--~---



[Lift] Re: ScalaTest dependency

2009-08-16 Thread marius d.

Derek,

I was looking to your code, GOOD stuff ! One thing though.The
LoggedStatement.toString would return a List of log entries and not a
query but the user's Log function expects a query and the time spent
on that query so there is a little miss match between when user's
function expects and what we're feeding to it. Also you are creating
strings like:

"Exec query \"%s\" : rs = %s".format(sql, rs)"

...which may be perfect. But I wonder if user's won't expect just the
query/update and nothing else and they will do their own logging and
formatting.


Br's,
Marius

On Aug 16, 3:07 am, Derek Chen-Becker  wrote:
> I only fixed the groupId because maven was giving me a warning that it had
> changed. I can bump the versions to 0.9.5 this week and if that builds fine
> I'll check it in.
>
> On Sat, Aug 15, 2009 at 3:22 PM, Bill Venners  wrote:
> > Hi Derek,
>
> > I noticed you checked in a change to Lift that updated the Maven ScalaTest
> > ref. However the ref is to version 0.9.4, whereas the current version is
> > 0.9.5.
>
> > Thanks.
>
> > Bill
> > Bill Venners
> > Artima, Inc.
> >http://www.artima.com
>
> > On Aug 15, 2009, at 7:02 AM, Derek Chen-Becker 
> > wrote:
>
> > OK, a preliminary version of log wrappers is checked in on
> > wip-dcb-sql-log-wrappers. I'll merge it on Tuesday if no one sees any
> > problems with it.
>
> > Derek
>
> > On Tue, Aug 11, 2009 at 11:08 AM, Derek Chen-Becker <
> > dchenbec...@gmail.com> wrote:
>
> >> Will do.
>
> >> On Tue, Aug 11, 2009 at 2:33 AM, marius d. < 
> >> marius.dan...@gmail.com> wrote:
>
> >>> Please do so. If you need any help for some reason (time availability
> >>> etc.) please let me know. As a note probably the wrappers should be
> >>> only only when there is at least one log function registered.
>
> >>> Br's,
> >>> Marius
>
> >>> On Aug 6, 11:48 pm, Derek Chen-Becker  wrote:
> >>> > If there's a consensus that we want our own JDBC wrappers I'll go ahead
> >>> and
> >>> > write them.
>
> >>> > Derek
>
> >>> > On Thu, Aug 6, 2009 at 1:19 PM, marius d. 
> >>> wrote:
>
> >>> > > Probably building our own wrappers would be more lightweight then
> >>> 3-rd
> >>> > > party. Jus' guessing
>
> >>> > > Br's,
> >>> > > Marius
>
> >>> > > On Aug 6, 9:58 pm, Derek Chen-Becker  wrote:
> >>> > > > Well, I started looking at it and determined that the only way for
> >>> us to
> >>> > > > truly log the queries would be to essentially make our own wrappers
> >>> over
> >>> > > > Statement and PreparedStatement. There are projects (log4jdbc,
> >>> notably)
> >>> > > that
> >>> > > > already do this, and in a transparent manner. I'm not sure that
> >>> adding a
> >>> > > > whole bunch of SQL logging directly to Lift is better than
> >>> leveraging
> >>> > > some
> >>> > > > existing libraries to do it.
>
> >>> > > > Derek
>
> >>> > > > On Thu, Aug 6, 2009 at 11:03 AM, marius d. <
> >>> marius.dan...@gmail.com>
> >>> > > wrote:
>
> >>> > > > > Yeah we're aware of that. That is based on toString application
> >>> which
> >>> > > > > is JDBC driver dependent. I think Derek started some work on this
> >>> to
> >>> > > > > correct this behavior. Derek ?
>
> >>> > > > > Br's,
> >>> > > > > Marius
>
> >>> > > > > On Aug 6, 8:01 pm, jon  wrote:
> >>> > > > > > Hi,
>
> >>> > > > > > I have the following in boot:
> >>> > > > > >   DB.addLogFunc((query, len) => Log.info("The query: "+query+"
> >>> took
> >>> > > > > > "+len+" milliseconds"))
>
> >>> > > > > > I was expecting the query parameter to be sql, but it's
> >>> actually some
> >>> > > > > > sort of guid
>
> >>> > > > > > "INFO - The query: 6839c016-0122-f09a-9c96-003844e8 took 5
> >>> > > > > > milliseconds"
>
> >>> > > > > > Any ideas?
> >>> > > > > > I'm running with derby.
>
> >>> > > > > > Thanks,
>
> >>> > > > > > Jon
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~--~~~~--~~--~--~---



[Lift] Re: Cookie not being removed for custom user logout

2009-08-16 Thread marius d.

Great. Have fun "lifting" :)

Br's,
Marius

On Aug 16, 2:41 pm, Richard Dallaway  wrote:
> Thanks for your help on this.
>
> What is happening was that I was deleting the cookie, then the page
> being linked to was doing a RedirectResponse("/index").
>
> What I should be doing is a RedirectResponse("/index",
> S.responseCookies:_*) to ensure the delete of the cookie happens.
>
> I've now re-read section 3.14 of master.pdf which pointed me towards
> RedirectWithState which was a great help.
>
> Thank you!
> Richard
>
> On Sun, Aug 16, 2009 at 10:06 AM, marius d. wrote:
>
> > I just did a little test:
>
> > 1. When redering page1 I'm setting a cookie. I'm also rendering a link
> > like:
> >    SHtml.link("/page2", () => {
> >      S.deleteCookie("marius")
> >    }, Text("Got to /page1 and remove cookie"))
>
> > 2. When I click the link page2 is rendered and in the HTTP header I am
> > seeing the cookie being sent down to browser with no value and the
> > expires is (1-1-1970 ). Which is correct.
>
> > Br's,
> > Marius
>
> > On Aug 15, 1:30 pm, Richard Dallaway  wrote:
> >> Thank you for the debugging clue (very handy function; I can see
> >> myself using that in other situations).
>
> >> What I see when the logout link is followed is:
>
> >> List()
>
> >> When I set the cookie originally, I do see a List(HTTPCookie(...))
>
> >> I'm running all of this on 127.0.0.1:8080.
>
> >> Thanks
> >> Richard
>
> >> On Sat, Aug 15, 2009 at 8:37 AM, marius d. wrote:
>
> >> > Your code looks fine to me. There is notmagic withXHtml.link just that
> >> > when you click the link on server-side your function gets called
> >> > before the /logout page gets rendered.
>
> >> > Can you add a function to LiftRules.onEndServicing ?
>
> >> > LiftRules.onEndServicing.append {
>
> >> >  case (req, Full(resp)) =>
> >> >   val cookies = resp.toResponse.cookies
> >> >   // trace the cookies
>
> >> >  case _ =>
> >> > }
>
> >> > Br's,
> >> > Marius
>
> >> > On Aug 14, 8:20 pm, Richard Dallaway  wrote:
> >> >> I'm seeing some odd behaviour with a cookie I'm setting not being
> >> >> removed.  I'm unsure which phase of my code is broken or how deep my
> >> >> misunderstandings are here... so I'm looking for some clues.
>
> >> >> I'm setting a "keep me logged in" cookie for users of my application.
> >> >> That works fine using...
>
> >> >> val c = HTTPCookie(COOKIE_NAME, 
> >> >> encode(user)).setMaxAge(three_months_as_seconds)
> >> >> S.addCookie(c)
>
> >> >> The encode(user) is, when all is said and done, returning the user PK
> >> >> as the cookie value.
>
> >> >> I'm not using ProtoUser, I'm using the scheme outlined 
> >> >> inhttp://groups.google.com/group/liftweb/msg/85a8e790d5efec26
>
> >> >> That is, I have...
>
> >> >> object LoginContext {
> >> >>   object userId extends SessionVar[Box[Long]](KeepMeLoggedIn.findUserId)
> >> >>   // etc...
>
> >> >> }
>
> >> >> ...and the findUserId function tries to decode the cookie and find a
> >> >> matching user:
>
> >> >> def findUserId:Box[Long] = for {
> >> >>          cookie <- S.findCookie(COOKIE_NAME);
> >> >>          cookie_value <- cookie.value;
> >> >>          (id, salt) <- decode(cookie_value);
> >> >>          u <- User.find(By(User.id, id),By(User.salt,salt))
> >> >>      } yield {
> >> >>          println(u)
> >> >>          id
> >> >>   }
>
> >> >> And that's all working for me.
>
> >> >> The problem comes when the user clicks the logout link, and I want to
> >> >> remove this cookie.
>
> >> >> The logout link is:
>
> >> >> SHtml.link("/logout", LoginContext.logout, Logout )
>
> >> >> ... and LoginContext.logout is
>
> >> >>     KeepMeLoggedIn.removeCookie()
> >> >>     // the above is just: S.deleteCookie(COOKIE_NAME)
> >> >>     userId.remove()
> >> >>     currentUser.remove()
> >> >>     S.request.foreach(_.request.session.terminate)
>
> >> >> And for completeness, my /logout page is a redirect to the home page:
>
> >> >> Menu(Loc("logout", List("logout") -> false, "Logout", Hidden, If(
> >> >> ()=>false, ()=>RedirectResponse("/index")) ))
>
> >> >> What I'm seeing is:
> >> >>  - user clicks logout
> >> >>  - logout function called, and Jetty tells me /logout took N
> >> >> milliseconds to render
> >> >>  - then I'm seeing activity in the findUserId function, a result is
> >> >> found, and the user is logged back in again.
> >> >>  - then Jetty tells me /index took N milliseconds to render.
>
> >> >> When I dig into HTTP headers, I'm not seeing the cookie value being
> >> >> set in the response header (which I believe is required to remove it).
>
> >> >> I'm guessing my confusion is perhaps over how the SHtml.link magic 
> >> >> works?
>
> >> >> Any suggestions of where I might poke around next?
>
> >> >> I'm using 1.1-SNAPSHOT (updated a few hours ago).
>
> >> >> Thank you
> >> >> Richard
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lif

[Lift] Re: Cookie not being removed for custom user logout

2009-08-16 Thread Richard Dallaway

Thanks for your help on this.

What is happening was that I was deleting the cookie, then the page
being linked to was doing a RedirectResponse("/index").

What I should be doing is a RedirectResponse("/index",
S.responseCookies:_*) to ensure the delete of the cookie happens.

I've now re-read section 3.14 of master.pdf which pointed me towards
RedirectWithState which was a great help.

Thank you!
Richard

On Sun, Aug 16, 2009 at 10:06 AM, marius d. wrote:
>
> I just did a little test:
>
> 1. When redering page1 I'm setting a cookie. I'm also rendering a link
> like:
>    SHtml.link("/page2", () => {
>      S.deleteCookie("marius")
>    }, Text("Got to /page1 and remove cookie"))
>
> 2. When I click the link page2 is rendered and in the HTTP header I am
> seeing the cookie being sent down to browser with no value and the
> expires is (1-1-1970 ). Which is correct.
>
> Br's,
> Marius
>
> On Aug 15, 1:30 pm, Richard Dallaway  wrote:
>> Thank you for the debugging clue (very handy function; I can see
>> myself using that in other situations).
>>
>> What I see when the logout link is followed is:
>>
>> List()
>>
>> When I set the cookie originally, I do see a List(HTTPCookie(...))
>>
>> I'm running all of this on 127.0.0.1:8080.
>>
>> Thanks
>> Richard
>>
>> On Sat, Aug 15, 2009 at 8:37 AM, marius d. wrote:
>>
>> > Your code looks fine to me. There is notmagic withXHtml.link just that
>> > when you click the link on server-side your function gets called
>> > before the /logout page gets rendered.
>>
>> > Can you add a function to LiftRules.onEndServicing ?
>>
>> > LiftRules.onEndServicing.append {
>>
>> >  case (req, Full(resp)) =>
>> >   val cookies = resp.toResponse.cookies
>> >   // trace the cookies
>>
>> >  case _ =>
>> > }
>>
>> > Br's,
>> > Marius
>>
>> > On Aug 14, 8:20 pm, Richard Dallaway  wrote:
>> >> I'm seeing some odd behaviour with a cookie I'm setting not being
>> >> removed.  I'm unsure which phase of my code is broken or how deep my
>> >> misunderstandings are here... so I'm looking for some clues.
>>
>> >> I'm setting a "keep me logged in" cookie for users of my application.
>> >> That works fine using...
>>
>> >> val c = HTTPCookie(COOKIE_NAME, 
>> >> encode(user)).setMaxAge(three_months_as_seconds)
>> >> S.addCookie(c)
>>
>> >> The encode(user) is, when all is said and done, returning the user PK
>> >> as the cookie value.
>>
>> >> I'm not using ProtoUser, I'm using the scheme outlined 
>> >> inhttp://groups.google.com/group/liftweb/msg/85a8e790d5efec26
>>
>> >> That is, I have...
>>
>> >> object LoginContext {
>> >>   object userId extends SessionVar[Box[Long]](KeepMeLoggedIn.findUserId)
>> >>   // etc...
>>
>> >> }
>>
>> >> ...and the findUserId function tries to decode the cookie and find a
>> >> matching user:
>>
>> >> def findUserId:Box[Long] = for {
>> >>          cookie <- S.findCookie(COOKIE_NAME);
>> >>          cookie_value <- cookie.value;
>> >>          (id, salt) <- decode(cookie_value);
>> >>          u <- User.find(By(User.id, id),By(User.salt,salt))
>> >>      } yield {
>> >>          println(u)
>> >>          id
>> >>   }
>>
>> >> And that's all working for me.
>>
>> >> The problem comes when the user clicks the logout link, and I want to
>> >> remove this cookie.
>>
>> >> The logout link is:
>>
>> >> SHtml.link("/logout", LoginContext.logout, Logout )
>>
>> >> ... and LoginContext.logout is
>>
>> >>     KeepMeLoggedIn.removeCookie()
>> >>     // the above is just: S.deleteCookie(COOKIE_NAME)
>> >>     userId.remove()
>> >>     currentUser.remove()
>> >>     S.request.foreach(_.request.session.terminate)
>>
>> >> And for completeness, my /logout page is a redirect to the home page:
>>
>> >> Menu(Loc("logout", List("logout") -> false, "Logout", Hidden, If(
>> >> ()=>false, ()=>RedirectResponse("/index")) ))
>>
>> >> What I'm seeing is:
>> >>  - user clicks logout
>> >>  - logout function called, and Jetty tells me /logout took N
>> >> milliseconds to render
>> >>  - then I'm seeing activity in the findUserId function, a result is
>> >> found, and the user is logged back in again.
>> >>  - then Jetty tells me /index took N milliseconds to render.
>>
>> >> When I dig into HTTP headers, I'm not seeing the cookie value being
>> >> set in the response header (which I believe is required to remove it).
>>
>> >> I'm guessing my confusion is perhaps over how the SHtml.link magic works?
>>
>> >> Any suggestions of where I might poke around next?
>>
>> >> I'm using 1.1-SNAPSHOT (updated a few hours ago).
>>
>> >> Thank you
>> >> Richard
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~--~~~~--~~--~--~---



[Lift] Re: CMS for Lift?

2009-08-16 Thread Timothy Perrett

Short answer: "no".

Long answer: There are a couple of efforts in progress, but this are
early, early stages (not even runnable code).

Cheers, Tim

On Aug 16, 7:08 am, philip  wrote:
> Hi,
>
> Has anyone made a CMS for Liftweb? or I should say, in liftweb.
>
> Thanks, Philip
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~--~~~~--~~--~--~---



[Lift] Re: Cookie not being removed for custom user logout

2009-08-16 Thread marius d.

I just did a little test:

1. When redering page1 I'm setting a cookie. I'm also rendering a link
like:
SHtml.link("/page2", () => {
  S.deleteCookie("marius")
}, Text("Got to /page1 and remove cookie"))

2. When I click the link page2 is rendered and in the HTTP header I am
seeing the cookie being sent down to browser with no value and the
expires is (1-1-1970 ). Which is correct.

Br's,
Marius

On Aug 15, 1:30 pm, Richard Dallaway  wrote:
> Thank you for the debugging clue (very handy function; I can see
> myself using that in other situations).
>
> What I see when the logout link is followed is:
>
> List()
>
> When I set the cookie originally, I do see a List(HTTPCookie(...))
>
> I'm running all of this on 127.0.0.1:8080.
>
> Thanks
> Richard
>
> On Sat, Aug 15, 2009 at 8:37 AM, marius d. wrote:
>
> > Your code looks fine to me. There is notmagic withXHtml.link just that
> > when you click the link on server-side your function gets called
> > before the /logout page gets rendered.
>
> > Can you add a function to LiftRules.onEndServicing ?
>
> > LiftRules.onEndServicing.append {
>
> >  case (req, Full(resp)) =>
> >   val cookies = resp.toResponse.cookies
> >   // trace the cookies
>
> >  case _ =>
> > }
>
> > Br's,
> > Marius
>
> > On Aug 14, 8:20 pm, Richard Dallaway  wrote:
> >> I'm seeing some odd behaviour with a cookie I'm setting not being
> >> removed.  I'm unsure which phase of my code is broken or how deep my
> >> misunderstandings are here... so I'm looking for some clues.
>
> >> I'm setting a "keep me logged in" cookie for users of my application.
> >> That works fine using...
>
> >> val c = HTTPCookie(COOKIE_NAME, 
> >> encode(user)).setMaxAge(three_months_as_seconds)
> >> S.addCookie(c)
>
> >> The encode(user) is, when all is said and done, returning the user PK
> >> as the cookie value.
>
> >> I'm not using ProtoUser, I'm using the scheme outlined 
> >> inhttp://groups.google.com/group/liftweb/msg/85a8e790d5efec26
>
> >> That is, I have...
>
> >> object LoginContext {
> >>   object userId extends SessionVar[Box[Long]](KeepMeLoggedIn.findUserId)
> >>   // etc...
>
> >> }
>
> >> ...and the findUserId function tries to decode the cookie and find a
> >> matching user:
>
> >> def findUserId:Box[Long] = for {
> >>          cookie <- S.findCookie(COOKIE_NAME);
> >>          cookie_value <- cookie.value;
> >>          (id, salt) <- decode(cookie_value);
> >>          u <- User.find(By(User.id, id),By(User.salt,salt))
> >>      } yield {
> >>          println(u)
> >>          id
> >>   }
>
> >> And that's all working for me.
>
> >> The problem comes when the user clicks the logout link, and I want to
> >> remove this cookie.
>
> >> The logout link is:
>
> >> SHtml.link("/logout", LoginContext.logout, Logout )
>
> >> ... and LoginContext.logout is
>
> >>     KeepMeLoggedIn.removeCookie()
> >>     // the above is just: S.deleteCookie(COOKIE_NAME)
> >>     userId.remove()
> >>     currentUser.remove()
> >>     S.request.foreach(_.request.session.terminate)
>
> >> And for completeness, my /logout page is a redirect to the home page:
>
> >> Menu(Loc("logout", List("logout") -> false, "Logout", Hidden, If(
> >> ()=>false, ()=>RedirectResponse("/index")) ))
>
> >> What I'm seeing is:
> >>  - user clicks logout
> >>  - logout function called, and Jetty tells me /logout took N
> >> milliseconds to render
> >>  - then I'm seeing activity in the findUserId function, a result is
> >> found, and the user is logged back in again.
> >>  - then Jetty tells me /index took N milliseconds to render.
>
> >> When I dig into HTTP headers, I'm not seeing the cookie value being
> >> set in the response header (which I believe is required to remove it).
>
> >> I'm guessing my confusion is perhaps over how the SHtml.link magic works?
>
> >> Any suggestions of where I might poke around next?
>
> >> I'm using 1.1-SNAPSHOT (updated a few hours ago).
>
> >> Thank you
> >> Richard
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~--~~~~--~~--~--~---



[Lift] CMS for Lift?

2009-08-16 Thread philip

Hi,

Has anyone made a CMS for Liftweb? or I should say, in liftweb.

Thanks, Philip

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~--~~~~--~~--~--~---