Removed relational CTFs reliance on DataObject->ClassName

git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@63820 467b73ca-7a2a-4603-9d3b-597d59a354a9
This commit is contained in:
Sam Minnee 2008-10-08 03:35:27 +00:00
parent 51447b89ab
commit 1b1751457e
3 changed files with 17 additions and 5 deletions

View File

@ -25,13 +25,25 @@ class HasManyComplexTableField extends ComplexTableField {
parent::__construct($controller, $name, $sourceClass, $fieldList, $detailFormFields, $sourceFilter, $sourceSort, $sourceJoin);
$this->Markable = true;
$this->joinField = $this->getParentIdName($this->controller->ClassName, $this->sourceClass);
if($controllerClass = $this->controllerClass()) {
$this->joinField = $this->getParentIdName($controllerClass, $this->sourceClass);
} else {
user_error("Can't figure out the data class of $controller", E_USER_WARNING);
}
Requirements::javascript(SAPPHIRE_DIR . "/javascript/i18n.js");
Requirements::javascript(SAPPHIRE_DIR . "/javascript/HasManyFileField.js");
}
/**
* Try to determine the DataObject that this field is built on top of
*/
function controllerClass() {
if($this->controller instanceof DataObject) return $this->controller->class;
elseif($this->controller instanceof ContentController) return $this->controller->data()->class;
}
function getQuery($limitClause = null) {
if($this->customQuery) {
$query = $this->customQuery;

View File

@ -36,7 +36,7 @@ class HasOneComplexTableField extends HasManyComplexTableField {
}
function isChildSet($childID) {
return DataObject::get($this->controller->ClassName, '`' . $this->joinField . "` = '$childID'");
return DataObject::get($this->controllerClass(), '`' . $this->joinField . "` = '$childID'");
}
function ExtraData() {

View File

@ -14,7 +14,7 @@ class ManyManyComplexTableField extends HasManyComplexTableField {
parent::__construct($controller, $name, $sourceClass, $fieldList, $detailFormFields, $sourceFilter, $sourceSort, $sourceJoin);
$classes = array_reverse(ClassInfo::ancestry($this->controller->ClassName));
$classes = array_reverse(ClassInfo::ancestry($this->controllerClass()));
foreach($classes as $class) {
$singleton = singleton($class);
$manyManyRelations = $singleton->uninherited('many_many', true);
@ -59,7 +59,7 @@ class ManyManyComplexTableField extends HasManyComplexTableField {
if(! $SNG->hasField($k) && ! $SNG->hasMethod('get' . $k))
$query->select[] = $k;
}
$parent = $this->controller->ClassName;
$parent = $this->controllerClass();
$query->select[] = "IF(`{$this->manyManyParentClass}ID` IS NULL, '0', '1') AS Checked";
}
return clone $query;