/** * Generate export fields for CSV. * * @param GridField $gridField * @return array */ public function generateExportFileData($gridField) { $separator = $this->csvSeparator; $singl = singleton($gridField->getModelClass()); if ($singl->hasMethod('exportedFields')) { $fallbackColumns = $singl->exportedFields(); } else { $fallbackColumns = $singl->summaryFields(); } $csvColumns = $this->exportColumns ? $this->exportColumns : $fallbackColumns; $fileData = ''; $columnData = array(); $fieldItems = new ArrayList(); if ($this->csvHasHeader) { $headers = array(); // determine the CSV headers. If a field is callable (e.g. anonymous function) then use the // source name as the header instead foreach ($csvColumns as $columnSource => $columnHeader) { $headers[] = !is_string($columnHeader) && is_callable($columnHeader) ? utf8_decode($columnSource) : utf8_decode($columnHeader); } $fileData .= "\"" . implode("\"{$separator}\"", array_values($headers)) . "\""; $fileData .= "\n"; } $items = $gridField->getList(); foreach ($items as $item) { if (!$item->hasMethod('canView') || $item->canView()) { $columnData = array(); foreach ($csvColumns as $columnSource => $columnHeader) { if (!is_string($columnHeader) && is_callable($columnHeader)) { if ($item->hasMethod($columnSource)) { $relObj = $item->{$columnSource}(); } else { $relObj = $item->relObject($columnSource); } $value = $columnHeader($relObj); } else { $value = $gridField->getDataFieldValue($item, $columnSource); if (!$value) { $value = $gridField->getDataFieldValue($item, $columnHeader); } } $value = str_replace(array("\r", "\n"), "\n", $value); $columnData[] = '"' . str_replace('"', '""', utf8_decode($value)) . '"'; } $fileData .= implode($separator, $columnData); $fileData .= "\n"; } if ($item->hasMethod('destroy')) { $item->destroy(); } } return $fileData; }
/** * HTML for the column, content of the <td> element. * * @param GridField $gridField * @param DataObject $record - Record displayed in this row * @param string $columnName * @return string - HTML for the column. Return NULL to skip. */ public function getColumnContent($gridField, $record, $columnName) { $field = new TextareaField('MetaDescription'); $value = $gridField->getDataFieldValue($record, $columnName); $value = $this->formatValue($gridField, $record, $columnName, $value); $field->setName($this->getFieldName($field->getName(), $gridField, $record)); $field->setValue($value); return $field->Field() . $this->getErrorMessages(); }
/** * Generate export fields for CSV. * * @param GridField $gridField * @return array */ public function generateExportFileData($gridField) { $separator = $this->csvSeparator; $csvColumns = $this->exportColumns ? $this->exportColumns : singleton($gridField->getModelClass())->summaryFields(); $fileData = ''; $columnData = array(); $fieldItems = new ArrayList(); if ($this->csvHasHeader) { $headers = array(); // determine the CSV headers. If a field is callable (e.g. anonymous function) then use the // source name as the header instead foreach ($csvColumns as $columnSource => $columnHeader) { $headers[] = !is_string($columnHeader) && is_callable($columnHeader) ? $columnSource : $columnHeader; } $fileData .= "\"" . implode("\"{$separator}\"", array_values($headers)) . "\""; $fileData .= "\n"; } $items = $gridField->getList(); // Apply filters for a datalist if ($items instanceof DataList) { if (!empty($this->filter)) { $items = $items->filter($this->filter); } if (!empty($this->exclude)) { $items = $items->exclude($this->exclude); } if (!empty($this->filterAny)) { $items = $items->filterAny($this->filterAny); } if (!empty($this->where)) { $items = $items->where($this->where); } } foreach ($items as $item) { $columnData = array(); foreach ($csvColumns as $columnSource => $columnHeader) { if (!is_string($columnHeader) && is_callable($columnHeader)) { if ($item->hasMethod($columnSource)) { $relObj = $item->{$columnSource}(); } else { $relObj = $item->relObject($columnSource); } $value = $columnHeader($relObj); } else { $value = $gridField->getDataFieldValue($item, $columnSource); } $value = str_replace(array("\r", "\n"), "\n", $value); $columnData[] = '"' . str_replace('"', '\\"', $value) . '"'; } $fileData .= implode($separator, $columnData); $fileData .= "\n"; $item->destroy(); } return $fileData; }