{% extends 'layouts/admin.html' %} {% block main %}

Media Library

{{ title }}

Create reusable media and assign it to any number of displays.

Back to media

Media Details

{% if errors.get('title') %}
{{ errors.title }}
{% endif %}
{% if errors.get('media_type') %}
{{ errors.media_type }}
{% endif %}
{% if errors.get('file') %}
{{ errors.file }}
{% endif %} {% if media.file_path %}

Current file: {{ media.original_filename or media.file_path }}

{% else %}

Images support JPG, PNG, GIF, and WebP. Videos support MP4, WebM, OGG, and MOV.

{% endif %}
{% if errors.get('body') %}
{{ errors.body }}
{% endif %}

Text and neon signs render as display copy. HTML is stored as content but not rendered inside the admin preview.

{% if errors.get('neon_text_color') %}
{{ errors.neon_text_color }}
{% endif %}
{% if errors.get('neon_frame_color') %}
{{ errors.neon_frame_color }}
{% endif %}
{% if errors.get('neon_background_color') %}
{{ errors.neon_background_color }}
{% endif %}

The player derives the glow from the text and frame colors.

{% if errors.get('source_url') %}
{{ errors.source_url }}
{% endif %}

Slides

Each slide uses a background image, optional foreground image, text, and duration.

{% if errors.get('slider_slide_count') %}
{{ errors.slider_slide_count }}
{% endif %}
{% for index in range(max_slider_slides) %} {% set slide = slider_slides[index] if index < slider_slides|length else none %}
= slider_slide_count %}hidden{% endif %}>

Slide {{ index + 1 }}

{{ index + 1 }}
{% if errors.get('slider_background_' ~ index) %}
{{ errors.get('slider_background_' ~ index) }}
{% endif %} {% if slide and slide.background_file_path %}

Current background: {{ slide.background_original_filename or slide.background_file_path }}

{% endif %}
{% if errors.get('slider_foreground_' ~ index) %}
{{ errors.get('slider_foreground_' ~ index) }}
{% endif %} {% if slide and slide.foreground_file_path %}

Current foreground: {{ slide.foreground_original_filename or slide.foreground_file_path }}

{% endif %}
% {% if errors.get('slider_foreground_size_' ~ index) %}
{{ errors.get('slider_foreground_size_' ~ index) }}
{% endif %}
{% if errors.get('slider_foreground_position_' ~ index) %}
{{ errors.get('slider_foreground_position_' ~ index) }}
{% endif %}
{% if errors.get('slider_foreground_animation_' ~ index) %}
{{ errors.get('slider_foreground_animation_' ~ index) }}
{% endif %}
{% if errors.get('slider_text_position_' ~ index) %}
{{ errors.get('slider_text_position_' ~ index) }}
{% endif %}
{% if errors.get('slider_duration_' ~ index) %}
{{ errors.get('slider_duration_' ~ index) }}
{% endif %}
{% if errors.get('slider_text_animation_' ~ index) %}
{{ errors.get('slider_text_animation_' ~ index) }}
{% endif %}
{% if errors.get('slider_font_family_' ~ index) %}
{{ errors.get('slider_font_family_' ~ index) }}
{% endif %}
px {% if errors.get('slider_font_size_' ~ index) %}
{{ errors.get('slider_font_size_' ~ index) }}
{% endif %}
{% endfor %}

Display Assignment

{% if displays %}
{% for display in displays %}
{% endfor %}
{% else %}

Create a display before assigning media.

{% endif %}
Cancel
{% endblock %} {% block scripts %} {% endblock %}