mirror of
https://github.com/Combodo/iTop.git
synced 2026-04-23 10:38:45 +02:00
N°3216 - Refactor form files to be part of the autoloader
This commit is contained in:
194
sources/Form/Field/SubFormField.php
Normal file
194
sources/Form/Field/SubFormField.php
Normal file
@@ -0,0 +1,194 @@
|
||||
<?php
|
||||
|
||||
// Copyright (C) 2010-2018 Combodo SARL
|
||||
//
|
||||
// This file is part of iTop.
|
||||
//
|
||||
// iTop is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// iTop is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU Affero General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with iTop. If not, see <http://www.gnu.org/licenses/>
|
||||
|
||||
namespace Combodo\iTop\Form\Field;
|
||||
|
||||
use \Closure;
|
||||
use \Combodo\iTop\Form\Form;
|
||||
|
||||
/**
|
||||
* Description of SubFormField
|
||||
*
|
||||
* @author Guillaume Lajarige <guillaume.lajarige@combodo.com>
|
||||
*/
|
||||
class SubFormField extends Field
|
||||
{
|
||||
protected $oForm;
|
||||
|
||||
/**
|
||||
* Default constructor
|
||||
*
|
||||
* @param string $sId
|
||||
* @param \Closure $onFinalizeCallback
|
||||
*/
|
||||
public function __construct($sId, Closure $onFinalizeCallback = null)
|
||||
{
|
||||
$this->oForm = new Form('subform_' . $sId);
|
||||
parent::__construct($sId, $onFinalizeCallback);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return \Combodo\iTop\Form\Form
|
||||
*/
|
||||
public function GetForm()
|
||||
{
|
||||
return $this->oForm;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param \Combodo\iTop\Form\Form $oForm
|
||||
*
|
||||
* @return \Combodo\iTop\Form\Field\SubFormField
|
||||
*/
|
||||
public function SetForm(Form $oForm)
|
||||
{
|
||||
$this->oForm = $oForm;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks the validators to see if the field's current value is valid.
|
||||
* Then sets $bValid and $aErrorMessages.
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function Validate()
|
||||
{
|
||||
return $this->oForm->Validate();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function GetValid()
|
||||
{
|
||||
return $this->oForm->GetValid();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function GetErrorMessages()
|
||||
{
|
||||
$aRet = array();
|
||||
foreach ($this->oForm->GetErrorMessages() as $sSubFieldId => $aSubFieldMessages)
|
||||
{
|
||||
$aRet[] = $sSubFieldId.': '.implode(', ', $aSubFieldMessages);
|
||||
}
|
||||
return $aRet;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function GetCurrentValue()
|
||||
{
|
||||
return $this->oForm->GetCurrentValues();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param array $value
|
||||
*
|
||||
* @return \Combodo\iTop\Form\Field\SubFormField
|
||||
*
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function SetCurrentValue($value)
|
||||
{
|
||||
$this->oForm->SetCurrentValues($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the mandatory flag on all the fields on the form
|
||||
*
|
||||
* @param boolean $bMandatory
|
||||
*/
|
||||
public function SetMandatory($bMandatory)
|
||||
{
|
||||
foreach ($this->oForm->GetFields() as $oField)
|
||||
{
|
||||
$oField->SetMandatory($bMandatory);
|
||||
}
|
||||
parent::SetMandatory($bMandatory);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the read-only flag on all the fields on the form
|
||||
*
|
||||
* @param boolean $bReadOnly
|
||||
*/
|
||||
public function SetReadOnly($bReadOnly)
|
||||
{
|
||||
foreach ($this->oForm->GetFields() as $oField)
|
||||
{
|
||||
$oField->SetReadOnly($bReadOnly);
|
||||
$oField->SetMandatory(false);
|
||||
}
|
||||
parent::SetReadOnly($bReadOnly);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the hidden flag on all the fields on the form
|
||||
*
|
||||
* @param boolean $bHidden
|
||||
*/
|
||||
public function SetHidden($bHidden)
|
||||
{
|
||||
foreach ($this->oForm->GetFields() as $oField)
|
||||
{
|
||||
$oField->SetHidden($bHidden);
|
||||
}
|
||||
parent::SetHidden($bHidden);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $sFormPath
|
||||
* @return Form|null
|
||||
*/
|
||||
public function FindSubForm($sFormPath)
|
||||
{
|
||||
return $this->oForm->FindSubForm($sFormPath);
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function OnFinalize()
|
||||
{
|
||||
$sFormId = 'subform_' . $this->sId;
|
||||
if ($this->sFormPath !== null)
|
||||
{
|
||||
$sFormId = $this->sFormPath . '-' . $sFormId;
|
||||
}
|
||||
$this->oForm->SetId($sFormId);
|
||||
|
||||
// Calling first the field callback,
|
||||
// Then only calling finalize on the subform's fields
|
||||
parent::OnFinalize();
|
||||
$this->oForm->Finalize();
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user