On Tue, Mar 9, 2010 at 1:11 PM, Stuart Roebuck <stuart.roeb...@gmail.com>wrote:
> Once again, thanks for all of this. I will now go away and > contemplate it all. > > On the face of it, as a newby, this JavaScript DSL adds another layer > of complexity to using Lift with JavaScript. Is there an option to > use mostly raw JavaScript? What are the advantages / disadvantages? > JsRaw("my JavaScript Here") The disadvantage is type-safety/having the compiler help you. I wrote most of the JavaScript helpers (or at least wrote the core stuff and other followed my pattern.) A few months back, there was a discussion about changing that stuff around. I'd like to see Lift's JavaScript helper be a lot more composable than they are now... like the Lift-json stuff and also integrate better with Lift-json. But I don't see that happening with Lift 2.0 unless there's a huge block of time/effort that someone wants to throw at the issue. > > Sorry, I thought I'd get my moneys worth from you and then try to put > something onto the wiki. > > Best, > > Stuart. > > On Mar 9, 5:35 pm, Ross Mellgren <dri...@gmail.com> wrote: > > That's why I factored this as a JQueryNodeSeq, so you can pass anything > to dialog (I've used JQuery, and figured you'd need to pass something in > there ;-) > > > > JQueryNodeSeq(ns) ~> JsFunc("dialog", JsObj("autoOpen" -> JsTrue, "width" > -> 500, ..., "close" -> AnonFunc(JsVal("this") ~> JsFunc("destroy")))) > > > > >>> case class JQueryNodeSeq(ns: NodeSeq) extends JsExp with JQueryLeft > with HtmlFixer { > > > > JsExp is the basic trait of the JavaScript DSL. Anything that can go into > a JavaScript expression should have this trait. > > JQueryLeft is a trait used by the JQuery portion of the JavaScript DSL to > indicate that you can chain JQuery calls onto this. > > HtmlFixer is a trait that provides fixHtml > > > > >>> override def toJsCmd = "jQuery(" + JsStr(fixHtml("NodeSeqDialog", > ns)).toJsCmd + ")" > > > > fixHtml takes the given NodeSeq and does all the appropriate magics to > process lift: tags and then converts the NodeSeq to valid XHTML. > > > > >>> } > > > > And don't forget the security implications! > > > > Hope that helps, > > -Ross > > > > On Mar 9, 2010, at 12:30 PM, Stuart Roebuck wrote: > > > > > > > > > Thanks for that amazingly quick response! > > > > > I only wish I understood the proposed solution! :-) > > > > > So (confession time) I simplified things a little, the actual > > > JavaScript is… > > > > > var theDialog = $(…).dialog( { autoOpen: true, width: 500, modal: > > > true, close: function() { theDialog.destroy; }; } ) > > > > > How do I assemble this, or is there any documentation / examples you > > > can point me to. > > > > > Thanks very much, > > > > > Stuart. > > > > > On Mar 9, 5:14 pm, Ross Mellgren <dri...@gmail.com> wrote: > > >> Whoops, I meant Str(fixHtml(...)) not JsStr(fixHtml(...)) > > > > >> -Ross > > > > >> On Mar 9, 2010, at 12:14 PM, Ross Mellgren wrote: > > > > >>> Try this (I haven't tested it, so there could be lurking bugs): > > > > >>> case class JQueryNodeSeq(ns: NodeSeq) extends JsExp with JQueryLeft > with HtmlFixer { > > >>> override def toJsCmd = "jQuery(" + JsStr(fixHtml("NodeSeqDialog", > ns)).toJsCmd + ")" > > >>> } > > > > >>> Then JQueryNodeSeq(ns) ~> JsFunc("dialog") > > > > >>> -Ross > > > > >>> On Mar 9, 2010, at 12:06 PM, Stuart Roebuck wrote: > > > > >>>> I'm trying to produce a web page with editable content. > > > > >>>> When the user clicks an edit button on a line it uses jQuery to > > >>>> display a modal dialog which allows fields of that line to be > edited. > > > > >>>> I can easily produce a snippet to produce the lines using the > backend > > >>>> data and an XHTML template and binding etc. > > > > >>>> However, I also want the template to include the template for the > > >>>> dialog. So I want the ajax button callback to send JavaScript to > > >>>> instantiate the jQuery UI dialog based on the template and bindings. > > > > >>>> To build this I need to assemble a JsCmd containing the NodeSeq that > > >>>> comes from the XHTML sequence and the bindings. > > > > >>>> In short, if this was straight jQuery I would have some JavaScript > of > > >>>> the form: > > > > >>>> $(<div title="Dialog Title">theFormNodeSeq</div>).dialog() > > > > >>>> But in my case theFormNodeSeq comes from a NodeSeq that was > assembled > > >>>> from part of the XHTML template and the bindings and the end result > > >>>> needs to be a JsCmd. > > > > >>>> So I'm trying to do something like: > > > > >>>> JsCmds.Run("$(" + theFormNodeSeq.toString + ").dialog()") > > > > >>>> But I need to address escaping issues with the HTML and I also need > to > > >>>> pre-process any "<lift:… />" commands in theFormNodeSeq. > > > > >>>> Any advice (please)? > > > > >>>> -- > > >>>> You received this message because you are subscribed to the Google > Groups "Lift" group. > > >>>> To post to this group, send email to lift...@googlegroups.com. > > >>>> To unsubscribe from this group, send email to > liftweb+unsubscr...@googlegroups.com<liftweb%2bunsubscr...@googlegroups.com> > . > > >>>> For more options, visit this group athttp:// > groups.google.com/group/liftweb?hl=en. > > > > > -- > > > You received this message because you are subscribed to the Google > Groups "Lift" group. > > > To post to this group, send email to lift...@googlegroups.com. > > > To unsubscribe from this group, send email to > liftweb+unsubscr...@googlegroups.com<liftweb%2bunsubscr...@googlegroups.com> > . > > > For more options, visit this group athttp:// > groups.google.com/group/liftweb?hl=en. > > -- > You received this message because you are subscribed to the Google Groups > "Lift" group. > To post to this group, send email to lift...@googlegroups.com. > To unsubscribe from this group, send email to > liftweb+unsubscr...@googlegroups.com<liftweb%2bunsubscr...@googlegroups.com> > . > For more options, visit this group at > http://groups.google.com/group/liftweb?hl=en. > > -- Lift, the simply functional web framework http://liftweb.net Beginning Scala http://www.apress.com/book/view/1430219890 Follow me: http://twitter.com/dpp Surf the harmonics -- You received this message because you are subscribed to the Google Groups "Lift" group. To post to this group, send email to lift...@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.