diff sat/tools/common/template_xmlui.py @ 2783:442ab697f831

frontends, jp, templates: added XHTMLBox widget: for jp, the XHTML is rendered for now using markdown.
author Goffi <goffi@goffi.org>
date Sat, 19 Jan 2019 11:39:02 +0100
parents 003b8b4b56a7
children ab2696e34d29
line wrap: on
line diff
--- a/sat/tools/common/template_xmlui.py	Sat Jan 19 11:39:02 2019 +0100
+++ b/sat/tools/common/template_xmlui.py	Sat Jan 19 11:39:02 2019 +0100
@@ -27,6 +27,12 @@
 log = getLogger(__name__)
 from sat_frontends.tools import xmlui
 from functools import partial
+try:
+    from jinja2 import Markup as safe
+except ImportError:
+    # Safe marks XHTML values as usable as it.
+    # If jinja2 is not there, we can use a simple lamba
+    safe = lambda x: x
 
 
 ## Widgets ##
@@ -136,6 +142,17 @@
     type = u"textbox"
 
 
+class XHTMLBoxWidget(xmlui.XHTMLBoxWidget, InputWidget):
+    type = u"xhtmlbox"
+
+    def __init__(self, xmlui_parent, value, read_only=False):
+        # XXX: XHTMLBoxWidget value must be cleaned (harmful XHTML must be removed)
+        #      This is normally done in the backend, the frontends should not need to
+        #      worry about it.
+        super(XHTMLBoxWidget, self).__init__(
+            xmlui_parent=xmlui_parent, value=safe(value), read_only=read_only)
+
+
 class ListWidget(xmlui.ListWidget, OptionsWidget):
     type = u"list"