diff --git a/src/Forms/GridField/GridFieldConfig_RecordEditor.php b/src/Forms/GridField/GridFieldConfig_RecordEditor.php
index 8e30b3d02..c67d116bb 100644
--- a/src/Forms/GridField/GridFieldConfig_RecordEditor.php
+++ b/src/Forms/GridField/GridFieldConfig_RecordEditor.php
@@ -1,8 +1,6 @@
addComponent($sort = new GridFieldSortableHeader());
$this->addComponent($filter = new GridFieldFilterHeader());
$this->addComponent(new GridFieldDataColumns());
- // @todo Move to versioned module, add via extension instead
- if (class_exists(Versioned::class)) {
- $this->addComponent(new GridFieldVersionedState(['Name', 'Title']));
- }
$this->addComponent(new GridFieldEditButton());
$this->addComponent(new GridFieldDeleteAction());
$this->addComponent(new GridFieldPageCount('toolbar-header-right'));
diff --git a/src/Forms/GridField/GridFieldVersionedState.php b/src/Forms/GridField/GridFieldVersionedState.php
index 44500f1b6..5f181d468 100644
--- a/src/Forms/GridField/GridFieldVersionedState.php
+++ b/src/Forms/GridField/GridFieldVersionedState.php
@@ -2,187 +2,22 @@
namespace SilverStripe\Forms\GridField;
-use SilverStripe\ORM\DataObject;
-use SilverStripe\Versioned\Versioned;
-use SilverStripe\Core\Convert;
+use SilverStripe\Dev\Deprecation;
+use SilverStripe\Versioned\VersionedGridFieldState\VersionedGridFieldState;
+
+if (!class_exists(VersionedGridFieldState::class)) {
+ return;
+}
+
/**
- * @todo Move to siverstripe/versioned module
+ * @deprecated 4.1..5.0
*/
-class GridFieldVersionedState implements GridField_ColumnProvider
+class GridFieldVersionedState extends VersionedGridFieldState
{
- /**
- * Column name for versioned state
- *
- * @var string
- */
- protected $column = null;
-
- /**
- * Fields/columns to display version states. We can specifies more than one
- * field but states only show in the first column found.
- */
- protected $versionedLabelFields = ['Title'];
-
- public function __construct($versionedLabelFields = null)
+ public function __construct(array $versionedLabelFields = ['Name', 'Title'])
{
- if ($versionedLabelFields) {
- $this->versionedLabelFields = $versionedLabelFields;
- }
- }
-
- /**
- * Modify the list of columns displayed in the table.
- *
- * @see {@link GridFieldDataColumns->getDisplayFields()}
- * @see {@link GridFieldDataColumns}.
- *
- * @param GridField $gridField
- * @param array $columns List reference of all column names.
- */
- public function augmentColumns($gridField, &$columns)
- {
- if (!class_exists(Versioned::class)) {
- return;
- }
-
- $model = $gridField->getModelClass();
- $isModelVersioned = $model::has_extension(Versioned::class);
- if (!$isModelVersioned) {
- return;
- }
-
- $matchedVersionedFields = array_intersect(
- $columns,
- $this->versionedLabelFields
- );
-
- if (count($matchedVersionedFields) > 0) {
- $this->column = array_values($matchedVersionedFields)[0];
- } elseif ($columns) {
- // Use first column
- $this->column = $columns[0];
- }
- }
-
- /**
- * Names of all columns which are affected by this component.
- *
- * @param GridField $gridField
- * @return array
- */
- public function getColumnsHandled($gridField)
- {
- return $this->column ? [$this->column] : [];
- }
-
- /**
- * HTML for the column, content of the
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)
- {
- $flagContent = '';
- $flags = $this->getStatusFlags($record);
- foreach ($flags as $class => $data) {
- if (is_string($data)) {
- $data = array('text' => $data);
- }
- $flagContent .= sprintf(
- " %s",
- 'status-' . Convert::raw2xml($class),
- (isset($data['title'])) ? sprintf(' title="%s"', Convert::raw2xml($data['title'])) : '',
- Convert::raw2xml($data['text'])
- );
- }
- return $flagContent;
- }
-
- /**
- * Attributes for the element containing the content returned by {@link getColumnContent()}.
- *
- * @param GridField $gridField
- * @param DataObject $record displayed in this row
- * @param string $columnName
- * @return array
- */
- public function getColumnAttributes($gridField, $record, $columnName)
- {
- return [];
- }
-
- /**
- * Additional metadata about the column which can be used by other components,
- * e.g. to set a title for a search column header.
- *
- * @param GridField $gridField
- * @param string $columnName
- * @return array - Map of arbitrary metadata identifiers to their values.
- */
- public function getColumnMetadata($gridField, $columnName)
- {
- return [];
- }
-
-
- /**
- * A flag provides the user with additional data about the current item
- * status, for example a "removed from draft" status. Each item can have
- * more than one status flag. Returns a map of a unique key to a
- * (localized) title for the flag. The unique key can be reused as a CSS
- * class.
- *
- * Example (simple):
- *
- * ```php
- * "deletedonlive" => "Deleted"
- * ```
- *
- * Example (with optional title attribute):
- *
- * ```php
- * "deletedonlive" => array(
- * 'text' => "Deleted",
- * 'title' => 'This page has been deleted'
- * )
- * ```
- *
- * @param Versioned|DataObject $record - the record to check status for
- * @return array
- */
- protected function getStatusFlags($record)
- {
- if (!$record->hasExtension(Versioned::class)) {
- return [];
- }
-
- $flags = [];
- if ($record->isOnLiveOnly()) {
- $flags['removedfromdraft'] = array(
- 'text' => _t(__CLASS__ . '.ONLIVEONLYSHORT', 'On live only'),
- 'title' => _t(__CLASS__ . '.ONLIVEONLYSHORTHELP', 'Item is published, but has been deleted from draft'),
- );
- } elseif ($record->isArchived()) {
- $flags['archived'] = array(
- 'text' => _t(__CLASS__ . '.ARCHIVEDPAGESHORT', 'Archived'),
- 'title' => _t(__CLASS__ . '.ARCHIVEDPAGEHELP', 'Item is removed from draft and live'),
- );
- } elseif ($record->isOnDraftOnly()) {
- $flags['addedtodraft'] = array(
- 'text' => _t(__CLASS__ . '.ADDEDTODRAFTSHORT', 'Draft'),
- 'title' => _t(__CLASS__ . '.ADDEDTODRAFTHELP', "Item has not been published yet")
- );
- } elseif ($record->isModifiedOnDraft()) {
- $flags['modified'] = array(
- 'text' => _t(__CLASS__ . '.MODIFIEDONDRAFTSHORT', 'Modified'),
- 'title' => _t(__CLASS__ . '.MODIFIEDONDRAFTHELP', 'Item has unpublished changes'),
- );
- }
-
- return $flags;
+ parent::__construct($versionedLabelFields);
+ Deprecation::notice('5.0', 'Use ' . VersionedGridFieldState::class . ' instead');
}
}
|