Files
cmsPRO/libraries/grid/templates/results.php
2026-02-22 21:59:33 +01:00

447 lines
20 KiB
PHP

<?
$this -> values['name'] ? $g_table = $this -> values['name'] : $g_table = $this -> values[ 'table' ];
?>
<div class="table-responsive">
<table id="g-list" class="table mbn table-hover table-striped <? if ( $this -> values['condensed'] ):?>table-condensed<? endif;?> table-bordered">
<thead>
<tr>
<?
if ( $this -> values['multiselect'] )
echo '<th class="g-lp">' .
'<input type="checkbox" class="g-checkbox-all" />' .
'</th>';
if ( is_array( $this -> values['columns_view'] ) )
{
$c_index = 0;
$visible_columns = 0;
foreach ( $this -> values['columns_view'] as $column )
{
if ( filter_var( $this -> values['hidden_columns'][$c_index], FILTER_VALIDATE_BOOLEAN ) === false or $this -> values['hidden_columns'][$c_index] === null )
{
$column['sort'] ? $sort = 'g-sort' : $sort = '';
if ( $column['sort'] )
{
$sort_data = 'data="sort-column:' . $column['db'] . ';sort-type:';
if ( $column['db'] == $this -> values['order']['column'] )
$sort_data .= $this -> values['order']['type'];
else
$sort_data .= 'DESC';
$sort_data .= '"';
}
else
$sort_data = '';
echo '<th class="' . $column['th']['class'] . ' ' . $sort . '" style="' . $column['th']['style'] . '" ' . $sort_data . '>';
if ( $column['db'] == $this -> values['order']['column'] && $column['sort'] )
{
if ( $this -> values['order']['type'] == 'ASC' )
echo '<i class="fa fa fa-long-arrow-up g-tip" title="Sortowanie rosnące"></i>';
if ( $this -> values['order']['type'] == 'DESC' )
echo '<i class="fa fa fa-long-arrow-down g-tip" title="Sortowanie malejące"></i>';
}
if ( $column['sort'] and $column['db'] != $this -> values['order']['column'] )
echo '<i class="fa fa-arrows-v g-tip" title="Sortuj" style="opacity: 0.5"></i>';
echo $column['name'];
echo '</th>';
$visible_columns++;
}
$c_index++;
}
}
if ( $this -> values['actions']['edit'] )
{
echo '<th class="g-center" style="width: 50px;">Edytuj</th>';
$visible_columns++;
}
if ( $this -> values['actions']['delete'] )
{
echo '<th class="g-center" style="width: 50px;">Usuń</th>';
$visible_columns++;
}
?>
</tr>
<?
if ( is_array( $this -> values['search'] ) )
{
$c_index = 0;
echo '<tr>';
if ( is_array( $this -> values['columns_view'] ) ) foreach ( $this -> values['columns_view'] as $column )
{
$search_found = false;
if ( filter_var( $this -> values['hidden_columns'][$c_index], FILTER_VALIDATE_BOOLEAN ) === false or $this -> values['hidden_columns'][$c_index] === null )
{
foreach ( $this -> values['search'] as $search )
{
if ( !empty( $column['db'] ) and $search['db'] == $column['db'] )
{
$search_found = true;
if ( $search['type'] == 'text' )
{
echo '<th>'
. '<input type="text" '
. 'name="' . $search['db'] . '" '
. 'autocomplete="off" '
. 'placeholder="Szukaj: ' . mb_strtolower( $search['name'], 'UTF-8' ) . '" '
. 'title="Szukaj: ' . $search['name'] . '" '
. 'class="g-search-input form-control input-sm" '
. 'value="' . $this -> values['filters'][ $search['db'] ]['value'] . '" '
. 'data="search-column:' . $search['db'] . ';search-type:like" '
. '/>'
. '</th>';
}
if ( $search['type'] == 'select' )
{
echo '<th>'
. '<select name="' . $search['db'] . '" '
. 'title="Szukaj: ' . $search['name'] . '" '
. 'class="g-search-select form-control input-sm" '
. 'data="search-column:' . $search['db'] . ';search-type:equal">'
. '<option value="null" style="text-align: center;">- ' . mb_strtolower( $search['name'], 'UTF-8' ) . ' -</option>';
if ( is_array( $search['replace']['array'] ) )
{
foreach ( $search['replace']['array'] as $key => $val )
{
echo '<option value="' . $key . '"';
if ( isset( $this -> values['filters'][ $search['db'] ]['value'] ) and $key == $this -> values['filters'][ $search['db'] ]['value'] )
echo ' selected="selected" ';
echo '>' . $val . '</option>';
}
}
if ( $search['replace']['sql'] )
{
$results = $_SESSION[ 'g' . $g_table ] -> connectToDb() -> query( $search['replace']['sql'] ) -> fetchAll();
if ( is_array( $results ) ) foreach ( $results as $row )
echo '<option value="' . $row[0] . '">' . $row[1] . '</option>';
}
echo '</select>'
. '</th>';
}
if ( $search['type'] == 'date_range' )
{
echo '<th>';
echo '<div class="input-group">'
. '<span class="input-group-addon cursor date-range-icon">'
. '<i class="fa fa-calendar"></i>'
. '</span>'
. '<input type="text" '
. 'name="' . $search['db'] . '" '
. 'data="search-column:' . $search['db'] . ';search-type:date_range" '
. 'class="g-search-input form-control input-sm date-range"'
. 'value="' . $this -> values['filters'][ $search['db'] ]['value'] . '"/>'
. '</div>';
echo '</th>';
}
}
}
if ( !$search_found )
echo '<th></th>';
}
$c_index++;
}
echo '</tr>';
}
?>
</thead>
<tbody>
<?
$i = ( $this -> values['cp'] - 1 ) * $this -> values['limit'];
$context = false;
if ( is_array( $this -> values['results'] ) and !empty( $this -> values['results'] ) ) foreach ( $this -> values['results'] as $row )
{
$columns = array();
if ( is_array( $this -> values['columns_view'] ) ) foreach ( $this -> values['columns_view'] as $column )
{
$columns = array_merge( $columns, $_SESSION[ 'g' . $g_table ] -> getParams( $column['action']['url'] ) );
$columns = array_merge( $columns, $_SESSION[ 'g' . $g_table ] -> getParams( $column['action']['js'] ) );
}
$columns = array_unique( $columns );
echo '<tr ' . $this -> values['id'] . '="' . $row[ $this -> values['id'] ] . '" ';
if ( is_array( $columns ) ) foreach ( $columns as $column )
echo $column . '="' . $row[ $column ] . '" ';
echo '>';
if ( $this -> values['multiselect'] )
echo '<td>' .
'<input type="checkbox" class="g-checkbox" value="' . $row[ $this -> values['id'] ] . '" />' .
'</td>';
$c_index = 0;
if ( is_array( $this -> values['columns_view'] ) ) foreach ( $this -> values['columns_view'] as $column )
{
if ( filter_var( $this -> values['hidden_columns'][$c_index], FILTER_VALIDATE_BOOLEAN ) === false or $this -> values['hidden_columns'][$c_index] === null )
{
if ( $column['autoincrement'] )
echo '<td class="' . $column['td']['class'] . '" style="' . $column['td']['style'] . '">' . ++$i . '.</td>';
else
{
echo '<td class="' . $column['td']['class'] . '" style="' . $column['td']['style'] . ''; if ( $column['td']['js'] ) echo 'cursor: pointer;'; echo '"';
if ( $column['td']['js'] )
{
$out_js = $_SESSION[ 'g' . $g_table ] -> convertString( $column['td']['js'], $row );
echo 'onclick="' . htmlspecialchars( $out_js ) . '"';
}
echo '>';
if ( $column['content'] )
echo $_SESSION[ 'g' . $g_table ] -> convertString( $column['content'], $row );
else
{
/* podmiana na wartości tablicy */
if ( is_array( $column['replace']['array'] ) )
echo $_SESSION[ 'g' . $g_table ] -> convertString( $column['replace']['array'][ $row[ $column['db'] ] ], $row );
else if ( $column['replace']['sql'] )
{
$sql = $_SESSION[ 'g' . $g_table ] -> convertString( $column['replace']['sql'], $row );
$results = $_SESSION[ 'g' . $g_table ] -> connectToDb() -> query( $sql ) -> fetchAll();
if ( $results[0][0] != '' )
echo $results[0][0];
else
echo '-';
}
/* modyfikacja wyświetlania daty */
else if ( $column['date_mod'] )
{
if ( grid::validateDate( $row[ $column['db'] ] ) )
echo date( $column['date_mod'], strtotime( $row[ $column['db'] ] ) );
else
echo '-';
}
/* wyświtalania linku typu button */
else if ( $column['action']['type'] == 'button' )
{
if ( $column['action']['url'] )
$out_url = $_SESSION[ 'g' . $g_table ] -> convertString( $column['action']['url'], $row );
else
$out_url = '#';
$out_js = $_SESSION[ 'g' . $g_table ] -> convertString( $column['action']['js'], $row );
if ( $column['action']['js'] )
$out_js = $_SESSION[ 'g' . $g_table ] -> convertString( $column['action']['js'], $row );
$column['button']['title'] ? $title = $column['button']['title'] : $title = $column['button']['label'];
echo '<a href="' . $out_url . '"' .
'onclick="' . htmlspecialchars( $out_js ) . '" ' .
'class="g-tip g-button ' . $column['button']['class' ] . '" ' .
'title="' . htmlspecialchars( $title ) . '" ' .
'style="' . $column['button']['style'] . '">' . $column['button']['label'] .
'</a>';
}
/* wyświtalania linku do edycji */
else if ( $column['action']['type'] == 'edit' )
{
$out_url = $_SESSION[ 'g' . $g_table ] -> convertString( $column['action']['url'], $row );
$out_js = $_SESSION[ 'g' . $g_table ] -> convertString( $column['action']['js'], $row );
echo '<a href="' . $out_url . '" onclick="' . htmlspecialchars( $out_js ) . '" class="g-tip" title="edytuj"><i class="fa fa-cog fa-lg"></i></a>';
}
/* wyświtalania linku do usuwania */
else if ( $column['action']['type'] == 'delete' )
{
$out_url = $_SESSION[ 'g' . $g_table ] -> convertString( $column['action']['url'], $row );
$out_js = $_SESSION[ 'g' . $g_table ] -> convertString( $column['action']['js'], $row );
echo '<a href="#" class="g-tip" title="usuń" onclick="$( this ).blur(); jQuery.prompt( \'Na pewno chcesz usunąć wybrany element?\', { title: \'Potwierdź?\', submit: function(e,v,m,f) { if ( v == true ) ';
if ( $out_js )
echo htmlspecialchars( $out_js );
else
echo htmlspecialchars( 'document.location.href="' . $out_url . '";' );
echo ' }, buttons: { \'tak\': true, \'nie\': false }, focus: 0 } );"><i class="fa fa-trash fa-lg"></i></a>';
}
/* ucunianie długich wartości */
else if ( $column['cut'] )
{
echo '<span class="tip" title="' . htmlspecialchars( $row[ $column['db'] ] ) . '">';
echo htmlspecialchars( mb_substr( $row[ $column['db'] ], 0, $column['cut'], 'UTF-8' ) );
if ( mb_strlen( $row[ $column['db'] ], 'UTF-8' ) > $column['cut'] )
echo '...';
echo '</span>';
}
else if ( $column['php'] )
{
eval( $_SESSION[ 'g' . $g_table ] -> convertString( $column['php'], $row ) );
}
/* zwykla wartość */
else
echo $row[ $column['db'] ];
}
echo '</td>';
}
}
$c_index++;
}
if ( $this -> values['actions']['edit'] )
echo '<td class="center">' .
'<a href="#" class="g-edit g-tip" title="edytuj" element-id="' . $row[ $this -> values['id'] ] . '">' .
'<i class="fa fa-cog fa-lg"></i>' .
'</a>' .
'</td>';
if ( $this -> values['actions']['delete'] )
echo '<td class="g-center">'
. '<a href="#" class="g-delete g-tip" title="usuń" element-id="' . $row[ $this -> values['id'] ] . '" url="' . $this -> values['actions']['delete_url'] . '" back-url="' . $this -> values['actions']['back_url'] . '">'
. '<i class="fa fa-trash fa-lg"></i>'
. '</a>'
. '</td>';
echo '</tr>';
}
else
echo '<tr><td colspan="' . $visible_columns . '" style="padding: 0;"><div class="alert alert-danger" style="margin: 0;">' . $this -> values['empty_txt'] . '</div></td></tr>';
if ( is_array( $this -> values['summary'] ) )
{
echo '<tr>';
if ( is_array( $this -> values['columns_view'] ) ) foreach ( $this -> values['columns_view'] as $column )
{
echo '<td>';
if ( !empty( $this -> values['summary'][ $column['db'] ] ) )
echo '<div class="g-bold g-center">Σ: ' . $this -> values['summary'][ $column['db'] ] . '</div>';
echo '</td>';
}
echo '</tr>';
}
?>
</tbody>
</table>
</div>
<? if ( is_array( $this -> values['results'] ) and $this -> values['show_paging'] === true ):?>
<div class="row">
<? $ls = ceil( $this -> values['count'] / $this -> values['limit'] );?>
<div class="col col-xs-12 col-sm-6 text-centred-xs">
<ul id="g-pager" class="pagination pull-left-sm">
<? if ( $this -> values['cp'] > 1 ):?>
<li>
<a href='#' title="Przejdź do pierwszej strony" class="g-first" page="1">
<i class="fa fa-fast-backward"></i>
</a>
</li>
<li>
<a href='#' title="Przejdź do poprzedniej strony" class="g-previous" page="<?= $this -> values['cp'] - 1;?>">
<i class="fa fa-backward"></i>
</a>
</li>
<? else:?>
<li class="disabled">
<a href="#" title="Przejdź do pierwszej strony">
<i class="fa fa-fast-backward"></i>
</a>
</li>
<li class="disabled">
<a href="#" title="Przejdź do poprzedniej strony">
<i class="fa fa-backward"></i>
</a>
</li>
<? endif;?>
<? for ( $i = $this -> values['cp'] - 3; $i <= $this -> values['cp'] + 3; $i++ ):?>
<? if ( $i > 0 && $i <= $ls ):?>
<li class="<? if ( $i == $this -> values['cp'] ):?>active<? endif;?>
<?
if (
$i == $this -> values['cp'] - 2
or
$i == $this -> values['cp'] + 2
or
$i == $this -> values['cp'] + 3
or
$i == $this -> values['cp'] - 3
):?> hidden-xs<? endif;?>">
<a href="#" class="g-page" rel="prev" title="Przejdź do strony nr: <?= $i;?>" page="<?= $i;?>"><?= $i;?></a>
</li>
<? endif;?>
<? endfor;?>
<? if ( $this -> values['cp'] < $ls ):?>
<li>
<a href="#" title="Przejdź do następnej strony" class="g-next" page="<?= $this -> values['cp'] + 1;?>">
<i class="fa fa-forward"></i>
</a>
</li>
<li>
<a href="#" title="Przejdź do ostatniej strony" class="g-last" page="<?= $ls;?>">
<i class="fa fa-fast-forward"></i>
</a>
</li>
<? else:?>
<li class="disabled">
<a href="#" title="Przejdź do następnej strony">
<i class="fa fa-forward"></i>
</a>
</li>
<li class="disabled">
<a href="#" title="Przejdź do ostatniej strony">
<i class="fa fa-fast-forward"></i>
</a>
</li>
<? endif;?>
</ul>
</div>
<div class="col col-xs-12 col-sm-6 p20 text-right text-centred-xs pull-right-sm">
Wyświetlaj <select id="g-row-limit" class="form-control"><? if ( is_array( $this -> values['limits'] ) ): foreach ( $this -> values['limits'] as $key => $val ):?><option value="<?= $val;?>" <? if ( $this -> values['limit'] == $val ):?>selected="selected"<? endif;?>><?= $val;?></option><? endforeach; endif;?></select> rekordów
</div>
</div>
<? endif;?>
<script type="text/javascript">
jQuery( function()
{
context.attach( '#g-<?= $g_table;?> #g-list tbody tr', menu_context_<?= str_replace( '-', '_', $g_table );?> );
jQuery( '#g-<?= $g_table;?> #g-list .g-checkbox, #g-<?= $g_table;?> #g-list .g-radio' ).on( 'ifToggled', function()
{
var checkedVals = jQuery( '.g-checkbox:checked' ).map( function()
{
return this.value;
}).get();
if ( checkedVals != '' )
{
jQuery( '#g-<?= $g_table;?> #g-multidelete' ).show();
jQuery( '#g-<?= $g_table;?> .g-toggle' ).show();
}
else
{
jQuery( '#g-<?= $g_table;?> #g-multidelete' ).hide();
jQuery( '#g-<?= $g_table;?> .g-toggle' ).hide();
}
}).iCheck({
checkboxClass: 'icheckbox_minimal-blue',
radioClass: 'iradio_minimal-blue'
});
jQuery( '#g-<?= $g_table;?> #g-list .g-checkbox-all' ).on( 'ifToggled', function()
{
jQuery( '#g-<?= $g_table;?> #g-list .g-checkbox' ).iCheck( 'toggle' );
}).iCheck({
checkboxClass: 'icheckbox_minimal-blue',
radioClass: 'iradio_minimal-blue'
});
jQuery( '#g-<?= $g_table;?> #g-list #g-multidelete' ).hide();
});
</script>