Compare commits

..

1 Commits

Author SHA1 Message Date
Guy Sartorelli
fb6c993aef
ENH Use symfony/validation logic 2024-09-24 17:43:26 +12:00
23 changed files with 46 additions and 53 deletions

View File

@ -2,7 +2,7 @@
namespace SilverStripe\CMS\BatchActions; namespace SilverStripe\CMS\BatchActions;
use SilverStripe\Model\List\SS_List; use SilverStripe\ORM\SS_List;
use SilverStripe\Admin\CMSBatchAction; use SilverStripe\Admin\CMSBatchAction;
use SilverStripe\Control\HTTPResponse; use SilverStripe\Control\HTTPResponse;

View File

@ -4,7 +4,7 @@ namespace SilverStripe\CMS\BatchActions;
use SilverStripe\Admin\CMSBatchAction; use SilverStripe\Admin\CMSBatchAction;
use SilverStripe\Control\HTTPResponse; use SilverStripe\Control\HTTPResponse;
use SilverStripe\Model\List\SS_List; use SilverStripe\ORM\SS_List;
/** /**
* Publish items batch action. * Publish items batch action.

View File

@ -4,7 +4,7 @@ namespace SilverStripe\CMS\BatchActions;
use SilverStripe\Admin\CMSBatchAction; use SilverStripe\Admin\CMSBatchAction;
use SilverStripe\Control\HTTPResponse; use SilverStripe\Control\HTTPResponse;
use SilverStripe\Model\List\SS_List; use SilverStripe\ORM\SS_List;
/** /**
* Unpublish items batch action. * Unpublish items batch action.

View File

@ -48,7 +48,7 @@ use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\Tab; use SilverStripe\Forms\Tab;
use SilverStripe\Forms\TabSet; use SilverStripe\Forms\TabSet;
use SilverStripe\Forms\TextField; use SilverStripe\Forms\TextField;
use SilverStripe\Model\List\ArrayList; use SilverStripe\ORM\ArrayList;
use SilverStripe\ORM\CMSPreviewable; use SilverStripe\ORM\CMSPreviewable;
use SilverStripe\ORM\DataList; use SilverStripe\ORM\DataList;
use SilverStripe\ORM\DataObject; use SilverStripe\ORM\DataObject;
@ -57,8 +57,8 @@ use SilverStripe\ORM\FieldType\DBHTMLText;
use SilverStripe\ORM\HiddenClass; use SilverStripe\ORM\HiddenClass;
use SilverStripe\ORM\Hierarchy\Hierarchy; use SilverStripe\ORM\Hierarchy\Hierarchy;
use SilverStripe\ORM\Hierarchy\MarkedSet; use SilverStripe\ORM\Hierarchy\MarkedSet;
use SilverStripe\Model\List\SS_List; use SilverStripe\ORM\SS_List;
use SilverStripe\Core\Validation\ValidationResult; use SilverStripe\ORM\ValidationResult;
use SilverStripe\Security\InheritedPermissions; use SilverStripe\Security\InheritedPermissions;
use SilverStripe\Security\Member; use SilverStripe\Security\Member;
use SilverStripe\Security\Permission; use SilverStripe\Security\Permission;
@ -70,7 +70,7 @@ use SilverStripe\Versioned\ChangeSet;
use SilverStripe\Versioned\ChangeSetItem; use SilverStripe\Versioned\ChangeSetItem;
use SilverStripe\Versioned\Versioned; use SilverStripe\Versioned\Versioned;
use SilverStripe\VersionedAdmin\Controllers\CMSPageHistoryViewerController; use SilverStripe\VersionedAdmin\Controllers\CMSPageHistoryViewerController;
use SilverStripe\Model\ArrayData; use SilverStripe\View\ArrayData;
use SilverStripe\View\Requirements; use SilverStripe\View\Requirements;
/** /**

View File

@ -18,7 +18,7 @@ use SilverStripe\Forms\SelectionGroup_Item;
use SilverStripe\Forms\TreeDropdownField; use SilverStripe\Forms\TreeDropdownField;
use SilverStripe\ORM\DataObject; use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\FieldType\DBField; use SilverStripe\ORM\FieldType\DBField;
use SilverStripe\Core\Validation\ValidationResult; use SilverStripe\ORM\ValidationResult;
use SilverStripe\Security\Member; use SilverStripe\Security\Member;
use SilverStripe\Security\Security; use SilverStripe\Security\Security;
use SilverStripe\SiteConfig\SiteConfig; use SilverStripe\SiteConfig\SiteConfig;

View File

@ -10,9 +10,9 @@ use SilverStripe\Control\Controller;
use SilverStripe\Control\HTTPRequest; use SilverStripe\Control\HTTPRequest;
use SilverStripe\Control\HTTPResponse; use SilverStripe\Control\HTTPResponse;
use SilverStripe\Forms\Form; use SilverStripe\Forms\Form;
use SilverStripe\Core\ArrayLib; use SilverStripe\ORM\ArrayLib;
use SilverStripe\ORM\FieldType\DBHTMLText; use SilverStripe\ORM\FieldType\DBHTMLText;
use SilverStripe\Core\Validation\ValidationResult; use SilverStripe\ORM\ValidationResult;
/** /**
* @package cms * @package cms

View File

@ -2,7 +2,7 @@
namespace SilverStripe\CMS\Controllers; namespace SilverStripe\CMS\Controllers;
use SilverStripe\Model\ArrayData; use SilverStripe\View\ArrayData;
class CMSPageSettingsController extends CMSMain class CMSPageSettingsController extends CMSMain
{ {

View File

@ -4,9 +4,9 @@ namespace SilverStripe\CMS\Controllers;
use SilverStripe\CMS\Model\SiteTree; use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Control\Controller; use SilverStripe\Control\Controller;
use SilverStripe\Model\List\ArrayList; use SilverStripe\ORM\ArrayList;
use SilverStripe\ORM\DataObject; use SilverStripe\ORM\DataObject;
use SilverStripe\Model\ArrayData; use SilverStripe\View\ArrayData;
use stdClass; use stdClass;
class CMSPagesController extends CMSMain class CMSPagesController extends CMSMain

View File

@ -9,7 +9,7 @@ use SilverStripe\Core\Convert;
use SilverStripe\Core\Injector\Injectable; use SilverStripe\Core\Injector\Injectable;
use SilverStripe\Forms\DateField; use SilverStripe\Forms\DateField;
use SilverStripe\ORM\DataList; use SilverStripe\ORM\DataList;
use SilverStripe\Model\List\SS_List; use SilverStripe\ORM\SS_List;
use SilverStripe\Versioned\Versioned; use SilverStripe\Versioned\Versioned;
/** /**

View File

@ -3,7 +3,7 @@
namespace SilverStripe\CMS\Controllers; namespace SilverStripe\CMS\Controllers;
use SilverStripe\CMS\Model\SiteTree; use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Model\List\SS_List; use SilverStripe\ORM\SS_List;
use SilverStripe\Versioned\Versioned; use SilverStripe\Versioned\Versioned;
/** /**

View File

@ -3,7 +3,7 @@
namespace SilverStripe\CMS\Controllers; namespace SilverStripe\CMS\Controllers;
use SilverStripe\CMS\Model\SiteTree; use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Model\List\SS_List; use SilverStripe\ORM\SS_List;
use SilverStripe\Versioned\Versioned; use SilverStripe\Versioned\Versioned;
class CMSSiteTreeFilter_Search extends CMSSiteTreeFilter class CMSSiteTreeFilter_Search extends CMSSiteTreeFilter

View File

@ -3,7 +3,7 @@
namespace SilverStripe\CMS\Controllers; namespace SilverStripe\CMS\Controllers;
use SilverStripe\CMS\Model\SiteTree; use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Model\List\SS_List; use SilverStripe\ORM\SS_List;
use SilverStripe\Versioned\Versioned; use SilverStripe\Versioned\Versioned;
/** /**

View File

@ -3,7 +3,7 @@
namespace SilverStripe\CMS\Controllers; namespace SilverStripe\CMS\Controllers;
use SilverStripe\CMS\Model\SiteTree; use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Model\List\SS_List; use SilverStripe\ORM\SS_List;
use SilverStripe\Versioned\Versioned; use SilverStripe\Versioned\Versioned;
/** /**

View File

@ -3,7 +3,7 @@
namespace SilverStripe\CMS\Controllers; namespace SilverStripe\CMS\Controllers;
use SilverStripe\CMS\Model\SiteTree; use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Model\List\SS_List; use SilverStripe\ORM\SS_List;
use SilverStripe\Versioned\Versioned; use SilverStripe\Versioned\Versioned;
/** /**

View File

@ -14,11 +14,11 @@ use SilverStripe\Core\Convert;
use SilverStripe\Core\Injector\Injector; use SilverStripe\Core\Injector\Injector;
use SilverStripe\Core\Manifest\ModuleManifest; use SilverStripe\Core\Manifest\ModuleManifest;
use SilverStripe\i18n\i18n; use SilverStripe\i18n\i18n;
use SilverStripe\Model\List\ArrayList; use SilverStripe\ORM\ArrayList;
use SilverStripe\ORM\DataObject; use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\FieldType\DBDatetime; use SilverStripe\ORM\FieldType\DBDatetime;
use SilverStripe\ORM\FieldType\DBField; use SilverStripe\ORM\FieldType\DBField;
use SilverStripe\Model\List\SS_List; use SilverStripe\ORM\SS_List;
use SilverStripe\Security\MemberAuthenticator\MemberAuthenticator; use SilverStripe\Security\MemberAuthenticator\MemberAuthenticator;
use SilverStripe\Security\Permission; use SilverStripe\Security\Permission;
use SilverStripe\Security\Security; use SilverStripe\Security\Security;

View File

@ -49,7 +49,7 @@ use SilverStripe\Forms\TreeDropdownField;
use SilverStripe\Forms\TreeMultiselectField; use SilverStripe\Forms\TreeMultiselectField;
use SilverStripe\i18n\i18n; use SilverStripe\i18n\i18n;
use SilverStripe\i18n\i18nEntityProvider; use SilverStripe\i18n\i18nEntityProvider;
use SilverStripe\Model\List\ArrayList; use SilverStripe\ORM\ArrayList;
use SilverStripe\ORM\CMSPreviewable; use SilverStripe\ORM\CMSPreviewable;
use SilverStripe\ORM\DataList; use SilverStripe\ORM\DataList;
use SilverStripe\ORM\DataObject; use SilverStripe\ORM\DataObject;
@ -58,7 +58,7 @@ use SilverStripe\ORM\HasManyList;
use SilverStripe\ORM\HiddenClass; use SilverStripe\ORM\HiddenClass;
use SilverStripe\ORM\Hierarchy\Hierarchy; use SilverStripe\ORM\Hierarchy\Hierarchy;
use SilverStripe\ORM\ManyManyList; use SilverStripe\ORM\ManyManyList;
use SilverStripe\Core\Validation\ValidationResult; use SilverStripe\ORM\ValidationResult;
use SilverStripe\Security\Group; use SilverStripe\Security\Group;
use SilverStripe\Security\InheritedPermissions; use SilverStripe\Security\InheritedPermissions;
use SilverStripe\Security\InheritedPermissionsExtension; use SilverStripe\Security\InheritedPermissionsExtension;
@ -71,7 +71,7 @@ use SilverStripe\SiteConfig\SiteConfig;
use SilverStripe\Subsites\Model\Subsite; use SilverStripe\Subsites\Model\Subsite;
use SilverStripe\Versioned\RecursivePublishable; use SilverStripe\Versioned\RecursivePublishable;
use SilverStripe\Versioned\Versioned; use SilverStripe\Versioned\Versioned;
use SilverStripe\Model\ArrayData; use SilverStripe\View\ArrayData;
use SilverStripe\View\HTML; use SilverStripe\View\HTML;
use SilverStripe\View\Parsers\HTMLValue; use SilverStripe\View\Parsers\HTMLValue;
use SilverStripe\View\Parsers\ShortcodeParser; use SilverStripe\View\Parsers\ShortcodeParser;
@ -2747,6 +2747,8 @@ class SiteTree extends DataObject implements PermissionProvider, i18nEntityProvi
protected function getClassDropdown() protected function getClassDropdown()
{ {
$classes = SiteTree::page_type_classes(); $classes = SiteTree::page_type_classes();
$currentClass = null;
$result = []; $result = [];
foreach ($classes as $class) { foreach ($classes as $class) {
$instance = singleton($class); $instance = singleton($class);
@ -2772,15 +2774,20 @@ class SiteTree extends DataObject implements PermissionProvider, i18nEntityProvi
} }
} }
$result[$class] = $instance->i18n_singular_name(); $pageTypeName = $instance->i18n_singular_name();
$currentClass = $class;
$result[$class] = $pageTypeName;
} }
// Sort alphabetically, and put current on top // sort alphabetically, and put current on top
asort($result); asort($result);
if (isset($result[$this->ClassName])) { if ($currentClass) {
$currentPageTypeName = $result[$this->ClassName]; $currentPageTypeName = $result[$currentClass];
unset($result[$this->ClassName]); unset($result[$currentClass]);
$result = [$this->ClassName => $currentPageTypeName] + $result; $result = array_reverse($result ?? []);
$result[$currentClass] = $currentPageTypeName;
$result = array_reverse($result ?? []);
} }
return $result; return $result;

View File

@ -11,7 +11,7 @@ use SilverStripe\Forms\TextareaField;
use SilverStripe\Forms\TextField; use SilverStripe\Forms\TextField;
use SilverStripe\Forms\TreeDropdownField; use SilverStripe\Forms\TreeDropdownField;
use SilverStripe\ORM\DataObject; use SilverStripe\ORM\DataObject;
use SilverStripe\Core\Validation\ValidationResult; use SilverStripe\ORM\ValidationResult;
use SilverStripe\Security\Member; use SilverStripe\Security\Member;
use SilverStripe\Versioned\Versioned; use SilverStripe\Versioned\Versioned;
use SilverStripe\View\HTML; use SilverStripe\View\HTML;

View File

@ -10,7 +10,7 @@ use SilverStripe\Control\Controller;
use SilverStripe\Forms\DropdownField; use SilverStripe\Forms\DropdownField;
use SilverStripe\Forms\FieldList; use SilverStripe\Forms\FieldList;
use SilverStripe\Subsites\Model\Subsite; use SilverStripe\Subsites\Model\Subsite;
use SilverStripe\Model\List\ArrayList; use SilverStripe\ORM\ArrayList;
use SilverStripe\ORM\DataObject; use SilverStripe\ORM\DataObject;
use SilverStripe\Reports\Report; use SilverStripe\Reports\Report;
use SilverStripe\Versioned\Versioned; use SilverStripe\Versioned\Versioned;

View File

@ -12,7 +12,7 @@ use SilverStripe\Forms\FormAction;
use SilverStripe\Forms\HiddenField; use SilverStripe\Forms\HiddenField;
use SilverStripe\Forms\TextField; use SilverStripe\Forms\TextField;
use SilverStripe\ORM\DB; use SilverStripe\ORM\DB;
use SilverStripe\Model\List\SS_List; use SilverStripe\ORM\SS_List;
/** /**
* Standard basic search form which conducts a fulltext search on all {@link SiteTree} * Standard basic search form which conducts a fulltext search on all {@link SiteTree}

View File

@ -4,7 +4,7 @@ namespace SilverStripe\CMS\Tests\Controllers;
use SilverStripe\CMS\Model\SiteTree; use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Dev\TestOnly; use SilverStripe\Dev\TestOnly;
use SilverStripe\Core\Validation\ValidationException; use SilverStripe\ORM\ValidationException;
class CMSMainTest_ClassA extends SiteTree implements TestOnly class CMSMainTest_ClassA extends SiteTree implements TestOnly
{ {

View File

@ -4,7 +4,7 @@ namespace SilverStripe\CMS\Tests\Controllers;
use SilverStripe\CMS\Model\SiteTree; use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Dev\TestOnly; use SilverStripe\Dev\TestOnly;
use SilverStripe\Core\Validation\ValidationException; use SilverStripe\ORM\ValidationException;
class CMSMainTest_ClassB extends SiteTree implements TestOnly class CMSMainTest_ClassB extends SiteTree implements TestOnly
{ {

View File

@ -24,7 +24,7 @@ use SilverStripe\i18n\i18n;
use SilverStripe\ORM\DataObject; use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\DB; use SilverStripe\ORM\DB;
use SilverStripe\ORM\FieldType\DBDatetime; use SilverStripe\ORM\FieldType\DBDatetime;
use SilverStripe\Core\Validation\ValidationException; use SilverStripe\ORM\ValidationException;
use SilverStripe\Security\Group; use SilverStripe\Security\Group;
use SilverStripe\Security\InheritedPermissions; use SilverStripe\Security\InheritedPermissions;
use SilverStripe\Security\Member; use SilverStripe\Security\Member;
@ -1272,7 +1272,7 @@ class SiteTreeTest extends SapphireTest
#[DataProvider('allowedChildrenProvider')] #[DataProvider('allowedChildrenProvider')]
public function testAllowedChildren($className, $expected, $assertionMessage) public function testAllowedChildren($className, $expected, $assertionMessage)
{ {
$class = new $className(); $class = new $className;
$this->assertEquals($expected, $class->allowedChildren(), $assertionMessage); $this->assertEquals($expected, $class->allowedChildren(), $assertionMessage);
} }
@ -1351,9 +1351,6 @@ class SiteTreeTest extends SapphireTest
); );
} }
/**
* @return void
*/
public function testClassDropdown() public function testClassDropdown()
{ {
$sitetree = new SiteTree(); $sitetree = new SiteTree();
@ -1375,18 +1372,7 @@ class SiteTreeTest extends SapphireTest
$this->assertArrayNotHasKey(SiteTreeTest_NotRoot::class, $method->invoke($rootPage)); $this->assertArrayNotHasKey(SiteTreeTest_NotRoot::class, $method->invoke($rootPage));
$this->assertArrayHasKey(SiteTreeTest_NotRoot::class, $method->invoke($nonRootPage)); $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); Security::setCurrentUser(null);
} }

View File

@ -10,7 +10,7 @@ use SilverStripe\Control\ContentNegotiator;
use SilverStripe\Core\Config\Config; use SilverStripe\Core\Config\Config;
use SilverStripe\Dev\FunctionalTest; use SilverStripe\Dev\FunctionalTest;
use SilverStripe\ORM\DataObject; use SilverStripe\ORM\DataObject;
use SilverStripe\Core\Validation\ValidationException; use SilverStripe\ORM\ValidationException;
use SilverStripe\Security\Member; use SilverStripe\Security\Member;
use SilverStripe\Subsites\Extensions\SiteTreeSubsites; use SilverStripe\Subsites\Extensions\SiteTreeSubsites;
use SilverStripe\Versioned\Versioned; use SilverStripe\Versioned\Versioned;