element('/genericElements/IndexTable/index_table', array( * 'top_bar' => ( * // search/filter bar information compliant with ListTopBar * ), * 'data' => array( // the actual data to be used * ), * 'fields' => array( * // 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']) ); } 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'] : array(); echo $this->element( '/genericElements/IndexTable/pagination', array( 'paginationOptions' => $paginationData, 'tableRandomValue' => $tableRandomValue ) ); echo $this->element( '/genericElements/IndexTable/pagination_links' ); } if (!empty($data['top_bar'])) { echo $this->element( '/genericElements/ListTopBar/scaffold', array( 'data' => $data['top_bar'], 'tableRandomValue' => $tableRandomValue ) ); } $rows = ''; $row_element = isset($data['row_element']) ? $data['row_element'] : 'row'; $options = isset($data['options']) ? $data['options'] : array(); $actions = isset($data['actions']) ? $data['actions'] : array(); $dblclickActionArray = isset($data['actions']) ? $this->Hash->extract($data['actions'], '{n}[dbclickAction]') : array(); $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 . '"', $this->element( '/genericElements/IndexTable/' . $row_element, array( 'k' => $k, 'row' => $data_row, 'fields' => $data['fields'], 'options' => $options, 'actions' => $actions, 'primary' => $primary, 'tableRandomValue' => $tableRandomValue ) ) ); } $tbody = '' . $rows . ''; echo sprintf( '%s%s
', $tableRandomValue, $this->element( '/genericElements/IndexTable/headers', array( 'fields' => $data['fields'], 'paginator' => $this->Paginator, 'actions' => (empty($data['actions']) ? false : true), 'tableRandomValue' => $tableRandomValue ) ), $tbody ); if (!$skipPagination) { echo $this->element('/genericElements/IndexTable/pagination_counter', $paginationData); echo $this->element('/genericElements/IndexTable/pagination_links'); } echo '
'; ?>