mirror of
https://github.com/silverstripe/silverstripe-cms
synced 2024-10-22 08:05:56 +02:00
FIX: return right order for getClassDropdown method
This commit is contained in:
parent
df5a7797f7
commit
d8748ff5f9
@ -2744,8 +2744,6 @@ class SiteTree extends DataObject implements PermissionProvider, i18nEntityProvi
|
||||
protected function getClassDropdown()
|
||||
{
|
||||
$classes = SiteTree::page_type_classes();
|
||||
$currentClass = null;
|
||||
|
||||
$result = [];
|
||||
foreach ($classes as $class) {
|
||||
$instance = singleton($class);
|
||||
@ -2771,20 +2769,15 @@ class SiteTree extends DataObject implements PermissionProvider, i18nEntityProvi
|
||||
}
|
||||
}
|
||||
|
||||
$pageTypeName = $instance->i18n_singular_name();
|
||||
|
||||
$currentClass = $class;
|
||||
$result[$class] = $pageTypeName;
|
||||
$result[$class] = $instance->i18n_singular_name();
|
||||
}
|
||||
|
||||
// sort alphabetically, and put current on top
|
||||
// Sort alphabetically, and put current on top
|
||||
asort($result);
|
||||
if ($currentClass) {
|
||||
$currentPageTypeName = $result[$currentClass];
|
||||
unset($result[$currentClass]);
|
||||
$result = array_reverse($result ?? []);
|
||||
$result[$currentClass] = $currentPageTypeName;
|
||||
$result = array_reverse($result ?? []);
|
||||
if (isset($result[$this->ClassName])) {
|
||||
$currentPageTypeName = $result[$this->ClassName];
|
||||
unset($result[$this->ClassName]);
|
||||
$result = [$this->ClassName => $currentPageTypeName] + $result;
|
||||
}
|
||||
|
||||
return $result;
|
||||
|
@ -1280,7 +1280,7 @@ class SiteTreeTest extends SapphireTest
|
||||
*/
|
||||
public function testAllowedChildren($className, $expected, $assertionMessage)
|
||||
{
|
||||
$class = new $className;
|
||||
$class = new $className();
|
||||
$this->assertEquals($expected, $class->allowedChildren(), $assertionMessage);
|
||||
}
|
||||
|
||||
@ -1359,6 +1359,9 @@ class SiteTreeTest extends SapphireTest
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
public function testClassDropdown()
|
||||
{
|
||||
$sitetree = new SiteTree();
|
||||
@ -1380,7 +1383,18 @@ class SiteTreeTest extends SapphireTest
|
||||
|
||||
$this->assertArrayNotHasKey(SiteTreeTest_NotRoot::class, $method->invoke($rootPage));
|
||||
$this->assertArrayHasKey(SiteTreeTest_NotRoot::class, $method->invoke($nonRootPage));
|
||||
|
||||
foreach ([SiteTreeTest_ClassA::class, SiteTreeTest_ClassB::class] as $className) {
|
||||
$otherPage = new $className();
|
||||
$otherPage->write();
|
||||
$result = $method->invoke(object: $otherPage);
|
||||
$this->assertEquals(array_key_first($result), $className);
|
||||
// remove the first element as this is not alphabetical
|
||||
array_shift($result);
|
||||
// create a sorted array
|
||||
$resultSorted = $result;
|
||||
asort($resultSorted);
|
||||
$this->assertEquals($result, $resultSorted);
|
||||
}
|
||||
Security::setCurrentUser(null);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user