From 281a9e9132625d68845dfc9be0e9103c106b5c81 Mon Sep 17 00:00:00 2001 From: Robbie Averill Date: Thu, 12 Apr 2018 09:53:49 +1200 Subject: [PATCH 1/4] API Remove CMSPreviewable interface from BaseElement Previews are managed by silverstripe/versioned-admin in SS 4.2 and newer, so this interface is not necessary. --- src/Models/BaseElement.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Models/BaseElement.php b/src/Models/BaseElement.php index 088b95ae..78c5b949 100644 --- a/src/Models/BaseElement.php +++ b/src/Models/BaseElement.php @@ -27,7 +27,6 @@ use SilverStripe\Forms\HiddenField; use SilverStripe\Forms\NumericField; use SilverStripe\Forms\TextField; -use SilverStripe\ORM\CMSPreviewable; use SilverStripe\ORM\DataObject; use SilverStripe\ORM\FieldType\DBField; use SilverStripe\ORM\FieldType\DBHTMLText; @@ -52,7 +51,7 @@ * * @method ElementalArea Parent() */ -class BaseElement extends DataObject implements CMSPreviewable +class BaseElement extends DataObject { /** * Override this on your custom elements to specify a CSS icon class From 53499a2a0e46c19d0e8dbfd96469aa6b1ef2f687 Mon Sep 17 00:00:00 2001 From: Robbie Averill Date: Thu, 12 Apr 2018 10:05:48 +1200 Subject: [PATCH 2/4] API Remove element history components in favour of history viewer, update CMS version Minimum CMS version bumped to 4.2 to include silverstripe/versioned-admin with the history viewer. Previos history components for elemental are removed in favour of this new React implementation. --- .travis.yml | 2 +- client/dist/styles/bundle.css | 2 +- client/src/styles/history.scss | 36 +--- composer.json | 5 +- src/Controllers/ElementController.php | 4 - src/ElementalEditor.php | 2 - ...ridFieldDetailFormItemRequestExtension.php | 35 +--- src/Forms/ElementalGridFieldHistoryButton.php | 26 --- ...istoricalVersionedGridFieldItemRequest.php | 185 ------------------ src/Models/BaseElement.php | 93 --------- src/Models/ElementContent.php | 5 +- src/Models/ElementalArea.php | 2 +- 12 files changed, 13 insertions(+), 384 deletions(-) delete mode 100644 src/Forms/ElementalGridFieldHistoryButton.php delete mode 100644 src/Forms/HistoricalVersionedGridFieldItemRequest.php diff --git a/.travis.yml b/.travis.yml index 54e9c369..30841b70 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,7 +2,7 @@ language: php env: global: - - COMPOSER_ROOT_VERSION=2.x-dev + - COMPOSER_ROOT_VERSION=3.0.x-dev matrix: include: diff --git a/client/dist/styles/bundle.css b/client/dist/styles/bundle.css index 45d4cc23..7f28a38f 100644 --- a/client/dist/styles/bundle.css +++ b/client/dist/styles/bundle.css @@ -1 +1 @@ -.elemental-edit{display:block;color:inherit}.elemental-edit:focus,.elemental-edit:hover{text-decoration:none;color:inherit}.elemental-editor .col-EditorPreview{padding-left:0}.elemental-preview__detail{display:inline-block;margin-left:.76925rem}.elemental-preview__detail h3{font-weight:400;line-height:26px;margin:0;-webkit-font-smoothing:antialiased}.elemental-preview__detail p{-webkit-box-align:center;-webkit-align-items:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:flex;margin-bottom:0;margin-top:6px}.elemental-preview__detail small{color:#566b8d;font-size:13px}.elemental-preview__thumbnail-image{margin-right:.76925rem}.elemental-preview__thumbnail-image img{border-radius:.192rem}.elemental-preview__thumbnail-image--placeholder{border-radius:0;height:36px;margin-left:-4px}.elemental-preview__icon{color:#566b8d;display:inline-block;font-size:2.3rem;width:28px;vertical-align:top}.ss-gridfield-orderable.elemental-editor .col-reorder .handle{opacity:.5;padding:22px 0 0}.ss-gridfield-orderable.elemental-editor .col-reorder .handle .icon{font-size:1.3em}.elemental-editor .ss-gridfield-item:hover .handle{opacity:1}.elemental-editor .grid-field__table{margin-bottom:12px}@media (max-width:991px){.elemental-editor .grid-field__table .col-EditorPreview{display:table-cell}}.element-item--draft,.element-item--modified{border:1px solid #cf3f00;border-radius:100%;bottom:6px;-webkit-box-shadow:0 0 1px .5px #fff;box-shadow:0 0 1px .5px #fff;display:block;height:8px;left:22px;position:relative;width:8px;z-index:1}.element-item--draft{background-color:#fff7f0}.element-item--modified{background-color:#ff7f22}.element-history__date--small{color:#566b8d;font-size:.846rem;margin-left:2px}.elemental-block__history--detail{margin-bottom:40px}.elemental-block__history--detail .ss-gridfield-item{background-color:#0271c3;color:#fff}.elemental-block__history--detail .ss-gridfield-item:hover{background-color:#0271c3;color:#fff;cursor:default}.elemental-block__history--detail .element-history__date--small{color:#fff;font-size:.846rem;margin-left:2px}.elemental-report__grid-field .ss-gridfield-item td:first-child,.ss-gridfield-item[data-class=DNADesign\\Elemental\\Models\\ElementContent] .col-Version:first-child{width:1px}.elemental-report__grid-field .col-Icon{font-size:1.5rem}.elemental-report__grid-field .element-item--draft,.elemental-report__grid-field .element-item--modified{bottom:8px;left:14px;height:6px;width:6px}.textcheckboxgroup .input-group-addon .form-check-input{margin-top:4px} \ No newline at end of file +.elemental-edit{display:block;color:inherit}.elemental-edit:focus,.elemental-edit:hover{text-decoration:none;color:inherit}.elemental-editor .col-EditorPreview{padding-left:0}.elemental-preview__detail{display:inline-block;margin-left:.76925rem}.elemental-preview__detail h3{font-weight:400;line-height:26px;margin:0;-webkit-font-smoothing:antialiased}.elemental-preview__detail p{-webkit-box-align:center;-webkit-align-items:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:flex;margin-bottom:0;margin-top:6px}.elemental-preview__detail small{color:#566b8d;font-size:13px}.elemental-preview__thumbnail-image{margin-right:.76925rem}.elemental-preview__thumbnail-image img{border-radius:.192rem}.elemental-preview__thumbnail-image--placeholder{border-radius:0;height:36px;margin-left:-4px}.elemental-preview__icon{color:#566b8d;display:inline-block;font-size:2.3rem;width:28px;vertical-align:top}.ss-gridfield-orderable.elemental-editor .col-reorder .handle{opacity:.5;padding:22px 0 0}.ss-gridfield-orderable.elemental-editor .col-reorder .handle .icon{font-size:1.3em}.elemental-editor .ss-gridfield-item:hover .handle{opacity:1}.elemental-editor .grid-field__table{margin-bottom:12px}@media (max-width:991px){.elemental-editor .grid-field__table .col-EditorPreview{display:table-cell}}.element-item--draft,.element-item--modified{border:1px solid #cf3f00;border-radius:100%;bottom:6px;-webkit-box-shadow:0 0 1px .5px #fff;box-shadow:0 0 1px .5px #fff;display:block;height:8px;left:22px;position:relative;width:8px;z-index:1}.element-item--draft{background-color:#fff7f0}.element-item--modified{background-color:#ff7f22}.elemental-block__history-tab{margin-top:-1.5385rem}.elemental-report__grid-field .ss-gridfield-item td:first-child{width:1px}.elemental-report__grid-field .col-Icon{font-size:1.5rem}.elemental-report__grid-field .element-item--draft,.elemental-report__grid-field .element-item--modified{bottom:8px;left:14px;height:6px;width:6px}.textcheckboxgroup .input-group-addon .form-check-input{margin-top:4px} \ No newline at end of file diff --git a/client/src/styles/history.scss b/client/src/styles/history.scss index 5cf9a220..67bf66d1 100644 --- a/client/src/styles/history.scss +++ b/client/src/styles/history.scss @@ -1,34 +1,4 @@ -// todo: replace with core variable -$history-blue: #0271c3; - -.element-history__date--small { - color: $text-muted; - font-size: $font-size-xs; - margin-left: 2px; -} - -.elemental-block__history--detail { - margin-bottom: 40px; - - .ss-gridfield-item { - background-color: $history-blue; - color: $white; - } - - .ss-gridfield-item:hover { - background-color: $history-blue; - color: $white; - cursor: default; - } - - .element-history__date--small { - color: $white; - font-size: $font-size-xs; - margin-left: 2px; - } -} - -// Reset of icon column -.ss-gridfield-item[data-class="DNADesign\\Elemental\\Models\\ElementContent"] .col-Version:first-child { - width: 1px; +// Pull history viewer up a little! +.elemental-block__history-tab { + margin-top: -$panel-padding-x; } diff --git a/composer.json b/composer.json index 25abb65d..1ee68dcc 100644 --- a/composer.json +++ b/composer.json @@ -16,9 +16,10 @@ "minimum-stability": "dev", "prefer-stable": true, "require": { - "silverstripe/cms": "^4.1", + "silverstripe/cms": "^4.2@dev", + "silverstripe/versioned-admin": "^1@dev", "symbiote/silverstripe-gridfieldextensions": "^3.1", - "silverstripe/vendor-plugin": "^1.0" + "silverstripe/vendor-plugin": "^1" }, "require-dev": { "phpunit/phpunit": "^5.7", diff --git a/src/Controllers/ElementController.php b/src/Controllers/ElementController.php index 0caa5543..4fc490cf 100644 --- a/src/Controllers/ElementController.php +++ b/src/Controllers/ElementController.php @@ -3,12 +3,8 @@ namespace DNADesign\Elemental\Controllers; use DNADesign\Elemental\Models\BaseElement; -use SilverStripe\Admin\LeftAndMain; use SilverStripe\Control\Controller; use SilverStripe\Control\Director; -use SilverStripe\Core\ClassInfo; -use SilverStripe\i18n\i18n; -use SilverStripe\Security\Member; use SilverStripe\View\Requirements; /** diff --git a/src/ElementalEditor.php b/src/ElementalEditor.php index 3b521154..07c88bca 100644 --- a/src/ElementalEditor.php +++ b/src/ElementalEditor.php @@ -14,7 +14,6 @@ use SilverStripe\Forms\GridField\GridFieldPageCount; use SilverStripe\Forms\GridField\GridFieldPaginator; use SilverStripe\Forms\GridField\GridFieldSortableHeader; -use SilverStripe\Forms\GridField\GridFieldVersionedState; use SilverStripe\Versioned\VersionedGridFieldState\VersionedGridFieldState; use Symbiote\GridFieldExtensions\GridFieldAddNewMultiClass; use Symbiote\GridFieldExtensions\GridFieldOrderableRows; @@ -117,7 +116,6 @@ public function getField() GridFieldDeleteAction::class, GridFieldPaginator::class, GridFieldPageCount::class, - GridFieldVersionedState::class, VersionedGridFieldState::class, GridFieldAddExistingAutocompleter::class, )) diff --git a/src/Extensions/GridFieldDetailFormItemRequestExtension.php b/src/Extensions/GridFieldDetailFormItemRequestExtension.php index af2092e7..45b2ea85 100644 --- a/src/Extensions/GridFieldDetailFormItemRequestExtension.php +++ b/src/Extensions/GridFieldDetailFormItemRequestExtension.php @@ -2,15 +2,9 @@ namespace DNADesign\Elemental\Extensions; -use SilverStripe\ORM\FieldType\DBField; -use SilverStripe\Core\Extension; -use SilverStripe\Control\Controller; -use SilverStripe\ORM\CMSPreviewable; -use SilverStripe\CMS\Controllers\SilverStripeNavigator; -use SilverStripe\Forms\LiteralField; use DNADesign\Elemental\Models\BaseElement; -use SilverStripe\Forms\FieldList; -use SilverStripe\Forms\FormAction; +use SilverStripe\Core\Extension; +use SilverStripe\ORM\FieldType\DBField; class GridFieldDetailFormItemRequestExtension extends Extension { @@ -28,29 +22,4 @@ public function updateBreadcrumbs($crumbs) )); } } - - /** - * Updates the edit form to inject the preview panel controls if needed - * i.e. if the class being edited implements CMSPreviewable - * - * @param SilverStripe\Forms\Form $form to be modified by reference - */ - public function updateItemEditForm(&$form) - { - $fields = $form->Fields(); - if ($this->owner->getRecord() instanceof CMSPreviewable && - !$fields->fieldByName('SilverStripeNavigator') - ) { - $template = Controller::curr() - ->getTemplatesWithSuffix('_SilverStripeNavigator'); - $navigator = SilverStripeNavigator::create($this->owner->record); - $field = LiteralField::create( - 'SilverStripeNavigator', - $navigator->renderWith($template) - )->setAllowHTML(true); - $fields->push($field); - $form->addExtraClass('cms-previewable') - ->removeExtraClass('cms-panel-padded center'); - } - } } diff --git a/src/Forms/ElementalGridFieldHistoryButton.php b/src/Forms/ElementalGridFieldHistoryButton.php deleted file mode 100644 index 71abf162..00000000 --- a/src/Forms/ElementalGridFieldHistoryButton.php +++ /dev/null @@ -1,26 +0,0 @@ -isLatestVersion()) { - return null; - } - - $data = new ArrayData(array( - 'Link' => Controller::join_links($field->Link('item'), $record->ID, 'view?VersionID='. $record->Version) - )); - - $template = SSViewer::get_templates_by_class($this, '', GridFieldViewButton::class); - - return $data->renderWith($template); - } -} diff --git a/src/Forms/HistoricalVersionedGridFieldItemRequest.php b/src/Forms/HistoricalVersionedGridFieldItemRequest.php deleted file mode 100644 index 9fb3b8cf..00000000 --- a/src/Forms/HistoricalVersionedGridFieldItemRequest.php +++ /dev/null @@ -1,185 +0,0 @@ -versionId = $requestHandler->getRequest()->requestVar('VersionID')) { - $record = Versioned::get_version(get_class($record), $record->ID, $this->versionId); - - if (!$record) { - return $requestHandler->httpError(404, _t(__CLASS__.'.InvalidVersion', 'Invalid version')); - } - } - - parent::__construct($gridField, $component, $record, $requestHandler, $popupFormName); - } - - public function view($request) - { - if (!$this->record->canView()) { - $this->httpError(403); - } - - $controller = $this->getToplevelController(); - - $form = $this->ItemEditForm(); - - $data = ArrayData::create([ - 'Backlink' => $controller->Link(), - 'ItemEditForm' => $form - ]); - $return = $data->renderWith($this->getTemplates()); - - if ($request->isAjax()) { - return $return; - } - - return $controller->customise(['Content' => $return]); - } - - public function ItemEditForm() - { - $form = parent::ItemEditForm(); - - $form->Fields()->push(HiddenField::create('VersionID', '', $this->record->Version)); - $form->Fields()->addFieldToTab( - 'Root.Main', - ReadonlyField::create('Sort', _t(__CLASS__ .'.Position', 'Position'), $this->record->Sort) - ); - - $fields = $form->Fields()->makeReadonly(); - $fields->unshift($this->getVersionGridField()->setForm($form)); - - $form->setFields($fields); - - return $form; - } - - public function doRollback($data, $form) - { - // Check permission - if (!$this->record->canEdit()) { - return $this->httpError(403); - } - - // Save from form data - $this->record->doRollbackTo($this->record->Version); - - $link = '"' - . htmlspecialchars($this->record->Title, ENT_QUOTES) - . '"'; - - $message = _t( - __CLASS__ .'.RolledBack', - 'Rolled back {name} to version {version} {link}', - array( - 'name' => $this->record->i18n_singular_name(), - 'version' => $this->record->Version, - 'link' => $link - ) - ); - - $form->sessionMessage($message, 'good', ValidationResult::CAST_HTML); - $controller = $this->getToplevelController(); - - return $controller->redirect($this->record->CMSEditLink()); - } - - public function getFormActions() - { - $record = $this->getRecord(); - - if (!$record || !$record->has_extension(Versioned::class)) { - return $actions; - } - - $this->beforeExtending('updateFormActions', function (FieldList $actions) use ($record) { - if (!$record->isLatestVersion()) { - $actions->removeByName('action_doUnpublish'); - $actions->removeByName('action_doDelete'); - $actions->removeByName('action_doSave'); - $actions->removeByName('action_doPublish'); - $actions->removeByName('action_doArchive'); - } - - if ($record->canEdit()) { - $actions->push( - FormAction::create( - 'doRollback', - _t(__CLASS__.'.REVERT', 'Revert to this version') - ) - ->setUseButtonTag(true) - ->setDescription(_t( - __CLASS__.'.BUTTONREVERTDESC', - 'Publish this record to the draft site' - )) - ->addExtraClass('btn-warning font-icon-back-in-time') - ); - } - }); - - $actions = parent::getFormActions(); - - return $actions; - } - - /** - * Get the specific version in a GridField, as the only record - * - * @return GridField - */ - public function getVersionGridField() - { - /** @var GridField $versionGridField */ - $versionGridField = $this->getRecord()->getHistoryFields(false)->fieldByName('History'); - - /** @var GridFieldConfig */ - $config = $versionGridField->getConfig(); - - $config->removeComponentsByType([ - GridFieldPaginator::class, - ElementalGridFieldHistoryButton::class, - ]); - - // Filter this version ID - $versionGridField->setList( - $versionGridField->getList()->filter(['Version' => $this->versionId]) - ); - - // Add a unique class name so we can style - $versionGridField->addExtraClass('elemental-block__history--detail'); - - return $versionGridField; - } -} diff --git a/src/Models/BaseElement.php b/src/Models/BaseElement.php index 78c5b949..524f75f6 100644 --- a/src/Models/BaseElement.php +++ b/src/Models/BaseElement.php @@ -3,8 +3,6 @@ namespace DNADesign\Elemental\Models; use DNADesign\Elemental\Controllers\ElementController; -use DNADesign\Elemental\Forms\ElementalGridFieldHistoryButton; -use DNADesign\Elemental\Forms\HistoricalVersionedGridFieldItemRequest; use DNADesign\Elemental\Forms\TextCheckboxGroupField; use Exception; use SilverStripe\CMS\Controllers\CMSPageEditController; @@ -16,14 +14,6 @@ use SilverStripe\Forms\CheckboxField; use SilverStripe\Forms\DropdownField; use SilverStripe\Forms\FieldList; -use SilverStripe\Forms\GridField\GridField; -use SilverStripe\Forms\GridField\GridFieldConfig_RecordViewer; -use SilverStripe\Forms\GridField\GridFieldDataColumns; -use SilverStripe\Forms\GridField\GridFieldDetailForm; -use SilverStripe\Forms\GridField\GridFieldPageCount; -use SilverStripe\Forms\GridField\GridFieldSortableHeader; -use SilverStripe\Forms\GridField\GridFieldToolbarHeader; -use SilverStripe\Forms\GridField\GridFieldViewButton; use SilverStripe\Forms\HiddenField; use SilverStripe\Forms\NumericField; use SilverStripe\Forms\TextField; @@ -37,7 +27,6 @@ use SilverStripe\View\ArrayData; use SilverStripe\View\Parsers\URLSegmentFilter; use SilverStripe\View\Requirements; -use Symbiote\GridFieldExtensions\GridFieldTitleHeader; /** * Class BaseElement @@ -316,70 +305,12 @@ public function getCMSFields() $fields->addFieldToTab('Root.History', $historyViewer); $fields->fieldByName('Root.History')->addExtraClass('elemental-block__history-tab'); - } else { - // PHP based GridField history viewer for SS < 4.2 - $history = $this->getHistoryFields(); - - if ($history) { - $fields->addFieldsToTab('Root.History', $history); - } } }); return parent::getCMSFields(); } - /** - * Returns the history fields for this element. - * - * @param bool $checkLatestVersion Whether to check if this is the latest version. Prevents recursion, but can be - * overridden to get the history GridField if required. - * @return FieldList - */ - public function getHistoryFields($checkLatestVersion = true) - { - if ($checkLatestVersion && !$this->isLatestVersion()) { - // if viewing the history of the of page then don't show the history - // fields as then we have recursion. - return null; - } - - Requirements::javascript('dnadesign/silverstripe-elemental:client/dist/js/bundle.js'); - - $config = GridFieldConfig_RecordViewer::create(); - $config->removeComponentsByType(GridFieldPageCount::class); - $config->removeComponentsByType(GridFieldToolbarHeader::class); - // Replace the sortable ID column with a static header component - $config->removeComponentsByType(GridFieldSortableHeader::class); - $config->addComponent(new GridFieldTitleHeader); - - $config - ->getComponentByType(GridFieldDetailForm::class) - ->setItemRequestClass(HistoricalVersionedGridFieldItemRequest::class); - - $config->getComponentByType(GridFieldDataColumns::class) - ->setDisplayFields([ - 'Version' => '#', - 'RecordStatus' => _t(__CLASS__ . '.Record', 'Record'), - 'getAuthor.Name' => _t(__CLASS__ . '.Author', 'Author') - ]) - ->setFieldFormatting([ - 'RecordStatus' => '$VersionedStateNice on ' - . '$LastEditedNice', - ]); - - $config->removeComponentsByType(GridFieldViewButton::class); - $config->addComponent(new ElementalGridFieldHistoryButton()); - - $history = Versioned::get_all_versions(__CLASS__, $this->ID) - ->sort('Version', 'DESC'); - - return FieldList::create( - GridField::create('History', '', $history, $config) - ->addExtraClass('elemental-block__history') - ); - } - /** * Get the type of the current block, for use in GridField summaries, block * type dropdowns etc. Examples are "Content", "File", "Media", etc. @@ -884,28 +815,4 @@ public function getPageTitle() return null; } - - /** - * Get a "nice" label for use in the block history GridField - * - * @return string - */ - public function getVersionedStateNice() - { - if ($this->WasPublished) { - return _t(__CLASS__ . '.Published', 'Published'); - } - - return _t(__CLASS__ . '.Modified', 'Modified'); - } - - /** - * Return a formatted date for use in the block history GridField - * - * @return string - */ - public function getLastEditedNice() - { - return $this->dbObject('LastEdited')->Nice(); - } } diff --git a/src/Models/ElementContent.php b/src/Models/ElementContent.php index 8e11fc79..c73d918d 100644 --- a/src/Models/ElementContent.php +++ b/src/Models/ElementContent.php @@ -2,8 +2,7 @@ namespace DNADesign\Elemental\Models; -use SilverStripe\Forms\HTMLEditor\HtmlEditorField; -use SilverStripe\Forms\DropdownField; +use SilverStripe\Forms\FieldList; use SilverStripe\ORM\FieldType\DBField; class ElementContent extends BaseElement @@ -29,7 +28,7 @@ class ElementContent extends BaseElement */ public function getCMSFields() { - $this->beforeUpdateCMSFields(function ($fields) { + $this->beforeUpdateCMSFields(function (FieldList $fields) { $fields ->fieldByName('Root.Main.HTML') ->setTitle(_t(__CLASS__ . '.ContentLabel', 'Content')); diff --git a/src/Models/ElementalArea.php b/src/Models/ElementalArea.php index f0f03fa1..516f3d9b 100644 --- a/src/Models/ElementalArea.php +++ b/src/Models/ElementalArea.php @@ -6,13 +6,13 @@ use SilverStripe\CMS\Model\SiteTree; use SilverStripe\Core\ClassInfo; use SilverStripe\Core\Extensible; +use SilverStripe\Core\Injector\Injector; use SilverStripe\ORM\ArrayList; use SilverStripe\ORM\DataObject; use SilverStripe\ORM\FieldType\DBField; use SilverStripe\ORM\FieldType\DBHTMLText; use SilverStripe\ORM\HasManyList; use SilverStripe\Versioned\Versioned; -use SilverStripe\Core\Injector\Injector; /** * Class ElementalArea From 13d895ae34310cd9d51ddc44194c51b55a236abf Mon Sep 17 00:00:00 2001 From: Robbie Averill Date: Thu, 12 Apr 2018 17:28:14 +1200 Subject: [PATCH 3/4] Bump matrix versions in Travis configuration --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 30841b70..2db8a4f7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,11 +7,11 @@ env: matrix: include: - php: 5.6 - env: DB=MYSQL RECIPE_VERSION=1.1.x-dev PHPCS_TEST=1 PHPUNIT_TEST=1 + env: DB=MYSQL RECIPE_VERSION=1.2.x-dev PHPCS_TEST=1 PHPUNIT_TEST=1 #- php: 7.0 # env: DB=PGSQL PHPUNIT_TEST=1 - php: 7.0 - env: DB=MYSQL RECIPE_VERSION=1.1.x-dev PHPUNIT_TEST=1 + env: DB=MYSQL RECIPE_VERSION=1.2.x-dev PHPUNIT_TEST=1 - php: 7.1 env: DB=MYSQL RECIPE_VERSION=1.2.x-dev PHPUNIT_COVERAGE_TEST=1 - php: 7.2 From 6b05b58cf9f7b8bb635263b703d07e46151e5800 Mon Sep 17 00:00:00 2001 From: Robbie Averill Date: Thu, 12 Apr 2018 18:07:49 +1200 Subject: [PATCH 4/4] FIX Update history viewer field tests for SS 4.2 with versioned-admin --- tests/BaseElementTest.php | 30 +++++++++--------------------- 1 file changed, 9 insertions(+), 21 deletions(-) diff --git a/tests/BaseElementTest.php b/tests/BaseElementTest.php index b066b007..a7fce287 100644 --- a/tests/BaseElementTest.php +++ b/tests/BaseElementTest.php @@ -2,6 +2,7 @@ namespace DNADesign\Elemental\Tests; +use function class_exists; use DNADesign\Elemental\Controllers\ElementController; use DNADesign\Elemental\Extensions\ElementalPageExtension; use DNADesign\Elemental\Models\BaseElement; @@ -13,6 +14,7 @@ use SilverStripe\Core\Config\Config; use SilverStripe\Dev\FunctionalTest; use SilverStripe\Forms\GridField\GridField; +use SilverStripe\VersionedAdmin\Forms\HistoryViewerField; class BaseElementTest extends FunctionalTest { @@ -113,32 +115,18 @@ public function testGetIcon() $this->assertEmpty($element->getIcon()); } - public function testGetHistoryFields() + public function testGetHistoryViewerField() { + if (!class_exists(HistoryViewerField::class)) { + $this->markTestSkipped('This test requires silverstripe/versioned-admin to be installed.'); + } $this->logInWithPermission(); /** @var ElementContent $element */ $element = $this->objFromFixture(ElementContent::class, 'content1'); - $history = $element->getHistoryFields()->fieldByName('History'); - - $this->assertInstanceOf(GridField::class, $history); - $this->assertEquals(1, $history->getList()->count()); - - $element->HTML = '

Changed

'; - $element->write(); - $element->publishRecursive(); - - // Load latest version from the DB - $element = ElementContent::get()->byId($element->ID); - - $history = $element->getHistoryFields()->dataFieldByName('History'); - $this->assertInstanceOf(GridField::class, $history); - // Note: assertion handles SS 4.0/4.1 which doesn't create a new version, and SS 4.2 which does - $this->assertGreaterThanOrEqual( - 2, - $history->getList()->count(), - 'Publishing a new version creates a new record' - ); + + $history = $element->getCMSFields()->dataFieldByName('ElementHistory'); + $this->assertInstanceOf(HistoryViewerField::class, $history); } public function testStyleVariants()