[Zope3-Users] Making site skins
Dominik Huber
dominik.huber at perse.ch
Wed Aug 17 06:43:05 EDT 2005
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
More information about the Zope3-users
mailing list