Apply SilverStripe\Admin namespace

This commit is contained in:
Damian Mooyman 2016-08-11 11:14:02 +12:00
parent bbb2824f3a
commit db34e011f3
30 changed files with 305 additions and 72 deletions

View File

@ -154,6 +154,26 @@ mappings:
Security: SilverStripe\Security\Security Security: SilverStripe\Security\Security
SecurityToken: SilverStripe\Security\SecurityToken SecurityToken: SilverStripe\Security\SecurityToken
NullSecurityToken: SilverStripe\Security\NullSecurityToken NullSecurityToken: SilverStripe\Security\NullSecurityToken
AddToCampaignHandler: SilverStripe\Admin\AddToCampaignHandler
AddToCampaignHandler_FormAction: SilverStripe\Admin\AddToCampaignHandler_FormAction
AdminRootController: SilverStripe\Admin\AdminRootController
CampaignAdmin: SilverStripe\Admin\CampaignAdmin
CMSBatchAction: SilverStripe\Admin\CMSBatchAction
CMSBatchActionHandler: SilverStripe\Admin\CMSBatchActionHandler
CMSMenu: SilverStripe\Admin\CMSMenu
CMSMenuItem: SilverStripe\Admin\CMSMenuItem
CMSPreviewable: SilverStripe\Admin\CMSPreviewable
CMSProfileController: SilverStripe\Admin\CMSProfileController
GroupImportForm: SilverStripe\Admin\GroupImportForm
LeftAndMain: SilverStripe\Admin\LeftAndMain
LeftAndMainMarkingFilter: SilverStripe\Admin\LeftAndMainMarkingFilter
LeftAndMain_HTTPResponse: SilverStripe\Admin\LeftAndMain_HTTPResponse
LeftAndMain_TreeNode: SilverStripe\Admin\LeftAndMain_TreeNode
LeftAndMain_SearchFilter: SilverStripe\Admin\LeftAndMain_SearchFilter
LeftAndMainExtension: SilverStripe\Admin\LeftAndMainExtension
MemberImportForm: SilverStripe\Admin\MemberImportForm
ModelAdmin: SilverStripe\Admin\ModelAdmin
SecurityAdmin: SilverStripe\Admin\SecurityAdmin
skipConfigs: skipConfigs:
- db - db
- casting - casting

View File

@ -5,13 +5,15 @@ namespace SilverStripe\ORM\Hierarchy;
use Config; use Config;
use Exception; use Exception;
use Controller; use Controller;
use LeftAndMain;
use ClassInfo; use ClassInfo;
use SilverStripe\ORM\ValidationResult; use SilverStripe\ORM\ValidationResult;
use SilverStripe\ORM\ArrayList; use SilverStripe\ORM\ArrayList;
use SilverStripe\ORM\DataObject; use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\DataExtension; use SilverStripe\ORM\DataExtension;
use SilverStripe\ORM\Versioning\Versioned; use SilverStripe\ORM\Versioning\Versioned;
use SilverStripe\Admin\LeftAndMain;
/** /**
* DataObjects that use the Hierarchy extension can be be organised as a hierarchy, with children and parents. The most * DataObjects that use the Hierarchy extension can be be organised as a hierarchy, with children and parents. The most

View File

@ -6,7 +6,7 @@ use Exception;
use BadMethodCallException; use BadMethodCallException;
use CMSPreviewable;
use Controller; use Controller;
use SilverStripe\Filesystem\Thumbnail; use SilverStripe\Filesystem\Thumbnail;
use SilverStripe\ORM\DataList; use SilverStripe\ORM\DataList;
@ -15,6 +15,8 @@ use SilverStripe\ORM\ManyManyList;
use SilverStripe\ORM\SS_List; use SilverStripe\ORM\SS_List;
use SilverStripe\Security\Member; use SilverStripe\Security\Member;
use SilverStripe\Security\Permission; use SilverStripe\Security\Permission;
use SilverStripe\Admin\CMSPreviewable;
/** /**

View File

@ -7,8 +7,10 @@ use Controller;
use Director; use Director;
use Convert; use Convert;
use Session; use Session;
use AdminRootController;
use SS_HTTPResponse; use SS_HTTPResponse;
use SilverStripe\Admin\AdminRootController;
/** /**

View File

@ -135,7 +135,7 @@ class Group extends DataObject {
// Filter permissions // Filter permissions
// TODO SecurityAdmin coupling, not easy to get to the form fields through GridFieldDetailForm // TODO SecurityAdmin coupling, not easy to get to the form fields through GridFieldDetailForm
$permissionsField->setHiddenPermissions((array)Config::inst()->get('SecurityAdmin', 'hidden_permissions')); $permissionsField->setHiddenPermissions((array)Config::inst()->get('SilverStripe\\Admin\\SecurityAdmin', 'hidden_permissions'));
if($this->ID) { if($this->ID) {
$group = $this; $group = $this;
@ -203,7 +203,7 @@ class Group extends DataObject {
) . '<br />' . ) . '<br />' .
sprintf( sprintf(
'<a href="%s" class="add-role">%s</a>', '<a href="%s" class="add-role">%s</a>',
singleton('SecurityAdmin')->Link('show/root#Root_Roles'), singleton('SilverStripe\\Admin\\SecurityAdmin')->Link('show/root#Root_Roles'),
// TODO This should include #Root_Roles to switch directly to the tab, // TODO This should include #Root_Roles to switch directly to the tab,
// but tabstrip.js doesn't display tabs when directly adressed through a URL pragma // but tabstrip.js doesn't display tabs when directly adressed through a URL pragma
_t('Group.RolesAddEditLink', 'Manage roles') _t('Group.RolesAddEditLink', 'Manage roles')

View File

@ -1351,7 +1351,7 @@ class Member extends DataObject implements TemplateGlobalProvider {
if(class_exists('SilverStripe\\CMS\\Controllers\\CMSMain')) { if(class_exists('SilverStripe\\CMS\\Controllers\\CMSMain')) {
$cmsPerms = CMSMain::singleton()->providePermissions(); $cmsPerms = CMSMain::singleton()->providePermissions();
} else { } else {
$cmsPerms = singleton('LeftAndMain')->providePermissions(); $cmsPerms = singleton('SilverStripe\\Admin\\LeftAndMain')->providePermissions();
} }
if(!empty($cmsPerms)) { if(!empty($cmsPerms)) {

View File

@ -1,5 +1,7 @@
<?php <?php
use SilverStripe\Admin\CMSMenu;
// Default CMS HTMLEditorConfig // Default CMS HTMLEditorConfig
HTMLEditorConfig::get('cms')->setOptions(array( HTMLEditorConfig::get('cms')->setOptions(array(
'friendly_name' => 'Default CMS', 'friendly_name' => 'Default CMS',
@ -35,4 +37,4 @@ HTMLEditorConfig::get('cms')
'ssbuttons' => FRAMEWORK_DIR . '/client/dist/js/TinyMCE_SSPlugin.js' 'ssbuttons' => FRAMEWORK_DIR . '/client/dist/js/TinyMCE_SSPlugin.js'
)); ));
CMSMenu::remove_menu_class('CMSProfileController'); CMSMenu::remove_menu_class('SilverStripe\\Admin\\CMSProfileController');

View File

@ -1,10 +1,25 @@
<?php <?php
namespace SilverStripe\Admin;
use SilverStripe\Framework\Core\Injectable; use SilverStripe\Framework\Core\Injectable;
use SilverStripe\ORM\Versioning\ChangeSet; use SilverStripe\ORM\Versioning\ChangeSet;
use SilverStripe\ORM\DataObject; use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\Versioning\ChangeSetItem; use SilverStripe\ORM\Versioning\ChangeSetItem;
use ClassInfo;
use Object;
use DropdownField;
use FieldList;
use HiddenField;
use Form;
use CompositeField;
use LiteralField;
use Director;
use SS_HTTPResponse;
use FormAction;

View File

@ -1,6 +1,15 @@
<?php <?php
namespace SilverStripe\Admin;
use SilverStripe\ORM\DataModel; use SilverStripe\ORM\DataModel;
use Controller;
use TemplateGlobalProvider;
use Config;
use SS_HTTPRequest;
use Injector;
/** /**
* @package framework * @package framework
@ -43,7 +52,7 @@ class AdminRootController extends Controller implements TemplateGlobalProvider {
* The LeftAndMain child that will be used as the initial panel to display if none is selected (i.e. if you * The LeftAndMain child that will be used as the initial panel to display if none is selected (i.e. if you
* visit /admin) * visit /admin)
*/ */
private static $default_panel = 'SecurityAdmin'; private static $default_panel = 'SilverStripe\\Admin\\SecurityAdmin';
/** /**
* @var array * @var array

View File

@ -1,8 +1,15 @@
<?php <?php
namespace SilverStripe\Admin;
use SilverStripe\ORM\SS_List; use SilverStripe\ORM\SS_List;
use SilverStripe\ORM\DataObject; use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\Versioning\Versioned; use SilverStripe\ORM\Versioning\Versioned;
use Object;
use Controller;
use Convert;
/** /**
* A class representing back actions. * A class representing back actions.

View File

@ -1,11 +1,22 @@
<?php <?php
namespace SilverStripe\Admin;
use SilverStripe\ORM\ArrayList; use SilverStripe\ORM\ArrayList;
use SilverStripe\ORM\DB; use SilverStripe\ORM\DB;
use SilverStripe\ORM\SS_List; use SilverStripe\ORM\SS_List;
use SilverStripe\ORM\Versioning\Versioned; use SilverStripe\ORM\Versioning\Versioned;
use SilverStripe\ORM\DataObject; use SilverStripe\ORM\DataObject;
use SilverStripe\Security\SecurityToken; use SilverStripe\Security\SecurityToken;
use RequestHandler;
use Config;
use Controller;
use SS_HTTPResponse;
use InvalidArgumentException;
use ArrayData;
use Translatable;
/** /**
@ -73,9 +84,9 @@ class CMSBatchActionHandler extends RequestHandler {
* @param string $recordClass * @param string $recordClass
*/ */
public static function register($urlSegment, $batchActionClass, $recordClass = 'SilverStripe\\CMS\\Model\\SiteTree') { public static function register($urlSegment, $batchActionClass, $recordClass = 'SilverStripe\\CMS\\Model\\SiteTree') {
if(is_subclass_of($batchActionClass, 'CMSBatchAction')) { if(is_subclass_of($batchActionClass, 'SilverStripe\\Admin\\CMSBatchAction')) {
Config::inst()->update( Config::inst()->update(
'CMSBatchActionHandler', 'SilverStripe\\Admin\\CMSBatchActionHandler',
'batch_actions', 'batch_actions',
array( array(
$urlSegment => array( $urlSegment => array(
@ -230,7 +241,7 @@ class CMSBatchActionHandler extends RequestHandler {
* @throws InvalidArgumentException if invalid action class is passed. * @throws InvalidArgumentException if invalid action class is passed.
*/ */
protected function buildAction($class) { protected function buildAction($class) {
if(!is_subclass_of($class, 'CMSBatchAction')) { if(!is_subclass_of($class, 'SilverStripe\\Admin\\CMSBatchAction')) {
throw new InvalidArgumentException("{$class} is not a valid subclass of CMSBatchAction"); throw new InvalidArgumentException("{$class} is not a valid subclass of CMSBatchAction");
} }
return $class::singleton(); return $class::singleton();

View File

@ -1,6 +1,20 @@
<?php <?php
namespace SilverStripe\Admin;
use SilverStripe\Security\Member; use SilverStripe\Security\Member;
use Object;
use IteratorAggregate;
use i18nEntityProvider;
use Config;
use Controller;
use Convert;
use ClassInfo;
use ReflectionClass;
use ArrayIterator;
use i18n;
/** /**
* The object manages the main CMS menu. See {@link LeftAndMain::init()} for * The object manages the main CMS menu. See {@link LeftAndMain::init()} for
* example usage. * example usage.
@ -321,10 +335,10 @@ CMSMenu extends Object implements IteratorAggregate, i18nEntityProvider {
*/ */
public static function get_cms_classes($root = null, $recursive = true, $sort = self::MENU_PRIORITY) { public static function get_cms_classes($root = null, $recursive = true, $sort = self::MENU_PRIORITY) {
if(!$root) { if(!$root) {
$root = 'LeftAndMain'; $root = 'SilverStripe\\Admin\\LeftAndMain';
} }
/** @todo Make these actual abstract classes */ /** @todo Make these actual abstract classes */
$abstractClasses = ['LeftAndMain', 'SilverStripe\\CMS\\Controllers\\CMSMain']; $abstractClasses = ['SilverStripe\\Admin\\LeftAndMain', 'SilverStripe\\CMS\\Controllers\\CMSMain'];
$subClasses = array_values(ClassInfo::subclassesFor($root)); $subClasses = array_values(ClassInfo::subclassesFor($root));
foreach($subClasses as $className) { foreach($subClasses as $className) {
if($recursive && $className != $root) { if($recursive && $className != $root) {

View File

@ -1,5 +1,11 @@
<?php <?php
namespace SilverStripe\Admin;
use SilverStripe\ORM\FieldType\DBField; use SilverStripe\ORM\FieldType\DBField;
use Object;
use Convert;
/** /**
* A simple CMS menu item. * A simple CMS menu item.

View File

@ -1,4 +1,9 @@
<?php <?php
namespace SilverStripe\Admin;
/** /**
* Interface to provide enough information about a record to make it previewable * Interface to provide enough information about a record to make it previewable
* through the CMS. It uses the record database ID, its "frontend" and "backend" * through the CMS. It uses the record database ID, its "frontend" and "backend"

View File

@ -1,8 +1,15 @@
<?php <?php
namespace SilverStripe\Admin;
use SilverStripe\ORM\ArrayList; use SilverStripe\ORM\ArrayList;
use SilverStripe\Security\Member; use SilverStripe\Security\Member;
use SilverStripe\Security\Permission; use SilverStripe\Security\Permission;
use SS_HTTPResponse;
use HiddenField;
use FormAction;
/** /**

View File

@ -1,11 +1,24 @@
<?php <?php
namespace SilverStripe\Admin;
use SilverStripe\ORM\SS_List; use SilverStripe\ORM\SS_List;
use SilverStripe\ORM\Versioning\ChangeSet; use SilverStripe\ORM\Versioning\ChangeSet;
use SilverStripe\ORM\Versioning\ChangeSetItem; use SilverStripe\ORM\Versioning\ChangeSetItem;
use SilverStripe\ORM\DataObject; use SilverStripe\ORM\DataObject;
use SilverStripe\Security\SecurityToken; use SilverStripe\Security\SecurityToken;
use SilverStripe\Security\PermissionProvider; use SilverStripe\Security\PermissionProvider;
use Convert;
use SS_HTTPResponse;
use SS_HTTPRequest;
use LogicException;
use HiddenField;
use Form;
use FieldList;
use FormAction;
use Controller;
/** /**

View File

@ -1,7 +1,17 @@
<?php <?php
namespace SilverStripe\Admin;
use SilverStripe\Security\Group; use SilverStripe\Security\Group;
use SilverStripe\Security\GroupCsvBulkLoader; use SilverStripe\Security\GroupCsvBulkLoader;
use Form;
use FieldList;
use LiteralField;
use FileField;
use FormAction;
use RequiredFields;
/** /**
* Imports {@link Group} records by CSV upload, as defined in * Imports {@link Group} records by CSV upload, as defined in

View File

@ -1,5 +1,8 @@
<?php <?php
namespace SilverStripe\Admin;
/** /**
* @package framework * @package framework
* @subpackage admin * @subpackage admin
@ -26,6 +29,37 @@ use SilverStripe\View\ThemeResourceLoader;
use SilverStripe\CMS\Model\SiteTree; use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\CMS\Model\VirtualPage; use SilverStripe\CMS\Model\VirtualPage;
use SilverStripe\CMS\Controllers\SilverStripeNavigator; use SilverStripe\CMS\Controllers\SilverStripeNavigator;
use Controller;
use SSViewer;
use Injector;
use Director;
use Convert;
use SS_HTTPResponse;
use Form;
use Config;
use i18n;
use Session;
use HTMLEditorConfig;
use Requirements;
use SS_HTTPRequest;
use SS_HTTPResponse_Exception;
use Deprecation;
use PjaxResponseNegotiator;
use ArrayData;
use ReflectionClass;
use InvalidArgumentException;
use SiteConfig;
use HiddenField;
use LiteralField;
use FormAction;
use FieldList;
use HTMLEditorField_Toolbar;
use DropdownField;
use PrintableTransformation;
use SS_Cache;
use ClassInfo;
use ViewableData;
@ -230,7 +264,7 @@ class LeftAndMain extends Controller implements PermissionProvider {
*/ */
public function getCombinedClientConfig() { public function getCombinedClientConfig() {
$combinedClientConfig = ['sections' => []]; $combinedClientConfig = ['sections' => []];
$cmsClassNames = CMSMenu::get_cms_classes('LeftAndMain', true, CMSMenu::URL_PRIORITY); $cmsClassNames = CMSMenu::get_cms_classes('SilverStripe\\Admin\\LeftAndMain', true, CMSMenu::URL_PRIORITY);
foreach ($cmsClassNames as $className) { foreach ($cmsClassNames as $className) {
$combinedClientConfig['sections'][$className] = Injector::inst()->get($className)->getClientConfig(); $combinedClientConfig['sections'][$className] = Injector::inst()->get($className)->getClientConfig();
@ -901,7 +935,7 @@ class LeftAndMain extends Controller implements PermissionProvider {
* @return array * @return array
*/ */
public function getTemplatesWithSuffix($suffix) { public function getTemplatesWithSuffix($suffix) {
return SSViewer::get_templates_by_class(get_class($this), $suffix, 'LeftAndMain'); return SSViewer::get_templates_by_class(get_class($this), $suffix, 'SilverStripe\\Admin\\LeftAndMain');
} }
public function Content() { public function Content() {
@ -980,7 +1014,7 @@ class LeftAndMain extends Controller implements PermissionProvider {
// Validate classname // Validate classname
$filterClass = $params['FilterClass']; $filterClass = $params['FilterClass'];
$filterInfo = new ReflectionClass($filterClass); $filterInfo = new ReflectionClass($filterClass);
if(!$filterInfo->implementsInterface('LeftAndMain_SearchFilter')) { if(!$filterInfo->implementsInterface('SilverStripe\\Admin\\LeftAndMain_SearchFilter')) {
throw new InvalidArgumentException(sprintf('Invalid filter class passed: %s', $filterClass)); throw new InvalidArgumentException(sprintf('Invalid filter class passed: %s', $filterClass));
} }
@ -1073,21 +1107,21 @@ class LeftAndMain extends Controller implements PermissionProvider {
) { ) {
return null; return null;
} }
return sprintf( return sprintf(
'<ul><li class="readonly"><span class="item">' '<ul><li class="readonly"><span class="item">'
. '%s (<a href="%s" class="cms-panel-link" data-pjax-target="Content">%s</a>)' . '%s (<a href="%s" class="cms-panel-link" data-pjax-target="Content">%s</a>)'
. '</span></li></ul>', . '</span></li></ul>',
_t('LeftAndMain.TooManyPages', 'Too many pages'), _t('LeftAndMain.TooManyPages', 'Too many pages'),
Controller::join_links( Controller::join_links(
$controller->LinkWithSearch($controller->Link()), ' $controller->LinkWithSearch($controller->Link()), '
?view=list&ParentID=' . $parent->ID ?view=list&ParentID=' . $parent->ID
), ),
_t( _t(
'LeftAndMain.ShowAsList', 'LeftAndMain.ShowAsList',
'show as list', 'show as list',
'Show large amount of pages in list instead of tree view' 'Show large amount of pages in list instead of tree view'
) )
); );
}; };
} else { } else {
$nodeCountCallback = null; $nodeCountCallback = null;
@ -1476,7 +1510,7 @@ class LeftAndMain extends Controller implements PermissionProvider {
} }
// Added in-line to the form, but plucked into different view by frontend scripts. // Added in-line to the form, but plucked into different view by frontend scripts.
if(in_array('CMSPreviewable', class_implements($record))) { if ($record instanceof CMSPreviewable) {
/** @skipUpgrade */ /** @skipUpgrade */
$navField = new LiteralField('SilverStripeNavigator', $this->getSilverStripeNavigator()); $navField = new LiteralField('SilverStripeNavigator', $this->getSilverStripeNavigator());
$navField->setAllowHTML(true); $navField->setAllowHTML(true);
@ -1531,7 +1565,7 @@ class LeftAndMain extends Controller implements PermissionProvider {
}); });
// Announce the capability so the frontend can decide whether to allow preview or not. // Announce the capability so the frontend can decide whether to allow preview or not.
if(in_array('CMSPreviewable', class_implements($record))) { if(in_array('SilverStripe\\Admin\\CMSPreviewable', class_implements($record))) {
$form->addExtraClass('cms-previewable'); $form->addExtraClass('cms-previewable');
} }
@ -1902,7 +1936,7 @@ class LeftAndMain extends Controller implements PermissionProvider {
*/ */
public static function set_application_link($link) { public static function set_application_link($link) {
Deprecation::notice('4.0', 'Use the "LeftAndMain.application_link" config setting instead'); Deprecation::notice('4.0', 'Use the "LeftAndMain.application_link" config setting instead');
Config::inst()->update('LeftAndMain', 'application_link', $link); Config::inst()->update('SilverStripe\\Admin\\LeftAndMain', 'application_link', $link);
} }
/** /**
@ -1927,7 +1961,7 @@ class LeftAndMain extends Controller implements PermissionProvider {
*/ */
public static function setApplicationName($name) { public static function setApplicationName($name) {
Deprecation::notice('4.0', 'Use the "LeftAndMain.application_name" config setting instead'); Deprecation::notice('4.0', 'Use the "LeftAndMain.application_name" config setting instead');
Config::inst()->update('LeftAndMain', 'application_name', $name); Config::inst()->update('SilverStripe\\Admin\\LeftAndMain', 'application_name', $name);
} }
/** /**
@ -1997,8 +2031,8 @@ class LeftAndMain extends Controller implements PermissionProvider {
// Add any custom ModelAdmin subclasses. Can't put this on ModelAdmin itself // Add any custom ModelAdmin subclasses. Can't put this on ModelAdmin itself
// since its marked abstract, and needs to be singleton instanciated. // since its marked abstract, and needs to be singleton instanciated.
foreach(ClassInfo::subclassesFor('ModelAdmin') as $i => $class) { foreach(ClassInfo::subclassesFor('SilverStripe\\Admin\\ModelAdmin') as $i => $class) {
if($class == 'ModelAdmin') continue; if($class == 'SilverStripe\\Admin\\ModelAdmin') continue;
if(ClassInfo::classImplements($class, 'TestOnly')) continue; if(ClassInfo::classImplements($class, 'TestOnly')) continue;
$title = LeftAndMain::menu_title($class); $title = LeftAndMain::menu_title($class);
@ -2024,7 +2058,7 @@ class LeftAndMain extends Controller implements PermissionProvider {
*/ */
public static function require_javascript($file) { public static function require_javascript($file) {
Deprecation::notice('4.0', 'Use "LeftAndMain.extra_requirements_javascript" config setting instead'); Deprecation::notice('4.0', 'Use "LeftAndMain.extra_requirements_javascript" config setting instead');
Config::inst()->update('LeftAndMain', 'extra_requirements_javascript', array($file => array())); Config::inst()->update('SilverStripe\\Admin\\LeftAndMain', 'extra_requirements_javascript', array($file => array()));
} }
/** /**
@ -2037,7 +2071,7 @@ class LeftAndMain extends Controller implements PermissionProvider {
*/ */
public static function require_css($file, $media = null) { public static function require_css($file, $media = null) {
Deprecation::notice('4.0', 'Use "LeftAndMain.extra_requirements_css" config setting instead'); Deprecation::notice('4.0', 'Use "LeftAndMain.extra_requirements_css" config setting instead');
Config::inst()->update('LeftAndMain', 'extra_requirements_css', array($file => array('media' => $media))); Config::inst()->update('SilverStripe\\Admin\\LeftAndMain', 'extra_requirements_css', array($file => array('media' => $media)));
} }
/** /**
@ -2052,7 +2086,7 @@ class LeftAndMain extends Controller implements PermissionProvider {
*/ */
public static function require_themed_css($name, $media = null) { public static function require_themed_css($name, $media = null) {
Deprecation::notice('4.0', 'Use "LeftAndMain.extra_requirements_themedCss" config setting instead'); Deprecation::notice('4.0', 'Use "LeftAndMain.extra_requirements_themedCss" config setting instead');
Config::inst()->update('LeftAndMain', 'extra_requirements_themedCss', array($name => array('media' => $media))); Config::inst()->update('SilverStripe\\Admin\\LeftAndMain', 'extra_requirements_themedCss', array($name => array('media' => $media)));
} }
} }

View File

@ -1,5 +1,10 @@
<?php <?php
namespace SilverStripe\Admin;
use Extension;
/** /**
* Plug-ins for additional functionality in your LeftAndMain classes. * Plug-ins for additional functionality in your LeftAndMain classes.
* *

View File

@ -1,6 +1,17 @@
<?php <?php
namespace SilverStripe\Admin;
use SilverStripe\Security\MemberCsvBulkLoader; use SilverStripe\Security\MemberCsvBulkLoader;
use Form;
use FieldList;
use LiteralField;
use FileField;
use FormAction;
use RequiredFields;
use Requirements;
/** /**
* Imports {@link Member} records by CSV upload, as defined in * Imports {@link Member} records by CSV upload, as defined in

View File

@ -1,8 +1,31 @@
<?php <?php
namespace SilverStripe\Admin;
use SilverStripe\ORM\ArrayList; use SilverStripe\ORM\ArrayList;
use SilverStripe\ORM\SS_List; use SilverStripe\ORM\SS_List;
use SilverStripe\Security\Member; use SilverStripe\Security\Member;
use Requirements;
use GridFieldExportButton;
use GridField;
use GridFieldConfig_RecordEditor;
use GridFieldPrintButton;
use Form;
use FieldList;
use Controller;
use Object;
use RequiredFields;
use ArrayLib;
use ArrayData;
use HiddenField;
use FileField;
use Convert;
use LiteralField;
use CheckboxField;
use FormAction;
use Deprecation;
/** /**
* Generates a three-pane UI for editing model classes, with an * Generates a three-pane UI for editing model classes, with an

View File

@ -1,11 +1,31 @@
<?php <?php
namespace SilverStripe\Admin;
use SilverStripe\Security\Security; use SilverStripe\Security\Security;
use SilverStripe\Security\Member; use SilverStripe\Security\Member;
use SilverStripe\Security\Group; use SilverStripe\Security\Group;
use SilverStripe\Security\Permission; use SilverStripe\Security\Permission;
use SilverStripe\Security\PermissionRole; use SilverStripe\Security\PermissionRole;
use SilverStripe\Security\PermissionProvider; use SilverStripe\Security\PermissionProvider;
use Requirements;
use GridField;
use GridFieldConfig_RecordEditor;
use GridFieldButtonRow;
use GridFieldExportButton;
use Convert;
use FieldList;
use TabSet;
use Tab;
use LiteralField;
use HiddenField;
use HeaderField;
use Form;
use ArrayData;
use Deprecation;
use Config;
/** /**
* Security section of the CMS * Security section of the CMS
@ -236,7 +256,7 @@ class SecurityAdmin extends LeftAndMain implements PermissionProvider {
$group = $this->currentPage(); $group = $this->currentPage();
$form = new MemberImportForm( $form = new MemberImportForm(
$this, $this,
'MemberImportForm' 'SilverStripe\\Admin\\MemberImportForm'
); );
$form->setGroup($group); $form->setGroup($group);
@ -265,7 +285,7 @@ class SecurityAdmin extends LeftAndMain implements PermissionProvider {
$form = new GroupImportForm( $form = new GroupImportForm(
$this, $this,
'GroupImportForm' 'SilverStripe\\Admin\\GroupImportForm'
); );
return $form; return $form;

View File

@ -1,4 +1,6 @@
<?php <?php
use SilverStripe\Admin\CMSMenuItem;
/** /**
* @package framework * @package framework
* @subpackage tests * @subpackage tests

View File

@ -1,4 +1,7 @@
<?php <?php
use SilverStripe\Admin\CMSMenu;
use SilverStripe\Admin\LeftAndMain;
/** /**
* @package framework * @package framework
* @subpackage tests * @subpackage tests
@ -16,7 +19,7 @@ class CMSMenuTest extends SapphireTest implements TestOnly {
CMSMenu::add_controller('CMSMenuTest_LeftAndMainController'); CMSMenu::add_controller('CMSMenuTest_LeftAndMainController');
$menuItems = CMSMenu::get_menu_items(); $menuItems = CMSMenu::get_menu_items();
$menuItem = $menuItems['CMSMenuTest_LeftAndMainController']; $menuItem = $menuItems['CMSMenuTest_LeftAndMainController'];
$this->assertInstanceOf('CMSMenuItem', $menuItem, 'Controller menu item is of class CMSMenuItem'); $this->assertInstanceOf('SilverStripe\\Admin\\CMSMenuItem', $menuItem, 'Controller menu item is of class CMSMenuItem');
$this->assertContains($menuItem->url, singleton('CMSMenuTest_LeftAndMainController')->Link(), $this->assertContains($menuItem->url, singleton('CMSMenuTest_LeftAndMainController')->Link(),
'Controller menu item has the correct link'); 'Controller menu item has the correct link');
$this->assertEquals($menuItem->controller, 'CMSMenuTest_LeftAndMainController', $this->assertEquals($menuItem->controller, 'CMSMenuTest_LeftAndMainController',
@ -29,7 +32,7 @@ class CMSMenuTest extends SapphireTest implements TestOnly {
CMSMenu::add_controller('CMSMenuTest_CustomTitle'); CMSMenu::add_controller('CMSMenuTest_CustomTitle');
$menuItems = CMSMenu::get_menu_items(); $menuItems = CMSMenu::get_menu_items();
$menuItem = $menuItems['CMSMenuTest_CustomTitle']; $menuItem = $menuItems['CMSMenuTest_CustomTitle'];
$this->assertInstanceOf('CMSMenuItem', $menuItem, 'Controller menu item is of class CMSMenuItem'); $this->assertInstanceOf('SilverStripe\\Admin\\CMSMenuItem', $menuItem, 'Controller menu item is of class CMSMenuItem');
$this->assertEquals('CMSMenuTest_CustomTitle (localised)', $menuItem->title); $this->assertEquals('CMSMenuTest_CustomTitle (localised)', $menuItem->title);
CMSMenu::clear_menu(); CMSMenu::clear_menu();
@ -37,7 +40,7 @@ class CMSMenuTest extends SapphireTest implements TestOnly {
CMSMenu::add_link('LinkCode', 'link title', 'http://www.example.com'); CMSMenu::add_link('LinkCode', 'link title', 'http://www.example.com');
$menuItems = CMSMenu::get_menu_items(); $menuItems = CMSMenu::get_menu_items();
$menuItem = $menuItems['LinkCode']; $menuItem = $menuItems['LinkCode'];
$this->assertInstanceOf('CMSMenuItem', $menuItem, 'Link menu item is of class CMSMenuItem'); $this->assertInstanceOf('SilverStripe\\Admin\\CMSMenuItem', $menuItem, 'Link menu item is of class CMSMenuItem');
$this->assertEquals($menuItem->title, 'link title', 'Link menu item has the correct title'); $this->assertEquals($menuItem->title, 'link title', 'Link menu item has the correct title');
$this->assertEquals($menuItem->url,'http://www.example.com', 'Link menu item has the correct link'); $this->assertEquals($menuItem->url,'http://www.example.com', 'Link menu item has the correct link');
$this->assertNull($menuItem->controller, 'Link menu item has no controller class'); $this->assertNull($menuItem->controller, 'Link menu item has no controller class');
@ -78,9 +81,9 @@ class CMSMenuTest extends SapphireTest implements TestOnly {
// 1.) SecurityAdmin is included // 1.) SecurityAdmin is included
// 2.) LeftAndMain & ModelAdmin are excluded // 2.) LeftAndMain & ModelAdmin are excluded
$cmsClasses = CMSMenu::get_cms_classes(); $cmsClasses = CMSMenu::get_cms_classes();
$this->assertContains('SecurityAdmin', $cmsClasses, 'SecurityAdmin included in valid CMS Classes'); $this->assertContains('SilverStripe\\Admin\\SecurityAdmin', $cmsClasses, 'SecurityAdmin included in valid CMS Classes');
$this->assertNotContains('LeftAndMain', $cmsClasses, 'LeftAndMain not included in valid CMS Classes'); $this->assertNotContains('SilverStripe\\Admin\\LeftAndMain', $cmsClasses, 'LeftAndMain not included in valid CMS Classes');
$this->assertNotContains('ModelAdmin', $cmsClasses, 'LeftAndMain not included in valid CMS Classes'); $this->assertNotContains('SilverStripe\\Admin\\ModelAdmin', $cmsClasses, 'LeftAndMain not included in valid CMS Classes');
} }
@ -89,13 +92,13 @@ class CMSMenuTest extends SapphireTest implements TestOnly {
// Populate from CMS Classes, check for existance of SecurityAdmin // Populate from CMS Classes, check for existance of SecurityAdmin
CMSMenu::clear_menu(); CMSMenu::clear_menu();
CMSMenu::populate_menu(); CMSMenu::populate_menu();
$menuItem = CMSMenu::get_menu_item('SecurityAdmin'); $menuItem = CMSMenu::get_menu_item('SilverStripe\\Admin\\SecurityAdmin');
$this->assertInstanceOf('CMSMenuItem', $menuItem, 'SecurityAdmin menu item exists'); $this->assertInstanceOf('SilverStripe\\Admin\\CMSMenuItem', $menuItem, 'SecurityAdmin menu item exists');
$this->assertContains($menuItem->url, singleton('SecurityAdmin')->Link(), 'Menu item has the correct link'); $this->assertContains($menuItem->url, singleton('SilverStripe\\Admin\\SecurityAdmin')->Link(), 'Menu item has the correct link');
$this->assertEquals($menuItem->controller, 'SecurityAdmin', 'Menu item has the correct controller class'); $this->assertEquals($menuItem->controller, 'SilverStripe\\Admin\\SecurityAdmin', 'Menu item has the correct controller class');
$this->assertEquals( $this->assertEquals(
$menuItem->priority, $menuItem->priority,
singleton('SecurityAdmin')->stat('menu_priority'), singleton('SilverStripe\\Admin\\SecurityAdmin')->stat('menu_priority'),
'Menu item has the correct priority' 'Menu item has the correct priority'
); );

View File

@ -1,6 +1,9 @@
<?php <?php
use SilverStripe\ORM\DataObject; use SilverStripe\ORM\DataObject;
use SilverStripe\Admin\CMSMenu;
use SilverStripe\Admin\LeftAndMain;
/** /**
* @package framework * @package framework
@ -21,15 +24,15 @@ class LeftAndMainTest extends FunctionalTest {
//$this->autoFollowRedirection = false; //$this->autoFollowRedirection = false;
$this->resetMenu(); $this->resetMenu();
$this->backupCss = Config::inst()->get('LeftAndMain', 'extra_requirements_css'); $this->backupCss = Config::inst()->get('SilverStripe\\Admin\\LeftAndMain', 'extra_requirements_css');
$this->backupJs = Config::inst()->get('LeftAndMain', 'extra_requirements_javascript'); $this->backupJs = Config::inst()->get('SilverStripe\\Admin\\LeftAndMain', 'extra_requirements_javascript');
$this->backupCombined = Requirements::get_combined_files_enabled(); $this->backupCombined = Requirements::get_combined_files_enabled();
Config::inst()->update('LeftAndMain', 'extra_requirements_css', array( Config::inst()->update('SilverStripe\\Admin\\LeftAndMain', 'extra_requirements_css', array(
FRAMEWORK_DIR . '/tests/assets/LeftAndMainTest.css' FRAMEWORK_DIR . '/tests/assets/LeftAndMainTest.css'
)); ));
Config::inst()->update('LeftAndMain', 'extra_requirements_javascript', array( Config::inst()->update('SilverStripe\\Admin\\LeftAndMain', 'extra_requirements_javascript', array(
FRAMEWORK_DIR . '/tests/assets/LeftAndMainTest.js' FRAMEWORK_DIR . '/tests/assets/LeftAndMainTest.js'
)); ));
@ -56,8 +59,8 @@ class LeftAndMainTest extends FunctionalTest {
public function tearDown() { public function tearDown() {
parent::tearDown(); parent::tearDown();
Config::inst()->update('LeftAndMain', 'extra_requirements_css', $this->backupCss); Config::inst()->update('SilverStripe\\Admin\\LeftAndMain', 'extra_requirements_css', $this->backupCss);
Config::inst()->update('LeftAndMain', 'extra_requirements_javascript', $this->backupJs); Config::inst()->update('SilverStripe\\Admin\\LeftAndMain', 'extra_requirements_javascript', $this->backupJs);
Requirements::set_combined_files_enabled($this->backupCombined); Requirements::set_combined_files_enabled($this->backupCombined);
} }
@ -150,7 +153,7 @@ class LeftAndMainTest extends FunctionalTest {
$this->session()->inst_set('loggedInAs', $adminuser->ID); $this->session()->inst_set('loggedInAs', $adminuser->ID);
$this->resetMenu(); $this->resetMenu();
$menuItems = singleton('LeftAndMain')->MainMenu(false); $menuItems = singleton('SilverStripe\\Admin\\LeftAndMain')->MainMenu(false);
foreach($menuItems as $menuItem) { foreach($menuItems as $menuItem) {
$link = $menuItem->Link; $link = $menuItem->Link;
@ -180,7 +183,7 @@ class LeftAndMainTest extends FunctionalTest {
// anonymous user // anonymous user
$this->session()->inst_set('loggedInAs', null); $this->session()->inst_set('loggedInAs', null);
$this->resetMenu(); $this->resetMenu();
$menuItems = singleton('LeftAndMain')->MainMenu(false); $menuItems = singleton('SilverStripe\\Admin\\LeftAndMain')->MainMenu(false);
$this->assertEquals( $this->assertEquals(
array_map($allValsFn, $menuItems->column('Code')), array_map($allValsFn, $menuItems->column('Code')),
array(), array(),
@ -190,24 +193,24 @@ class LeftAndMainTest extends FunctionalTest {
// restricted cms user // restricted cms user
$this->logInAs($securityonlyuser); $this->logInAs($securityonlyuser);
$this->resetMenu(); $this->resetMenu();
$menuItems = singleton('LeftAndMain')->MainMenu(false); $menuItems = singleton('SilverStripe\\Admin\\LeftAndMain')->MainMenu(false);
$menuItems = array_map($allValsFn, $menuItems->column('Code')); $menuItems = array_map($allValsFn, $menuItems->column('Code'));
sort($menuItems); sort($menuItems);
$this->assertEquals( $this->assertEquals(
$menuItems, $menuItems,
array('CMSProfileController', 'Help', 'SecurityAdmin'), array('SilverStripe\\Admin\\CMSProfileController', 'Help', 'SilverStripe\\Admin\\SecurityAdmin'),
'Groups with limited access can only access the interfaces they have permissions for' 'Groups with limited access can only access the interfaces they have permissions for'
); );
// all cms sections user // all cms sections user
$this->logInAs($allcmssectionsuser); $this->logInAs($allcmssectionsuser);
$this->resetMenu(); $this->resetMenu();
$menuItems = singleton('LeftAndMain')->MainMenu(false); $menuItems = singleton('SilverStripe\\Admin\\LeftAndMain')->MainMenu(false);
$this->assertContains('CMSProfileController', $this->assertContains('SilverStripe\\Admin\\CMSProfileController',
array_map($allValsFn, $menuItems->column('Code')), array_map($allValsFn, $menuItems->column('Code')),
'Group with CMS_ACCESS_LeftAndMain permission can edit own profile' 'Group with CMS_ACCESS_LeftAndMain permission can edit own profile'
); );
$this->assertContains('SecurityAdmin', $this->assertContains('SilverStripe\\Admin\\SecurityAdmin',
array_map($allValsFn, $menuItems->column('Code')), array_map($allValsFn, $menuItems->column('Code')),
'Group with CMS_ACCESS_LeftAndMain permission can access all sections' 'Group with CMS_ACCESS_LeftAndMain permission can access all sections'
); );
@ -219,9 +222,9 @@ class LeftAndMainTest extends FunctionalTest {
// admin // admin
$this->logInAs($adminuser); $this->logInAs($adminuser);
$this->resetMenu(); $this->resetMenu();
$menuItems = singleton('LeftAndMain')->MainMenu(false); $menuItems = singleton('SilverStripe\\Admin\\LeftAndMain')->MainMenu(false);
$this->assertContains( $this->assertContains(
'SecurityAdmin', 'SilverStripe\\Admin\\SecurityAdmin',
array_map($allValsFn, $menuItems->column('Code')), array_map($allValsFn, $menuItems->column('Code')),
'Administrators can access Security Admin' 'Administrators can access Security Admin'
); );

View File

@ -2,6 +2,8 @@
use SilverStripe\ORM\DataObject; use SilverStripe\ORM\DataObject;
use SilverStripe\Security\Permission; use SilverStripe\Security\Permission;
use SilverStripe\Admin\ModelAdmin;
class ModelAdminTest extends FunctionalTest { class ModelAdminTest extends FunctionalTest {

View File

@ -11,6 +11,9 @@ use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject; use SilverStripe\ORM\DataObject;
use SilverStripe\Security\Member; use SilverStripe\Security\Member;
use SilverStripe\Security\Permission; use SilverStripe\Security\Permission;
use SilverStripe\Admin\AdminRootController;
use SilverStripe\Admin\CMSPreviewable;

View File

@ -6,6 +6,8 @@ use SilverStripe\ORM\HasManyList;
use SilverStripe\ORM\ManyManyList; use SilverStripe\ORM\ManyManyList;
use SilverStripe\ORM\ValidationException; use SilverStripe\ORM\ValidationException;
use SilverStripe\ORM\FieldType\DBHTMLText; use SilverStripe\ORM\FieldType\DBHTMLText;
use SilverStripe\Admin\LeftAndMain;
/** /**
* Provides view and edit forms at GridField-specific URLs. * Provides view and edit forms at GridField-specific URLs.

View File

@ -60,7 +60,7 @@ class NamespacedClassManifestTest extends SapphireTest {
$method->setAccessible(true); $method->setAccessible(true);
$expectedImports = array( $expectedImports = array(
'ModelAdmin', 'SilverStripe\\Admin\\ModelAdmin',
'Cont' => 'Controller', 'Cont' => 'Controller',
'Request' => 'SS_HTTPRequest', 'Request' => 'SS_HTTPRequest',
'Response' => 'SS_HTTPResponse', 'Response' => 'SS_HTTPResponse',
@ -83,9 +83,9 @@ class NamespacedClassManifestTest extends SapphireTest {
// including all core classes // including all core classes
$method = new ReflectionMethod($this->manifest, 'coalesceDescendants'); $method = new ReflectionMethod($this->manifest, 'coalesceDescendants');
$method->setAccessible(true); $method->setAccessible(true);
$method->invoke($this->manifest, 'ModelAdmin'); $method->invoke($this->manifest, 'SilverStripe\\Admin\\ModelAdmin');
$this->assertContains('SilverStripe\Framework\Tests\ClassI', ClassInfo::subclassesFor('ModelAdmin')); $this->assertContains('SilverStripe\Framework\Tests\ClassI', ClassInfo::subclassesFor('SilverStripe\\Admin\\ModelAdmin'));
} }
/** /**

View File

@ -2,7 +2,7 @@
namespace SilverStripe\Framework\Tests; namespace SilverStripe\Framework\Tests;
//whitespace here is important for tests, please don't change it //whitespace here is important for tests, please don't change it
use ModelAdmin; use SilverStripe\Admin\ModelAdmin;
use Controller as Cont ; use Controller as Cont ;
use SS_HTTPRequest as Request, SS_HTTPResponse as Response, SilverStripe\Security\PermissionProvider as P; use SS_HTTPRequest as Request, SS_HTTPResponse as Response, SilverStripe\Security\PermissionProvider as P;
use silverstripe\test\ClassA; use silverstripe\test\ClassA;