Skip to content

Instantly share code, notes, and snippets.

@Abhoryo
Created May 26, 2012 09:11

Revisions

  1. Petit Yoann created this gist May 26, 2012.
    266 changes: 266 additions & 0 deletions blocks.html.twig
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,266 @@
    {# ------------------------------------------------------ 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="">&nbsp;</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="">&nbsp;</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 %}