Merge authors: David Siebörger (dsieborger) Related merge proposals: https://code.launchpad.net/~dsieborger/mailman/recaptcha/+merge/336782 proposed by: David Siebörger (dsieborger) review: Approve - Mark Sapiro (msapiro) ------------------------------------------------------------ revno: 1738 [merge] committer: Mark Sapiro <m...@msapiro.net> branch nick: 2.1 timestamp: Mon 2018-01-29 20:06:24 -0800 message: Added the ability to add reCAPTCHA to the listinfo subscribe form. modified: Mailman/Cgi/listinfo.py Mailman/Cgi/subscribe.py Mailman/Defaults.py.in NEWS templates/ar/listinfo.html templates/ast/listinfo.html templates/ca/listinfo.html templates/cs/listinfo.html templates/da/listinfo.html templates/de/listinfo.html templates/el/listinfo.html templates/en/listinfo.html templates/es/listinfo.html templates/et/listinfo.html templates/eu/listinfo.html templates/fa/listinfo.html templates/fi/listinfo.html templates/fr/listinfo.html templates/gl/listinfo.html templates/he/listinfo.html templates/hr/listinfo.html templates/hu/listinfo.html templates/ia/listinfo.html templates/it/listinfo.html templates/ja/listinfo.html templates/ko/listinfo.html templates/lt/listinfo.html templates/nl/listinfo.html templates/no/listinfo.html templates/pl/listinfo.html templates/pt/listinfo.html templates/pt_BR/listinfo.html templates/ro/listinfo.html templates/ru/listinfo.html templates/sk/listinfo.html templates/sl/listinfo.html templates/sr/listinfo.html templates/sv/listinfo.html templates/tr/listinfo.html templates/uk/listinfo.html templates/vi/listinfo.html templates/zh_CN/listinfo.html templates/zh_TW/listinfo.html
-- lp:mailman/2.1 https://code.launchpad.net/~mailman-coders/mailman/2.1 Your team Mailman Checkins is subscribed to branch lp:mailman/2.1. To unsubscribe from this branch go to https://code.launchpad.net/~mailman-coders/mailman/2.1/+edit-subscription
=== modified file 'Mailman/Cgi/listinfo.py' --- Mailman/Cgi/listinfo.py 2017-06-06 05:47:05 +0000 +++ Mailman/Cgi/listinfo.py 2018-01-30 04:06:24 +0000 @@ -1,4 +1,4 @@ -# Copyright (C) 1998-2017 by the Free Software Foundation, Inc. +# Copyright (C) 1998-2018 by the Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -21,6 +21,7 @@ # No lock needed in this script, because we don't change data. import os +import re import cgi import time @@ -243,6 +244,18 @@ replacements['<mm-displang-box>'] = displang replacements['<mm-lang-form-start>'] = mlist.FormatFormStart('listinfo') replacements['<mm-fullname-box>'] = mlist.FormatBox('fullname', size=30) + # If reCAPTCHA is enabled, display its user interface + if mm_cfg.RECAPTCHA_SITE_KEY: + rlang = re.sub('_', '-', lang) + replacements['<mm-recaptcha-ui>'] = ( + """<tr><td> </td><td> + <script src="https://www.google.com/recaptcha/api.js?hl=%s"> + </script> + <div class="g-recaptcha" data-sitekey="%s"></div> + </td></tr>""" + % (rlang, mm_cfg.RECAPTCHA_SITE_KEY)) + else: + replacements['<mm-recaptcha-ui>'] = '' # Do the expansion. doc.AddItem(mlist.ParseTags('listinfo.html', replacements, lang)) === modified file 'Mailman/Cgi/subscribe.py' --- Mailman/Cgi/subscribe.py 2017-06-06 05:47:05 +0000 +++ Mailman/Cgi/subscribe.py 2018-01-30 04:06:24 +0000 @@ -1,4 +1,4 @@ -# Copyright (C) 1998-2017 by the Free Software Foundation, Inc. +# Copyright (C) 1998-2018 by the Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -22,6 +22,9 @@ import cgi import time import signal +import urllib +import urllib2 +import json from Mailman import mm_cfg from Mailman import Utils @@ -131,6 +134,25 @@ os.environ.get('HTTP_X_FORWARDED_FOR', os.environ.get('REMOTE_ADDR', 'unidentified origin'))) + + # Check reCAPTCHA submission, if enabled + if mm_cfg.RECAPTCHA_SECRET_KEY: + request = urllib2.Request( + url = 'https://www.google.com/recaptcha/api/siteverify', + data = urllib.urlencode({ + 'secret': mm_cfg.RECAPTCHA_SECRET_KEY, + 'response': cgidata.getvalue('g-recaptcha-response', ''), + 'remoteip': remote})) + try: + httpresp = urllib2.urlopen(request) + captcha_response = json.load(httpresp) + httpresp.close() + if not captcha_response['success']: + results.append(_('reCAPTCHA validation failed: %s' % + ', '.join(captcha_response['error-codes']))) + except urllib2.URLError as e: + results.append(_('reCAPTCHA could not be validated: %s' % e.reason)) + # Are we checking the hidden data? if mm_cfg.SUBSCRIBE_FORM_SECRET: now = int(time.time()) === modified file 'Mailman/Defaults.py.in' --- Mailman/Defaults.py.in 2017-11-06 11:23:01 +0000 +++ Mailman/Defaults.py.in 2018-01-30 04:06:24 +0000 @@ -1,6 +1,6 @@ # -*- python -*- -# Copyright (C) 1998-2017 by the Free Software Foundation, Inc. +# Copyright (C) 1998-2018 by the Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -131,6 +131,12 @@ # test. SUBSCRIBE_FORM_MIN_TIME = seconds(5) +# Use Google reCAPTCHA to protect the subscription form from spam bots. The +# following must be set to a pair of keys issued by the reCAPTCHA service at +# https://www.google.com/recaptcha/admin +RECAPTCHA_SITE_KEY = None +RECAPTCHA_SECRET_KEY = None + # Installation wide ban list. This is a list of email addresses and regexp # patterns (beginning with ^) which are not allowed to subscribe to any lists # in the installation. This supplements the individual list's ban_list. === modified file 'NEWS' --- NEWS 2018-01-28 01:45:22 +0000 +++ NEWS 2018-01-30 04:06:24 +0000 @@ -1,6 +1,6 @@ -*- coding: iso-8859-1 -*- Mailman - The GNU Mailing List Management System -Copyright (C) 1998-2017 by the Free Software Foundation, Inc. +Copyright (C) 1998-2018 by the Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA Here is a history of user visible changes to Mailman. @@ -9,6 +9,13 @@ New Features + - Thanks to David Siebrger who adapted an existing patch by Andrea + Veri to use Google reCAPTCHA v2 there is now the ability to add + reCAPTCHA to the listinfo subscribe form. There are two new mm_cfg.py + settings for RECAPTCHA_SITE_KEY and RECAPTCHA_SECRET_KEY, the values + for which you obtain for your domain(s) from Google at + <https://www.google.com/recaptcha/admin>. + - Thanks to Lindsay Haisley, there is a new bin/mailman-config command to display various information about this Mailman version and how it was configured. === modified file 'templates/ar/listinfo.html' --- templates/ar/listinfo.html 2010-01-28 23:06:44 +0000 +++ templates/ar/listinfo.html 2018-01-29 12:58:42 +0000 @@ -111,6 +111,7 @@ </TD> </tr> <mm-digest-question-end> + <mm-recaptcha-ui> <tr> <td colspan="3"> <center><MM-Subscribe-Button></center> === modified file 'templates/ast/listinfo.html' --- templates/ast/listinfo.html 2009-12-08 23:25:52 +0000 +++ templates/ast/listinfo.html 2018-01-29 12:58:42 +0000 @@ -103,6 +103,7 @@ </TD> </tr> <mm-digest-question-end> + <mm-recaptcha-ui> <tr> <td colspan="3"> <center><MM-Subscribe-Button></P></center> === modified file 'templates/ca/listinfo.html' --- templates/ca/listinfo.html 2010-01-28 23:06:44 +0000 +++ templates/ca/listinfo.html 2018-01-29 12:58:42 +0000 @@ -114,6 +114,7 @@ </TD> </tr> <mm-digest-question-end> + <mm-recaptcha-ui> <tr> <td colspan="3"> <center><MM-Subscribe-Button></center> === modified file 'templates/cs/listinfo.html' --- templates/cs/listinfo.html 2016-11-14 07:13:01 +0000 +++ templates/cs/listinfo.html 2018-01-29 12:58:42 +0000 @@ -112,6 +112,7 @@ </TD> </tr> <mm-digest-question-end> + <mm-recaptcha-ui> <tr> <td colspan="3"> <center><MM-Subscribe-Button></center> === modified file 'templates/da/listinfo.html' --- templates/da/listinfo.html 2010-01-28 23:06:44 +0000 +++ templates/da/listinfo.html 2018-01-29 12:58:42 +0000 @@ -108,6 +108,7 @@ </TD> </tr> <mm-digest-question-end> + <mm-recaptcha-ui> <tr> <td colspan="3"> <center><MM-Subscribe-Button></center> === modified file 'templates/de/listinfo.html' --- templates/de/listinfo.html 2018-01-12 12:44:15 +0000 +++ templates/de/listinfo.html 2018-01-29 12:58:42 +0000 @@ -114,6 +114,7 @@ </TD> </tr> <mm-digest-question-end> + <mm-recaptcha-ui> <tr> <td colspan="3"> <center><MM-Subscribe-Button></center> === modified file 'templates/el/listinfo.html' --- templates/el/listinfo.html 2012-06-20 23:32:30 +0000 +++ templates/el/listinfo.html 2018-01-29 12:58:42 +0000 @@ -116,6 +116,7 @@ </TD> </tr> <mm-digest-question-end> + <mm-recaptcha-ui> <tr> <td colspan="3"> <center><MM-Subscribe-Button></P></center> === modified file 'templates/en/listinfo.html' --- templates/en/listinfo.html 2010-01-28 23:06:44 +0000 +++ templates/en/listinfo.html 2018-01-29 12:58:42 +0000 @@ -115,6 +115,7 @@ </TD> </tr> <mm-digest-question-end> + <mm-recaptcha-ui> <tr> <td colspan="3"> <center><MM-Subscribe-Button></center> === modified file 'templates/es/listinfo.html' --- templates/es/listinfo.html 2010-01-28 23:06:44 +0000 +++ templates/es/listinfo.html 2018-01-30 04:06:24 +0000 @@ -107,6 +107,7 @@ <TD BGCOLOR="#dddddd">¿En qué idioma desea visualizar sus mensajes?</TD> <TD> <MM-list-langs></TD> <TD> </TD></TR> + <mm-digest-question-start> <tr> <td>¿Desea recibir los mensaje de cada día reunidos en un único mensaje (digest)? @@ -115,6 +116,8 @@ <MM-Digest-Radio-Button> Sí </TD> </tr> + <mm-digest-question-end> + <mm-recaptcha-ui> <tr> <td colspan="3"> <center><MM-Subscribe-Button></center> === modified file 'templates/et/listinfo.html' --- templates/et/listinfo.html 2016-11-14 07:13:01 +0000 +++ templates/et/listinfo.html 2018-01-30 04:06:24 +0000 @@ -98,6 +98,7 @@ <TD BGCOLOR="#dddddd">Kasutajaliidese keel?</TD> <TD> <MM-list-langs></TD> <TD> </TD></TR> + <mm-digest-question-start> <tr> <td>Kirju saadetakse kokkuvõtetena </td> @@ -105,6 +106,8 @@ <MM-Digest-Radio-Button> Jah </TD> </tr> + <mm-digest-question-end> + <mm-recaptcha-ui> <tr> <td colspan="3"> <center><MM-Subscribe-Button></center> === modified file 'templates/eu/listinfo.html' --- templates/eu/listinfo.html 2010-01-28 23:06:44 +0000 +++ templates/eu/listinfo.html 2018-01-29 12:58:42 +0000 @@ -113,6 +113,7 @@ </TD> </tr> <mm-digest-question-end> + <mm-recaptcha-ui> <tr> <td colspan="3"> <center><MM-Subscribe-Button></center> === modified file 'templates/fa/listinfo.html' --- templates/fa/listinfo.html 2013-07-18 22:14:15 +0000 +++ templates/fa/listinfo.html 2018-01-29 12:58:42 +0000 @@ -105,6 +105,7 @@ </TD> </tr> <mm-digest-question-end> + <mm-recaptcha-ui> <tr> <td colspan="3"> <center><MM-Subscribe-Button></center> === modified file 'templates/fi/listinfo.html' --- templates/fi/listinfo.html 2016-11-14 07:13:01 +0000 +++ templates/fi/listinfo.html 2018-01-30 04:06:24 +0000 @@ -110,6 +110,7 @@ <TD BGCOLOR="#dddddd">Millä kielellä haluat ohjeet ja lomakkeet?</TD> <TD> <MM-list-langs></TD> <TD> </TD></TR> + <mm-digest-question-start> <tr> <td>Haluatko vastaanottaa listan viestit päivittäisenä kokoelmana yksittäisten viestien sijaan? @@ -118,6 +119,8 @@ <MM-Digest-Radio-Button> Kyllä </TD> </tr> + <mm-digest-question-end> + <mm-recaptcha-ui> <tr> <td colspan="3"> <center><MM-Subscribe-Button></center> === modified file 'templates/fr/listinfo.html' --- templates/fr/listinfo.html 2014-02-04 01:01:49 +0000 +++ templates/fr/listinfo.html 2018-01-29 12:58:42 +0000 @@ -118,6 +118,7 @@ </td> </tr> <mm-digest-question-end> + <mm-recaptcha-ui> <tr> <td colspan="3"> <center><MM-Subscribe-Button></center> === modified file 'templates/gl/listinfo.html' --- templates/gl/listinfo.html 2016-01-10 03:33:25 +0000 +++ templates/gl/listinfo.html 2018-01-30 04:06:24 +0000 @@ -106,6 +106,7 @@ <TD BGCOLOR="#dddddd">En que idioma desexa ver as mensaxes?</TD> <TD> <MM-list-langs></TD> <TD> </TD></TR> + <mm-digest-question-start> <tr> <td>Desexa recibir as mensaxes diarias compiladas nunha única mensaxe? @@ -114,6 +115,8 @@ <MM-Digest-Radio-Button> Si </TD> </tr> + <mm-digest-question-end> + <mm-recaptcha-ui> <tr> <td colspan="3"> <center><MM-Subscribe-Button></center> === modified file 'templates/he/listinfo.html' --- templates/he/listinfo.html 2010-01-28 23:06:44 +0000 +++ templates/he/listinfo.html 2018-01-29 12:58:42 +0000 @@ -110,6 +110,7 @@ </TD> </tr> <mm-digest-question-end> + <mm-recaptcha-ui> <tr> <td colspan="3"> <center><MM-Subscribe-Button></center> === modified file 'templates/hr/listinfo.html' --- templates/hr/listinfo.html 2016-11-14 07:13:01 +0000 +++ templates/hr/listinfo.html 2018-01-29 12:58:42 +0000 @@ -112,6 +112,7 @@ </TD> </tr> <mm-digest-question-end> + <mm-recaptcha-ui> <tr> <td colspan="3"> <center><MM-Subscribe-Button></center> === modified file 'templates/hu/listinfo.html' --- templates/hu/listinfo.html 2016-11-14 07:13:01 +0000 +++ templates/hu/listinfo.html 2018-01-29 12:58:42 +0000 @@ -111,6 +111,7 @@ </tr> <tr> <mm-digest-question-end> + <mm-recaptcha-ui> <td colspan="3"> <center><MM-Subscribe-Button></center> </td> === modified file 'templates/ia/listinfo.html' --- templates/ia/listinfo.html 2015-02-18 21:30:11 +0000 +++ templates/ia/listinfo.html 2018-01-29 12:58:42 +0000 @@ -103,6 +103,7 @@ </TD> </tr> <mm-digest-question-end> + <mm-recaptcha-ui> <tr> <td colspan="3"> <center><MM-Subscribe-Button></center> === modified file 'templates/it/listinfo.html' --- templates/it/listinfo.html 2010-01-28 23:06:44 +0000 +++ templates/it/listinfo.html 2018-01-29 12:58:42 +0000 @@ -123,6 +123,7 @@ </TD> </tr> <mm-digest-question-end> + <mm-recaptcha-ui> <tr> <td colspan="3"> <center><MM-Subscribe-Button></center> === modified file 'templates/ja/listinfo.html' --- templates/ja/listinfo.html 2010-01-28 23:06:44 +0000 +++ templates/ja/listinfo.html 2018-01-29 12:58:42 +0000 @@ -115,6 +115,7 @@ </TD> </tr> <mm-digest-question-end> + <mm-recaptcha-ui> <tr> <td colspan="3"> <center><MM-Subscribe-Button></center> === modified file 'templates/ko/listinfo.html' --- templates/ko/listinfo.html 2010-01-28 23:06:44 +0000 +++ templates/ko/listinfo.html 2018-01-30 04:06:24 +0000 @@ -103,6 +103,7 @@ <TD BGCOLOR="#dddddd"> ϼ?</TD> <TD> <MM-list-langs></TD> <TD> </TD></TR> + <mm-digest-question-start> <tr> <td> Ϸ翡 ƺ Ͻðڽϱ? </td> @@ -110,6 +111,8 @@ <MM-Digest-Radio-Button> </TD> </tr> + <mm-digest-question-end> + <mm-recaptcha-ui> <tr> <td colspan="3"> <center><MM-Subscribe-Button></center> === modified file 'templates/lt/listinfo.html' --- templates/lt/listinfo.html 2016-11-14 07:13:01 +0000 +++ templates/lt/listinfo.html 2018-01-30 04:06:24 +0000 @@ -104,6 +104,7 @@ <TD BGCOLOR="#dddddd">Pasirinkite kalb?</TD> <TD> <MM-list-langs></TD> <TD> </TD></TR> + <mm-digest-question-start> <tr> <td>Ar norite gauti dienos laišk rinkinius? </td> @@ -111,6 +112,8 @@ <MM-Digest-Radio-Button> Taip </TD> </tr> + <mm-digest-question-end> + <mm-recaptcha-ui> <tr> <td colspan="3"> <center><MM-Subscribe-Button></center> === modified file 'templates/nl/listinfo.html' --- templates/nl/listinfo.html 2010-01-28 23:06:44 +0000 +++ templates/nl/listinfo.html 2018-01-30 04:06:24 +0000 @@ -99,6 +99,7 @@ <TD BGCOLOR="#dddddd">Wat is uw voorkeurstaal voor de berichten?</TD> <TD> <MM-list-langs></TD> <TD> </TD></TR> + <mm-digest-question-start> <tr> <td>Wilt u de berichten gebundeld ontvangen in een dagelijkse verzamelmail? </td> @@ -106,6 +107,8 @@ <MM-Digest-Radio-Button> Ja </TD> </tr> + <mm-digest-question-end> + <mm-recaptcha-ui> <tr> <td colspan="3"> <center><MM-Subscribe-Button></center> === modified file 'templates/no/listinfo.html' --- templates/no/listinfo.html 2010-01-28 23:06:44 +0000 +++ templates/no/listinfo.html 2018-01-29 12:58:42 +0000 @@ -108,6 +108,7 @@ </TD> </tr> <mm-digest-question-end> + <mm-recaptcha-ui> <tr> <td colspan="3"> <center><MM-Subscribe-Button></center> === modified file 'templates/pl/listinfo.html' --- templates/pl/listinfo.html 2017-01-18 06:49:29 +0000 +++ templates/pl/listinfo.html 2018-01-29 12:58:42 +0000 @@ -113,6 +113,7 @@ </TD> </tr> <mm-digest-question-end> + <mm-recaptcha-ui> <tr> <td colspan="3"> <center><MM-Subscribe-Button></center> === modified file 'templates/pt/listinfo.html' --- templates/pt/listinfo.html 2016-11-14 07:13:01 +0000 +++ templates/pt/listinfo.html 2018-01-29 12:58:42 +0000 @@ -114,6 +114,7 @@ </TD> </tr> <mm-digest-question-end> + <mm-recaptcha-ui> <tr> <td colspan="3"> <center><MM-Subscribe-Button></center> === modified file 'templates/pt_BR/listinfo.html' --- templates/pt_BR/listinfo.html 2010-01-28 23:06:44 +0000 +++ templates/pt_BR/listinfo.html 2018-01-30 04:06:24 +0000 @@ -105,6 +105,7 @@ <TD BGCOLOR="#dddddd">Em que idioma prefere exibir suas mensagens?</TD> <TD> <MM-list-langs></TD> <TD> </TD></TR> + <mm-digest-question-start> <tr> <td>Deseja receber e-mails da lista enviados uma vez por dia em um único email (digest)? @@ -113,6 +114,8 @@ <MM-Digest-Radio-Button> Sim </TD> </tr> + <mm-digest-question-end> + <mm-recaptcha-ui> <tr> <td colspan="3"> <center><MM-Subscribe-Button></center> === modified file 'templates/ro/listinfo.html' --- templates/ro/listinfo.html 2016-11-14 07:13:01 +0000 +++ templates/ro/listinfo.html 2018-01-29 12:58:42 +0000 @@ -109,6 +109,7 @@ </TD> </tr> <mm-digest-question-end> + <mm-recaptcha-ui> <tr> <td colspan="3"> <center><MM-Subscribe-Button></center> === modified file 'templates/ru/listinfo.html' --- templates/ru/listinfo.html 2015-02-05 21:15:37 +0000 +++ templates/ru/listinfo.html 2018-01-29 12:58:42 +0000 @@ -100,6 +100,7 @@ </TD> </tr> <mm-digest-question-end> + <mm-recaptcha-ui> <tr> <td colspan="3"> <center><MM-Subscribe-Button></center> === modified file 'templates/sk/listinfo.html' --- templates/sk/listinfo.html 2016-11-14 07:13:01 +0000 +++ templates/sk/listinfo.html 2018-01-29 12:58:42 +0000 @@ -117,6 +117,7 @@ </TD> </tr> <mm-digest-question-end> + <mm-recaptcha-ui> <tr> <td colspan="3"> <center><MM-Subscribe-Button></center> === modified file 'templates/sl/listinfo.html' --- templates/sl/listinfo.html 2016-11-14 07:13:01 +0000 +++ templates/sl/listinfo.html 2018-01-29 12:58:42 +0000 @@ -112,6 +112,7 @@ </TD> </tr> <mm-digest-question-end> + <mm-recaptcha-ui> <tr> <td colspan="3"> <center><MM-Subscribe-Button></center> === modified file 'templates/sr/listinfo.html' --- templates/sr/listinfo.html 2010-01-28 23:06:44 +0000 +++ templates/sr/listinfo.html 2018-01-29 12:58:42 +0000 @@ -97,6 +97,7 @@ <td><MM-Undigest-Radio-Button> Не<MM-Digest-Radio-Button> Да</TD> </tr> <mm-digest-question-end> + <mm-recaptcha-ui> <tr> <td colspan="3"> <center> <MM-Subscribe-Button></center> === modified file 'templates/sv/listinfo.html' --- templates/sv/listinfo.html 2010-01-28 23:06:44 +0000 +++ templates/sv/listinfo.html 2018-01-29 12:58:42 +0000 @@ -94,6 +94,7 @@ <td><MM-Undigest-Radio-Button> Nej <MM-Digest-Radio-Button> Ja </TD> </tr> <mm-digest-question-end> + <mm-recaptcha-ui> <tr> <td colspan="3"> <center><MM-Subscribe-Button></center> === modified file 'templates/tr/listinfo.html' --- templates/tr/listinfo.html 2016-11-14 07:13:01 +0000 +++ templates/tr/listinfo.html 2018-01-29 12:58:42 +0000 @@ -115,6 +115,7 @@ </TD> </tr> <mm-digest-question-end> + <mm-recaptcha-ui> <tr> <td colspan="3"> <center><MM-Subscribe-Button></center> === modified file 'templates/uk/listinfo.html' --- templates/uk/listinfo.html 2010-01-28 23:06:44 +0000 +++ templates/uk/listinfo.html 2018-01-29 12:58:42 +0000 @@ -111,6 +111,7 @@ </TD> </tr> <mm-digest-question-end> + <mm-recaptcha-ui> <tr> <td colspan="3"> <center><MM-Subscribe-Button></center> === modified file 'templates/vi/listinfo.html' --- templates/vi/listinfo.html 2010-01-28 23:06:44 +0000 +++ templates/vi/listinfo.html 2018-01-29 12:58:42 +0000 @@ -102,6 +102,7 @@ </TD> </tr> <mm-digest-question-end> + <mm-recaptcha-ui> <tr> <td colspan="3"> <center><MM-Subscribe-Button></center> === modified file 'templates/zh_CN/listinfo.html' --- templates/zh_CN/listinfo.html 2010-01-28 23:06:44 +0000 +++ templates/zh_CN/listinfo.html 2018-01-29 12:58:42 +0000 @@ -107,6 +107,7 @@ </TD> </tr> <mm-digest-question-end> + <mm-recaptcha-ui> <tr> <td colspan="3"> <center><MM-Subscribe-Button></center> === modified file 'templates/zh_TW/listinfo.html' --- templates/zh_TW/listinfo.html 2010-01-28 23:06:44 +0000 +++ templates/zh_TW/listinfo.html 2018-01-30 04:06:24 +0000 @@ -91,6 +91,7 @@ <TD BGCOLOR="#dddddd"> 您適用的語言?</TD> <TD> <MM-list-langs></TD> <TD> </TD></TR> + <mm-digest-question-start> <tr> <td>你 想 以 每 日 摘 要 的 形 式 收 信 嗎 ? </td> @@ -98,6 +99,8 @@ <MM-Digest-Radio-Button> Yes </TD> </tr> + <mm-digest-question-end> + <mm-recaptcha-ui> <tr> <td colspan="3"> <center><MM-Subscribe-Button></center>
_______________________________________________ Mailman-checkins mailing list Mailman-checkins@python.org Unsubscribe: https://mail.python.org/mailman/options/mailman-checkins/archive%40jab.org