From 8282a61ddf3eb15e09040dc4f423f4a5fcfc2a63 Mon Sep 17 00:00:00 2001 From: Sam Minnee Date: Wed, 20 May 2009 10:03:11 +0000 Subject: [PATCH] API CHANGE: Added record_controller and collection_controller as options that you can add to the managed_models array. git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/cms/trunk@77402 467b73ca-7a2a-4603-9d3b-597d59a354a9 --- code/ModelAdmin.php | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/code/ModelAdmin.php b/code/ModelAdmin.php index 1bff6e63..4a2f8c33 100644 --- a/code/ModelAdmin.php +++ b/code/ModelAdmin.php @@ -49,6 +49,8 @@ abstract class ModelAdmin extends LeftAndMain { * * Available options: * - 'title': Set custom titles for the tabs or dropdown names + * - 'collection_controller': Set a custom class to use as a collection controller for this model + * - 'record_controller': Set a custom class to use as a record controller for this model * * @var array|string */ @@ -181,7 +183,14 @@ abstract class ModelAdmin extends LeftAndMain { * Base scaffolding method for returning a generic model instance. */ public function bindModelController($model, $request = null) { - $class = $this->stat('collection_controller_class'); + $models = $this->getManagedModels(); + + if(isset($models[$model]['collection_controller'])) { + $class = $models[$model]['collection_controller']; + } else { + $class = $this->stat('collection_controller_class'); + } + return new $class($this, $model); } @@ -325,8 +334,16 @@ class ModelAdmin_CollectionController extends Controller { * @param HTTPRequest $request * @return RecordController */ - function handleID($request) { - $class = $this->parentController->stat('record_controller_class'); + public function handleID($request) { + $models = $this->parentController->getManagedModels(); + $model = $this->getModelClass(); + + if(isset($models[$model]['record_controller'])) { + $class = $models[$model]['record_controller']; + } else { + $class = $this->parentController->stat('record_controller_class'); + } + return new $class($this, $request); }