mirror of
https://github.com/silverstripe/silverstripe-cms
synced 2024-10-22 08:05:56 +02:00
API Remove deprecated code (#2800)
This commit is contained in:
parent
8b1433b263
commit
0e5428b78b
@ -39,8 +39,6 @@ mappings:
|
|||||||
RedirectorPage_Controller: SilverStripe\CMS\Model\RedirectorPageController
|
RedirectorPage_Controller: SilverStripe\CMS\Model\RedirectorPageController
|
||||||
SiteTree: SilverStripe\CMS\Model\SiteTree
|
SiteTree: SilverStripe\CMS\Model\SiteTree
|
||||||
SiteTreeExtension: SilverStripe\CMS\Model\SiteTreeExtension
|
SiteTreeExtension: SilverStripe\CMS\Model\SiteTreeExtension
|
||||||
SiteTreeFileExtension: SilverStripe\CMS\Model\SiteTreeFileExtension
|
|
||||||
SiteTreeFolderExtension: SilverStripe\CMS\Model\SiteTreeFolderExtension
|
|
||||||
SiteTreeLinkTracking: SilverStripe\CMS\Model\SiteTreeLinkTracking
|
SiteTreeLinkTracking: SilverStripe\CMS\Model\SiteTreeLinkTracking
|
||||||
SiteTreeLinkTracking_Parser: SilverStripe\CMS\Model\SiteTreeLinkTracking_Parser
|
SiteTreeLinkTracking_Parser: SilverStripe\CMS\Model\SiteTreeLinkTracking_Parser
|
||||||
VirtualPage: SilverStripe\CMS\Model\VirtualPage
|
VirtualPage: SilverStripe\CMS\Model\VirtualPage
|
||||||
|
@ -1,32 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace SilverStripe\CMS\GraphQL;
|
|
||||||
|
|
||||||
use GraphQL\Type\Definition\ResolveInfo;
|
|
||||||
use SilverStripe\Core\Injector\Injector;
|
|
||||||
use SilverStripe\GraphQL\Scaffolding\Scaffolders\CRUD\ReadOne;
|
|
||||||
use SilverStripe\GraphQL\Scaffolding\StaticSchema;
|
|
||||||
use SilverStripe\ORM\DataList;
|
|
||||||
|
|
||||||
if (!class_exists(ReadOne::class)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Shim to make readOnePage work like GraphQL 4
|
|
||||||
*
|
|
||||||
* @internal Use GraphQL v4
|
|
||||||
* @deprecated 4.8..5.0 Use silverstripe/graphql:^4 functionality.
|
|
||||||
*/
|
|
||||||
class ReadOneResolver
|
|
||||||
{
|
|
||||||
public static function resolve($obj, array $args, array $context, ResolveInfo $info)
|
|
||||||
{
|
|
||||||
$idKey = StaticSchema::inst()->formatField('ID');
|
|
||||||
$id = $args['filter'][$idKey]['eq'];
|
|
||||||
$readOne = Injector::inst()->createWithArgs(ReadOne::class, ['Page']);
|
|
||||||
unset($args['filter']);
|
|
||||||
$args[$idKey] = $id;
|
|
||||||
return $readOne->resolve($obj, $args, $context, $info);
|
|
||||||
}
|
|
||||||
}
|
|
@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
namespace SilverStripe\CMS\Controllers;
|
namespace SilverStripe\CMS\Controllers;
|
||||||
|
|
||||||
use SilverStripe\Dev\Deprecation;
|
|
||||||
use InvalidArgumentException;
|
use InvalidArgumentException;
|
||||||
use Psr\SimpleCache\CacheInterface;
|
use Psr\SimpleCache\CacheInterface;
|
||||||
use SilverStripe\Admin\AdminRootController;
|
use SilverStripe\Admin\AdminRootController;
|
||||||
@ -198,7 +197,7 @@ class CMSMain extends LeftAndMain implements CurrentPageIdentifier, PermissionPr
|
|||||||
Requirements::css('silverstripe/cms: client/dist/styles/bundle.css');
|
Requirements::css('silverstripe/cms: client/dist/styles/bundle.css');
|
||||||
Requirements::customCSS($this->generatePageIconsCss(), self::PAGE_ICONS_ID);
|
Requirements::customCSS($this->generatePageIconsCss(), self::PAGE_ICONS_ID);
|
||||||
|
|
||||||
Requirements::add_i18n_javascript('silverstripe/cms: client/lang', false, true);
|
Requirements::add_i18n_javascript('silverstripe/cms: client/lang', false);
|
||||||
|
|
||||||
CMSBatchActionHandler::register('restore', CMSBatchAction_Restore::class);
|
CMSBatchActionHandler::register('restore', CMSBatchAction_Restore::class);
|
||||||
CMSBatchActionHandler::register('archive', CMSBatchAction_Archive::class);
|
CMSBatchActionHandler::register('archive', CMSBatchAction_Archive::class);
|
||||||
@ -2148,77 +2147,6 @@ class CMSMain extends LeftAndMain implements CurrentPageIdentifier, PermissionPr
|
|||||||
return $this->batchactions()->batchActionList();
|
return $this->batchactions()->batchActionList();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated 4.12.0 Use custom logic instead
|
|
||||||
*/
|
|
||||||
public function publishall(HTTPRequest $request): HTTPResponse
|
|
||||||
{
|
|
||||||
Deprecation::notice('4.12.0', 'Use custom logic instead');
|
|
||||||
if (!Permission::check('ADMIN')) {
|
|
||||||
return Security::permissionFailure($this);
|
|
||||||
}
|
|
||||||
|
|
||||||
Environment::increaseTimeLimitTo();
|
|
||||||
Environment::increaseMemoryLimitTo();
|
|
||||||
|
|
||||||
$response = "";
|
|
||||||
|
|
||||||
if (isset($this->requestParams['confirm'])) {
|
|
||||||
// Protect against CSRF on destructive action
|
|
||||||
if (!SecurityToken::inst()->checkRequest($request)) {
|
|
||||||
$this->httpError(400);
|
|
||||||
}
|
|
||||||
|
|
||||||
$start = 0;
|
|
||||||
$pages = SiteTree::get()->limit("$start,30");
|
|
||||||
$count = 0;
|
|
||||||
while ($pages) {
|
|
||||||
/** @var SiteTree $page */
|
|
||||||
foreach ($pages as $page) {
|
|
||||||
if ($page && !$page->canPublish()) {
|
|
||||||
return Security::permissionFailure($this);
|
|
||||||
}
|
|
||||||
|
|
||||||
$page->publishRecursive();
|
|
||||||
$page->destroy();
|
|
||||||
unset($page);
|
|
||||||
$count++;
|
|
||||||
$response .= "<li>$count</li>";
|
|
||||||
}
|
|
||||||
if ($pages->count() > 29) {
|
|
||||||
$start += 30;
|
|
||||||
$pages = SiteTree::get()->limit("$start,30");
|
|
||||||
} else {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$response .= _t(__CLASS__ . '.PUBPAGES', "Done: Published {count} pages", ['count' => $count]);
|
|
||||||
} else {
|
|
||||||
$token = SecurityToken::inst();
|
|
||||||
$fields = new FieldList();
|
|
||||||
$token->updateFieldSet($fields);
|
|
||||||
$tokenField = $fields->first();
|
|
||||||
$tokenHtml = ($tokenField) ? $tokenField->FieldHolder() : '';
|
|
||||||
$publishAllDescription = _t(
|
|
||||||
__CLASS__ . '.PUBALLFUN2',
|
|
||||||
'Pressing this button will do the equivalent of going to every page and pressing "publish". '
|
|
||||||
. 'It\'s intended to be used after there have been massive edits of the content, such as when '
|
|
||||||
. 'the site was first built. '
|
|
||||||
. 'For large websites, this task might not be able to run through to completion. '
|
|
||||||
. 'In this case, we recommend talking to your developers to create a custom task'
|
|
||||||
);
|
|
||||||
$response .= '<h1>' . _t(__CLASS__ . '.PUBALLFUN', '"Publish All" functionality') . '</h1>
|
|
||||||
<p>' . $publishAllDescription . '</p>
|
|
||||||
<form method="post" action="publishall">
|
|
||||||
<input type="submit" name="confirm" value="'
|
|
||||||
. _t(__CLASS__ . '.PUBALLCONFIRM', "Please publish every page in the site, copying content stage to live", 'Confirmation button') .'" />'
|
|
||||||
. $tokenHtml .
|
|
||||||
'</form>';
|
|
||||||
}
|
|
||||||
|
|
||||||
return HTTPResponse::create()->setBody($response);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Restore a completely deleted page from the SiteTree_versions table.
|
* Restore a completely deleted page from the SiteTree_versions table.
|
||||||
*/
|
*/
|
||||||
|
@ -25,7 +25,6 @@ use SilverStripe\Core\Manifest\ModuleResource;
|
|||||||
use SilverStripe\Core\Manifest\ModuleResourceLoader;
|
use SilverStripe\Core\Manifest\ModuleResourceLoader;
|
||||||
use SilverStripe\Core\Manifest\VersionProvider;
|
use SilverStripe\Core\Manifest\VersionProvider;
|
||||||
use SilverStripe\Core\Resettable;
|
use SilverStripe\Core\Resettable;
|
||||||
use SilverStripe\Dev\Deprecation;
|
|
||||||
use SilverStripe\Forms\CheckboxField;
|
use SilverStripe\Forms\CheckboxField;
|
||||||
use SilverStripe\Forms\CompositeField;
|
use SilverStripe\Forms\CompositeField;
|
||||||
use SilverStripe\Forms\DropdownField;
|
use SilverStripe\Forms\DropdownField;
|
||||||
@ -651,11 +650,6 @@ class SiteTree extends DataObject implements PermissionProvider, i18nEntityProvi
|
|||||||
*/
|
*/
|
||||||
public function PreviewLink($action = null)
|
public function PreviewLink($action = null)
|
||||||
{
|
{
|
||||||
if ($this->hasMethod('alternatePreviewLink')) {
|
|
||||||
Deprecation::notice('5.0', 'Use updatePreviewLink or override PreviewLink method');
|
|
||||||
return $this->alternatePreviewLink($action);
|
|
||||||
}
|
|
||||||
|
|
||||||
$link = $this->AbsoluteLink($action);
|
$link = $this->AbsoluteLink($action);
|
||||||
$this->extend('updatePreviewLink', $link, $action);
|
$this->extend('updatePreviewLink', $link, $action);
|
||||||
return $link;
|
return $link;
|
||||||
@ -2754,35 +2748,6 @@ class SiteTree extends DataObject implements PermissionProvider, i18nEntityProvi
|
|||||||
return $allowedChildren;
|
return $allowedChildren;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated 4.12.0 Use creatableChildPages() instead
|
|
||||||
*
|
|
||||||
* Gets a list of the page types that can be created under this specific page
|
|
||||||
*
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
public function creatableChildren()
|
|
||||||
{
|
|
||||||
Deprecation::notice('4.12.0', 'Use creatableChildPages() instead');
|
|
||||||
// Build the list of candidate children
|
|
||||||
$cache = SiteTree::singleton()->getCreatableChildrenCache();
|
|
||||||
$cacheKey = $this->generateChildrenCacheKey(Security::getCurrentUser() ? Security::getCurrentUser()->ID : 0);
|
|
||||||
$children = $cache->get($cacheKey, []);
|
|
||||||
if (!$children || !isset($children[$this->ID])) {
|
|
||||||
$children[$this->ID] = [];
|
|
||||||
$candidates = static::page_type_classes();
|
|
||||||
foreach ($candidates as $childClass) {
|
|
||||||
$child = singleton($childClass);
|
|
||||||
if ($child->canCreate(null, ['Parent' => $this])) {
|
|
||||||
$children[$this->ID][$childClass] = $child->i18n_singular_name();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$cache->set($cacheKey, $children);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $children[$this->ID];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* Gets a list of the page types that can be created under this specific page, including font icons
|
* Gets a list of the page types that can be created under this specific page, including font icons
|
||||||
@ -3031,14 +2996,6 @@ class SiteTree extends DataObject implements PermissionProvider, i18nEntityProvi
|
|||||||
// If we have a class of "{$ClassName}Controller" then we found our controller
|
// If we have a class of "{$ClassName}Controller" then we found our controller
|
||||||
if (class_exists($candidate = sprintf('%sController', $class))) {
|
if (class_exists($candidate = sprintf('%sController', $class))) {
|
||||||
return $candidate;
|
return $candidate;
|
||||||
} elseif (class_exists($candidate = sprintf('%s_Controller', $class))) {
|
|
||||||
// Support the legacy underscored filename, but raise a deprecation notice
|
|
||||||
Deprecation::notice(
|
|
||||||
'5.0',
|
|
||||||
'Underscored controller class names are deprecated. Use "MyController" instead of "My_Controller".',
|
|
||||||
Deprecation::SCOPE_GLOBAL
|
|
||||||
);
|
|
||||||
return $candidate;
|
|
||||||
} elseif (is_array($namespaceMap)) {
|
} elseif (is_array($namespaceMap)) {
|
||||||
foreach ($namespaceMap as $pageNamespace => $controllerNamespace) {
|
foreach ($namespaceMap as $pageNamespace => $controllerNamespace) {
|
||||||
if (strpos($class, $pageNamespace) !== 0) {
|
if (strpos($class, $pageNamespace) !== 0) {
|
||||||
@ -3302,7 +3259,7 @@ class SiteTree extends DataObject implements PermissionProvider, i18nEntityProvi
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cache key for creatableChildren() method
|
* Cache key for creatableChildPages() method
|
||||||
*
|
*
|
||||||
* @param int $memberID
|
* @param int $memberID
|
||||||
* @return string
|
* @return string
|
||||||
|
@ -1,35 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace SilverStripe\CMS\Model;
|
|
||||||
|
|
||||||
use SilverStripe\Dev\Deprecation;
|
|
||||||
use SilverStripe\Assets\File;
|
|
||||||
use SilverStripe\ORM\DataExtension;
|
|
||||||
use SilverStripe\View\SSViewer;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated 4.2.0 Use FileLinkTracking instead
|
|
||||||
* @property File $owner
|
|
||||||
*/
|
|
||||||
class SiteTreeFileExtension extends DataExtension
|
|
||||||
{
|
|
||||||
private static $casting = [
|
|
||||||
'BackLinkHTMLList' => 'HTMLFragment'
|
|
||||||
];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Generate an HTML list which provides links to where a file is used.
|
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
Deprecation::notice('4.2.0', 'Use FileLinkTracking instead', Deprecation::SCOPE_CLASS);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function BackLinkHTMLList()
|
|
||||||
{
|
|
||||||
$viewer = SSViewer::create(['type' => 'Includes', self::class . '_description']);
|
|
||||||
return $viewer->process($this->owner);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,50 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace SilverStripe\CMS\Model;
|
|
||||||
|
|
||||||
use SilverStripe\Assets\File;
|
|
||||||
use SilverStripe\Dev\Deprecation;
|
|
||||||
use SilverStripe\Forms\FieldList;
|
|
||||||
use SilverStripe\Forms\Tab;
|
|
||||||
use SilverStripe\Forms\TabSet;
|
|
||||||
use SilverStripe\ORM\DataExtension;
|
|
||||||
use SilverStripe\Admin\Forms\UsedOnTable;
|
|
||||||
use SilverStripe\Versioned\RecursivePublishable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated 4.12.0 Use UsedOnTable instead
|
|
||||||
*
|
|
||||||
* Extension applied to {@see FileFormFactory} to decorate with a "Used on:" information area.
|
|
||||||
* Uses tracking provided by {@see SiteTreeFileExtension} to generate this.
|
|
||||||
*
|
|
||||||
* @property File $owner
|
|
||||||
* @deprecated 4.12.0 Use UsedOnTable instead
|
|
||||||
*/
|
|
||||||
class SiteTreeFileFormFactoryExtension extends DataExtension
|
|
||||||
{
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
Deprecation::notice('4.12.0', 'Use UsedOnTable instead', Deprecation::SCOPE_CLASS);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated 4.12.0 Use UsedOnTable instead
|
|
||||||
*/
|
|
||||||
public function updateFormFields(FieldList $fields, $controller, $formName, $context)
|
|
||||||
{
|
|
||||||
Deprecation::notice('4.12.0', 'Use UsedOnTable instead');
|
|
||||||
/** @var TabSet $tabset */
|
|
||||||
$tabset = $fields->fieldByName('Editor');
|
|
||||||
if (!$tabset) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$usedOnField = UsedOnTable::create('UsedOnTableReplacement');
|
|
||||||
$usedOnField->setRecord($context['Record']);
|
|
||||||
|
|
||||||
// Add field to new tab
|
|
||||||
/** @var Tab $tab */
|
|
||||||
$tab = Tab::create('Usage', _t(__CLASS__ . '.USAGE', 'Usage'), $usedOnField);
|
|
||||||
$tabset->push($tab);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,88 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace SilverStripe\CMS\Model;
|
|
||||||
|
|
||||||
use SilverStripe\Assets\File;
|
|
||||||
use SilverStripe\Assets\Folder;
|
|
||||||
use SilverStripe\Assets\Shortcodes\FileLink;
|
|
||||||
use SilverStripe\Core\ClassInfo;
|
|
||||||
use SilverStripe\Core\Config\Config;
|
|
||||||
use SilverStripe\Core\Convert;
|
|
||||||
use SilverStripe\Dev\Deprecation;
|
|
||||||
use SilverStripe\ORM\ArrayList;
|
|
||||||
use SilverStripe\ORM\DataExtension;
|
|
||||||
use SilverStripe\ORM\DataList;
|
|
||||||
use SilverStripe\ORM\DataObject;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated 4.2.0 Will be removed without equivalent functionality to replace it
|
|
||||||
*/
|
|
||||||
class SiteTreeFolderExtension extends DataExtension
|
|
||||||
{
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
Deprecation::notice('4.2.0', 'Will be removed without equivalent functionality to replace it', Deprecation::SCOPE_CLASS);
|
|
||||||
parent::__construct();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Looks for files used in system and create where clause which contains all ID's of files.
|
|
||||||
*
|
|
||||||
* @deprecated 4.2.0 Will be removed without equivalent functionality to replace it
|
|
||||||
* @returns string where clause which will work as filter.
|
|
||||||
*/
|
|
||||||
public function getUnusedFilesListFilter()
|
|
||||||
{
|
|
||||||
Deprecation::notice('4.2.0', 'Will be removed without equivalent functionality to replace it');
|
|
||||||
|
|
||||||
// Add all records in link tracking
|
|
||||||
$usedFiles = FileLink::get()->column('LinkedID');
|
|
||||||
|
|
||||||
// Get all classes that aren't folder
|
|
||||||
$fileClasses = array_diff_key(
|
|
||||||
ClassInfo::subclassesFor(File::class) ?? [],
|
|
||||||
ClassInfo::subclassesFor(Folder::class)
|
|
||||||
);
|
|
||||||
|
|
||||||
// Search on a class-by-class basis
|
|
||||||
$classes = ClassInfo::subclassesFor(SiteTree::class);
|
|
||||||
|
|
||||||
$schema = DataObject::getSchema();
|
|
||||||
foreach ($classes as $className) {
|
|
||||||
// Build query based on all direct has_ones on this class
|
|
||||||
$hasOnes = Config::inst()->get($className, 'has_one', Config::UNINHERITED);
|
|
||||||
if (empty($hasOnes)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
$where = [];
|
|
||||||
$columns = [];
|
|
||||||
foreach ($hasOnes as $relName => $joinClass) {
|
|
||||||
if (in_array($joinClass, $fileClasses ?? [])) {
|
|
||||||
$column = $relName . 'ID';
|
|
||||||
$columns[] = $column;
|
|
||||||
$quotedColumn = $schema->sqlColumnForField($className, $column);
|
|
||||||
$where[] = "{$quotedColumn} > 0";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get all records with any file ID in the searched columns
|
|
||||||
$recordsArray = DataList::create($className)->whereAny($where)->toArray();
|
|
||||||
$records = ArrayList::create($recordsArray);
|
|
||||||
foreach ($columns as $column) {
|
|
||||||
$usedFiles = array_unique(array_merge($usedFiles, $records->column($column)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create filter based on class and id
|
|
||||||
$classFilter = sprintf(
|
|
||||||
"(\"File\".\"ClassName\" IN (%s))",
|
|
||||||
implode(", ", Convert::raw2sql($fileClasses, true))
|
|
||||||
);
|
|
||||||
if ($usedFiles) {
|
|
||||||
return "\"File\".\"ID\" NOT IN (" . implode(', ', $usedFiles) . ") AND $classFilter";
|
|
||||||
} else {
|
|
||||||
return $classFilter;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -4,7 +4,6 @@ namespace SilverStripe\CMS\Model;
|
|||||||
|
|
||||||
use Page;
|
use Page;
|
||||||
use SilverStripe\Core\Convert;
|
use SilverStripe\Core\Convert;
|
||||||
use SilverStripe\Dev\Deprecation;
|
|
||||||
use SilverStripe\Forms\FieldList;
|
use SilverStripe\Forms\FieldList;
|
||||||
use SilverStripe\Forms\LiteralField;
|
use SilverStripe\Forms\LiteralField;
|
||||||
use SilverStripe\Forms\ReadonlyTransformation;
|
use SilverStripe\Forms\ReadonlyTransformation;
|
||||||
@ -360,30 +359,6 @@ class VirtualPage extends Page
|
|||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated 4.2.0 Will be removed without equivalent functionality to replace it
|
|
||||||
*/
|
|
||||||
public function updateImageTracking()
|
|
||||||
{
|
|
||||||
Deprecation::notice('4.2.0', 'Will be removed without equivalent functionality to replace it');
|
|
||||||
|
|
||||||
// Doesn't work on unsaved records
|
|
||||||
if (!$this->isInDB()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Remove CopyContentFrom() from the cache
|
|
||||||
unset($this->components['CopyContentFrom']);
|
|
||||||
|
|
||||||
// Update ImageTracking
|
|
||||||
$copyContentFrom = $this->CopyContentFrom();
|
|
||||||
if (!$copyContentFrom || !$copyContentFrom->isInDB()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->FileTracking()->setByIDList($copyContentFrom->FileTracking()->column('ID'));
|
|
||||||
}
|
|
||||||
|
|
||||||
public function CMSTreeClasses()
|
public function CMSTreeClasses()
|
||||||
{
|
{
|
||||||
$parentClass = sprintf(
|
$parentClass = sprintf(
|
||||||
|
@ -1,27 +0,0 @@
|
|||||||
<% if $BackLinkTracking %>
|
|
||||||
<table class="table">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th><%t SilverStripe\CMS\Model\SiteTreeFileExtension.TITLE_INDEX '#' %></th>
|
|
||||||
<th><%t SilverStripe\CMS\Model\SiteTreeFileExtension.TITLE_USED_ON 'Used on' %></th>
|
|
||||||
<th><%t SilverStripe\CMS\Model\SiteTreeFileExtension.TITLE_TYPE 'Type' %></th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<% loop $BackLinkTracking %>
|
|
||||||
<tr>
|
|
||||||
<td>$Pos</td>
|
|
||||||
<td><a href="$CMSEditLink">$MenuTitle</a></td>
|
|
||||||
<td>
|
|
||||||
$i18n_singular_name
|
|
||||||
<% if $isPublished %>
|
|
||||||
<span class="badge badge-success">Published</span>
|
|
||||||
<% else %>
|
|
||||||
<span class="badge status-addedtodraft">Draft</span>
|
|
||||||
<% end_if %>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<% end_loop %>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
<% end_if %>
|
|
@ -24,7 +24,6 @@ use SilverStripe\Security\Member;
|
|||||||
use SilverStripe\Security\Security;
|
use SilverStripe\Security\Security;
|
||||||
use SilverStripe\SiteConfig\SiteConfig;
|
use SilverStripe\SiteConfig\SiteConfig;
|
||||||
use SilverStripe\Versioned\Versioned;
|
use SilverStripe\Versioned\Versioned;
|
||||||
use SilverStripe\Dev\Deprecation;
|
|
||||||
|
|
||||||
class CMSMainTest extends FunctionalTest
|
class CMSMainTest extends FunctionalTest
|
||||||
{
|
{
|
||||||
@ -118,42 +117,6 @@ class CMSMainTest extends FunctionalTest
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @todo Test the results of a publication better
|
|
||||||
*/
|
|
||||||
public function testPublish()
|
|
||||||
{
|
|
||||||
if (Deprecation::isEnabled()) {
|
|
||||||
$this->markTestSkipped('Test calls deprecated code');
|
|
||||||
}
|
|
||||||
$page1 = $this->objFromFixture(SiteTree::class, 'page1');
|
|
||||||
$page2 = $this->objFromFixture(SiteTree::class, 'page2');
|
|
||||||
$this->logInAs('admin');
|
|
||||||
|
|
||||||
$response = $this->get('admin/pages/publishall?confirm=1');
|
|
||||||
$this->assertStringContainsString(
|
|
||||||
'Done: Published 30 pages',
|
|
||||||
$response->getBody()
|
|
||||||
);
|
|
||||||
|
|
||||||
// Some modules (e.g., cmsworkflow) will remove this action
|
|
||||||
$actions = CMSBatchActionHandler::config()->batch_actions;
|
|
||||||
if (isset($actions['publish'])) {
|
|
||||||
$response = $this->get(
|
|
||||||
'admin/pages/batchactions/publish?ajax=1&csvIDs=' . implode(',', [$page1->ID, $page2->ID])
|
|
||||||
);
|
|
||||||
$responseData = json_decode($response->getBody() ?? '', true);
|
|
||||||
$this->assertArrayHasKey($page1->ID, $responseData['modified']);
|
|
||||||
$this->assertArrayHasKey($page2->ID, $responseData['modified']);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get the latest version of the redirector page
|
|
||||||
$pageID = $this->idFromFixture(RedirectorPage::class, 'page5');
|
|
||||||
$latestID = DB::prepared_query('SELECT MAX("Version") FROM "RedirectorPage_Versions" WHERE "RecordID" = ?', [$pageID])->value();
|
|
||||||
$dsCount = DB::prepared_query('SELECT COUNT("Version") FROM "RedirectorPage_Versions" WHERE "RecordID" = ? AND "Version"= ?', [$pageID, $latestID])->value();
|
|
||||||
$this->assertEquals(1, $dsCount, "Published page has no duplicate version records: it has " . $dsCount . " for version " . $latestID);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test that getCMSFields works on each page type.
|
* Test that getCMSFields works on each page type.
|
||||||
* Mostly, this is just checking that the method doesn't return an error
|
* Mostly, this is just checking that the method doesn't return an error
|
||||||
|
@ -41,7 +41,6 @@ use Page;
|
|||||||
use PageController;
|
use PageController;
|
||||||
|
|
||||||
use const RESOURCES_DIR;
|
use const RESOURCES_DIR;
|
||||||
use SilverStripe\Dev\Deprecation;
|
|
||||||
|
|
||||||
class SiteTreeTest extends SapphireTest
|
class SiteTreeTest extends SapphireTest
|
||||||
{
|
{
|
||||||
@ -888,7 +887,7 @@ class SiteTreeTest extends SapphireTest
|
|||||||
"SELECT \"AuthorID\", \"PublisherID\" FROM \"SiteTree_Versions\"
|
"SELECT \"AuthorID\", \"PublisherID\" FROM \"SiteTree_Versions\"
|
||||||
WHERE \"RecordID\" = ? ORDER BY \"Version\" DESC",
|
WHERE \"RecordID\" = ? ORDER BY \"Version\" DESC",
|
||||||
[$about->ID]
|
[$about->ID]
|
||||||
)->first();
|
)->record();
|
||||||
$this->assertEquals($member->ID, $savedVersion['AuthorID']);
|
$this->assertEquals($member->ID, $savedVersion['AuthorID']);
|
||||||
$this->assertEquals(0, $savedVersion['PublisherID']);
|
$this->assertEquals(0, $savedVersion['PublisherID']);
|
||||||
|
|
||||||
@ -898,7 +897,7 @@ class SiteTreeTest extends SapphireTest
|
|||||||
"SELECT \"AuthorID\", \"PublisherID\" FROM \"SiteTree_Versions\"
|
"SELECT \"AuthorID\", \"PublisherID\" FROM \"SiteTree_Versions\"
|
||||||
WHERE \"RecordID\" = ? ORDER BY \"Version\" DESC",
|
WHERE \"RecordID\" = ? ORDER BY \"Version\" DESC",
|
||||||
[$about->ID]
|
[$about->ID]
|
||||||
)->first();
|
)->record();
|
||||||
|
|
||||||
// Check the version created
|
// Check the version created
|
||||||
$this->assertEquals($member->ID, $publishedVersion['AuthorID']);
|
$this->assertEquals($member->ID, $publishedVersion['AuthorID']);
|
||||||
@ -1731,18 +1730,6 @@ class SiteTreeTest extends SapphireTest
|
|||||||
$this->assertSame(SiteTreeTest_NamespaceMapTestController::class, $namespacedSiteTree->getControllerName());
|
$this->assertSame(SiteTreeTest_NamespaceMapTestController::class, $namespacedSiteTree->getControllerName());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Test that underscored class names (legacy) are still supported (deprecation notice is issued though).
|
|
||||||
*/
|
|
||||||
public function testGetControllerNameWithUnderscoresIsSupported()
|
|
||||||
{
|
|
||||||
if (Deprecation::isEnabled()) {
|
|
||||||
$this->markTestSkipped('Test calls deprecated code');
|
|
||||||
}
|
|
||||||
$class = new SiteTreeTest_LegacyControllerName();
|
|
||||||
$this->assertEquals(SiteTreeTest_LegacyControllerName_Controller::class, $class->getControllerName());
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testTreeTitleCache()
|
public function testTreeTitleCache()
|
||||||
{
|
{
|
||||||
$siteTree = new SiteTree();
|
$siteTree = new SiteTree();
|
||||||
|
Loading…
Reference in New Issue
Block a user