一个简单的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第三方库


热门话题
Synth xml中的java设置JLabel图标   java全屏Flash应用程序测试需要外部戳   评测配置文件Java CPU负载   java如何显示布尔值?   java共享库与微服务?   使用bash脚本重定向java输出(liquibase)   java如何进行结构化日志记录?   属性JSF2的java绑定属性<h:dataTable>   java Android Restlet包装崩溃   java如果在一个事务中我们只在一个数据源上写,是否可以避免2PC或手动处理提交?(J2CA0030E)   java从哪里获得openCV的jar?   java正在尝试更新SQL数据库条目,但收到SQL语法错误。我怎么知道这里出了什么问题?   java如何在Firebase数据库值中添加空格   为什么在java中读取datainputstream时会出现EOF异常?   java STDERR将每个stacktrace行作为错误日志条目写入WildFly服务器。日志   java通过socket编写一个没有'ImageIO'的映像   java为什么JBoss会在出现错误时破坏连接池?   javafxjava如何查找当月的第一次登录   java这个Android项目给了我一个崩溃的机会,我正试图让这个项目有一个来自编辑文本的数字,并在文本视图中得到它两次