SergiX44/XBackBone

View on GitHub
resources/templates/dashboard/list.twig

Summary

Maintainability
Test Coverage
{% extends 'base.twig' %}

{% block title %}{{ lang('home') }}{% endblock %}

{% block content %}
    {% include 'comp/navbar.twig' %}
    <div class="container">
        {% include 'comp/alert.twig' %}
        {% include 'comp/modal_vanity.twig' %}

        <div class="card shadow-sm">
            <div class="card-body">
                {% include 'dashboard/pager_header.twig' with {'path': 'home'} %}
                {% if medias|length > 0 %}
                    <div class="row">
                        <div class="col-md-12">
                            <div class="table-responsive">
                                <table class="table table-hover">
                                    <thead>
                                    <tr>
                                        <th>{{ lang('preview') }}</th>
                                        <th>{{ lang('filename') }}</th>
                                        <th>{{ lang('size') }}</th>
                                        <th>{{ lang('public') }}</th>
                                        {% if session.get('admin') %}
                                            <th>{{ lang('owner') }}</th>
                                        {% endif %}
                                        <th>{{ lang('date') }}</th>
                                        <th></th>
                                    </tr>
                                    </thead>
                                    <tbody>
                                    {% for media in medias %}
                                        <tr id="media_{{ media.id }}" class="bulk-selector" data-id="{{ media.id }}">
                                            <td class="text-center">
                                                <a href="{{ urlFor('/' ~ media.user_code ~ '/' ~ media.code ~ '.' ~ media.extension) }}" target="_blank" class="text-dark">
                                                {% if isDisplayableImage(media.mimetype) %}
                                                    {% if media.username is not null %}
                                                        <img src="{{ urlFor('/' ~ media.user_code ~ '/' ~ media.code ~ '.' ~ media.extension ~ '/raw?width=84&height=42') }}" class="img-fluid rounded">
                                                    {% else %}
                                                        <img src="{{ route('upload.raw', {'id': media.id}) }}" class="img-fluid rounded">
                                                    {% endif %}
                                                {% else %}
                                                    <i class="far {{ mime2font(media.mimetype) }} fa-2x"></i>
                                                {% endif %}
                                                </a>
                                            </td>
                                            <td>
                                                <span class="text-maxlen">{{ media.filename }}</span>
                                                <p>
                                                    {% for tag_id, tag_name in media.tags %}
                                                        <a href="{{ queryParams({'tag':tag_id}) }}" class="badge badge-pill badge-light shadow-sm tag-item mr-1" data-id="{{ tag_id }}" data-media="{{ media.id }}" title="{{ tag_name }}">{{ tag_name }}</a>
                                                    {% endfor %}
                                                    <a href="javascript:void(0)" class="badge badge-pill badge-success shadow-sm tag-add" data-id="{{ media.id }}"><i class="fas fa-plus fa-sm fa-fw"></i></a>
                                                </p>
                                            </td>
                                            <td>{{ media.size }}</td>
                                            <td id="published_{{ media.id }}" class="text-center">
                                                {% if media.published %}
                                                    <span class="badge badge-success"><i class="fas fa-check"></i></span>
                                                {% else %}
                                                    <span class="badge badge-danger"><i class="fas fa-times"></i></span>
                                                {% endif %}
                                            </td>
                                            {% if session.get('admin') %}
                                                <td>{{ media.username|default('<None>') }}</td>
                                            {% endif %}
                                            <td>{{ media.timestamp|date("d/m/Y H:i:s") }}</td>
                                            <td class="text-right">
                                                <div class="btn-group">
                                                    {% if media.username is not null %}
                                                        <a href="{{ urlFor('/' ~ media.user_code ~ '/' ~ media.code ~ '.' ~ media.extension) }}" class="btn btn-sm btn-outline-secondary" data-toggle="tooltip" title="{{ lang('open') }}" target="_blank"><i class="fas fa-external-link-alt"></i></a>
                                                        <a href="{{ urlFor('/' ~ media.user_code ~ '/' ~ media.code ~ '.' ~ media.extension ~ '/download') }}" class="btn btn-sm btn-outline-primary" data-toggle="tooltip" title="{{ lang('download') }}"><i class="fas fa-cloud-download-alt"></i></a>
                                                        <a href="javascript:void(0)" class="btn btn-sm btn-outline-success btn-clipboard" data-toggle="tooltip" title="{{ lang('copy_link') }}" data-clipboard-text="{{ urlFor(glue(media.user_code, media.code) ~ (copy_raw ? '/raw.' ~ media.extension : '.' ~ media.extension)) }}"><i class="fas fa-link"></i></a>
                                                    {% else %}
                                                        <a href="{{ route('upload.raw', {'id': media.id}) }}" class="btn btn-sm btn-outline-dark" data-toggle="tooltip" title="{{ lang('raw') }}" target="_blank"><i class="fas fa-external-link-alt"></i></a>
                                                    {% endif %}
                                                    {% if media.published %}
                                                        <a href="javascript:void(0)" class="btn btn-sm btn-outline-warning publish-toggle" data-toggle="tooltip" title="{{ lang('hide') }}" data-id="{{ media.id }}" data-published="{{ media.published }}"><i class="fas fa-times-circle"></i></a>
                                                    {% else %}
                                                        <a href="javascript:void(0)" class="btn btn-sm btn-outline-info publish-toggle" data-toggle="tooltip" title="{{ lang('publish') }}" data-id="{{ media.id }}" data-published="{{ media.published }}"><i class="fas fa-check-circle"></i></a>
                                                    {% endif %}
                                                    <a href="javascript:void(0)" class="btn btn-sm btn-outline-info public-vanity" data-id="{{ media.id }}" data-toggle="tooltip" title="{{ lang('vanity_url') }}"><i class="fas fa-star"></i></a>
                                                    <a href="javascript:void(0)" class="btn btn-sm btn-outline-danger media-delete" data-link="{{ route('upload.delete', {'id': media.id}) }}" data-id="{{ media.id }}" data-toggle="tooltip" title="{{ lang('delete') }}"><i class="fas fa-trash"></i></a>
                                                </div>
                                            </td>
                                        </tr>
                                    {% endfor %}
                                    </tbody>
                                </table>
                            </div>
                            <div class="d-flex justify-content-center">
                                {% include 'comp/pager.twig' with {'path': 'home'} %}
                            </div>
                        </div>
                    </div>
                {% else %}
                    <div class="text-center text-muted"><i>{{ lang('no_media') }}</i></div>
                {% endif %}
            </div>
        </div>
    </div>
{% endblock %}