Commit d50fa6fc6a0b888f6bb1e19cf686b2ec6431e69e
1 parent
82ca86aa
Exists in
master
and in
1 other branch
- improved options in radio and checkbox questions.
- escape some symbols (e.g. <) to work in math.
Showing
3 changed files
with
28 additions
and
10 deletions
Show diff stats
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: | ... | ... |