123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303 |
- {#
- This file is part of the Sonata package.
- (c) Thomas Rabaix <thomas.rabaix@sonata-project.org>
- For the full copyright and license information, please view the LICENSE
- file that was distributed with this source code.
- #}
- {% extends base_template %}
- {% block actions %}
- {% spaceless %}
- {% if admin.hasRoute('create') and admin.isGranted('CREATE')%}
- <li>{% include 'SonataAdminBundle:Core:create_button.html.twig' %}</li>
- {% endif %}
- {% endspaceless %}
- {% endblock %}
- {% block tab_menu %}{{ knp_menu_render(admin.sidemenu(action), {'currentClass' : 'active', 'template': admin_pool.getTemplate('tab_menu_template')}, 'twig') }}{% endblock %}
- {% block list_table %}
- <div class="col-xs-12 col-md-12">
- {% if admin.hasRoute('batch') %}
- <form action="{{ admin.generateUrl('batch', {'filter': admin.filterParameters}) }}" method="POST" >
- <input type="hidden" name="_sonata_csrf_token" value="{{ csrf_token }}">
- {% endif %}
- {# Add a margin if no pager to prevent dropdown cropping on window #}
- <div class="box box-primary" {% if admin.datagrid.pager.lastPage == 1 %}style="margin-bottom: 100px;"{% endif %}>
- <div class="box-body {% if admin.datagrid.results|length > 0 %}table-responsive no-padding{% endif %}">
- {{ sonata_block_render_event('sonata.admin.list.table.top', { 'admin': admin }) }}
- {% block list_header %}{% endblock %}
- {% set batchactions = admin.batchactions %}
- {% if admin.datagrid.results|length > 0 %}
- <table class="table table-bordered table-striped sonata-ba-list">
- {% block table_header %}
- <thead>
- <tr class="sonata-ba-list-field-header">
- {% for field_description in admin.list.elements %}
- {% if admin.hasRoute('batch') and field_description.getOption('code') == '_batch' and batchactions|length > 0 %}
- <th class="sonata-ba-list-field-header sonata-ba-list-field-header-batch">
- <input type="checkbox" id="list_batch_checkbox">
- </th>
- {% elseif field_description.getOption('code') == '_select' %}
- <th class="sonata-ba-list-field-header sonata-ba-list-field-header-select"></th>
- {% elseif field_description.name == '_action' and app.request.isXmlHttpRequest %}
- {# Action buttons disabled in ajax view! #}
- {% elseif field_description.getOption('ajax_hidden') == true and app.request.isXmlHttpRequest %}
- {# Disable fields with 'ajax_hidden' option set to true #}
- {% else %}
- {% set sortable = false %}
- {% if field_description.options.sortable is defined and field_description.options.sortable %}
- {% set sortable = true %}
- {% set sort_parameters = admin.modelmanager.sortparameters(field_description, admin.datagrid) %}
- {% set current = admin.datagrid.values._sort_by == field_description or admin.datagrid.values._sort_by.fieldName == sort_parameters.filter._sort_by %}
- {% set sort_active_class = current ? 'sonata-ba-list-field-order-active' : '' %}
- {% set sort_by = current ? admin.datagrid.values._sort_order : field_description.options._sort_order %}
- {% endif %}
- {% spaceless %}
- <th class="sonata-ba-list-field-header-{{ field_description.type}} {% if sortable %} sonata-ba-list-field-header-order-{{ sort_by|lower }} {{ sort_active_class }}{% endif %}">
- {% if sortable %}<a href="{{ admin.generateUrl('list', sort_parameters) }}">{% endif %}
- {{ admin.trans(field_description.label, {}, field_description.translationDomain) }}
- {% if sortable %}</a>{% endif %}
- </th>
- {% endspaceless %}
- {% endif %}
- {% endfor %}
- </tr>
- </thead>
- {% endblock %}
- {% block table_body %}
- <tbody>
- {% include admin.getTemplate('outer_list_rows_' ~ admin.getListMode()) %}
- </tbody>
- {% endblock %}
- {% block table_footer %}
- {% endblock %}
- </table>
- {% else %}
- <div class="info-box">
- <span class="info-box-icon bg-aqua"><i class="fa fa-arrow-circle-right"></i></span>
- <div class="info-box-content">
- <span class="info-box-text">{{ 'no_result'|trans({}, 'SonataAdminBundle') }}</span>
- <div class="progress">
- <div class="progress-bar" style="width: 0%"></div>
- </div>
- <span class="progress-description">
- {% include 'SonataAdminBundle:Button:create_button.html.twig' %}
- </span>
- </div><!-- /.info-box-content -->
- </div>
- {% endif %}
- {{ sonata_block_render_event('sonata.admin.list.table.bottom', { 'admin': admin }) }}
- </div>
- {% block list_footer %}
- {% if admin.datagrid.results|length > 0 %}
- <div class="box-footer">
- <div class="form-inline clearfix">
- {% if not app.request.isXmlHttpRequest %}
- <div class="pull-left">
- {% if admin.hasRoute('batch') and batchactions|length > 0 %}
- {% block batch %}
- <script>
- {% block batch_javascript %}
- jQuery(document).ready(function ($) {
- $('#list_batch_checkbox').on('ifChanged', function () {
- $(this)
- .closest('table')
- .find('td.sonata-ba-list-field-batch input[type="checkbox"], div.sonata-ba-list-field-batch input[type="checkbox"]')
- .iCheck($(this).is(':checked') ? 'check' : 'uncheck')
- ;
- });
- $('td.sonata-ba-list-field-batch input[type="checkbox"], div.sonata-ba-list-field-batch input[type="checkbox"]')
- .on('ifChanged', function () {
- $(this)
- .closest('tr, div.sonata-ba-list-field-batch')
- .toggleClass('sonata-ba-list-row-selected', $(this).is(':checked'))
- ;
- })
- .trigger('ifChanged')
- ;
- });
- {% endblock %}
- </script>
- {% block batch_actions %}
- <label class="checkbox" for="{{ admin.uniqid }}_all_elements">
- <input type="checkbox" name="all_elements" id="{{ admin.uniqid }}_all_elements">
- {{ 'all_elements'|trans({}, 'SonataAdminBundle') }}
- ({{ admin.datagrid.pager.nbresults }})
- </label>
- <select name="action" style="width: auto; height: auto" class="form-control">
- {% for action, options in batchactions %}
- <option value="{{ action }}">{{ options.label }}</option>
- {% endfor %}
- </select>
- {% endblock %}
- <input type="submit" class="btn btn-small btn-primary" value="{{ 'btn_batch'|trans({}, 'SonataAdminBundle') }}">
- {% endblock %}
- {% endif %}
- </div>
- <div class="pull-right">
- {% if admin.hasRoute('export') and admin.isGranted("EXPORT") and admin.getExportFormats()|length %}
- <div class="btn-group">
- <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
- <i class="glyphicon glyphicon-export"></i>
- {{ "label_export_download"|trans({}, "SonataAdminBundle") }}
- <span class="caret"></span>
- </button>
- <ul class="dropdown-menu">
- {% for format in admin.getExportFormats() %}
- <li>
- <a href="{{ admin.generateUrl('export', admin.modelmanager.paginationparameters(admin.datagrid, 0) + {'format' : format}) }}">
- <i class="glyphicon glyphicon-download"></i>
- {{ format|upper }}
- </a>
- <li>
- {% endfor %}
- </ul>
- </div>
- -
- {% endif %}
- {% block pager_results %}
- {% include admin.getTemplate('pager_results') %}
- {% endblock %}
- </div>
- {% endif %}
- </div>
- {% block pager_links %}
- {% if admin.datagrid.pager.haveToPaginate() %}
- <hr/>
- {% include admin.getTemplate('pager_links') %}
- {% endif %}
- {% endblock %}
- </div>
- {% endif %}
- {% endblock %}
- </div>
- {% if admin.hasRoute('batch') %}
- </form>
- {% endif %}
- </div>
- {% endblock %}
- {% block list_filters_actions %}
- {%- if admin.datagrid.filters|length %}
- <ul class="nav navbar-nav navbar-right">
- <li class="dropdown sonata-actions">
- <a href="#" class="dropdown-toggle sonata-ba-action" data-toggle="dropdown">
- <i class="fa fa-filter"></i>
- {{ 'link_filters'|trans({}, 'SonataAdminBundle') }} <b class="caret"></b>
- </a>
- <ul class="dropdown-menu" role="menu">
- {% for filter in admin.datagrid.filters if (filter.options['show_filter'] is sameas(true) or filter.options['show_filter'] is null) %}
- <li>
- <a href="#" class="sonata-toggle-filter sonata-ba-action" filter-target="filter-{{ admin.uniqid }}-{{ filter.name }}" filter-container="filter-container-{{ admin.uniqid() }}">
- <i class="fa {{ (filter.isActive() or filter.options['show_filter']) ? 'fa-check-square-o' : 'fa-square-o' }}"></i>{{ admin.trans(filter.label, {}, filter.translationDomain) }}
- </a>
- </li>
- {% endfor %}
- </ul>
- </li>
- </ul>
- {% endif -%}
- {% endblock %}
- {% block list_filters %}
- {% if admin.datagrid.filters %}
- {% form_theme form admin.getTemplate('filter') %}
- <div class="col-xs-12 col-md-12 sonata-filters-box" style="display: {{ admin.datagrid.hasDisplayableFilters ? 'block' : 'none' }}" id="filter-container-{{ admin.uniqid() }}">
- <div class="box box-primary" >
- <div class="box-body">
- <form class="sonata-filter-form form-horizontal {{ admin.isChild and 1 == admin.datagrid.filters|length ? 'hide' : '' }}" action="{{ admin.generateUrl('list') }}" method="GET" role="form">
- {{ form_errors(form) }}
- <div class="row">
- <div class="col-sm-9">
- {% set withAdvancedFilter = false %}
- {% for filter in admin.datagrid.filters %}
- <div class="form-group" id="filter-{{ admin.uniqid }}-{{ filter.name }}" sonata-filter="{{ (filter.options['show_filter'] is sameas(true) or filter.options['show_filter'] is null) ? 'true' : 'false' }}" style="display: {% if (filter.isActive() and filter.options['show_filter'] is null) or (filter.options['show_filter'] is sameas(true)) %}block{% else %}none{% endif %}">
- {% if filter.label is not sameas(false) %}
- <label for="{{ form.children[filter.formName].children['value'].vars.id }}" class="col-sm-3 control-label">{{ admin.trans(filter.label, {}, filter.translationDomain) }}</label>
- {% endif %}
- {% set attr = form.children[filter.formName].children['type'].vars.attr|default({}) %}
- <div class="col-sm-4 advanced-filter">
- {{ form_widget(form.children[filter.formName].children['type'], {'attr': attr}) }}
- </div>
- <div class="col-sm-4">
- {{ form_widget(form.children[filter.formName].children['value']) }}
- </div>
- <div class="col-sm-1">
- <label class="control-label">
- <a href="#" class="sonata-toggle-filter sonata-ba-action" filter-target="filter-{{ admin.uniqid }}-{{ filter.name }}" filter-container="filter-container-{{ admin.uniqid() }}">
- <i class="fa fa-minus-circle"></i>
- </a>
- </label>
- </div>
- </div>
- {% if filter.options['advanced_filter'] %}
- {% set withAdvancedFilter = true %}
- {% endif %}
- {% endfor %}
- </div>
- <div class="col-sm-3 text-center">
- <input type="hidden" name="filter[_page]" id="filter__page" value="1">
- {% set foo = form.children['_page'].setRendered() %}
- {{ form_rest(form) }}
- <div class="form-group">
- <button type="submit" class="btn btn-primary">
- <i class="fa fa-filter"></i> {{ 'btn_filter'|trans({}, 'SonataAdminBundle') }}
- </button>
- <a class="btn btn-default" href="{{ admin.generateUrl('list', {filters: 'reset'}) }}">
- {{ 'link_reset_filter'|trans({}, 'SonataAdminBundle') }}
- </a>
- </div>
- {% if withAdvancedFilter %}
- <div class="form-group">
- <a href="#" data-toggle="advanced-filter">
- <i class="fa fa-cogs"></i>
- {{ 'btn_advanced_filters'|trans({}, 'SonataAdminBundle') }}
- </a>
- </div>
- {% endif %}
- </div>
- </div>
- {% for paramKey, paramValue in admin.persistentParameters %}
- <input type="hidden" name="{{ paramKey }}" value="{{ paramValue }}">
- {% endfor %}
- </form>
- </div>
- </div>
- </div>
- {% endif %}
- {% endblock %}
|