element('/genericElements/IndexTable/index_table', [ * 'top_bar' => ( * // search/filter bar information compliant with ListTopBar * ), * 'data' => [ // the actual data to be used * ), * 'fields' => [ * // field list with information for the paginator, the elements used for the individual cells, etc * ), * 'title' => optional title, * 'description' => optional description, * 'primary_id_path' => path to each primary ID (extracted and passed as $primary to fields) * )); * */ $tableRandomValue = Cake\Utility\Security::randomString(8); echo '
'; if (!empty($data['title'])) { echo sprintf('

%s

', h($data['title'])); } if (!empty($data['description'])) { echo sprintf( '
%s
', empty($data['description']) ? '' : h($data['description']) ); } echo '
'; if (!empty($data['html'])) { echo sprintf('
%s
', $data['html']); } $skipPagination = isset($data['skip_pagination']) ? $data['skip_pagination'] : 0; if (!$skipPagination) { $paginationData = !empty($data['paginatorOptions']) ? $data['paginatorOptions'] : []; echo $this->element( '/genericElements/IndexTable/pagination', [ 'paginationOptions' => $paginationData, 'tableRandomValue' => $tableRandomValue ] ); echo $this->element( '/genericElements/IndexTable/pagination_links' ); } $multiSelectData = getMultiSelectData($data['top_bar']); if (!empty($multiSelectData)) { $multiSelectField = [ 'element' => 'selector', 'class' => 'short', 'data' => $multiSelectData['data'] ]; array_unshift($data['fields'], $multiSelectField); } if (!empty($data['top_bar'])) { echo $this->element( '/genericElements/ListTopBar/scaffold', [ 'data' => $data['top_bar'], 'table_data' => $data, 'tableRandomValue' => $tableRandomValue ] ); } $rows = ''; $row_element = isset($data['row_element']) ? $data['row_element'] : 'row'; $options = isset($data['options']) ? $data['options'] : []; $actions = isset($data['actions']) ? $data['actions'] : []; if ($this->request->getParam('prefix') === 'Open') { $actions = []; } $dblclickActionArray = !empty($actions) ? $this->Hash->extract($actions, '{n}[dbclickAction]') : []; $dbclickAction = ''; foreach ($data['data'] as $k => $data_row) { $primary = null; if (!empty($data['primary_id_path'])) { $primary = $this->Hash->extract($data_row, $data['primary_id_path'])[0]; } if (!empty($dblclickActionArray)) { $dbclickAction = sprintf("changeLocationFromIndexDblclick(%s)", $k); } $rows .= sprintf( '%s', h($k), empty($dbclickAction) ? '' : 'ondblclick="' . $dbclickAction . '"', empty($primary) ? '' : 'data-primary-id="' . $primary . '"', empty($data['row_modifier']) ? '' : h($data['row_modifier']($data_row)), empty($data['class']) ? '' : h($data['row_class']), $this->element( '/genericElements/IndexTable/' . $row_element, [ 'k' => $k, 'row' => $data_row, 'fields' => $data['fields'], 'options' => $options, 'actions' => $actions, 'primary' => $primary, 'tableRandomValue' => $tableRandomValue ] ) ); } $tbody = '' . $rows . ''; echo sprintf( '%s%s
', $tableRandomValue, $tableRandomValue, $this->element( '/genericElements/IndexTable/headers', [ 'fields' => $data['fields'], 'paginator' => $this->Paginator, 'actions' => (empty($actions) ? false : true), 'tableRandomValue' => $tableRandomValue ] ), $tbody ); if (!$skipPagination) { echo $this->element('/genericElements/IndexTable/pagination_counter', $paginationData); echo $this->element('/genericElements/IndexTable/pagination_links'); } echo '
'; echo '
'; ?>