email obfuscation on add-on detail pages (bug 556467)

This commit is contained in:
Chris Van 2010-11-22 01:21:23 -05:00 коммит произвёл Andy McKay
Родитель 1ffd905c10
Коммит 2b1820240b
5 изменённых файлов: 27 добавлений и 12 удалений

Просмотреть файл

@ -282,8 +282,8 @@
</li>
{% endif %}
{% if addon.support_email %}
<li><a href="mailto:{{ addon.support_email }}">{{
_('E-mail your question') }}</a></li>
<li>{{ emaillink(addon.support_email.localized_string,
_('E-mail your question')) }}</li>
{% endif %}
{% if addon.support_url %}
<li><a href="{{ addon.support_url|external_url }}">{{

Просмотреть файл

@ -6,8 +6,8 @@ from jingo import register, env
from tower import ugettext as _
@register.filter
def emaillink(email):
@register.function
def emaillink(email, title=None):
if not email:
return ""
@ -20,7 +20,13 @@ def emaillink(email):
# replace @ and .
fallback = fallback.replace('@', '&#x0040;').replace('.', '&#x002E;')
node = u'<span class="emaillink">%s</span>' % fallback
if title:
title = jinja2.escape(title)
else:
title = '<span class="emaillink">%s</span>' % fallback
node = u'<a href="#">%s</a><span class="emaillink js-hidden">%s</span>' % (
title, fallback)
return jinja2.Markup(node)

Просмотреть файл

@ -30,7 +30,7 @@
{% if not profile.emailhidden %}
<tr>
<th>{{ _('Email address') }}</th>
<td>{{ profile.email|emaillink }}</td>
<td>{{ emaillink(profile.email) }}</td>
</tr>
{% endif %}
<tr>

Просмотреть файл

@ -13,11 +13,22 @@ def test_emaillink():
obfuscated = unicode(emaillink(email))
# remove junk
m = re.match(r'<span class="emaillink">(.*?)<span class="i">null</span>'
'(.*)</span>', obfuscated)
m = re.match(r'<a href="#"><span class="emaillink">(.*?)'
'<span class="i">null</span>(.*)</span></a>'
'<span class="emaillink js-hidden">(.*?)'
'<span class="i">null</span>(.*)</span>', obfuscated)
obfuscated = (''.join((m.group(1), m.group(2)))
.replace('&#x0040;', '@').replace('&#x002E;', '.'))[::-1]
eq_(email, obfuscated)
title = 'E-mail your question'
obfuscated = unicode(emaillink(email, title))
m = re.match(r'<a href="#">(.*)</a>'
'<span class="emaillink js-hidden">(.*?)'
'<span class="i">null</span>(.*)</span>', obfuscated)
eq_(title, m.group(1))
obfuscated = (''.join((m.group(2), m.group(3)))
.replace('&#x0040;', '@').replace('&#x002E;', '.'))[::-1]
eq_(email, obfuscated)

Просмотреть файл

@ -19,10 +19,8 @@ $(document).ready(function(){
// Initialize email links
$('span.emaillink').each(function() {
$(this).find('.i').remove();
em = $(this).text().split('').reverse().join('');
a = $('<a>').attr('href', 'mailto:' + em)
.text(em);
$(this).replaceWith(a);
var em = $(this).text().split('').reverse().join('');
$(this).prev('a').attr('href', 'mailto:' + em);
});
// Set up input placeholders.