{% extends 'base.html' %} {% block scripts %} {% endblock %} {% block heading %}{{ title }}{% if letter %}: "{{ letter.upper() }}"{% endif %}{% endblock %} {% block heading_action %} {% if admin %} {# MSG: Button to open the batch song renamer page. #} {% trans %}Bulk rename{% endtrans %} {% endif %} {% endblock %} {% block header %} {# MSG: Subtitle under the Songs heading, explaining that this page lists songs already downloaded. #}
{% trans %}Available in the library{% endtrans %}
{% endblock %} {% block content %} {# A folder holding only subfolders is navigation, not a result set: no singer field, no filter box, no A-Z bar, no sort toggle and no empty table -- just the folders. An active filter keeps them all, so a query matching nothing can still be cleared. #} {% set folder_landing = view and not songs and not q and not letter %} {# The route reports the sort as a display string; the view toggle needs the param back so that switching between flat and folder view keeps the chosen order. #} {% set sort_param = 'date' if sort_order == 'Date' else None %} {% if breadcrumbs %} {% endif %} {% if not folder_landing %} {% include 'partials/singer_field.html' %} {# Filtering is server-side: the page is paginated, so a client-side filter over the ~100 rows in the DOM would silently miss songs on every other page. #}