[Zope-CMF] Re: CMF base tag rant
Chris McDonough
chrism at plope.com
Wed Mar 3 14:21:19 EST 2004
I think this might be related to Plone's browserDefault munging, FWIW.
On Wed, 2004-03-03 at 06:34, Michael Haubenwallner wrote:
> Alexander Limi wrote:
>
> > OK, guys - minor rant upcoming. Sometimes pain needs to be shared, OK? :]
> >
> > Yesterday I tried to implement something known as a "skip" link for
> > accessibility reasons. The rationale behind this is that at the top of
> > every page, there should be a "skip to content" link for blind people
> > and systems like mobile phones etc, so they don't have to read all the
> > navigation and logo stuff before they get to the content.
> >
> > The process is really simple:
> >
> > - Add an <a name="someContent" /> tag right before the content
> >
> > - Make sure there is a link at the top of your page pointing to
> > currentpage.html#someContent.
> >
> > Easy, right? Wrong.
> >
> > I load the front page of my CMF/Plone site. Base tag looks like this
> > when rendered:
> >
> > <base href="http://localhost:8080/Plone/index_html" />
> >
> > Only problem is, my *real* URL is http://localhost:8080/Plone - without
> > the index_html in there. Thus, I'm in for a world of pain.
> >
>
> quoting from
> [cvs] / plone / CMFPlone / skins / plone_scripts / renderBase.py
> (Revision 1.4)
> ---------------
> # returns correct base href
> if getattr(context.aq_explicit, 'isPrincipiaFolderish', 0):
> return context.absolute_url()+'/'
> else:
> return context.absolute_url()
> ---------------
>
> this could only happen if your object at "/Plone" is not PrincipiaFolderish.
>
> i checked your case with zope and cmf and respective folder types
> (using the renderBase script from plone-cvs).
>
> reported base always was correct:
>
> 1) Zope
> http://localhost:8080/test/index_html
> <base href="http://localhost:8080/test/" />
> http://localhost:8080/test/
> <base href="http://localhost:8080/test/" />
>
> 2) CMF
> http://localhost:8080/cmf/test
> <base href="http://localhost:8080/cmf/test/" />
> http://localhost:8080/cmf/test/index_html
> <base href="http://localhost:8080/cmf/test/" />
>
> so it looks like you are using another renderBase.py or you redirect to
> index_html in some way...
>
>
>
> > If I make a tag with a link href="#someContent", the page will reload,
> > since it thinks that index_html#someContent is what I'm linking to.
> >
> > Some tinkering later, I try to do the following:
> >
> > tal:attributes="href string:${request/URL0}#someContent"
> >
> > But guess what? This won't work either.
> >
> > I investigate the options i have, noting that no variable seems to keep
> > the actual URL that is *inside the fecking URL bar* in my browser.
> >
> > I turn to Simon Eisenmann for help, he comes up with an idea of using a
> > combination of SERVER_URL and PATH_TRANSLATED to construct the actual
> > URL we're at.
> >
> > But guess what? This doesn't work in Virtual Hosting scenarioes. So we
> > have to create an additional rule that gets rendered if you have a
> > Virtual Hosted system.
> >
> > The rule ends up looking like this:
> >
> > <a
> > tal:define="url
> > request/VIRTUAL_URL|string:${request/SERVER_URL}${request/PATH_TRANSLATED}"
> > tal:attributes="href string:${url}#someContent"
> >
> >> Skip to content</a>
> >
> >
> > Easy, right?
> >
> > When it could have been (and is, in the rest of the world) as simple as
> > this:
> >
> > <a href="#someContent">Skip to content</a>
> >
> > And people wonder if it's "hard to keep compatibility with the CMF". Heh.
> >
> > Is this stuff scheduled for a cleanup in 1.5? Setting (and don't let me
> > go into *depending*) on the base tag being set to something that is not
> > the current URL is *evil*.
> >
>
> IMHO, bashing CMF is no way to go.
More information about the Zope-CMF
mailing list