Abstracting GridField row class generation

This commit is contained in:
Christopher Pitt 2015-04-20 14:38:49 +12:00
parent 6c02770d64
commit 5231dc7cc7

View File

@ -349,7 +349,9 @@ class GridField extends FormField {
if($record->hasMethod('canView') && !$record->canView()) { if($record->hasMethod('canView') && !$record->canView()) {
continue; continue;
} }
$rowContent = ''; $rowContent = '';
foreach($this->getColumns() as $column) { foreach($this->getColumns() as $column) {
$colContent = $this->getColumnContent($record, $column); $colContent = $this->getColumnContent($record, $column);
@ -360,10 +362,12 @@ class GridField extends FormField {
$colAttributes = $this->getColumnAttributes($record, $column); $colAttributes = $this->getColumnAttributes($record, $column);
$rowContent .= $this->newCell($this, $total, $idx, $record, $colAttributes, $colContent); $rowContent .= $this->newCell($total, $idx, $record, $colAttributes, $colContent);
} }
$rows[] = $this->newRow($this, $total, $idx, $record, array(), $rowContent); $rowAttributes = $this->getRowAttributes($total, $idx, $record);
$rows[] = $this->newRow($total, $idx, $record, $rowAttributes, $rowContent);
} }
$content['body'] = implode("\n", $rows); $content['body'] = implode("\n", $rows);
} }
@ -422,7 +426,6 @@ class GridField extends FormField {
} }
/** /**
* @param GridField $gridfield
* @param int $total * @param int $total
* @param int $index * @param int $index
* @param DataObject $record * @param DataObject $record
@ -431,7 +434,7 @@ class GridField extends FormField {
* *
* @return string * @return string
*/ */
protected function newCell($gridfield, $total, $index, $record, $attributes, $content) { protected function newCell($total, $index, $record, $attributes, $content) {
return FormField::create_tag( return FormField::create_tag(
'td', 'td',
$attributes, $attributes,
@ -440,7 +443,6 @@ class GridField extends FormField {
} }
/** /**
* @param GridField $gridfield
* @param int $total * @param int $total
* @param int $index * @param int $index
* @param DataObject $record * @param DataObject $record
@ -449,7 +451,39 @@ class GridField extends FormField {
* *
* @return string * @return string
*/ */
protected function newRow($gridfield, $total, $index, $record, $attributes, $content) { protected function newRow($total, $index, $record, $attributes, $content) {
return FormField::create_tag(
'tr',
$attributes,
$content
);
}
/**
* @param int $total
* @param int $index
* @param DataObject $record
*
* @return array
*/
protected function getRowAttributes($total, $index, $record) {
$rowClasses = $this->newRowClasses($total, $index, $record);
return array(
'class' => implode(' ', $rowClasses),
'data-id' => $record->ID,
'data-class' => $record->ClassName,
);
}
/**
* @param int $total
* @param int $index
* @param DataObject $record
*
* @return array
*/
protected function newRowClasses($total, $index, $record) {
$classes = array('ss-gridfield-item'); $classes = array('ss-gridfield-item');
if($index == 0) { if($index == 0) {
@ -462,15 +496,7 @@ class GridField extends FormField {
$classes[] = ($index % 2) ? 'even' : 'odd'; $classes[] = ($index % 2) ? 'even' : 'odd';
return FormField::create_tag( return $classes;
'tr',
array(
'class' => implode(' ', $classes),
'data-id' => $record->ID,
'data-class' => $record->ClassName,
),
$content
);
} }
public function Field($properties = array()) { public function Field($properties = array()) {