admin/texts: add support for custom localized text templates

This commit is contained in:
Benjamin Dauvergne 2014-01-09 13:08:14 +01:00
parent 9d8ad3513c
commit 3eb3755ecd
1 changed files with 31 additions and 5 deletions

View File

@ -29,6 +29,7 @@ from qommon.misc import is_user_admin
from qommon.admin.menu import html_top
from cfg import cfg_submit
from ..utils import get_for_current_language
class TextsDirectory(Directory):
texts_dict = {}
@ -36,7 +37,8 @@ class TextsDirectory(Directory):
def get_html_text(cls, key, vars=None):
texts_cfg = get_cfg('texts', {})
text = texts_cfg.get('text-' + key)
text_key = 'text-' + key
text = get_for_current_language(texts_cfg, text_key)
if not text:
default = cls.texts_dict.get(key, {}).get('default')
if not default:
@ -118,6 +120,7 @@ class TextsDirectory(Directory):
def text [html] (self, text_key, text_label, hint = None, check_template = None):
publisher = get_publisher()
texts_cfg = get_cfg('texts', {})
cfg_key = 'text-%s' % text_key
@ -136,9 +139,22 @@ class TextsDirectory(Directory):
form.add(WysiwygTextWidget, cfg_key, title = text_label, value = displayed_text,
cols = 80, rows = 10, hint = hint,
insertLink = True, insertImg = True)
for language in publisher.supported_languages:
title = text_label + ' (%s)' % language
locale_key = cfg_key + '-' + language
value = texts_cfg.get(locale_key) or default_text
form.add(WysiwygTextWidget, locale_key, title=title,
value=value, cols=80, rows=10, hint = hint,
insertLink=True, insertImg=True)
else:
form.add(TextWidget, cfg_key, title = text_label, value = displayed_text,
cols = 80, rows = 10, hint = hint)
for language in publisher.supported_languages:
title = text_label + ' (%s)' % language
locale_key = cfg_key + '-' + language
value = texts_cfg.get(locale_key) or default_text
form.add(TextWidget, locale_key, title=title,
value=value, cols=80, rows=10, hint=hint)
form.add_submit('submit', _('Submit'))
if displayed_text != default_text:
form.add_submit('restore-default', _('Restore default text'))
@ -165,10 +181,11 @@ class TextsDirectory(Directory):
'<p>'
_('The text can reference [] variables from the table below:')
'</p>'
get_publisher().substitutions.get_substitution_html_table()
publisher.substitutions.get_substitution_html_table()
def text_submit(self, form, text_key, check_template = None):
get_publisher().reload_cfg()
publisher = get_publisher()
publisher.reload_cfg()
texts_cfg = get_cfg('texts', {})
cfg_key = 'text-%s' % text_key
@ -184,10 +201,19 @@ class TextsDirectory(Directory):
texts_cfg[str(cfg_key)] = template
else:
texts_cfg[str(cfg_key)] = None
for language in publisher.supported_languages:
text_key = cfg_key+'-'+language
template = form.get_widget(text_key).parse()
if check_template and not check_template(template):
return False
if template and template != default_text:
texts_cfg[text_key] = template
else:
texts_cfg.pop(text_key, None)
else:
texts_cfg[str(cfg_key)] = None
get_publisher().cfg['texts'] = texts_cfg
get_publisher().write_cfg()
publisher.cfg['texts'] = texts_cfg
publisher.write_cfg()
return True
def _q_lookup(self, component):