Commit d50fa6fc6a0b888f6bb1e19cf686b2ec6431e69e

Authored by Miguel Barão
1 parent 82ca86aa
Exists in master and in 1 other branch dev

- improved options in radio and checkbox questions.

- escape some symbols (e.g. <) to work in math.
templates/question-checkbox.html
... ... @@ -5,10 +5,16 @@
5 5 <fieldset data-role="controlgroup">
6 6 <div class="list-group">
7 7 {% for n, opt in enumerate(q['options']) %}
8   - <a class="list-group-item">
9   - <input type="checkbox" id="{{i}}:{{n}}" name="{{i}}" value="{{n}}">
10   - <label for="{{n}}">{{ md(opt, q) }}</label>
11   - </a>
  8 + <a class="list-group-item">
  9 + <div class="d-flex flex-row">
  10 + <div class="p-1">
  11 + <input type="checkbox" id="{{i}}:{{n}}" name="{{i}}" value="{{n}}">
  12 + </div>
  13 + <div class="p-1">
  14 + <label for="{{n}}">{{ md(opt, q) }}</label>
  15 + </div>
  16 + </div>
  17 + </a>
12 18 {% end %}
13 19 </div>
14 20 </fieldset>
... ...
templates/question-radio.html
... ... @@ -5,10 +5,16 @@
5 5 <fieldset data-role="controlgroup">
6 6 <div class="list-group">
7 7 {% for n, opt in enumerate(q['options']) %}
8   - <a class="list-group-item">
9   - <input type="radio" id="{{i}}:{{n}}" name="{{i}}" value="{{n}}">
10   - <label for="{{n}}">{{ md(opt, q) }}</label>
11   - </a>
  8 + <a class="list-group-item">
  9 + <div class="d-flex flex-row">
  10 + <div class="p-1">
  11 + <input type="radio" id="{{i}}:{{n}}" name="{{i}}" value="{{n}}">
  12 + </div>
  13 + <div class="p-1">
  14 + <label for="{{n}}">{{ md(opt, q) }}</label>
  15 + </div>
  16 + </div>
  17 + </a>
12 18 {% end %}
13 19 </div>
14 20 </fieldset>
... ...
tools.py
... ... @@ -124,7 +124,7 @@ class HighlightRenderer(mistune.Renderer):
124 124 return fr'$$$ {text} $$$'
125 125  
126 126  
127   -markdown = MarkdownWithMath(HighlightRenderer(escape=False)) # hard_wrap=True to insert <br> on newline
  127 +markdown = MarkdownWithMath(HighlightRenderer(escape=True)) # hard_wrap=True to insert <br> on newline
128 128  
129 129 def md_to_html(text, q=None):
130 130 return markdown(text)
... ... @@ -135,8 +135,14 @@ def md_to_html(text, q=None):
135 135 def load_yaml(filename, default=None):
136 136 try:
137 137 f = open(path.expanduser(filename), 'r', encoding='utf-8')
  138 + except FileNotFoundError:
  139 + logger.error(f'Can\'t open "{script}": not found.')
  140 + return default
  141 + except PermissionError:
  142 + logger.error(f'Can\'t open "{script}": no permission.')
  143 + return default
138 144 except IOError:
139   - logger.error(f'Can\'t open file "{filename}"')
  145 + logger.error(f'Can\'t open file "{filename}".')
140 146 return default
141 147 else:
142 148 with f:
... ...