52 lines
2.9 KiB
HTML
52 lines
2.9 KiB
HTML
{%- macro badge_input(uploads, label='', link='', selected=none, id=none) -%}
|
|
{%- set defaults = uploads | selectattr('user_id', 'none') | list | sort(attribute='file_path') -%}
|
|
{%- set user = uploads | selectattr('user_id') | list -%}
|
|
{%- if selected is not none -%}
|
|
{%- set selected_href = (uploads | selectattr('id', 'equalto', selected) | list)[0].file_path -%}
|
|
{%- else -%}
|
|
{% set selected_href = defaults[0].file_path %}
|
|
{%- endif -%}
|
|
<input type="hidden" name="id[]" value="{{id and id or '-1'}}">
|
|
<div class="badge-editor-badge-container">
|
|
<div class="badge-editor-badge-select">
|
|
<select name="badge_choice[]" required data-s="badgeEditorSetPreview badgeEditorToggleFilePicker" data-listen="change">
|
|
<optgroup label="Default">
|
|
{%- for upload in defaults -%}
|
|
<option data-file-path="{{upload.file_path}}" value="{{upload.id}}" {{selected==upload.id and 'selected' or ''}}>{{upload.file_path | basename_noext}}</option>
|
|
{%- endfor -%}
|
|
</optgroup>
|
|
<optgroup label="Your uploads">
|
|
{%- for upload in user -%}
|
|
<option data-file-path="{{upload.file_path}}" value="{{upload.id}}" {{selected==upload.id and 'selected' or ''}}>{{upload.original_filename | basename_noext}}</option>
|
|
{%- endfor -%}
|
|
<option value="custom">Upload new…</option>
|
|
</optgroup>
|
|
</select>
|
|
<img class="badge-button" src="{{selected_href}}" data-r="badgeEditorSetPreview badgeEditorSetPreviewCustom">
|
|
</div>
|
|
<div class="badge-editor-file-picker hidden" data-r="badgeEditorToggleFilePicker">
|
|
<button data-s="badgeEditorShowFilePicker" type="button" class="alt">Upload…</button>
|
|
<input data-s="badgeEditorFileSelected" data-r="badgeEditorShowFilePicker" type="file" accept="image/png, image/jpeg, image/jpg, image/webp" name="badge_file[]">
|
|
</div>
|
|
<input type="text" required placeholder="Label" value="{{label}}" autocomplete="off" name="label[]">
|
|
<input type="url" placeholder="(Optional) Link" value="{{link}}" autocomplete="off" name="link[]" pattern="https://.*">
|
|
<button type="button" class="critical" data-s="badgeEditorDelete">Delete</button>
|
|
</div>
|
|
{%- endmacro -%}
|
|
{%- from 'common/macros.html' import sortable_list, sortable_list_item -%}
|
|
<button type="button" data-s="badgeEditorAddBadge" data-r="setBadgeCount">Add badge</button>
|
|
<input type="submit" value="Save badges">
|
|
<span data-r="setBadgeCount">0/10</span>
|
|
{%- call() sortable_list(attr={'data-r': 'badgeEditorAddBadge'}) -%}
|
|
{%- for badge in badges -%}
|
|
{%- call() sortable_list_item('badge', full=true, attr={'data-r': 'badgeEditorDelete badgeEditorAssignImgId'}) -%}
|
|
{{badge_input(badge_uploads, badge.label, badge.link, badge.upload, badge.id)}}
|
|
{%- endcall -%}
|
|
{%- endfor -%}
|
|
{%- endcall -%}
|
|
<script type="text/html" id="badge-template">
|
|
{%- call() sortable_list_item('badge', full=true, attr={'data-r': 'badgeEditorDelete'}) -%}
|
|
{{- badge_input(badge_uploads) -}}
|
|
{%- endcall -%}
|
|
</script>
|