mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-08-31 06:48:02 +02:00
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@46105 467b73ca-7a2a-4603-9d3b-597d59a354a9
65 lines
2.0 KiB
PHP
65 lines
2.0 KiB
PHP
<?php
|
|
|
|
class HasOneComplexTableField extends HasManyComplexTableField {
|
|
|
|
protected $itemClass = 'HasOneComplexTableField_Item';
|
|
|
|
public $isOneToOne = false;
|
|
|
|
function getParentIdName( $parentClass, $childClass ) {
|
|
return $this->getParentIdNameRelation( $parentClass, $childClass, 'has_one' );
|
|
}
|
|
|
|
function getControllerJoinID() {
|
|
return $this->controller->{$this->joinField};
|
|
}
|
|
|
|
function saveInto( DataObject $record ) {
|
|
$fieldName = $this->name;
|
|
$fieldNameID = $fieldName . 'ID';
|
|
|
|
$record->$fieldNameID = 0;
|
|
if( $val = $this->value[ $this->htmlListField ] ) {
|
|
if( $val != 'undefined' )
|
|
$record->$fieldNameID = $val;
|
|
}
|
|
|
|
$record->write();
|
|
}
|
|
|
|
function setOneToOne() {
|
|
$this->isOneToOne = true;
|
|
}
|
|
|
|
function isChildSet( $childID ) {
|
|
return DataObject::get( $this->controller->ClassName, '`' . $this->joinField . "` = '$childID'" );
|
|
}
|
|
|
|
function ExtraData() {
|
|
$val = $this->getControllerJoinID() ? $this->getControllerJoinID() : '';
|
|
$inputId = $this->id() . '_' . $this->htmlListEndName;
|
|
return <<<HTML
|
|
<input id="$inputId" name="{$this->name}[{$this->htmlListField}]" type="hidden" value="$val"/>
|
|
HTML;
|
|
}
|
|
}
|
|
|
|
class HasOneComplexTableField_Item extends ComplexTableField_Item {
|
|
|
|
function MarkingCheckbox() {
|
|
$name = $this->parent->Name() . '[]';
|
|
|
|
$isOneToOne = $this->parent->isOneToOne;
|
|
$joinVal = $this->parent->getControllerJoinID();
|
|
$childID = $this->item->ID;
|
|
|
|
if( $this->parent->IsReadOnly || ( $isOneToOne && $joinVal != $childID && $this->parent->isChildSet( $childID ) ) )
|
|
return "<input class=\"radio\" type=\"radio\" name=\"$name\" value=\"{$this->item->ID}\" disabled=\"disabled\"/>";
|
|
else if( $joinVal == $childID )
|
|
return "<input class=\"radio\" type=\"radio\" name=\"$name\" value=\"{$this->item->ID}\" checked=\"checked\"/>";
|
|
else
|
|
return "<input class=\"radio\" type=\"radio\" name=\"$name\" value=\"{$this->item->ID}\"/>";
|
|
}
|
|
}
|
|
|
|
?>
|