一个简单的jquery plone组件,用于向垃圾邮件发送者隐藏电子邮件地址。
zest.emailhider的Python项目详细描述
Zest电子邮件隐藏器
本文档介绍zest.emailhider软件包。
依赖关系
这个包依赖于jquery.pyproxy来集成python代码 jquery代码。
概述
此程序包提供了一种隐藏电子邮件地址的机制 javascript。或者:用这个包你可以隐藏你的电子邮件 默认地址,因此它们不在html中;使用javascript 然后提取并显示地址。
对于站点中的每个内容项,您只能有一封电子邮件 地址,当我们通过uid查找对象的电子邮件地址时。 对于需要此操作的对象,应该注册一个 适配器到imailable接口,因此我们可以向该适配器请求 email 属性和一个 uid 方法。"emailhider"视图是 用于生成占位符链接。
对象显示带有隐藏电子邮件的占位符链接 uid rel属性和一个电子邮件uid-<;someuid>;类设置为 对象的uid;加载页面时,运行一些jquery以生成 请求将所有这些链接替换为 那个东西。使用此机制,电子邮件地址在 初始页面加载,需要看到javascript,所以 对垃圾邮件发送者来说,收获起来要困难得多。
特殊情况:当uid包含"email"或"address"时 没有真正的uid。在这种情况下,我们不处理imailable接口 但我们试图从属性表中获取具有此"uid"的属性 入口。主要用例当然是"电子邮件地址", 但你也可以添加其他地址,如"信息电子邮件"。如果你 希望在例如静态Portlet中显示来自地址的电子邮件 在网站的任何页面上,使用以下HTML代码:
<a class="hidden-email email-uid-email_from_address" rel="email_from_address"> Activate JavaScript to see this address.</a>
您可以加载 test\u emailhider 页,查看是否有效。
您自己的套餐说明
如果你想在自己的软件包中使用这个,你需要做什么, 你自己的内容类型?
首先,您需要使您的内容类型适应imailable 直接或通过适配器连接。
如果您的内容类型已经有一个 uid 方法(与所有原型一样 内容类型)和 电子邮件属性,您可以使用一些zcml 这:
<class class=".content.MyContentType"> <implements interface="zest.emailhider.interfaces.IMailable" /> </class>
如果不是,则需要为内容类型注册适配器 有这个方法和属性的。例如如下:
from zope.component import adapts from zope.interface import implements from zest.emailhider.interfaces import IMailable from your.package.interfaces import IMyContentType class MailableAdapter(object): adapts(IMyContentType) implements(IMailable) def __init__(self, context): self.context = context def UID(self): return self.context.my_special_uid_attribute @property def email(self): return self.context.getSomeContactAddress()
其次,在内容类型的页面模板中,需要添加代码 要显示占位符文本而不是真实的电子邮件地址:
<span>For more information contact us via email:</span> <span tal:replace="structure context/@@emailhider" />
请注意,如果您希望在zest.emailhider不可用时仍能运行 安装后,您可以改用此代码:
<span tal:replace="structure context/@@emailhider|context/email" />
当zest.emailhider为 无法使用的。当您使用zest.emailhider 2.6或更高版本时 工作得更好一些,因为我们引入了自己的浏览器层: @emailhider页面只有在zest.emailhider实际存在时才可用 安装在plone站点。这也保证了它的安全使用 zest.emailhider当一个网站中有多个plone站点时 zope实例并希望emailhider只在其中一个实例中使用。
注意,模板中生成的代码非常小,因此 也可以查看zest.emailhider中的页面模板并复制一些 来自TH的代码把它改成你自己需要的。只要你的 可以通过uid目录中的uid和您的内容类型找到对象 可以改编成imailable来获取email属性,应该都是 工作正常。
有关旧版本中使用kss的说明
旧版本(直到并包括1.3版)使用kss而不是jquery。 当然,我们的功能也适用于匿名用户, 我们必须让kss公开。所以所有的javascript 还为匿名用户加载了kss所需。
我们不能自动撤消,因为包无法 知道其他包是否需要相同的更改,或者 经理出于其他正当理由而做的。所以你应该检查一下 zmi中的javascript注册表,看看是否需要撤销 匿名用户不再获得kss javascripts,因为他们不再 需要这个。
作为参考,这是条件字段中的法线 +resource++kukit.js (全部在一行):
python: not here.restrictedTraverse('@@plone_portal_state').anonymous() and here.restrictedTraverse('@@kss_devel_mode').isoff()
这是条件域中的法线 +resource++kukit devel.js (全部在一行):
python: not here.restrictedTraverse('@@plone_portal_state').anonymous() and here.restrictedTraverse('@@kss_devel_mode').ison()
兼容性
版本3.0应该适用于plone 4.1、4.2、4.3、5.0。
对于旧的plone版本,请坚持2.x行。最新的 自编写之日起的版本为2.7。
请注意,在plone 5.0上,我们并不是完全现代化的:我们注册了 旧门户工具中的css和javascript,而不是新资源中的css和javascript 注册表。所以它最终成为了plone遗留包。