ENH Add generic types

This commit is contained in:
Guy Sartorelli 2024-01-12 10:12:38 +13:00
parent 5071f0e449
commit 03a407335c
No known key found for this signature in database
GPG Key ID: F313E3B9504D496A
3 changed files with 21 additions and 12 deletions

View File

@ -13,10 +13,13 @@ use SilverStripe\ORM\FieldType\DBField;
use SilverStripe\SiteConfig\SiteConfig;
use SilverStripe\View\Parsers\HtmlDiff;
use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Versioned\Versioned_Version;
/**
* @extends Extension<SiteTree&static>
*/
class VersionFeed extends SiteTreeExtension
{
private static $db = array(
'PublicHistory' => 'Boolean(true)'
);
@ -68,7 +71,7 @@ class VersionFeed extends SiteTreeExtension
* @param int $highestVersion Top version number to consider.
* @param int $limit Limit to the amount of items returned.
*
* @returns ArrayList List of cleaned records.
* @return ArrayList<Versioned_Version> List of cleaned records.
*/
public function getDiffList($highestVersion = null, $limit = 100)
{
@ -156,7 +159,7 @@ class VersionFeed extends SiteTreeExtension
* Return a single diff representing this version.
* Returns the initial version if there is nothing to compare to.
*
* @return DataObject|null Object with relevant fields diffed.
* @return Versioned_Version|null Object with relevant fields diffed.
*/
public function getDiff()
{
@ -173,7 +176,7 @@ class VersionFeed extends SiteTreeExtension
if (!$this->owner->config()->get('changes_enabled')) {
return;
}
// Add public history field.
$fields->addFieldToTab(
'Root.Settings',

View File

@ -11,25 +11,29 @@ use SilverStripe\ORM\DB;
use SilverStripe\Security\Member;
use SilverStripe\ORM\ArrayList;
use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Control\Controller;
use SilverStripe\Core\Convert;
use SilverStripe\View\Requirements;
use SilverStripe\Core\Extension;
use SilverStripe\VersionFeed\Filters\ContentFilter;
/**
* @extends Extension<Controller&static>
*/
class VersionFeedController extends Extension
{
private static $allowed_actions = array(
'changes',
'allchanges'
);
/**
* Content handler
*
* @var ContentFilter
*/
protected $contentFilter;
/**
* Sets the content filter
*
@ -39,7 +43,7 @@ class VersionFeedController extends Extension
{
$this->contentFilter = $contentFilter;
}
/**
* Evaluates the result of the given callback
*
@ -163,7 +167,7 @@ class VersionFeedController extends Extension
$rss->setTemplate('Page_allchanges_rss');
return $rss->outputToBrowser();
}
/**
* Generates and embeds the RSS header link for the page-specific version rss feed
*/
@ -172,7 +176,7 @@ class VersionFeedController extends Extension
if (!Config::inst()->get(VersionFeed::class, 'changes_enabled') || !$this->owner->PublicHistory) {
return;
}
RSSFeed::linkToFeed(
$this->owner->Link('changes'),
_t(
@ -193,7 +197,7 @@ class VersionFeedController extends Extension
) {
return;
}
// RSS feed to all-site changes.
$title = Convert::raw2xml($this->linkToAllSitesRSSFeedTitle());
$url = $this->owner->getSiteRSSLink();

View File

@ -7,13 +7,15 @@ use SilverStripe\Forms\CheckboxField;
use SilverStripe\Forms\FieldGroup;
use SilverStripe\Forms\FieldList;
use SilverStripe\ORM\DataExtension;
use SilverStripe\SiteConfig\SiteConfig;
/**
* Allows global configuration of all changes
*
* @extends DataExtension<SiteConfig>
*/
class VersionFeedSiteConfig extends DataExtension
{
private static $db = array(
'AllChangesEnabled' => 'Boolean(true)'
);
@ -26,7 +28,7 @@ class VersionFeedSiteConfig extends DataExtension
{
$labels['AllChangesEnabled'] = _t(__CLASS__ . '.ALLCHANGESLABEL', 'Make global changes feed public');
}
public function updateCMSFields(FieldList $fields)
{
if (!Config::inst()->get(VersionFeed::class, 'allchanges_enabled')) {