forked from philiplb/CRUDlex
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlist.twig
137 lines (122 loc) · 8.46 KB
/
list.twig
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
{#
# This file is part of the CRUDlex package.
#
# (c) Philip Lehmann-Böhm <[email protected]>
#
# For the full copyright and license information, please view the LICENSE
# file that was distributed with this source code.
#}
{% extends layout %}
{% block content %}
{% set fields = definition.getListFields() %}
{% set sortAscendingStr = sortAscending ? 'true' : false %}
{% set filterParams = {} %}
{% if filterActive %}
{% for filterField, filterValue in filter %}
{% set filterParams = filterParams|merge({('crudFilter' ~ filterField): filterValue}) %}
{% endfor %}
{% endif %}
<a id="crudBtnNew" href="{{ app.url_generator.generate('crudCreate', {'entity': crudEntity}) }}" class="btn btn-success btn-crudlex">{{ 'crudlex.button.new'|trans }}</a>
{% if filter %}
<a class="btn btn-success" data-toggle="collapse" href="#collapseFilter" aria-expanded="false" aria-controls="collapseFilter">{{ 'crudlex.list.button.filter'|trans }}</a>
<div class="collapse {{ filterActive ? 'in' : '' }}" id="collapseFilter">
<div class="well">
<form role="form" method="GET" action="{{ app.url_generator.generate('crudList', {'entity': crudEntity}) }}">
{% for filterField, filterValue in filter %}
{% set type = crudData.getDefinition().getType(filterField) %}
{% if type == 'boolean' %}
{% include app.crud.getTemplate(app, 'template', 'fieldLabel', crudEntity) with {
field: filterField,
definition: definition,
annotations: false
} only %}
<select class="form-control" id="{{ filterField }}" name="{{ 'crudFilter' ~ filterField }}">
{% set values = ['', 'true', 'false'] %}
{% for setValue in values %}
<option value="{{ setValue }}" {% if filterValue and setValue == filterValue %}selected="selected" {% endif %}>{{ setValue }}</option>
{% endfor %}
</select>
{% else %}
<div class="form-group">
{% if type == 'file' %}
{% set type = 'text' %}
{% endif %}
{% include app.crud.getTemplate(app, 'template', type ~ 'Field', crudEntity) with {
field: filterField,
fieldNamePrefix: 'crudFilter',
crudData: crudData,
value: filterValue,
annotations: false,
crudEntity: crudEntity
} only %}
</div>
{% endif %}
{% endfor %}
<input type="hidden" name="crudSortField" value="{{ sortField }}" />
<input type="hidden" name="crudSortAscending" value="{{ sortAscendingStr ? 'true' : false }}" />
<button type="submit" id="crudBtnSubmit" class="btn btn-default btn-success">{{ 'crudlex.list.button.doFilter'|trans }}</button>
</form>
</div>
</div>
{% endif %}
<div class="table-responsive table-wrapper">
<table class="table table-striped" id="crudEntityListTable">
<tr>
{% for i, field in fields %}
<th id="crudEntityField{{ i }}">
{% set type = definition.getType(field) %}
{% if type == 'many' %}
{{ definition.getFieldLabel(field) }}
{% else %}
<a href="{{ app.url_generator.generate('crudList', {'entity': crudEntity, 'crudSortField': field, 'crudSortAscending': sortAscendingStr ? 'false' : 'true','crudPage': page}|merge(filterParams)) }}">
{{ definition.getFieldLabel(field) }}
{% if field == sortField %}
<span class="glyphicon glyphicon-chevron-{{ sortAscendingStr ? 'up' : 'down' }}" aria-hidden="true"></span>
{% endif %}
</a>
{% endif %}
</th>
{% endfor %}
<th>Action</th>
</tr>
{% for entity in entities %}
<tr id="crudId{{ entity.get('id') }}">
{% for field in fields %}
<td class="crudField{{ field }}">
{% include app.crud.getTemplate(app, 'template', 'renderField', crudEntity) with {
entity: entity,
crudEntity: crudEntity,
definition: definition,
field: field,
mode: 'list'
} only %}
</td>
{% endfor %}
<td>
<a id="crudBtnShow{{ entity.get('id') }}" href="{{ app.url_generator.generate('crudShow', {'entity': crudEntity, 'id': entity.get('id')}) }}" type="button" class="crudBtnShow btn btn-default btn-xs btn-success">{{ 'crudlex.button.show'|trans }}</a>
<a id="crudBtnEdit{{ entity.get('id') }}" href="{{ app.url_generator.generate('crudEdit', {'entity': crudEntity, 'id': entity.get('id')}) }}" type="button" class="crudBtnEdit btn btn-default btn-xs btn-warning">{{ 'crudlex.button.edit'|trans }}</a>
<form class="crudFormDelete" style="display: inline-block" onSubmit="return confirm('{{ 'crudlex.deleteEntityConfirmation'|trans({'%id%': entity.get('id')}) }}');" method="POST" action="{{ app.url_generator.generate('crudDelete', {'entity': crudEntity, 'id': entity.get('id')}) }}">
<input id="crudBtnDelete{{ entity.get('id') }}" type="submit" class="crudBtnDelete btn btn-default btn-xs btn-danger" value="{{ 'crudlex.button.delete'|trans }}" />
</form>
</td>
</tr>
{% endfor %}
</table>
<p id="crudTotalCount"><strong>{{ 'crudlex.list.total'|trans({'%total%': total}) }}</strong></p>
{% if total > pageSize %}
<nav>
<ul class="pagination">
<li{{ page == 0 ? ' class="disabled"' : ''}}><a href="{{ app.url_generator.generate('crudList', {'entity': crudEntity, 'crudPage': 0, 'crudSortField': sortField, 'crudSortAscending': sortAscendingStr ? 'true' : false}|merge(filterParams)) }}"><span aria-hidden="true">«</span><span class="sr-only">{{ 'crudlex.list.button.first'|trans }}</span></a></li>
<li{{ page == 0 ? ' class="disabled"' : ''}}><a href="{{ app.url_generator.generate('crudList', {'entity': crudEntity, 'crudPage': page > 0 ? page - 1 : 0, 'crudSortField': sortField, 'crudSortAscending': sortAscendingStr ? 'true' : false}|merge(filterParams)) }}"><span aria-hidden="true">‹</span><span class="sr-only">{{ 'crudlex.list.button.previous'|trans }}</span></a></li>
{% for p in 0..maxPage %}
<li{{ p == page ? ' class="active"' : ''}}>
<a href="{{ app.url_generator.generate('crudList', {'entity': crudEntity, 'crudPage': p, 'crudSortField': sortField, 'crudSortAscending': sortAscendingStr ? 'true' : false}|merge(filterParams)) }}">{{ p + 1 }}</a>
</li>
{% endfor %}
<li{{ page == maxPage ? ' class="disabled"' : ''}}><a href="{{ app.url_generator.generate('crudList', {'entity': crudEntity, 'crudPage': page < maxPage ? page + 1 : maxPage, 'crudSortField': sortField, 'crudSortAscending': sortAscendingStr ? 'true' : false}|merge(filterParams)) }}"><span aria-hidden="true">›</span><span class="sr-only">{{ 'crudlex.list.button.next'|trans }}</span></a></li>
<li{{ page == maxPage ? ' class="disabled"' : ''}}><a href="{{ app.url_generator.generate('crudList', {'entity': crudEntity, 'crudPage': maxPage, 'crudSortField': sortField, 'crudSortAscending': sortAscendingStr ? 'true' : false}|merge(filterParams)) }}"><span aria-hidden="true">»</span><span class="sr-only">{{ 'crudlex.list.button.last'|trans }}</span></a></li>
</ul>
</nav>
{% endif %}
</div>
{% endblock %}