[Zope] changing the default index_html

Rik Hoekstra RikHoekstra@bigfoot.com
Tue, 14 Dec 1999 13:58:25 +0100


> -----Original Message-----
> From: Maarten Slaets [mailto:maarten.slaets@kpnqwest.com]
> Sent: Tuesday, December 14, 1999 12:15 PM
> To: Rik Hoekstra
> Cc: zope@zope.org
> Subject: Re: [Zope] changing the default index_html
>
>
> hi Rik,
> >
> > hm, it seems to me the dtml-if is not used properly.
> > I'm not sure what you want,though.
> > Would the next amended version work?
> >
> >  <ul>
> >  <dtml-in "PARENTS[0].objectValues()">
> >   <dtml-if expr="id=='index_html'">
> >    <li><a href="<dtml-var absolute_url>"><dtml-var id></a></li>
> >   <dtml-else>
> >    Nothing in folder.
> >   </dtml-if>
> >  </dtml-in>
> >  </ul>
> >
> > (only shows index_html)
> >
> > or this one:
> >  <ul>
> >   <dtml-if"expr=_.len(PARENTS[0].objectValues()==0">
> >     Nothing in folder.
> >   <dtml-else>
> >    <dtml-in "PARENTS[0].objectValues()">
> >      <dtml-if expr="id!='index_html'">
> >        <li><a href="<dtml-var absolute_url>"><dtml-var id></a></li>
> >      </dtml-if>
> >    </dtml-in>
> >   </dtml-if>
> >  </ul>
>
> yup the above is what I wanted. i have fixed some syntax:
>   <ul>
>    <dtml-if expr="_.len(PARENTS[0].objectValues())==0">
>      Nothing in folder.
>    <dtml-else>
>     <dtml-in "PARENTS[0].objectValues()">
>       <dtml-if expr="id!='index_html'">
>         <li><a href="<dtml-var absolute_url>"><dtml-var id></a></li>
>       </dtml-if>
>     </dtml-in>
>    </dtml-if>
>   </ul>
>
> but it still shows the index_html. maybe I am comparing a string with an
> object in <dtml-if expr="id!='index_html'"> ...
>

Hi Maarten

This nagged me, so I delved into it a bit more. It did not work as a result
of mixing DTML Methods with proper objects. The id of the DTML Method is not
a string (apparently), but of other objects it is. Or something like that (I
don't really understand this)
The resulting code is a bit more complicated than I'd have hoped for (well,
it's not _that_ bad), but it works. If someone knows something cleaner -
please tell us


  <ul>
   <dtml-if expr="_.len(PARENTS[0].objectItems())==0">
     Nothing in folder.
   <dtml-else>
    <dtml-with "PARENTS[0]">
     <dtml-in objectValues sort=id>
       <dtml-if "meta_type=='DTML Method'">
        <dtml-if expr="id() <> 'index_html'">
          <li><a href="<dtml-var absolute_url>"><dtml-var id></a></li>
        </dtml-if>
       <dtml-else>
        <dtml-if expr="id<>'index_html'">
          <li><a href="<dtml-var absolute_url>"><dtml-var id></a></li>
        </dtml-if>
      </dtml-if>
     </dtml-in>
    </dtml-with>
   </dtml-if>
  </ul>

Rik