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,10 +5,16 @@ | ||
| 5 | <fieldset data-role="controlgroup"> | 5 | <fieldset data-role="controlgroup"> |
| 6 | <div class="list-group"> | 6 | <div class="list-group"> |
| 7 | {% for n, opt in enumerate(q['options']) %} | 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 | {% end %} | 18 | {% end %} |
| 13 | </div> | 19 | </div> |
| 14 | </fieldset> | 20 | </fieldset> |
templates/question-radio.html
| @@ -5,10 +5,16 @@ | @@ -5,10 +5,16 @@ | ||
| 5 | <fieldset data-role="controlgroup"> | 5 | <fieldset data-role="controlgroup"> |
| 6 | <div class="list-group"> | 6 | <div class="list-group"> |
| 7 | {% for n, opt in enumerate(q['options']) %} | 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 | {% end %} | 18 | {% end %} |
| 13 | </div> | 19 | </div> |
| 14 | </fieldset> | 20 | </fieldset> |
tools.py
| @@ -124,7 +124,7 @@ class HighlightRenderer(mistune.Renderer): | @@ -124,7 +124,7 @@ class HighlightRenderer(mistune.Renderer): | ||
| 124 | return fr'$$$ {text} $$$' | 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 | def md_to_html(text, q=None): | 129 | def md_to_html(text, q=None): |
| 130 | return markdown(text) | 130 | return markdown(text) |
| @@ -135,8 +135,14 @@ def md_to_html(text, q=None): | @@ -135,8 +135,14 @@ def md_to_html(text, q=None): | ||
| 135 | def load_yaml(filename, default=None): | 135 | def load_yaml(filename, default=None): |
| 136 | try: | 136 | try: |
| 137 | f = open(path.expanduser(filename), 'r', encoding='utf-8') | 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 | except IOError: | 144 | except IOError: |
| 139 | - logger.error(f'Can\'t open file "{filename}"') | 145 | + logger.error(f'Can\'t open file "{filename}".') |
| 140 | return default | 146 | return default |
| 141 | else: | 147 | else: |
| 142 | with f: | 148 | with f: |