Add an element sets the relation with the parent automatically but this functionnality needs to be unset for the HasManyComplexTablefield (merged from branches 2.2.0, r45135)

git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@46094 467b73ca-7a2a-4603-9d3b-597d59a354a9
This commit is contained in:
Andrew O'Neil 2007-12-02 21:27:34 +00:00
parent 5f468b4902
commit dd85ba1141

View File

@ -77,6 +77,8 @@ class ComplexTableField extends TableListField {
*/ */
protected $detailFormValidator = null; protected $detailFormValidator = null;
protected $relationAutoSetting = true;
/** /**
* See class comments * See class comments
* *
@ -100,8 +102,9 @@ class ComplexTableField extends TableListField {
Requirements::javascript("sapphire/javascript/ComplexTableField.js"); Requirements::javascript("sapphire/javascript/ComplexTableField.js");
Requirements::css("jsparty/greybox/greybox.css"); Requirements::css("jsparty/greybox/greybox.css");
Requirements::css("sapphire/css/ComplexTableField.css"); Requirements::css("sapphire/css/ComplexTableField.css");
parent::__construct($name, $sourceClass, $fieldList, $sourceFilter, $sourceSort, $sourceJoin); parent::__construct($name, $sourceClass, $fieldList, $sourceFilter, $sourceSort, $sourceJoin);
} }
function isComposite() { function isComposite() {
@ -258,7 +261,8 @@ JS;
} }
// add relational fields // add relational fields
$detailFields->push(new HiddenField("ctf[parentClass]"," ",$this->getParentClass())); $detailFields->push(new HiddenField("ctf[parentClass]"," ",$this->getParentClass()));
$detailFields->push(new HiddenField("$parentIdName"," ",$ID)); if( $this->relationAutoSetting )
$detailFields->push(new HiddenField("$parentIdName"," ",$ID));
} }
// the ID field confuses the Controller-logic in finding the right view for ReferencedField // the ID field confuses the Controller-logic in finding the right view for ReferencedField
@ -563,7 +567,7 @@ JS;
* Returns the db-fieldname of the currently used has_one-relationship. * Returns the db-fieldname of the currently used has_one-relationship.
*/ */
function getParentIdName( $parentClass, $childClass ) { function getParentIdName( $parentClass, $childClass ) {
return $this->getParentIdNameRelation( $parentClass, $childClass, 'has_one' ); return $this->getParentIdNameRelation( $childClass, $parentClass, 'has_one' );
} }
/** /**
@ -696,7 +700,7 @@ class ComplexTableField_Popup extends Form {
$childObject = new $this->sourceClass(); $childObject = new $this->sourceClass();
$this->fields->removeByName('ID'); $this->fields->removeByName('ID');
} }
$this->saveInto($childObject); $this->saveInto($childObject);
$childObject->write(); $childObject->write();