mirror of
https://github.com/silverstripe/silverstripe-cms
synced 2024-10-22 06:05:56 +00:00
BUGFIX: removing hardcoded reference to ModelAdmin_RecordController, also added getters for model controllers.
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/cms/branches/2.4@97231 467b73ca-7a2a-4603-9d3b-597d59a354a9
This commit is contained in:
parent
6e09296937
commit
e4726af363
@ -167,6 +167,43 @@ abstract class ModelAdmin extends LeftAndMain {
|
|||||||
static function get_page_length(){
|
static function get_page_length(){
|
||||||
return self::$page_length;
|
return self::$page_length;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the class name of the collection controller
|
||||||
|
*
|
||||||
|
* @param string $model model name to get the controller for
|
||||||
|
* @return string the collection controller class
|
||||||
|
*/
|
||||||
|
function getCollectionControllerClass($model) {
|
||||||
|
$models = $this->getManagedModels();
|
||||||
|
|
||||||
|
if(isset($models[$model]['collection_controller'])) {
|
||||||
|
$class = $models[$model]['collection_controller'];
|
||||||
|
} else {
|
||||||
|
$class = $this->stat('collection_controller_class');
|
||||||
|
}
|
||||||
|
|
||||||
|
return $class;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the class name of the record controller
|
||||||
|
*
|
||||||
|
* @param string $model model name to get the controller for
|
||||||
|
* @return string the record controller class
|
||||||
|
*/
|
||||||
|
function getRecordControllerClass($model) {
|
||||||
|
$models = $this->getManagedModels();
|
||||||
|
|
||||||
|
if(isset($models[$model]['record_controller'])) {
|
||||||
|
$class = $models[$model]['record_controller'];
|
||||||
|
} else {
|
||||||
|
$class = $this->stat('record_controller_class');
|
||||||
|
}
|
||||||
|
|
||||||
|
return $class;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add mappings for generic form constructors to automatically delegate to a scaffolded form object.
|
* Add mappings for generic form constructors to automatically delegate to a scaffolded form object.
|
||||||
*/
|
*/
|
||||||
@ -183,14 +220,7 @@ 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) {
|
||||||
$models = $this->getManagedModels();
|
$class = $this->getCollectionControllerClass($model);
|
||||||
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -336,15 +366,7 @@ class ModelAdmin_CollectionController extends Controller {
|
|||||||
* @return RecordController
|
* @return RecordController
|
||||||
*/
|
*/
|
||||||
public function handleID($request) {
|
public function handleID($request) {
|
||||||
$models = $this->parentController->getManagedModels();
|
$class = $this->parentController->getRecordControllerClass($this->getModelClass());
|
||||||
$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);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -816,7 +838,8 @@ class ModelAdmin_CollectionController extends Controller {
|
|||||||
$model->write();
|
$model->write();
|
||||||
|
|
||||||
if(Director::is_ajax()) {
|
if(Director::is_ajax()) {
|
||||||
$recordController = new ModelAdmin_RecordController($this, $request, $model->ID);
|
$class = $this->parentController->getRecordControllerClass($this->getModelClass());
|
||||||
|
$recordController = new $class($this, $request, $model->ID);
|
||||||
return new SS_HTTPResponse(
|
return new SS_HTTPResponse(
|
||||||
$recordController->EditForm()->forAjaxTemplate(),
|
$recordController->EditForm()->forAjaxTemplate(),
|
||||||
200,
|
200,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user