vendor/sonata-project/admin-bundle/src/Resources/views/CRUD/base_list.html.twig line 94

Open in your IDE?
  1. {#
  2. This file is part of the Sonata package.
  3. (c) Thomas Rabaix <thomas.rabaix@sonata-project.org>
  4. For the full copyright and license information, please view the LICENSE
  5. file that was distributed with this source code.
  6. #}
  7. {% extends base_template %}
  8. {%- block actions -%}
  9.     {% include '@SonataAdmin/CRUD/action_buttons.html.twig' %}
  10. {%- endblock -%}
  11. {%- block tab_menu -%}
  12.     {{ knp_menu_render(admin.sidemenu(action), {
  13.         'currentClass': 'active',
  14.         'template': get_global_template('tab_menu_template')
  15.     }, 'twig') }}
  16. {%- endblock -%}
  17. {% block title %}
  18.     {{ admin.isChild and admin.parent.subject ? 'title_edit'|trans({'%name%': admin.parent.toString(admin.parent.subject)|truncate(15) }, 'SonataAdminBundle') : '' }}
  19. {% endblock %}
  20. {% block navbar_title %}
  21.     {{ admin.isChild and admin.parent.subject ? 'title_edit'|trans({'%name%': admin.parent.toString(admin.parent.subject)|truncate(100) }, 'SonataAdminBundle') : '' }}
  22. {% endblock %}
  23. {% block list_table %}
  24.     <div class="col-xs-12 col-md-12">
  25.         {% set batchactions = admin.batchactions %}
  26.         {% if admin.hasRoute('batch') and batchactions|length %}
  27.             <form action="{{ admin.generateUrl('batch', {'filter': admin.filterParameters}) }}" method="POST" >
  28.             <input type="hidden" name="_sonata_csrf_token" value="{{ csrf_token }}">
  29.         {% endif %}
  30.         {# Add a margin if no pager to prevent dropdown cropping on window #}
  31.         <div class="box box-primary"{% if admin.datagrid.pager.lastPage == 1 %} style="margin-bottom: 100px;"{% endif %}>
  32.             <div class="box-body{% if admin.datagrid.results|length > 0 %} table-responsive no-padding{% endif %}">
  33.                 {{ sonata_block_render_event('sonata.admin.list.table.top', { 'admin': admin }) }}
  34.                 {% block list_header %}{% endblock %}
  35.                 {% if admin.datagrid.results|length > 0 %}
  36.                     <table class="table table-bordered table-striped table-hover sonata-ba-list">
  37.                         {% block table_header %}
  38.                             <thead>
  39.                                 <tr class="sonata-ba-list-field-header">
  40.                                     {% for field_description in admin.list.elements %}
  41.                                         {% if admin.hasRoute('batch') and field_description.getOption('code') == '_batch' and batchactions|length > 0 %}
  42.                                             <th class="sonata-ba-list-field-header sonata-ba-list-field-header-batch">
  43.                                               <input type="checkbox" id="list_batch_checkbox">
  44.                                             </th>
  45.                                         {% elseif field_description.getOption('code') == '_select' %}
  46.                                             <th class="sonata-ba-list-field-header sonata-ba-list-field-header-select"></th>
  47.                                         {% elseif field_description.name == '_action' and app.request.isXmlHttpRequest %}
  48.                                             {# Action buttons disabled in ajax view! #}
  49.                                         {% elseif field_description.getOption('ajax_hidden') == true and app.request.isXmlHttpRequest %}
  50.                                             {# Disable fields with 'ajax_hidden' option set to true #}
  51.                                         {% else %}
  52.                                             {% set sortable = false %}
  53.                                             {% if field_description.options.sortable is defined and field_description.options.sortable %}
  54.                                                 {% set sortable             = true %}
  55.                                                 {% set sort_parameters      = admin.modelmanager.sortparameters(field_description, admin.datagrid) %}
  56.                                                 {% set current              = admin.datagrid.values._sort_by is defined
  57.                                                     and (admin.datagrid.values._sort_by == field_description
  58.                                                         or admin.datagrid.values._sort_by.name == sort_parameters.filter._sort_by) %}
  59.                                                 {% set sort_active_class    = current ? 'sonata-ba-list-field-order-active' : '' %}
  60.                                                 {% set sort_by              = current ? admin.datagrid.values._sort_order : field_description.options._sort_order %}
  61.                                             {% endif %}
  62.                                             {% apply spaceless %}
  63.                                                 <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 field_description.options.header_class is defined %} {{ field_description.options.header_class }}{% endif %}"{% if field_description.options.header_style is defined %} style="{{ field_description.options.header_style }}"{% endif %}>
  64.                                                     {% if sortable %}<a href="{{ admin.generateUrl('list', sort_parameters|merge({_list_mode: admin.getListMode()})) }}">{% endif %}
  65.                                                     {% if field_description.getOption('label_icon') %}
  66.                                                         <i class="sonata-ba-list-field-header-label-icon {{ field_description.getOption('label_icon') }}" aria-hidden="true"></i>
  67.                                                     {% endif %}
  68.                                                     {% if field_description.label is not same as(false) %}
  69.                                                         {{ field_description.label|trans({}, field_description.translationDomain) }}
  70.                                                     {% endif %}
  71.                                                     {% if sortable %}</a>{% endif %}
  72.                                                 </th>
  73.                                             {% endapply %}
  74.                                         {% endif %}
  75.                                     {% endfor %}
  76.                                 </tr>
  77.                             </thead>
  78.                         {% endblock %}
  79.                         {% block table_body %}
  80.                             <tbody>
  81.                                 {% include get_admin_template('outer_list_rows_' ~ admin.getListMode(), admin.code) %}
  82.                             </tbody>
  83.                         {% endblock %}
  84.                         {% block table_footer %}
  85.                         {% endblock %}
  86.                     </table>
  87.                 {% else %}
  88.                     {% block no_result_content %}
  89.                         <div class="info-box">
  90.                             <span class="info-box-icon bg-aqua"><i class="fa fa-arrow-circle-right" aria-hidden="true"></i></span>
  91.                             <div class="info-box-content">
  92.                                 <span class="info-box-text">{{ 'no_result'|trans({}, 'SonataAdminBundle') }}</span>
  93.                                 <div class="progress">
  94.                                     <div class="progress-bar" style="width: 0%"></div>
  95.                                 </div>
  96.                                 <span class="progress-description">
  97.                                     {% if not app.request.xmlHttpRequest %}
  98.                                     <ul class="list-unstyled">
  99.                                         {% include get_admin_template('button_create', admin.code) %}
  100.                                     </ul>
  101.                                     {% endif %}
  102.                                 </span>
  103.                             </div><!-- /.info-box-content -->
  104.                         </div>
  105.                     {% endblock %}
  106.                 {% endif %}
  107.                 {{ sonata_block_render_event('sonata.admin.list.table.bottom', { 'admin': admin }) }}
  108.             </div>
  109.             {% block list_footer %}
  110.                 {% if admin.datagrid.results|length > 0 %}
  111.                     <div class="box-footer">
  112.                         <div class="form-inline clearfix">
  113.                             {% if not app.request.isXmlHttpRequest %}
  114.                                 <div class="pull-left">
  115.                                     {% if admin.hasRoute('batch') and batchactions|length > 0 %}
  116.                                         {% block batch %}
  117.                                             <script>
  118.                                                 {% block batch_javascript %}
  119.                                                     jQuery(document).ready(function ($) {
  120.                                                         // Toggle individual checkboxes when the batch checkbox is changed
  121.                                                         $('#list_batch_checkbox').on('ifChanged change', function () {
  122.                                                             var checkboxes = $(this)
  123.                                                                 .closest('table')
  124.                                                                 .find('td.sonata-ba-list-field-batch input[type="checkbox"], div.sonata-ba-list-field-batch input[type="checkbox"]')
  125.                                                             ;
  126.                                                             if (Admin.get_config('USE_ICHECK')) {
  127.                                                                 checkboxes.iCheck($(this).is(':checked') ? 'check' : 'uncheck');
  128.                                                             } else {
  129.                                                                 checkboxes.prop('checked', this.checked);
  130.                                                             }
  131.                                                         });
  132.                                                         // Add a CSS class to rows when they are selected
  133.                                                         $('td.sonata-ba-list-field-batch input[type="checkbox"], div.sonata-ba-list-field-batch input[type="checkbox"]')
  134.                                                             .on('ifChanged change', function () {
  135.                                                                 $(this)
  136.                                                                     .closest('tr, div.sonata-ba-list-field-batch')
  137.                                                                     .toggleClass('sonata-ba-list-row-selected', $(this).is(':checked'))
  138.                                                                 ;
  139.                                                             })
  140.                                                             .trigger('ifChanged')
  141.                                                         ;
  142.                                                     });
  143.                                                 {% endblock %}
  144.                                             </script>
  145.                                         {% block batch_actions %}
  146.                                             <label class="checkbox" for="{{ admin.uniqid }}_all_elements">
  147.                                                 <input type="checkbox" name="all_elements" id="{{ admin.uniqid }}_all_elements">
  148.                                                 {{ 'all_elements'|trans({}, 'SonataAdminBundle') }}
  149.                                                 ({{ admin.datagrid.pager.nbresults }})
  150.                                             </label>
  151.                                             <select name="action" style="width: auto; height: auto" class="form-control">
  152.                                                 {% for action, options in batchactions %}
  153.                                                     <option value="{{ action }}">{{ options.label|trans({}, options.translation_domain|default(admin.translationDomain)) }}</option>
  154.                                                 {% endfor %}
  155.                                             </select>
  156.                                         {% endblock %}
  157.                                             <input type="submit" class="btn btn-small btn-primary" value="{{ 'btn_batch'|trans({}, 'SonataAdminBundle') }}">
  158.                                         {% endblock %}
  159.                                     {% endif %}
  160.                                 </div>
  161.                                 {# NEXT_MAJOR : remove this assignment #}
  162.                                 {% set export_formats = export_formats|default(admin.exportFormats) %}
  163.                                 <div class="pull-right">
  164.                                     {% if admin.hasRoute('export') and admin.hasAccess('export') and export_formats|length %}
  165.                                         <div class="btn-group">
  166.                                             <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
  167.                                                 <i class="fa fa-share-square-o" aria-hidden="true"></i>
  168.                                                 {{ "label_export_download"|trans({}, "SonataAdminBundle") }}
  169.                                                 <span class="caret"></span>
  170.                                             </button>
  171.                                             <ul class="dropdown-menu">
  172.                                                 {% for format in export_formats %}
  173.                                                 <li>
  174.                                                     <a href="{{ admin.generateUrl('export', admin.modelmanager.paginationparameters(admin.datagrid, 0) + {'format' : format}) }}">
  175.                                                         <i class="fa fa-arrow-circle-o-down" aria-hidden="true"></i>
  176.                                                         {{ ("export_format_" ~ format)|trans({}, 'SonataAdminBundle') }}
  177.                                                     </a>
  178.                                                 </li>
  179.                                                 {% endfor %}
  180.                                             </ul>
  181.                                         </div>
  182.                                         &nbsp;-&nbsp;
  183.                                     {% endif %}
  184.                                     {% block pager_results %}
  185.                                         {% include get_admin_template('pager_results', admin.code) %}
  186.                                     {% endblock %}
  187.                                 </div>
  188.                             {% endif %}
  189.                         </div>
  190.                         {% block pager_links %}
  191.                             {% if admin.datagrid.pager.haveToPaginate() %}
  192.                                 <hr/>
  193.                                 {% include get_admin_template('pager_links', admin.code) %}
  194.                             {% endif %}
  195.                         {% endblock %}
  196.                     </div>
  197.                 {% endif %}
  198.             {% endblock %}
  199.         </div>
  200.         {% if admin.hasRoute('batch') and batchactions|length %}
  201.             </form>
  202.         {% endif %}
  203.     </div>
  204. {% endblock %}
  205. {% block list_filters_actions %}
  206.     {%- if admin.datagrid.filters|length %}
  207.         <ul class="nav navbar-nav navbar-right">
  208.             <li class="dropdown sonata-actions">
  209.                 <a href="#" class="dropdown-toggle sonata-ba-action" data-toggle="dropdown">
  210.                     <i class="fa fa-filter" aria-hidden="true"></i>
  211.                     {{ 'link_filters'|trans({}, 'SonataAdminBundle') }}
  212.                     <span class="badge sonata-filter-count"></span>
  213.                     <b class="caret"></b>
  214.                 </a>
  215.                 <ul class="dropdown-menu" role="menu">
  216.                     {% for filter in admin.datagrid.filters|filter(filter => filter.options['show_filter'] is same as(true) or filter.options['show_filter'] is null) %}
  217.                         {% set filterActive = ((filter.isActive() or filter.options['show_filter']) and not admin.isDefaultFilter(filter.formName)) %}
  218.                         <li>
  219.                             <a href="#" class="sonata-toggle-filter sonata-ba-action" filter-target="filter-{{ admin.uniqid }}-{{ filter.name }}" filter-container="filter-container-{{ admin.uniqid() }}">
  220.                                 <i class="fa {{ (filter.isActive() or filter.options['show_filter']) ? 'fa-check-square-o' : 'fa-square-o' }}"></i>
  221.                                 {% if filter.label is not same as(false) %}
  222.                                     {{ filter.label|trans({}, filter.translationDomain ?: admin.translationDomain) }}
  223.                                 {% endif %}
  224.                             </a>
  225.                         </li>
  226.                     {% endfor %}
  227.                 </ul>
  228.             </li>
  229.         </ul>
  230.     {% endif -%}
  231. {% endblock %}
  232. {% block list_filters %}
  233.     {% if admin.datagrid.filters %}
  234.         {% form_theme form get_admin_template('filter', admin.code) %}
  235.         <div class="col-xs-12 col-md-12 sonata-filters-box" style="display: {{ admin.datagrid.hasDisplayableFilters ? 'block' : 'none' }}" id="filter-container-{{ admin.uniqid() }}">
  236.             <div class="box box-primary" >
  237.                 <div class="box-body">
  238.                     <form class="sonata-filter-form form-horizontal {{ admin.isChild and 1 == admin.datagrid.filters|length ? 'hide' : '' }}" action="{{ admin.generateUrl('list') }}" method="GET" role="form">
  239.                         {{ form_errors(form) }}
  240.                         <div class="row">
  241.                             <div class="col-sm-9">
  242.                                 {% set withAdvancedFilter = false %}
  243.                                 {% for filter in admin.datagrid.filters %}
  244.                                     {% set filterActive = ((filter.isActive() and filter.options['show_filter'] is null) or (filter.options['show_filter'] is same as(true))) and not admin.isDefaultFilter(filter.formName) %}
  245.                                     {% set filterVisible = filter.options['show_filter'] is same as(true) or filter.options['show_filter'] is null %}
  246.                                     <div class="form-group {% block sonata_list_filter_group_class %}{% endblock %}" id="filter-{{ admin.uniqid }}-{{ filter.name }}" sonata-filter="{{ filterVisible ? 'true' : 'false' }}" style="display: {% if filterActive %}block{% else %}none{% endif %}">
  247.                                         {% if filter.label is not same as(false) %}
  248.                                             <label for="{{ form[filter.formName].children['value'].vars.id }}" class="col-sm-3 control-label">{{ filter.label|trans({}, filter.translationDomain ?: admin.translationDomain) }}</label>
  249.                                         {% endif %}
  250.                                         {% set attr = form[filter.formName].children['type'].vars.attr|default({}) %}
  251.                                         <div class="col-sm-4 advanced-filter">
  252.                                             {{ form_widget(form[filter.formName].children['type'], {'attr':  attr}) }}
  253.                                         </div>
  254.                                         <div class="col-sm-4">
  255.                                             {{ form_widget(form[filter.formName].children['value']) }}
  256.                                         </div>
  257.                                         <div class="col-sm-1">
  258.                                             <label class="control-label">
  259.                                                 <a href="#" class="sonata-toggle-filter sonata-ba-action" filter-target="filter-{{ admin.uniqid }}-{{ filter.name }}" filter-container="filter-container-{{ admin.uniqid() }}">
  260.                                                     <i class="fa fa-minus-circle" aria-hidden="true"></i>
  261.                                                 </a>
  262.                                             </label>
  263.                                         </div>
  264.                                     </div>
  265.                                     {% if filter.options['advanced_filter'] %}
  266.                                         {% set withAdvancedFilter = true %}
  267.                                     {% endif %}
  268.                                 {% endfor %}
  269.                             </div>
  270.                             <div class="col-sm-3 text-center">
  271.                                 <input type="hidden" name="filter[_page]" id="filter__page" value="1">
  272.                                 {% set foo = form['_page'].setRendered() %}
  273.                                 {{ form_rest(form) }}
  274.                                 <div class="form-group">
  275.                                     <button type="submit" class="btn btn-primary">
  276.                                         <i class="fa fa-filter" aria-hidden="true"></i> {{ 'btn_filter'|trans({}, 'SonataAdminBundle') }}
  277.                                     </button>
  278.                                     <a class="btn btn-default" href="{{ admin.generateUrl('list', {filters: 'reset'}) }}">
  279.                                         {{ 'link_reset_filter'|trans({}, 'SonataAdminBundle') }}
  280.                                     </a>
  281.                                 </div>
  282.                                 {% if withAdvancedFilter %}
  283.                                     <div class="form-group">
  284.                                         <a href="#" data-toggle="advanced-filter">
  285.                                             <i class="fa fa-cogs" aria-hidden="true"></i>
  286.                                             {{ 'btn_advanced_filters'|trans({}, 'SonataAdminBundle') }}
  287.                                         </a>
  288.                                     </div>
  289.                                 {% endif %}
  290.                             </div>
  291.                         </div>
  292.                         {% for paramKey, paramValue in admin.persistentParameters %}
  293.                             <input type="hidden" name="{{ paramKey }}" value="{{ paramValue }}">
  294.                         {% endfor %}
  295.                     </form>
  296.                 </div>
  297.             </div>
  298.         </div>
  299.     {% endif %}
  300. {% endblock %}