一个简单的jquery plone组件,用于向垃圾邮件发送者隐藏电子邮件地址。

zest.emailhider的Python项目详细描述


Zest电子邮件隐藏器

本文档介绍zest.emailhider软件包。

https://secure.travis-ci.org/zestsoftware/zest.emailhider.png?branch=master

依赖关系

这个包依赖于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遗留包。

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

推荐PyPI第三方库


热门话题
java组织。openqa。硒。遥远的UnreachableBrowserException如何定义EXE路径?   java Camel AdviceWith不使用指定文件替换端点   基于字符串的java图像加载   Java中的启发式算法,计算8个谜题状态的线性冲突   java为什么不支持文件。probeContentType返回null   JPA@EntityListeners、@PrePersist和Spring@RepositoryEventHandler、@HandleBeforeSave之间的java差异   可能前缀的Java字符串到字符串[]   安装rJava | Makefile时发生java错误。全部:38:target’libjri的配方。所以他失败了   Java公共静态void main()   java如何覆盖txt文件中的某些单词   java如何获得循环中生成的字符值之和?   java Log4j创建另一个具有相同属性的appender   java如何在从Axis2 Web服务客户端通过代理服务器调用Web服务时设置代理设置?   在Windows上安装Elasticsearch时发生java错误   java如何向EditText组件添加TextChangedListener?