{% extends "base.html" %} {% block title %}{{ _('Module Manager') }} — MediaForge{% endblock %} {% block styles %} {% endblock %} {% block content %}
{{ _('Every discovered web/thirdparties/ folder, who made it, and a working on/off switch for what it registered') }}
{% if app_version %}
{{ _('MediaForge core version') }}: v{{ app_version }}
{{ ext.module_id }}
{# The line this page never had: what the module hung into the app.
Counts come from registry.module_capabilities(). #}
{% if ext.capabilities %}
{% for cap in ext.capabilities %}
{{ cap.count }} × {{ CAP_LABELS.get(cap.kind, cap.kind) }}
{% endfor %}
{% elif ext.registered == false or ext.imported == false %}
{{ _('registered nothing') }}
{% endif %}
{{ ext.module_id }}
{%- if ext.module_id != ext.name %} · {{ _('Folder') }}: {{ ext.name }}{% endif %}
{%- if ext.min_app_version %} · {{ _('Requires MediaForge') }} ≥ {{ ext.min_app_version }}{% endif %}
{%- if ext.max_app_version %} · {{ _('up to') }} ≤ {{ ext.max_app_version }}{% endif %}
· {{ _('Registry API') }}: v{{ ext.api_version }}
{%- if ext.requirements %} · {{ _('Requirements') }}: {{ ext.requirements|join(', ') }}{% endif %}
{%- if ext.license %} · {{ _('License') }}: {{ ext.license }}{% endif %}
{{ ext.signature.reason }}
{{ ext.signature.key_id }}
{{ ext.incompatible_reason }}
{{ ext.error }}
{% else %}
{{ ext.error }}
{% endif %}
{{ ext.missing_requirements|join(', ') }}
{{ item.id }}
{% if item.section %} · {{ _('Sidebar') }}: {{ _(item.section|capitalize) }}{% endif %}
· {{ _('Settings') }}: {{ _(item.settings_host|capitalize) }} / {{ item.settings_tab }}
{%- if item.has_dashboard_widget %} · {{ _('Dashboard widget') }}{% endif -%}
{%- if item.has_provider_pill %} · {{ _('Provider pill') }}{% endif %}
{%- if item.requires_enabled %} · {{ _('Requires') }}: {{ item.requires_enabled|join(', ') }}{% endif %}
{{ store_url }}
{% else %}
{{ _('This build ships no official store.') }}
{% endif %}
{{ modules_dir }}
{{ themes_dir }}