admin/texts: add support for custom localized text templates
This commit is contained in:
parent
9d8ad3513c
commit
3eb3755ecd
|
@ -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):
|
||||
|
|
Loading…
Reference in New Issue