So, I'm working on a simple image gallery, and I can make a link from an
image in the gallery to a page for that image with this:

  <lift:Image.showAll>
    <showAll:imgLink />
  </lift:Image.showAll>

(additional content omitted for clarity).  This is simple enough to
bind:

  "imgLink" -> 
    link("/viewImage", () => selected(i.id), <img src={i.url} />)

but this a.) puts a tiny bit of content in the snippet (what if
different pages want different class attributes on the img tag?), and
b.) isn't customizable -- if I want another link from the image's name,
I need another bindpoint, etc.


So, with some playing around, I can get a little more general with

  <lift:Image.showAll>
    <showAll:link>
      <p>some random html</p>
    </showAll:link>
  </lift:Image.showAll>

bound via:

  "link" ->
    {n: NodeSeq => link("/viewImage", () => selected(i.id), n)}

or:

  "link" -> link("/viewImage", () => selected(i.id),
      chooseTemplate("showAll", "link", in)),

this works well enough as far as it goes (the latter is a little worse,
IIUC as it involves more rescanning of the html).


But what I would like to do is this:

  <lift:Image.showAll>
    <showAll:link>
      <img showAll:imgUrl="" />
    </showAll:link>
  </lift:Image.showAll>

and neither of the previous two BindParams work, yielding:

        XML Parsing Error: prefix not bound to a namespace
        Location: http://www.draga.com:9080/viewImages
        Line Number 135, Column 12:
                   <img showAll:imgUrl="" />

since the content is not re-substituted.

So far, the only way I've found to do this is with a second call to
bind, repeating the list of BindParams:

  "link" ->                     // XXX XXX XXX ugly respecifaction of bind
     {n: NodeSeq => link("/viewImage", () => selected(i.id), 
       bind("showAll", n,
        "name" -> i.name.is,
        AttrBindParam("imgUrl", i.url, "src")
       ))},

Is there a cleaner way to do this -- to specify that I want bind points
of this snippet to be evaluated even if they appear within the XML of
other bind points?  I don't want or need true recursive evaluation --
just to bind all of the bind points which were visible when the xhtml
was first parsed.

Thoughts?  This is with 1.1-M8, though I don't think it makes a
difference...
-- 
                                Jim Wise
                                [email protected]

Attachment: pgp94whYwN2xg.pgp
Description: PGP signature

Reply via email to