将标记接口应用于子节特殊呈现的代码请求。

collective.sectionsubskin的Python项目详细描述


Section Sub Skin是一个将接口应用于请求的系统,该请求将
映射到对站点的某个分区的主题应如何更改的描述中。
这些映射不会自动更改主题的内容,但它们在Zope3样式的浏览器视图中可用于条件包涵体。

当前建议的方法(因为不支持DTML视图)
是创建一个使用TAL而不是生成自定义CSS文件的标准DTML方法的视图。

例如,如果所有子组件都包含一个"colour"属性,则当前颜色可以通过以下方式找到:

<;tal:colour replace="view/subskin/colour"on error="string:mydefaultcolour"/>;


borning imports and setup(移到tests.py?)。您可能希望忽略所有这些。:

>;>>来自zope.app.testing导入ztapi
>;>导入zope.interface
>;>来自accesscontrol.securitymanagement导入newsecuritymanager
>;>来自accesscontrol.user导入unricteduser
>;>来自testing.makerequest im端口makerequest
>;>app=makerequest(app)
>;>portal=portal。
>;>newsecuritymanager(none,unrestricteduser('god','',['manager','')
>;>estcase导入用户密码
>;>;browser.addheader('authorization','basic%s:%s'('portal_owner',user_password)),只需要,因为我们的视图是一个虚拟视图,如果通过zcml注册,我们将使用permission=zope2.view



skin.definition import basedefinition
>;>from collective.sectionsubskin.interfaces import isubskindefinition
>;>from collective.sectionsubskin.test\u支持导入iredskin,redskin

r/>
类redskin(basedefinition):
title=u"redskin"
colour=u"ff0000"
type\u interface=iredskin


我们可以将此实例保存在列表中,以便以后插入::

>;>;skins=[]
>;>;skins.append(redskin())
>;>;skins
[<;名为redskin>;]
>;>skins[0].colour
u'ff0000'

/>>>>>来自collective.sectionsubskin.test_支持导入iblueskin,blueskin
>;>;skins.append(blueskin())




同样,在文件系统上,此代码的值为::


class iblueskin(isubskindefinition):
pass


class blueskin(basedefinition):
title=u"blues"kin"
colour=u"0000ff"
type廑interface=iblueskin




skins变量现在包含两个皮肤::

>;
>;skins
[<;sectionsubskin named redskin>;,<;sectionsubskin named blueskin>;]
>;[1].colour
u'0000ff'

站点视图(在测试支持中注册):从collective.sectionsubskin.test支持导入颜色


一个稻谷,所以它实际上是:从collective.sectionsubskin.browser.subskin导入subskin


class colors(subskin):
"颜色"。

def render(self):呈现css。
尝试:
return"""html{background color:%s;}""%"(self.subskin.colour)
除了:
return""


r这个玩具示例
return self




>;>;浏览器。打开("%s/colors.css"%self.portal.absolute_url())
>;>;浏览器。内容
'


它正确地呈现一个空字符串。
但是,如果我们创建了一些子文件夹,则可以将它们分配给子文件夹:

>;>;red=portal[portal.invokefactory("folder","red")]
>;>;zope.interface.alsoprovides(red,(iredskin,))
>;>;blue=portal[portal.invokefactory("folder","blue")]
>>>gt;zope.interface.alsoprovides(蓝色,(iblueskin,))
>>>noskin=portal[portal.invokefactory("folder","noskin")]



>现在,当我们遍历到红色文件夹时,我们会看到红色的皮肤:

>;浏览器。打开("%s/red/colors.css%"self.portal。绝对url())
>;>>浏览器。内容
'html{背景色:ff0000;}'

>但如果我们变蓝,我们会看到另一个选项:

>;>>浏览器。打开("%s/blue/colors.css"%self.portal.absolute\url())
>;>浏览器。内容
'html{背景颜色:0000FF;}'

>任何未标记的文件夹仍不显示子类::

>;>>浏览器。打开("%s/no skin/colors.css"%self.portal.absolute\url())
>;>>浏览器。内容
'

/>
>;>;浏览器。打开("%s/red/blue/colors.css"%self.portal.absolute戋url())
>;>;浏览器。内容
'html{background color:戋0000ff;}



>;浏览器。打开("%s/blue/red/colors.css"%self.portal.absolute戋url())
>>>gt;浏览器。内容
'html{背景色:ff0000;}'
更改日志
=


>0.2
--



0井。2.9有5个1.4.4可以工作,但不受支持。
matthewwilkes

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java:字符串。RTL设备语言用标志“+”格式化,数字后加符号   java GAE作为桌面应用程序(Swing)的服务提供商   java将InputStream转换为FileInputStream不适用于Apache POI   java外部Voronoi库“网格”:什么是草图和处理?   重载重写的泛型方法java   java显示组织上设置的错误。springframework。验证。jsp中的错误对象   java一些Spring模型属性没有显示在我的JSP中   java无法编译Guava 23的SimpleTimeLimiter示例   java如何更改JTree中的“根”目录名?   java如何在安卓中对相对布局产生连锁反应?   java错误:org。冬眠例外SQLGrammarException:无法提取结果集,dateAccessed是未知列   如何使用java监听JSON文件更新   由抽象封闭类创建的匿名内部类能否通过反射确定实现类?