silverstripe-cms/code/Controllers/SilverStripeNavigatorItem_Unversioned.php
GuySartorelli 803f19b3a4
NEW Add preview state for non-versioned DataObjects. (#2692)
Currently only Versioned DataObjects are enabled for the CMS preview.
Without a navigator item, non-versioned DataObjects aren't allowed to
display in the preview panel even if they implement CMSPreviewable.
2022-01-31 14:28:02 +13:00

68 lines
1.8 KiB
PHP

<?php
namespace SilverStripe\CMS\Controllers;
use SilverStripe\CMS\Controllers\SilverStripeNavigatorItem;
use SilverStripe\Core\Config\Config;
use SilverStripe\Core\Convert;
use SilverStripe\Security\Member;
use SilverStripe\Versioned\Versioned;
class SilverStripeNavigatorItem_Unversioned extends SilverStripeNavigatorItem
{
public function getHTML()
{
$recordLink = Convert::raw2att($this->getLink());
$linkTitle = _t('SilverStripe\\CMS\\Controllers\\ContentController.UNVERSIONEDPREVIEW', 'Preview');
return "<a class=\"current\" href=\"$recordLink\">$linkTitle</a>";
}
public function getLink()
{
return $this->getRecord()->PreviewLink();
}
public function getTitle()
{
return _t(
'SilverStripe\\CMS\\Controllers\\ContentController.UNVERSIONEDPREVIEW',
'Preview',
'Used for the Switch between states (if any other other states are added). Needs to be a short label'
);
}
/**
* True if the record doesn't have the Versioned extension and is configured to display this item.
*
* @param Member $member
* @return bool
*/
public function canView($member = null)
{
return (
!$this->getRecord()->hasExtension(Versioned::class)
&& $this->showUnversionedLink()
);
}
/**
* True if the record is configured to display this item.
*
* @return bool
*/
public function showUnversionedLink(): bool
{
return (bool) Config::inst()->get(get_class($this->record), 'show_unversioned_preview_link');
}
/**
* This item is always active, as there are unlikely to be other preview states available for the record.
*
* @return bool
*/
public function isActive()
{
return true;
}
}