Comments edit widget for EM page

This commit is contained in:
Kovid Goyal 2018-03-17 15:16:20 +05:30
parent b616f0eb9c
commit cb02fd7078
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 30 additions and 0 deletions

View File

@ -55,6 +55,7 @@ def add_field(field, db, book_id, ans, field_metadata):
elif datatype == 'comments' or field == 'comments':
ctype = field_metadata.get('display', {}).get('interpret_as', 'html')
if ctype == 'markdown':
ans[field + '#markdown#'] = val
val = markdown(val)
elif ctype not in passthrough_comment_types:
val = comments_to_html(val)

View File

@ -139,6 +139,25 @@ def simple_line_edit(container_id, book_id, field, fm, div, mi):
value_to_json = identity
# }}}
# Text edit {{{
def text_edit_get_value(container):
return True, container.querySelector('textarea').value
def text_edit(container_id, book_id, field, fm, div, mi, get_name):
nonlocal value_to_json
name = fm.name or field
le = E.textarea(name=name.replace('#', '_c_'), spellcheck='true', wrap='soft', style='width: 100%; min-height: 70vh')
le.value = resolved_metadata(mi, get_name or field) or ''
form = create_form(le, text_edit_get_value, container_id, book_id, field)
div.appendChild(E.div(style='margin: 0.5ex 1rem', _('Edit the "{}" below').format(name)))
div.appendChild(E.div(style='margin: 0.5ex 1rem', form))
le.focus(), le.select()
value_to_json = identity
# }}}
# Number edit {{{
def number_edit_get_value(container):
@ -533,6 +552,16 @@ def edit_field(container_id, book_id, field):
number_edit(container_id, book_id, field, fm, d, mi)
elif field is 'identifiers':
identifiers_edit(container_id, book_id, field, fm, d, mi)
elif fm.datatype is 'comments':
ias = fm.display?.interpret_as
if ias is 'short-text':
simple_line_edit(container_id, book_id, field, fm, d, mi)
elif ias is 'long-text':
text_edit(container_id, book_id, field, fm, d, mi)
elif ias is 'markdown':
text_edit(container_id, book_id, field, fm, d, mi, field + '#markdown#')
else:
text_edit(container_id, book_id, field, fm, d, mi)
else:
if fm.link_column:
multiple_line_edit(fm.is_multiple?.list_to_ui, fm.is_multiple?.ui_to_list, container_id, book_id, field, fm, d, mi)