Johan Carlsson wrote:

(zope.app.publication.httpfactory.HTTPPublicationRequestFactory -> zope.app.publication.browser.setDefaultSkin)


Afterward the specific adapters such as views get invoked, because you register those to a dedicated request interface using the layer attribute. Attention they get looked up via the regular default-adapter mechansim and not as named adapters.

IMO you can register only a specific IDefaultSkin adapter to a site marked for example as ISkinableSite:

<adapter
   for='.ISkinableSite'
   provides='.IDefaultSkin'
factory='.adapter_that_offers_a_skin_interface_selected_by_the_user' />

Within this adapter you can invoke the user preferences or something else.

The browser request gets directly marked by a skin interface.This is done by the http publication request factory:

Thanks Dominik,
I been reading the source and trying to figure this out (still trying to get in to the adapter/interface thinking, which is really hard and unintuitive for me.)

I do not quite understand what your suggesting.
Could you give me a short list of what steps would be involved implementing your suggestion? And how it would work from a user perspective?

Excuse me, I was wrong. The setDefaultSkin function does not adapt regularly to IDefaultSkin is just looks up the registered interface using the IDefaultSkin. So you cannot provide your own adapter evaluating a skin.

What I'm not quite sure about is what a IDefaultSkin is?
Is it the interface for the global default skin for the whole server?

The IDefaultSkin is just a marker that is used to register the skin declared within the browser:defaultSkin directive. (handler : zope.app.publisher.browser.metaconfigure.defaultSkin, the default skin is set regularly within zope.app.browser.zcml)

Regards,
Dominik




_______________________________________________
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users

Reply via email to