admin/emails: add support for custom localized mail templates
lignes
This commit is contained in:
parent
12b908310a
commit
607380efb7
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue