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
This commit is contained in:
Sam Minnee 2009-05-20 10:03:11 +00:00
parent 7f4e06c616
commit 8282a61ddf

View File

@ -49,6 +49,8 @@ abstract class ModelAdmin extends LeftAndMain {
* *
* Available options: * Available options:
* - 'title': Set custom titles for the tabs or dropdown names * - '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 * @var array|string
*/ */
@ -181,7 +183,14 @@ abstract class ModelAdmin extends LeftAndMain {
* Base scaffolding method for returning a generic model instance. * Base scaffolding method for returning a generic model instance.
*/ */
public function bindModelController($model, $request = null) { 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); return new $class($this, $model);
} }
@ -325,8 +334,16 @@ class ModelAdmin_CollectionController extends Controller {
* @param HTTPRequest $request * @param HTTPRequest $request
* @return RecordController * @return RecordController
*/ */
function handleID($request) { public function handleID($request) {
$class = $this->parentController->stat('record_controller_class'); $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); return new $class($this, $request);
} }