admin/emails: add support for custom localized mail templates

lignes
This commit is contained in:
Benjamin Dauvergne 2014-01-09 00:07:14 +01:00
parent 12b908310a
commit 607380efb7
1 changed files with 32 additions and 4 deletions

View File

@ -16,7 +16,7 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301 USA
from quixote import redirect
from quixote import redirect, get_request, get_publisher
from quixote.directory import Directory
from qommon.form import *
@ -24,6 +24,8 @@ from qommon import misc, get_cfg
from qommon.admin.menu import html_top
from qommon.admin.cfg import cfg_submit
from ..utils import get_for_current_language
class EmailsDirectory(Directory):
emails_dict = {}
_q_exports = ['', 'options']
@ -54,7 +56,7 @@ class EmailsDirectory(Directory):
default_subject = cls.emails_dict[email_key].get('default_subject')
if default_subject:
default_subject = _(default_subject)
real_subject = emails_cfg.get(cfg_key + '_subject') or default_subject
real_subject = get_for_current_language(emails_cfg, cfg_key + '_subject') or default_subject
return real_subject
get_subject = classmethod(get_subject)
@ -64,7 +66,7 @@ class EmailsDirectory(Directory):
default_body = cls.emails_dict[email_key].get('default_body')
if default_body:
default_body = _(default_body)
real_body = emails_cfg.get(cfg_key) or default_body
real_body = get_for_current_language(emails_cfg, cfg_key) or default_body
return real_body
get_body = classmethod(get_body)
@ -176,6 +178,7 @@ class EmailsDirectory(Directory):
def email [html] (self, email_key, email_label, hint = None, check_template = None,
enabled = True):
publisher = get_publisher()
emails_cfg = get_cfg('emails', {})
cfg_key = 'email-%s' % email_key
@ -192,6 +195,16 @@ class EmailsDirectory(Directory):
value = displayed_subject, size = 40)
form.add(TextWidget, cfg_key, title = email_label, value = displayed_body,
cols = 80, rows = 10, hint = hint)
for language in publisher.supported_languages:
body_key = cfg_key+'-'+language
subject_key = cfg_key + '_subject-' + language
body = emails_cfg.get(body_key) or default_body
subject = emails_cfg.get(subject_key) or default_body
form.add(StringWidget, subject_key, title = _('Subject') + '(%s)' % language,
value = subject, size = 40)
form.add(TextWidget, body_key, title = email_label, value = body,
cols = 80, rows = 10, hint = hint)
form.add_submit('submit', _('Submit'))
if displayed_subject != default_subject or displayed_body != default_body:
form.add_submit('restore-default', _('Restore default email'))
@ -222,7 +235,8 @@ class EmailsDirectory(Directory):
def email_submit(self, form, email_key, check_template = None):
get_publisher().reload_cfg()
publisher = get_publisher()
publisher.reload_cfg()
cfg_key = 'email-%s' % email_key
emails_cfg = get_cfg('emails', {})
if form:
@ -244,6 +258,20 @@ class EmailsDirectory(Directory):
emails_cfg[str(cfg_key + '_enabled')] = form.get_widget(
cfg_key + '_enabled').parse()
emails_cfg[str(cfg_key + '_subject')] = subject
for language in publisher.supported_languages:
body_key = cfg_key+'-'+language
template = form.get_widget(body_key).parse()
if check_template and not check_template(template):
return False
subject_key = cfg_key + '_subject-' + language
subject = form.get_widget(subject_key).parse()
if template and subject and template != default_body and subject != default_subject:
emails_cfg[body_key] = template
emails_cfg[subject_key] = subject
else:
emails_cfg.pop(body_key, None)
emails_cfg.pop(subject_key, None)
else:
emails_cfg[str(cfg_key)] = None
get_publisher().cfg['emails'] = emails_cfg