Created
May 26, 2012 09:11
-
-
Save Abhoryo/2793035 to your computer and use it in GitHub Desktop.
Twig exemple for https://github.com/pulse00/Twig-Eclipse-Plugin/issues/58 (From SorienDataGridBundle)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{# ------------------------------------------------------ grid ------------------------------------------------------ #} | |
{% block grid %} | |
<div class="grid"> | |
{% if grid.totalCount > 0 or grid.isFiltered or grid.noDataMessage is sameas(false) %} | |
<form id="{{ grid.hash }}" action="{{ grid.routeUrl }}" method="post"> | |
{% if grid.massActions|length > 0 %} | |
{{ grid_actions(grid) }} | |
{% endif %} | |
<table> | |
{% if grid.isTitleSectionVisible %} | |
{{ grid_titles(grid) }} | |
{% endif %} | |
{% if grid.isFilterSectionVisible %} | |
{{ block('grid_scripts_operator') }} | |
{{ grid_filters(grid) }} | |
{% endif %} | |
{{ grid_rows(grid) }} | |
</table> | |
{% if grid.isPagerSectionVisible %} | |
{{ grid_pager(grid) }} | |
{% endif %} | |
</form> | |
{% else %} | |
{{ grid_no_data(grid) }} | |
{% endif %} | |
</div> | |
{% endblock grid %} | |
{# --------------------------------------------------- grid_no_data ------------------------------------------------- #} | |
{% block grid_no_data %}<p class="no_data">{{ grid.noDataMessage|default('No data')|trans|raw }}</p>{% endblock grid_no_data %} | |
{# --------------------------------------------------- grid_titles -------------------------------------------------- #} | |
{% block grid_titles %} | |
<tr class="grid-row-titles"> | |
{% for column in grid.columns %} | |
{% if (column.visible )%} | |
<th class="{% if column.align != 'left'%} align-{{column.align}}{% endif %}{% if loop.last %} last-column{% endif %}"{% if(column.size > -1) %} style="width:{{column.size}}px"{% endif %}> | |
{% set columnTitle = grid.prefixTitle ~ column.title %} | |
{% if (column.sortable) %} | |
<a href="{{ grid_url('order', grid, column) }}" title="{{ 'Order by'|trans }} {{ columnTitle|trans }}">{{ columnTitle|trans }}</a> | |
{% if column.order == 'asc' %} | |
<div class="sort_up"></div> | |
{% elseif column.order == 'desc' %} | |
<div class="sort_down"></div> | |
{% endif %} | |
{% else %} | |
{{ columnTitle|trans }} | |
{% endif %} | |
</th> | |
{% endif %} | |
{% endfor %} | |
</tr> | |
{% endblock grid_titles %} | |
{# -------------------------------------------------- grid_filters -------------------------------------------------- #} | |
{% block grid_filters %} | |
<tr class="grid-row-filters"> | |
{% for column in grid.columns %} | |
{% if (column.visible)%} | |
<th{% if loop.last %} class="last-column"{% endif %}>{% if column.filterable %}{{ grid_filter(column, grid)|raw }}{% endif %}</th> | |
{% endif %} | |
{% endfor %} | |
</tr> | |
{% endblock grid_filters %} | |
{# ---------------------------------------------------- grid_rows --------------------------------------------------- #} | |
{% block grid_rows %} | |
{% for row in grid.rows %} | |
{% set last_row = loop.last %} | |
{% spaceless %} | |
<tr{% if row.color != '' %} style="background-color:{{row.color}};"{% endif %} class="grid-row-cells {{ cycle(['odd', 'even'], loop.index) }}"> | |
{% for column in grid.columns %} | |
{% if (column.visible )%} | |
<td class="grid-column-{{ column.id }}{% if column.align != 'left'%} align-{{column.align}}{% endif %}{% if loop.last %} last-column{% endif %}{% if last_row %} last-row{% endif %}">{{ grid_cell(column, row, grid)|raw }}</td> | |
{% endif %} | |
{% endfor %} | |
{% endspaceless %} | |
</tr> | |
{% else %} | |
{% set nbColumns = 0 %} | |
{% for column in grid.columns %} | |
{% if (column.visible )%} | |
{% set nbColumns = nbColumns + 1 %} | |
{% endif %} | |
{% endfor %} | |
<tr class="grid-row-cells"> | |
<td class="last-column last-row" colspan="{{ nbColumns }}" style="text-align: center;">{{ grid_no_result(grid) }}</td> | |
</tr> | |
{% endfor %} | |
{% endblock grid_rows %} | |
{# --------------------------------------------------- grid_no_result ------------------------------------------------- #} | |
{% block grid_no_result %}{{ grid.noResultMessage|default('No result')|trans|raw }}{% endblock grid_no_result %} | |
{# ---------------------------------------------------- grid_pager -------------------------------------------------- #} | |
{% block grid_pager %} | |
<div class="pager"> | |
{{ 'Page'|trans }} | |
{% spaceless %} | |
<input type="button" class="prev" {% if grid.page <= 0 %}disabled="disabled"{% endif %} value="<" onclick="window.location.href='{{grid_url('page', grid, grid.page-1)}}';"/> | |
<input type="text" value="{{grid.page+1}}" size="2" onkeypress="if (event.which == 13) { window.location.href='{{grid_url('page', grid)}}'+(parseInt(this.value)-1); return false; }"/> | |
<input type="button" value=">" class="next" {% if grid.page >= grid.pagecount-1 %}disabled="disabled"{% endif %} onclick="window.location.href='{{grid_url('page', grid, grid.page+1)}}';"/> {{ 'of %count%'|trans({'%count%': grid.pagecount}) }} | |
{% endspaceless %} | |
{{ ', Display'|trans }} | |
<select onchange="window.location.href='{{grid_url('limit', grid)}}'+this.value"> | |
{% for key, value in grid.limits %} | |
{% if key == grid.currentlimit %} | |
<option value="{{key}}" selected="selected">{{value}}</option> | |
{% else %} | |
<option value="{{key}}">{{value}}</option> | |
{% endif %} | |
{% endfor %} | |
</select> {{ 'Items per page'|trans }} | |
</div> | |
{% endblock grid_pager %} | |
{# --------------------------------------------------- grid_actions ------------------------------------------------- #} | |
{% block grid_actions %} | |
<div class="mass-actions"> | |
<a href="#" onclick="return {{grid.hash}}_mark_visible(true);">{{ 'Select visible'|trans }}</a> | | |
<a href="#" onclick="return {{grid.hash}}_mark_visible(false);">{{ 'Deselect visible'|trans }}</a> | | |
<a href="#" onclick="return {{grid.hash}}_mark_all(true);">{{ 'Select all'|trans }}</a> | | |
<a href="#" onclick="return {{grid.hash}}_mark_all(false);">{{ 'Deselect all'|trans }}</a> | |
<span class="mass-actions-selected" id="{{grid.hash}}_mass_action_selected"></span> | |
{% spaceless %} | |
<div style="float:right"> | |
{{ 'Action'|trans }} | |
<input type="hidden" id="{{grid.hash}}_mass_action_all" name="{{grid.hash}}[{{ constant('Sorien\\DataGridBundle\\Grid\\Grid::REQUEST_QUERY_MASS_ACTION_ALL_KEYS_SELECTED') }}]" value="0"/> | |
<select name="{{grid.hash}}[{{ constant('Sorien\\DataGridBundle\\Grid\\Grid::REQUEST_QUERY_MASS_ACTION') }}]"> | |
<option value="-1"></option> | |
{% for key, value in grid.massActions %} | |
<option value="{{key}}">{{ value.title|trans }}</option> | |
{% endfor %} | |
</select> | |
<input type="submit" value="{{ 'Submit Action'|trans }}"/> | |
</div> | |
{% endspaceless %} | |
{{ block('grid_scripts') }} | |
</div> | |
{% endblock grid_actions %} | |
{# ------------------------------------------------ grid_action_columns --------------------------------------------- #} | |
{% block grid_column_actions_cell %} | |
{% for action in column.rowActions %} | |
<a href="{{ url(action.route, column.routeParameters(row, action), false) }}" target="{{ action.target }}"{% if action.confirm %} onclick="return confirm('{{ action.confirmMessage }}')"{% endif %}{% for name, value in action.attributes %} {{ name }}="{{ value }}" {% endfor %}>{{ action.title|trans }}</a> | |
{% endfor %} | |
{% endblock grid_column_actions_cell %} | |
{# ------------------------------------------------ grid_array_columns --------------------------------------------- #} | |
{% block grid_column_array_cell %} | |
{% for index in value -%} | |
{{ index|raw }}{{ column.separator|raw }} | |
{%- endfor %} | |
{% endblock grid_column_array_cell %} | |
{# --------------------------------------------------- grid_scripts ------------------------------------------------- #} | |
{% block grid_scripts %} | |
<script type="text/javascript"> | |
function {{ grid.hash }}_mark_visible(select) | |
{ | |
var form = document.getElementById('{{ grid.hash }}'); | |
var counter = 0; | |
for (var i=0; i < form.elements.length; i++ ) { | |
if (form.elements[i].type == 'checkbox') { | |
form.elements[i].checked = select; | |
if (form.elements[i].checked){ | |
counter++; | |
} | |
} | |
} | |
{% if grid.isFilterSectionVisible %} | |
counter--; | |
{% endif %} | |
var selected = document.getElementById('{{ grid.hash }}_mass_action_selected'); | |
selected.innerHTML = counter > 0 ? '{{ 'Selected _s_ rows'|trans }}'.replace('_s_', counter) : ''; | |
document.getElementById('{{ grid.hash }}_mass_action_all').value = '0'; | |
return false; | |
} | |
function {{ grid.hash }}_mark_all(select) | |
{ | |
var form = document.getElementById('{{ grid.hash }}'); | |
for (var i=0; i < form.elements.length; i++ ) { | |
if (form.elements[i].type == 'checkbox') { | |
form.elements[i].checked = select; | |
} | |
} | |
var selected = document.getElementById('{{ grid.hash }}_mass_action_selected'); | |
if (select) { | |
document.getElementById('{{ grid.hash }}_mass_action_all').value = '1'; | |
selected.innerHTML = '{{ 'Selected _s_ rows'|trans }}'.replace('_s_', '{{ grid.totalCount }}'); | |
} else { | |
document.getElementById('{{ grid.hash }}_mass_action_all').value = '0'; | |
selected.innerHTML = ''; | |
} | |
return false; | |
} | |
</script> | |
{% endblock grid_scripts %} | |
{# ------------------------------------------- grid_scripts_operator ------------------------------------------------- #} | |
{% block grid_scripts_operator %} | |
<script type="text/javascript"> | |
function switchOperator(elt, query_to_id) | |
{ | |
if (elt.options[elt.selectedIndex].value == '{{ constant('Sorien\\DataGridBundle\\Grid\\Column\\Column::OPERATOR_BTW') }}') { | |
document.getElementById(query_to_id).style.display = ''; | |
document.getElementById(query_to_id).disabled=false; | |
} else { | |
document.getElementById(query_to_id).style.display = 'none'; | |
document.getElementById(query_to_id).disabled=true; | |
} | |
} | |
</script> | |
{% endblock grid_scripts_operator %} | |
{# -------------------------------------------- grid_column_operator --------------------------------------- #} | |
{% block grid_column_operator %} | |
{% if column.operatorsVisible %} | |
<span class="grid-filter-operator"> | |
<select name="{{hash}}[{{column.id}}][operator]" onchange="switchOperator(this, '{{hash}}__{{column.id}}__query__to');"> | |
{% for operator in column.operators %} | |
<option value="{{ operator }}"{% if op == operator %} selected="selected"{% endif %}>{{ operator |trans }}</option> | |
{% endfor %} | |
</select> | |
</span> | |
{% endif %} | |
{% endblock grid_column_operator %} | |
{# -------------------------------------------- grid_column_filter_type_text --------------------------------------- #} | |
{% block grid_column_filter_type_text %} | |
{% set op = column.data.operator is defined ? column.data.operator : column.defaultOperator %} | |
{% set from = column.data.query.from is defined ? column.data.query.from : null %} | |
{% set to = column.data.query.to is defined ? column.data.query.to : null %} | |
{% set btwOperator = constant('Sorien\\DataGridBundle\\Grid\\Column\\Column::OPERATOR_BTW') %} | |
<span class="grid-filter-text"> | |
{{ block('grid_column_operator')}} | |
<span class="grid-filter-text-query"> | |
<input type="text" value="{{ from }}" class="grid-filter-text-query-from" name="{{hash}}[{{column.id}}][query][from]" id="{{hash}}__{{column.id}}__query__from" onkeypress="if (event.which == 13){this.form.submit();}" /> | |
<input type="text" value="{{ to }}" class="grid-filter-text-query-to" name="{{hash}}[{{column.id}}][query][to]" id="{{hash}}__{{column.id}}__query__to" onkeypress="if (event.which == 13){this.form.submit();}" {{ ( op == btwOperator ) ? '': 'style="display: none;" disabled="disabled"' }} /> | |
</span> | |
</span> | |
{% endblock grid_column_filter_type_text %} | |
{# -------------------------------------------- grid_column_filter_type_select --------------------------------------- #} | |
{% block grid_column_filter_type_select %} | |
{% set op = column.data.operator is defined ? column.data.operator : column.defaultOperator %} | |
{% set from = column.data.query.from is defined ? column.data.query.from : null %} | |
{% set to = column.data.query.to is defined ? column.data.query.to : null %} | |
{% set btwOperator = constant('Sorien\\DataGridBundle\\Grid\\Filter\\Filter::OPERATOR_BTW') %} | |
<span class="grid-filter-select"> | |
{{ block('grid_column_operator')}} | |
<span class="grid-filter-select-query"> | |
<select name="{{hash}}[{{column.id}}][query][from]" class="grid-filter-select-query-from" id="{{hash}}__{{column.id}}__query__from" onchange="this.form.submit();"> | |
<option value=""> </option> | |
{% for key, value in column.values %} | |
<option value="{{key}}"{% if not from is null and from == key %} selected="selected"{% endif %}>{{ value }}</option> | |
{% endfor %} | |
</select> | |
<select name="{{hash}}[{{column.id}}][query][to]" class="grid-filter-select-query-to" id="{{hash}}__{{column.id}}__query__to" onchange="this.form.submit();" {{ ( op == btwOperator ) ? '': 'style="display: none;" disabled="disabled"' }}> | |
<option value=""> </option> | |
{% for key, value in column.values %} | |
<option value="{{key}}"{% if not to is null and to == key %} selected="selected"{% endif %}>{{ value }}</option> | |
{% endfor %} | |
</select> | |
</span> | |
{% endblock grid_column_filter_type_select %} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment