{ "info": { "author": "Zest Software", "author_email": "info@zestsoftware.nl", "bugtrack_url": null, "classifiers": [ "Framework :: Plone", "Framework :: Plone :: 4.1", "Framework :: Plone :: 4.2", "Framework :: Plone :: 4.3", "Framework :: Plone :: 5.0", "Programming Language :: Python", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "Zest emailhider\n===============\n\nThis document describes the zest.emailhider package.\n\n.. image:: https://secure.travis-ci.org/zestsoftware/zest.emailhider.png?branch=master\n :target: https://travis-ci.org/#!/zestsoftware/zest.emailhider\n\n\nDependencies\n------------\n\nThis package depends on jquery.pyproxy to integrate python code with\njquery code.\n\n\nOverview\n--------\n\nThis package provides a mechanism to hide email addresses with\nJavaScript. Or actually: with this package you can hide your email\naddresses by default so they are never in the html; with javascript\nthe addresses are then fetched and displayed.\n\nFor every content item in your site you can have exactly one email\naddress, as we look up the email address for an object by its UID.\nFor objects for which you want this you should register a simple\nadapter to the IMailable interface, so we can ask this adapter for an\n``email`` attribute and a ``UID`` method. The 'emailhider' view is\nprovided to generate the placeholder link.\n\nObjects display a placeholder link with a ``hidden-email`` class, a\n``uid`` rel attribute and a ``email-uid-`` class set to the\nUID of an object; when the page is loaded some jQuery is run to make a\nrequest for all those links to replace them with a 'mailto' link for\nthat object. Using this mechanism the email address isn't visible in\nthe initial page load, and it requires JavaScript to be seen - so it\nis much harder for spammers to harvest.\n\nSpecial case: when the uid contains 'email' or 'address' it is clearly\nno real uid. In that case we do nothing with the IMailable interface\nbut we try to get a property with this 'uid' from the property sheet\nof the portal. Main use case is of course the 'email_from_address',\nbut you can add other addresses as well, like 'info_email'. If you\nwant to display the email_from address in for example a static portlet\non any page in the site, use this html code::\n\n \n Activate JavaScript to see this address.\n\nYou can load the ``test_emailhider`` page to see if this works.\n\n\nInstructions for your own package\n---------------------------------\n\nWhat do you need to do if you want to use this in your own package,\nfor your own content type?\n\nFirst you need to make your content type adaptable to the IMailable\ninterface, either directly or via an adapter.\n\nIf your content type already has a ``UID`` method (like all Archetypes\ncontent types) and an ``email`` attribute, you can use some zcml like\nthis::\n\n \n \n \n\nIf not, then you need to register an adapter for your content type\nthat has this method and attribute. For example something like this::\n\n from zope.component import adapts\n from zope.interface import implements\n from zest.emailhider.interfaces import IMailable\n from your.package.interfaces import IMyContentType\n\n class MailableAdapter(object):\n adapts(IMyContentType)\n implements(IMailable)\n\n def __init__(self, context):\n self.context = context\n\n def UID(self):\n return self.context.my_special_uid_attribute\n\n @property\n def email(self):\n return self.context.getSomeContactAddress()\n\nSecond, in the page template of your content type you need to add code\nto show the placeholder text instead of the real email address::\n\n For more information contact us via email:\n \n\nNote that if you want this to still work when zest.emailhider is not\ninstalled, you can use this code instead::\n\n \n\nThis shows the unprotected plain text email when zest.emailhider is is\nnot available. When you are using zest.emailhider 2.6 or higher this\nworks a bit better, as we have introduced an own browser layer: the\n@@emailhider page is only available when zest.emailhider is actually\ninstalled in the Plone Site. This also makes it safe to use\nzest.emailhider when you have more than one Plone Site in a single\nZope instance and want emailhider to only be used in one them.\n\nNote that the generated code in the template is very small, so you\ncan also look at the page template in zest.emailhider and copy some\ncode from there and change it to your own needs. As long as your\nobjects can be found by UID in the uid_catalog and your content type\ncan be adapted to IMailable to get the email attribute, it should all\nwork fine.\n\n\nNote on KSS usage in older releases\n-----------------------------------\n\nOlder releases (until and including 1.3) used KSS instead of jQuery.\nAs our functionality should of course also work for anonymous users,\nwe had to make KSS publicly accessible. So all javascript that was\nneeded for KSS was loaded for anonymous users as well.\n\nWe cannot undo that automatically, as the package has no way of\nknowing if the same change was needed by some other package or was\ndone for other valid reasons by a Manager. So you should check the\njavascript registry in the ZMI and see if this needs to be undone so\nanonymous users no longer get the kss javascripts as they no longer\nneed that.\n\nFor reference, this is the normal line in the Condition field of\n``++resource++kukit.js`` (all on one line)::\n\n python: not\n here.restrictedTraverse('@@plone_portal_state').anonymous() and\n here.restrictedTraverse('@@kss_devel_mode').isoff()\n\nand this is the normal line in the Condition field of\n``++resource++kukit-devel.js`` (all on one line)::\n\n python: not\n here.restrictedTraverse('@@plone_portal_state').anonymous() and\n here.restrictedTraverse('@@kss_devel_mode').ison()\n\n\nCompatibility\n-------------\n\nVersion 3.0 should work on Plone 4.1, 4.2, 4.3, 5.0.\n\nFor older Plone versions, please stick to the 2.x line. Latest\nrelease as of writing is 2.7.\n\nNote that on Plone 5.0 we are not completely modern: we register our\ncss and javascript in the old portal tools, not in the new resource\nregistry. So it ends up in the Plone legacy bundle.\n\nHistory of zest.emailhider package\n==================================\n\n\n3.1.3 (2018-02-20)\n------------------\n\n- Make 'No uids found in request.' a warning instead of an error.\n I see bots requesting this url. [maurits]\n\n\n3.1.2 (2017-03-08)\n------------------\n\n- Do not render our javascript inline. It leads to display problems\n when it is included on a 404 page or any other non 20x page:\n an assertion in ``Products.ResourceRegistries`` fails, resulting in\n the html being returned with mimetype javascript.\n That seems a possible problem with any inline script.\n Added upgrade step for this.\n [maurits]\n\n\n3.1.1 (2017-02-24)\n------------------\n\n- Fixed javascript bug that caused a request even without any emails to reveal.\n [maurits]\n\n\n3.1 (2016-11-02)\n----------------\n\n- Query and reveal all emails at once. If you have an employee\n content type that you have hooked up to zest.emailhider, and you\n have a page showing fifty employees, previously we would fire fifty\n ajax requests. Now we gather everything into one request.\n [maurits]\n\n\n3.0 (2015-10-03)\n----------------\n\n- Added Travis badge.\n [maurits]\n\n- Support Plone 5 by reading ``plone.email_from_address`` from the\n registry. This loses compatibility with Plone 4.0. We try reading\n any email (also your own additional emails) from the registry first,\n with ``plone.`` prepended, and then look for a property on the\n portal root.\n [maurits]\n\n- Use ``$`` instead of ``jq`` in our javascript. Now it works without\n needing ``jquery-integration.js``. This loses compatibility with\n Plone 3.\n [maurits]\n\n- Added ``test_emailhider`` page that hides the portal\n ``email_from_address``, so you can easily test it. When you disable\n your javascript you should not see an email address.\n [maurits]\n\n\n2.7 (2012-09-12)\n----------------\n\n- Moved to github.\n [maurits]\n\n\n2.6 (2011-11-11)\n----------------\n\n- Added MANIFEST.in so our generated .mo files are added to the source\n distribution.\n [maurits]\n\n- Register our browser views only for our own new browser layer.\n Added an upgrade step for this. This makes it easier for other\n packages to have a conditional dependency on zest.emailhider.\n [maurits]\n\n\n2.5 (2011-06-01)\n----------------\n\n- Updated call to 'jq_reveal_email' to use the one at the root of the\n site to avoid security errors. [vincent]\n\n\n2.4 (2011-05-10)\n----------------\n\n- Updated jquery.pyproxy dependency to at least 0.3.1 and removed the\n now no longer needed clean_string call.\n [maurits]\n\n\n2.3 (2010-12-15)\n----------------\n\n- Not only look up a fake uid for email_from_address as portal\n property, but do this for any fake uid that has 'email' or 'address'\n in it. Log warnings when no email address can be found for a fake\n or real uid.\n [maurits]\n\n\n2.2 (2010-12-14)\n----------------\n\n- Added another upgrade step as we definitely need to apply our\n javascript registry too when upgrading. Really at this point a\n plain reinstall in the portal_quickinstaller is actually fine, which\n we could also define as upgrade step, but never mind that now.\n [maurits]\n\n\n2.1 (2010-12-14)\n----------------\n\n- Added two upgrade steps to upgrade from 1.x by installing\n jquery.pyproxy and running our kss step (which just removes our\n no longer needed kss file).\n [maurits]\n\n\n2.0 (2010-12-09)\n----------------\n\n- Use jquery.pyproxy instead of KSS. This makes the page load much\n less for anonymous users.\n [vincent+maurits]\n\n\n1.3 (2009-12-28)\n----------------\n\n- Made reveal_email available always, as it should just work whenever\n we want to hide the glocal 'email_from_address'. If we have a real\n uid target, then try to adapt that target to the IMailable interface\n and if that fails we just silently do nothing.\n [maurits]\n\n\n1.2 (2008-11-19)\n----------------\n\n- Using kss.plugin.cacheability and added it as a dependency. [jladage]\n\n- Allow to set the uid to email_from_address. [jladage]\n\n- Changed the KSS to use the load event instead of the click event - it\n now either works transparently, or asks the user to activate JS. [simon]\n\n\n1.1 (2008-10-24)\n----------------\n\n- Added translations and modified template to use them. [simon]\n\n- Initial creation of project. [simon]\n\n\n1.0 (2008-10-20)\n----------------\n\n- Initial creation of project. [simon]", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/zestsoftware/zest.emailhider", "keywords": "zestsoftware email spamprotection javascript", "license": "GPL", "maintainer": "", "maintainer_email": "", "name": "zest.emailhider", "package_url": "https://pypi.org/project/zest.emailhider/", "platform": "", "project_url": "https://pypi.org/project/zest.emailhider/", "project_urls": { "Homepage": "https://github.com/zestsoftware/zest.emailhider" }, "release_url": "https://pypi.org/project/zest.emailhider/3.1.3/", "requires_dist": null, "requires_python": "", "summary": "A simple jQuery Plone component for hiding email addresses from spammers.", "version": "3.1.3" }, "last_serial": 3599098, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "1a687b1dbd489133ebf39334a8949fbf", "sha256": "623a9585222b94f2ee8f37304dfc282c8b35e5094f761d5f2b07dd958072e3c6" }, "downloads": -1, "filename": "zest.emailhider-1.0.tar.gz", "has_sig": false, "md5_digest": "1a687b1dbd489133ebf39334a8949fbf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9175, "upload_time": "2008-10-20T14:30:34", "url": "https://files.pythonhosted.org/packages/16/69/c21a2fad3a8276c89b3ffd0a49fbed9197f99e63c15145ff508f96f3cfa9/zest.emailhider-1.0.tar.gz" } ], "1.0dev-r74006": [], "1.2": [ { "comment_text": "", "digests": { "md5": "61afcc7cf88c577c442c7369887859f4", "sha256": "deac758bf574c09fa54dd72659feb5fd78a7388c70091068e521369db46b939e" }, "downloads": -1, "filename": "zest.emailhider-1.2.tar.gz", "has_sig": false, "md5_digest": "61afcc7cf88c577c442c7369887859f4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10944, "upload_time": "2008-11-19T12:54:14", "url": "https://files.pythonhosted.org/packages/ab/5d/ce55fb50b398ecd91a751dbfb97a1e09a709be00f32e419e13e82adbf205/zest.emailhider-1.2.tar.gz" } ], "1.3": [ { "comment_text": "", "digests": { "md5": "215229e8ba756a7d568d23846b85c144", "sha256": "3883d5256469d165e18e738ebb701e08fc8870e92896d07ca4d499a642f85c4f" }, "downloads": -1, "filename": "zest.emailhider-1.3.tar.gz", "has_sig": false, "md5_digest": "215229e8ba756a7d568d23846b85c144", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11777, "upload_time": "2009-12-28T13:00:18", "url": "https://files.pythonhosted.org/packages/ef/5b/81a4145a412eb926d9c3a16f725bcb04937adc71dc46c5ba2794e407af28/zest.emailhider-1.3.tar.gz" } ], "2.0": [ { "comment_text": "", "digests": { "md5": "34e32807d7a81a8adbc2fc82e20bf63a", "sha256": "c947a4f90c3e18f812567d489a42e4d87d037968b96ff6be8c69e68a0831dfa6" }, "downloads": -1, "filename": "zest.emailhider-2.0.zip", "has_sig": false, "md5_digest": "34e32807d7a81a8adbc2fc82e20bf63a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24847, "upload_time": "2010-12-09T16:17:30", "url": "https://files.pythonhosted.org/packages/2a/b1/cec8d9e6574ac9371f36bfadc52b046bd0a65ff1ef12e1aab4e3f63dbbf1/zest.emailhider-2.0.zip" } ], "2.1": [ { "comment_text": "", "digests": { "md5": "ad8fb3f3e1e07b05ef8ca4f308102907", "sha256": "683350022682f5072aa86320102de28455c757a5f3e8416b93218101ce34b772" }, "downloads": -1, "filename": "zest.emailhider-2.1.zip", "has_sig": false, "md5_digest": "ad8fb3f3e1e07b05ef8ca4f308102907", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25562, "upload_time": "2010-12-14T17:00:44", "url": "https://files.pythonhosted.org/packages/d8/0b/556f7e9226af3d7f64b26e85e15fbcd5878149923c88684ff701bda32086/zest.emailhider-2.1.zip" } ], "2.2": [ { "comment_text": "", "digests": { "md5": "caee19ed46600b986366e2fc900c589d", "sha256": "28288f150b34bcd311c9ea56e0441ef882b987731f7cd7c5936b9f6f7902da57" }, "downloads": -1, "filename": "zest.emailhider-2.2.zip", "has_sig": false, "md5_digest": "caee19ed46600b986366e2fc900c589d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25947, "upload_time": "2010-12-14T17:57:08", "url": "https://files.pythonhosted.org/packages/c8/4a/388ab432973dbde9598150c46c42acaefe84d9f998983dd45705c8d035f8/zest.emailhider-2.2.zip" } ], "2.3": [ { "comment_text": "", "digests": { "md5": "a2c151a33db55a1e1ff54e8cabf15bc8", "sha256": "d8bf0f5b42d934cae5cb739b73a02c0ca1795f5986c7df36caed3e8074c9121b" }, "downloads": -1, "filename": "zest.emailhider-2.3.zip", "has_sig": false, "md5_digest": "a2c151a33db55a1e1ff54e8cabf15bc8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26885, "upload_time": "2010-12-15T15:50:06", "url": "https://files.pythonhosted.org/packages/40/96/c0abc9a6ff1b070f295388a644e79735b314158c6f46a5298bd0b5e7e38e/zest.emailhider-2.3.zip" } ], "2.4": [ { "comment_text": "", "digests": { "md5": "955f0c404e3353fc5c03c6a69f397733", "sha256": "ec960482c5f2fcd45fd35eb166c5347791f28344835a3ff064f90deee09edda8" }, "downloads": -1, "filename": "zest.emailhider-2.4.zip", "has_sig": false, "md5_digest": "955f0c404e3353fc5c03c6a69f397733", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27063, "upload_time": "2011-05-10T09:26:31", "url": "https://files.pythonhosted.org/packages/ac/d8/c89310a62be34f311f95cad2cd9d7e2026f47736f48090f797aa1d6b9e24/zest.emailhider-2.4.zip" } ], "2.5": [ { "comment_text": "", "digests": { "md5": "f7288aa1def44b0bd3efef34d2251b76", "sha256": "a12bbe43f7569859cfde72ca4ee5f3b5d27c9d9bd2c38aaebc470888a4a3c448" }, "downloads": -1, "filename": "zest.emailhider-2.5.zip", "has_sig": false, "md5_digest": "f7288aa1def44b0bd3efef34d2251b76", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27293, "upload_time": "2011-06-01T16:23:15", "url": "https://files.pythonhosted.org/packages/21/ce/5f3dc820b4003156da91baac1f5dede9710b2eac9270ffe08c85b1b3f53f/zest.emailhider-2.5.zip" } ], "2.6": [ { "comment_text": "", "digests": { "md5": "ab96c856585375e0501014d57bf52c8d", "sha256": "06466ee6521fc1952225b9076a7bab8a8a14c129135207ff38c8049fc487d16c" }, "downloads": -1, "filename": "zest.emailhider-2.6.tar.gz", "has_sig": false, "md5_digest": "ab96c856585375e0501014d57bf52c8d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15207, "upload_time": "2011-11-11T14:19:04", "url": "https://files.pythonhosted.org/packages/2d/b4/d61e86e5975b8577af161e051b1095571dd6870686cb8dcafcbe14378b5d/zest.emailhider-2.6.tar.gz" } ], "2.7": [ { "comment_text": "", "digests": { "md5": "e6a996397d0bdb6d0c1669a6d76890e4", "sha256": "38159ab33683e694a341701ae27aba66906b6680f49df054573344c6df36be99" }, "downloads": -1, "filename": "zest.emailhider-2.7.zip", "has_sig": false, "md5_digest": "e6a996397d0bdb6d0c1669a6d76890e4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35281, "upload_time": "2012-09-12T15:46:55", "url": "https://files.pythonhosted.org/packages/50/e0/c0b30e8820809c96542354bf5dd38c1451eba153242be70e3bbddaebc5bd/zest.emailhider-2.7.zip" } ], "3.0": [ { "comment_text": "", "digests": { "md5": "939cea09ecbf8b1376af538507a169ad", "sha256": "b27e009fc410ce45792f68c3dc30d2a940b1794261c475217572c2312ffd1159" }, "downloads": -1, "filename": "zest.emailhider-3.0.tar.gz", "has_sig": false, "md5_digest": "939cea09ecbf8b1376af538507a169ad", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21578, "upload_time": "2015-10-02T23:39:56", "url": "https://files.pythonhosted.org/packages/62/1e/935dae1aa21664e4aeeb6af96d9db826209467bc15a227b0c9c7fc0abe4d/zest.emailhider-3.0.tar.gz" } ], "3.1": [ { "comment_text": "", "digests": { "md5": "d896c688eaf680de1c286502493e218e", "sha256": "f28898b45dbf7c38c4e550883a7fbd1959be34cbb703768577f765a57aef7f5d" }, "downloads": -1, "filename": "zest.emailhider-3.1.tar.gz", "has_sig": false, "md5_digest": "d896c688eaf680de1c286502493e218e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22115, "upload_time": "2016-11-02T15:40:47", "url": "https://files.pythonhosted.org/packages/82/ea/36b0d72e2c6099e1661b2403a83f37fb6aacaab8ddf3120767e8a56d1528/zest.emailhider-3.1.tar.gz" } ], "3.1.1": [ { "comment_text": "", "digests": { "md5": "dd7d8a72f1c91c1cd9b8982b5f782e86", "sha256": "2a1ab298802d5d2f29d22a00c53a5a187044d492d44612793b96158b87104ce7" }, "downloads": -1, "filename": "zest.emailhider-3.1.1.tar.gz", "has_sig": false, "md5_digest": "dd7d8a72f1c91c1cd9b8982b5f782e86", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22218, "upload_time": "2017-02-24T17:33:43", "url": "https://files.pythonhosted.org/packages/13/0e/d82cd53f2b915ec462b8b53edab976dbf372a893980144b372ee095acb9d/zest.emailhider-3.1.1.tar.gz" } ], "3.1.2": [ { "comment_text": "", "digests": { "md5": "c992cf9b7c01597151c530f26ec5f916", "sha256": "ec93728b386e1a297d0fd3c23b8e06ad87903bd75ff13594e0439c1cfa96064c" }, "downloads": -1, "filename": "zest.emailhider-3.1.2.tar.gz", "has_sig": false, "md5_digest": "c992cf9b7c01597151c530f26ec5f916", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22556, "upload_time": "2017-03-08T13:14:08", "url": "https://files.pythonhosted.org/packages/f1/be/415ae5b572713aeb52cce6227db507ac6ab615742134450faa00fc1d9428/zest.emailhider-3.1.2.tar.gz" } ], "3.1.3": [ { "comment_text": "", "digests": { "md5": "306325b4c695fbd890e82621e9a88026", "sha256": "96055836894f0126e7d73e7c5ed1c415fa6c2f3081f007263ef125309c816389" }, "downloads": -1, "filename": "zest.emailhider-3.1.3.tar.gz", "has_sig": false, "md5_digest": "306325b4c695fbd890e82621e9a88026", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22816, "upload_time": "2018-02-20T13:39:07", "url": "https://files.pythonhosted.org/packages/61/56/92c2f59b69982b4858832321a2cb300ccf19350fb641eb3bb1488b96bc10/zest.emailhider-3.1.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "306325b4c695fbd890e82621e9a88026", "sha256": "96055836894f0126e7d73e7c5ed1c415fa6c2f3081f007263ef125309c816389" }, "downloads": -1, "filename": "zest.emailhider-3.1.3.tar.gz", "has_sig": false, "md5_digest": "306325b4c695fbd890e82621e9a88026", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22816, "upload_time": "2018-02-20T13:39:07", "url": "https://files.pythonhosted.org/packages/61/56/92c2f59b69982b4858832321a2cb300ccf19350fb641eb3bb1488b96bc10/zest.emailhider-3.1.3.tar.gz" } ] }