[Zope] Embedding absolute_url in TAL Syntax

Dan Shafer pydan@danshafer.com
Thu, 06 Jun 2002 23:57:58 -0700


Robert, thank you. Your answer gave me the clue that led me to the solution.

When I build the dictionary of each item in the folder, I can get its 
absolute_url then using the Python method absolute_url(). I stuff that into 
a third entry in the dictionary and now when I write my TAL, it is quite 
straightforward:

      <table border="1">
         <th>Title</th>
         <th>Summary</th>
         <tbody tal:repeat="item here/ListAllArticlesDict">
         <tr>
             <td>
              <a tal:attributes="href item/url"
                 tal:content="item/title"></a></td>
             <td tal:content="item/Summary">Summary</td>
         </tr>
         </tbody>
       </table>

Works perfectly.

At 07:35 AM 6/7/2002 +0200, Robert Rottermann wrote:
>That probably means, that your item does not have an absolute_url method.
> >From the name of ListAllArticlesDict I assume it is a dictonary.  Then of
>course the items do not have an absolute_url.
>Hovever you could get at the "real" object and then use its absolute_url
>like so:
>
><a  tal:define="obj python:getattr(here, item['id'])"
>     tal:attributes="href obj/absolute_url"
>     tal:content="item/title">
></a>
>I assume your dictionary has an entry 'id' with the objects id.
>
>Here is a codesnippet I copied verbatim from one of my scripts that uses
>absolute_url:
><span tal:define="vlist request/vlist | options/vlist | python:[''] *
>here.getNoOfArtikels()"
>     tal:omit-tag=""
>     tal:repeat="artikel python:here.objectValues('Photo')">
>     <tr>
>         <td width="100" rowspan="2" valign="top">
>                 <img alt="bild" style="margin-right:10"
>                 tal:condition="python:artikel.size() &gt; 0"
>                 tal:attributes="src python:'%s?display=thumbnail' %
>artikel.absolute_url()">
>         </td>
>Robert
>----- Original Message -----
>From: "Dan Shafer" <pydan@danshafer.com>
>To: "Robert Rottermann" <robert@redcor.ch>
>Cc: "Dan Shafer" <pydan@danshafer.com>; <zope@zope.org>
>Sent: Friday, June 07, 2002 2:34 AM
>Subject: Re: [Zope] Embedding absolute_url in TAL Syntax
>
>
> > Thanks, Robert. But that produces a runtime Zope error:
> >
> > Error Type: Undefined
> > Error Value: "absolute_url" not found in "item/absolute_url"
> >
> > For completeness, here's the entire relevant snippet:
> >
> >          <tbody tal:repeat="item here/ListAllArticlesDict">
> >          <tr>
> >              <td>
> >               <a tal:attributes="href item/absolute_url"
> >                  tal:content="item/title"></a></td>
> >              <td tal:content="item/Summary">Summary</td>
> >          </tr>
> >          </tbody>
> >
> > We know that the first line produces the items because if I don't try to
>do
> > the URL, the table displays as expected.
> >
> > At 11:45 PM 6/6/2002 +0200, Robert Rottermann wrote:
> > >In this case you must use tal:attributes
> > ><a tal:attributes="href item/absolute_url" tal:content="item/title"></a>
> > >Robert
> > >----- Original Message -----
> > >From: "Dan Shafer" <pydan@danshafer.com>
> > >To: <zope@zope.org>
> > >Sent: Thursday, June 06, 2002 9:48 PM
> > >Subject: [Zope] Embedding absolute_url in TAL Syntax
> > >
> > >
> > > > OK, now that I have my table of objects produced by a Python script
> > >working
> > > > in ZPT, I need to figure out how to connect an entry in the table to
>its
> > > > URL. What is the TAL equivalent of:
> > > >
> > > > <td><a href="<dtml-var absolute_url>"><dtml-var title></a></td>
> > > >
> > > > It *seemed* like I should be able to code:
> > > >
> > > > <td><a
> > > >
>href="tal:content='item/absolute_url'"><tal:content="item/title"></a></td>
> > > >
> > > > But that creates a compilation error in the TAL HTML Parser. Maybe
>it's a
> > > > quoting thing (which I had sort of hoped would be cleaner in ZPT than
>it
> > >is
> > > > with DTML stuff) but I can't find anything in the docs about using
> > > > absolute_url in TAL, so I'm kinda stuck.
> > > >
> > > >
> > > >
> > > > _______________________________________________
> > > > Zope maillist  -  Zope@zope.org
> > > > http://lists.zope.org/mailman/listinfo/zope
> > > > **   No cross posts or HTML encoding!  **
> > > > (Related lists -
> > > >  http://lists.zope.org/mailman/listinfo/zope-announce
> > > >  http://lists.zope.org/mailman/listinfo/zope-dev )
> > > >
> >
> >

Dan Shafer, Chief Scribe and Tablet Keeper
PythonCard Open Source Project
http://pythoncard.sourceforge.net