base_list.twig.html 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  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. <div class="sonata-actions">
  10. <ul>
  11. <li class="sonata-action-element"><a href="{{ admin.generateUrl('create') }}">{% trans "link_action_create" from admin.translationdomain %}</a></li>
  12. </ul>
  13. </div>
  14. {% endblock %}
  15. {% block side_menu %}{% if side_menu %}{{ side_menu.render|raw }}{% endif %}{% endblock %}
  16. {% block list_table %}
  17. <form action="{{ admin.generateUrl('batch') }}" method="POST" >
  18. <table>
  19. {% block table_header %}
  20. <tr>
  21. {% for field_description in list.elements %}
  22. {% if field_description.getOption('code') == '_batch' %}
  23. <th class="sonata-ba-list-field-header sonata-ba-list-field-header-batch"><input type="checkbox" id="list_batch_checkbox" /></th>
  24. {% else %}
  25. <th class="sonata-ba-list-field-header sonata-ba-list-field-header-{{ field_description.type}}">{{ field_description.name }}</th>
  26. {% endif %}
  27. {% endfor %}
  28. </tr>
  29. {% endblock %}
  30. {% block table_body %}
  31. {% for object in datagrid.results %}
  32. <tr>
  33. {% for field_description in list.elements %}
  34. {{ object|render_list_element(field_description) }}
  35. {% endfor %}
  36. </tr>
  37. {% endfor %}
  38. {% endblock %}
  39. {% block table_footer %}
  40. {% if datagrid.pager.haveToPaginate() %}
  41. <tr>
  42. <td colspan="{{ list.elements|length }}" class="pager">
  43. <ul>
  44. {% if datagrid.pager.page != datagrid.pager.previouspage %}
  45. <li><a href="{{ admin.generateUrl('list', datagrid.values|merge({'page': datagrid.pager.previouspage})) }}">{% trans 'link_previous_pager' from 'BaseApplicationBundle' %}</a></li>
  46. {% endif %}
  47. {# Set the number of pages to display in the pager #}
  48. {% for page in datagrid.pager.getLinks(5) %}
  49. {% if page == datagrid.pager.page %}
  50. <li>{{ page }}</li>
  51. {% else %}
  52. <li><a href="{{ admin.generateUrl('list', datagrid.values|merge({'page': page})) }}">{{ page }}</a></li>
  53. {% endif %}
  54. {% endfor %}
  55. {% if datagrid.pager.page != datagrid.pager.nextpage %}
  56. <li><a href="{{ admin.generateUrl('list', datagrid.values|merge({'page': datagrid.pager.nextpage})) }}">{% trans 'link_next_pager' from 'BaseApplicationBundle' %}</a></li>
  57. {% endif %}
  58. </ul>
  59. </td>
  60. </tr>
  61. {% endif %}
  62. {% endblock %}
  63. </table>
  64. <script type="text/javascript">
  65. jQuery(document).ready(function($){
  66. $('#list_batch_checkbox').click(function(){
  67. $(this).closest('table').find("td input[type='checkbox']").attr('checked', $(this).is(':checked'));
  68. });
  69. });
  70. </script>
  71. <div class="sonata-ba-list-actions">
  72. <select name="action" >
  73. {% for action, label in admin.batchactions %}
  74. <option value="{{ action }}">{{ label }}</option>
  75. {% endfor %}
  76. </select>
  77. <input type="submit" value="{% trans 'btn_batch' from 'BaseApplicationBundle' %}" />
  78. </div>
  79. </form>
  80. {% endblock %}
  81. {% block list_filters %}
  82. <form action="{{ admin.generateUrl('list') }}" method="GET">
  83. {% for filter in datagrid.filters %}
  84. <div>
  85. {{ filter|render_filter_element }}</td>
  86. </div>
  87. {% endfor %}
  88. <input type="submit" value="{% trans 'btn_filter' from 'BaseApplicationBundle' %}" />
  89. <a href="{{ admin.generateUrl('list') }}">{% trans 'link_reset_filter' from 'BaseApplicationBundle' %}</a>
  90. </form>
  91. {% endblock %}