<h3>
    <span class="fas fa-list"></span>
    {% trans %}Extensions list{% endtrans %}
    {{ pageSetVar('title', 'Extensions list'|trans) }}
    <div class="btn-group align-top float-right" role="group" aria-label="filters">
        <button type="button" data-selectors=".extension-type-4 .extension-type-5" data-toggle="button" class="filter-button btn btn-outline-info btn-sm"><i class="fas fa-palette"></i> <span>{% trans %}Only themes{% endtrans %}</span></button>
        <button type="button" data-selectors=".extension-type-2 .extension-type-3" data-toggle="button" class="filter-button btn btn-outline-primary btn-sm"><i class="fas fa-cubes"></i> <span>{% trans %}Only modules{% endtrans %}</span></button>
        <button type="button" data-selectors=".extension-type-3 .extension-type-5" data-toggle="button" class="filter-button btn btn-outline-success btn-sm"><i class="fas fa-circle"></i> <span>{% trans %}Only core extensions{% endtrans %}</span></button>
        <button type="button" data-selectors=".extension-type-2 .extension-type-4" data-toggle="button" class="filter-button btn btn-outline-dark btn-sm"><i class="fas fa-plug"></i> <span>{% trans %}Only non-core extensions{% endtrans %}</span></button>
    </div>
</h3>
<table id="extension-list" class="table table-bordered table-striped">
    <colgroup>
        <col id="cType" class="d-none d-lg-table-cell" />
        <col id="cName" />
        <col id="cDescription" class="d-none d-lg-table-cell" />
        <col id="cVersion" class="d-none d-lg-table-cell" />
        <col id="cState" class="d-none d-md-table-cell" />
        <col id="cActions" />
    </colgroup>
    <thead>
        <tr>
            <th id="hType" scope="col" class="d-none d-lg-table-cell">{% trans %}Type{% endtrans %}</th>
            <th id="hName" scope="col"><a class="{{ sort.displayname.class }}" href="{{ sort.displayname.url }}">{% trans %}Name{% endtrans %}</a></th>
            <th id="hDescription" scope="col" class="d-none d-lg-table-cell">{% trans %}Description{% endtrans %}</th>
            <th id="hVersion" scope="col" class="d-none d-lg-table-cell">{% trans %}Version{% endtrans %}</th>
            <th id="hState" scope="col" class="d-none d-md-table-cell"><a class="{{ sort.state.class }}" href="{{ sort.state.url }}">{% trans %}State{% endtrans %}</a></th>
            <th id="hActions" scope="col" class="text-right">{% trans %}Actions{% endtrans %}</th>
        </tr>
    </thead>
    <tbody>
    {% for extension in paginator.results %}
        <tr class="extension-type-{{ extension.type }}">
            <td headers="hType" class="text-center d-none d-lg-table-cell">{{ _self.badge(extension.type) }}</td>
            <td headers="hName">
                <strong>{{ extension.displayname }}</strong>
                <a data-toggle="collapse" href="#collapse-{{ extension.name }}"><i class="fas fa-caret-down"></i></a>
                <ul id="collapse-{{ extension.name }}" class="collapse mb-0">
                    <li>{% trans %}Internal name{% endtrans %}: <em>{{ extension.name }}</em></li>
                    <li>{% trans %}Url root{% endtrans %}: <code>/{{ extension.url }}</code></li>
                    {{ _self.adminRoute(extension) }}
                </ul>
            </td>
            <td headers="hDescription" style="width: 40%" class="d-none d-lg-table-cell">{{ extension.description }}</td>
            <td headers="hVersion" class="d-none d-lg-table-cell">{{ extension.version }}</td>
            <td headers="hState" class="d-none d-md-table-cell">
                {{ _self.stateLabel(extension, upgradedExtensions) }}
            </td>
            <td headers="hActions" class="actions">
                {% set rowActions = knp_menu_get('zikulaExtensionsAdminMenu', [], {extension: extension}) %}
                {{ knp_menu_render(rowActions, {template: '@ZikulaMenuModule/Override/actions.html.twig'}) }}
            </td>
        </tr>
    {% endfor %}
    </tbody>
</table>
{{ include(paginator.template) }}

{% macro adminRoute(extension) %}
    {# currently disabled because it may happen that routes for a newly activated module are not usable yet
    {% if extension.state is constant('Zikula\\ExtensionsModule\\Constant::STATE_ACTIVE') and extension.capabilities.admin.route|default %}
        <li><a title="{% trans %}Go to the extension's administration panel{% endtrans %}" href="{{ path(extension.capabilities.admin.route) }}"><i class="fas fa-link"></i> {% trans %}Administration{% endtrans %}</a></li>
    {% endif %}
    #}
{% endmacro %}

{% macro badge(type) %}
    {% switch type %}
    {% case constant('Zikula\\Bundle\\CoreBundle\\Composer\\MetaData::TYPE_MODULE') %}
        <i class="fas fa-cubes fa-2x text-primary" data-toggle="tooltip" data-placement="right" title="{% trans %}Third party module{% endtrans %}"></i>
    {% break %}
    {% case constant('Zikula\\Bundle\\CoreBundle\\Composer\\MetaData::TYPE_THEME') %}
        <i class="fas fa-palette fa-2x text-info" data-toggle="tooltip" data-placement="right" title="{% trans %}Third party theme{% endtrans %}"></i>
    {% break %}
    {% case constant('Zikula\\Bundle\\CoreBundle\\Composer\\MetaData::TYPE_SYSTEM_MODULE') %}
        <span class="fa-stack" data-toggle="tooltip" data-placement="right" title="{% trans %}System module{% endtrans %}">
          <i class="fas fa-circle fa-stack-2x text-primary"></i>
          <i class="fas fa-cubes fa-stack-1x fa-inverse"></i>
        </span>
    {% break %}
    {% case constant('Zikula\\Bundle\\CoreBundle\\Composer\\MetaData::TYPE_SYSTEM_THEME') %}
        <span class="fa-stack" data-toggle="tooltip" data-placement="right" title="{% trans %}System theme{% endtrans %}">
          <i class="fas fa-circle fa-stack-2x text-info"></i>
          <i class="fas fa-palette fa-stack-1x fa-inverse"></i>
        </span>
    {% break %}
    {% default %}
        <i class="fas fa-layer-group fa-2x text-dark" data-toggle="tooltip" data-placement="right" title="{% trans %}Unknown{% endtrans %}"></i>
    {% endswitch %}
{% endmacro %}

{% macro stateLabel(extension, upgradedExtensions) %}
    {% switch extension.state %}
    {% case constant('Zikula\\ExtensionsModule\\Constant::STATE_INACTIVE') %}
        <span class="badge badge-warning">{% trans %}Inactive{% endtrans %}</span>
    {% break %}
    {% case constant('Zikula\\ExtensionsModule\\Constant::STATE_TRANSITIONAL') %}
        <span class="badge badge-warning">{% trans %}Ready for installation{% endtrans %}</span>
    {% break %}
    {% case constant('Zikula\\ExtensionsModule\\Constant::STATE_ACTIVE') %}
        <span class="badge badge-success">{% trans %}Active{% endtrans %}</span>
    {% break %}
    {% case constant('Zikula\\ExtensionsModule\\Constant::STATE_MISSING') %}
        <span class="badge badge-danger">{% trans %}Files missing{% endtrans %}</span>
    {% break %}
    {% case constant('Zikula\\ExtensionsModule\\Constant::STATE_UPGRADED') %}
        <span class="badge badge-danger">{% trans %}New version{% endtrans %}</span>
        &nbsp;<span class="badge badge-warning">{{ upgradedExtensions[extension.name] }}</span>
    {% break %}
    {% case constant('Zikula\\ExtensionsModule\\Constant::STATE_INVALID') %}
        <span class="badge badge-danger">{% trans %}Invalid structure{% endtrans %}</span>
    {% break %}
    {% case constant('Zikula\\ExtensionsModule\\Constant::STATE_NOTALLOWED') %}
        <span class="badge badge-danger">{% trans %}Not allowed{% endtrans %}</span>
    {% break %}
    {% case constant('Zikula\\ExtensionsModule\\Constant::STATE_UNINITIALISED') %}
    {% default %}
        {% if extension.state > 10 %}
        <span class="badge badge-info">{% trans %}Incompatible{% endtrans %}</span>
        {% else %}
        <span class="badge badge-primary">{% trans %}Not installed{% endtrans %}</span>
        {% endif %}
    {% endswitch %}
{% endmacro %}

{{ pageAddAsset('javascript', asset('jquery-ui/jquery-ui.min.js'), constant('Zikula\\ThemeModule\\Engine\\AssetBag::WEIGHT_JQUERY_UI')) }}
{{ pageAddAsset('javascript', zasset('@ZikulaExtensionsModule:js/Zikula.Extensions.Extension.List.js')) }}
