Entrar
PT
games/xencenter-xenadmin-xcp-jumphp / src / Form / StrongConfirmForm.php · commit fb1b7c9
<?phpnamespace App\Form;use App\Gui\IconBox;use JumPHP\Gui\Button;use JumPHP\Gui\CheckBox;use JumPHP\Gui\Form;use JumPHP\Gui\Label;/** * "Destroy the storage repository 'X'?" with a box to tick before the button works (data lost for good). Closes like ConfirmForm: * ['confirm' => command, 'target' => ref] (MainForm runs it). Cancel is the default button. * * @property IconBox $icon * @property Label $message * @property CheckBox $understood * @property Button $ok * @property Button $cancel */final class StrongConfirmForm extends Form{    public function __construct(private \App\Model\Session $session)    {        parent::__construct();    }    /** XAPI's answers, events and the console go on while this dialog is open. */    protected function tick(float $dt): void    {        $this->session->tick($dt);    }    private array $params = [];    protected function loaded(array $params = []): void    {        $this->params = $params;        $this->message->text = (string)($params['message'] ?? '');        $this->ok->text = (string)($params['ok'] ?? 'Destroy');        $this->understood->text = (string)(($params['check'] ?? '') ?: 'I understand: this cannot be undone.');        $this->understood->checked = false;        $this->ok->enabled = false;    }    public function onUnderstoodChange(CheckBox $sender, bool $checked): void    {        $this->ok->enabled = $checked;    }    public function onOkClick(Button $sender): void    {        if (!$this->understood->checked) {            return;        }        $this->close(['confirm' => $this->params['command'] ?? '', 'target' => $this->params['target'] ?? '']);    }    public function onCancelClick(Button $sender): void    {        $this->close();    }}