160 lines
4.1 KiB
PHP
160 lines
4.1 KiB
PHP
<?php
|
|
namespace nur\v\bs3\fo;
|
|
|
|
use nur\b\params\Tparametrable;
|
|
use nur\c;
|
|
use nur\v\v;
|
|
|
|
abstract class ControlVisual extends Control {
|
|
use Tparametrable;
|
|
|
|
const PARAMETRABLE_PARAMS_SCHEMA = [
|
|
"help" => ["?content", null, "texte d'aide à la saisie"],
|
|
"class" => ["?array", null, "classes CSS du champ"],
|
|
"style" => ["?string", null, "style CSS du champ"],
|
|
"readonly" => ["?bool", null, "ce contrôle est-il en lecture seule?"],
|
|
"disabled" => ["?bool", null, "ce contrôle est-il désactivé?"],
|
|
"naked" => ["bool", false, "faut-il afficher le contrôle uniquement"],
|
|
"prefix" => ["?content", null, "contenu à afficher avant"],
|
|
"suffix" => ["?content", null, "contenu à afficher après"],
|
|
];
|
|
|
|
/** @var array|string */
|
|
protected $ppHelp;
|
|
|
|
/** @var ?array */
|
|
protected $ppClass;
|
|
|
|
/** @var ?string */
|
|
protected $ppStyle;
|
|
|
|
/** @var ?bool */
|
|
protected $ppReadonly;
|
|
|
|
/** @var ?bool */
|
|
protected $ppDisabled;
|
|
|
|
/** @var bool */
|
|
protected $ppNaked;
|
|
|
|
/** @var array|string */
|
|
protected $ppPrefix;
|
|
|
|
/** @var array|string */
|
|
protected $ppSuffix;
|
|
|
|
protected function getStdFeedback(string $name, $value): array {
|
|
$fgClass = null;
|
|
$feedback = null;
|
|
$result = $this->form->_getResult($name);
|
|
if ($this->form->isSubmitted() && $result !== null) {
|
|
if ($result["valid"]) {
|
|
$fgClass = "has-success";
|
|
} else {
|
|
$fgClass = "has-error has-feedback";
|
|
$feedback = v::span([
|
|
"class" => "glyphicon glyphicon-remove form-control-feedback",
|
|
"aria-hidden" => "true",
|
|
]);
|
|
}
|
|
}
|
|
return [$fgClass, $feedback];
|
|
}
|
|
|
|
protected function getFglcLayout($label, bool $showLabel, array $control, ?string $fgClass, ?array $feedback): array {
|
|
$form = $this->form;
|
|
$vs = [$form->getControlPrefix(), q($this->ppPrefix)];
|
|
|
|
$showHelp = $form->SHOW_HELP();
|
|
if ($form->HORIZONTAL()) {
|
|
$input = [
|
|
$control,
|
|
$feedback,
|
|
v::if($showHelp, v::span([
|
|
"class" => "help-block",
|
|
c::qnz($this->ppHelp),
|
|
])),
|
|
];
|
|
$fgcClass = $form->FGC_CLASS();
|
|
if ($fgcClass !== null) {
|
|
$input = v::div([
|
|
"class" => $fgcClass,
|
|
$input,
|
|
]);
|
|
}
|
|
$vs[] = v::div([
|
|
"class" => ["form-group", $fgClass],
|
|
v::tag("label", [
|
|
"for" => $this->ppId,
|
|
"class" => [
|
|
"control-label",
|
|
$showLabel? null: "sr-only",
|
|
$form->FGL_CLASS(),
|
|
],
|
|
$label,
|
|
]),
|
|
$input,
|
|
]);
|
|
} else {
|
|
$vs[] = v::div([
|
|
"class" => ["form-group", $fgClass],
|
|
v::tag("label", [
|
|
"for" => $this->ppId,
|
|
"class" => $showLabel? null: "sr-only",
|
|
$label, " ",
|
|
]),
|
|
$control,
|
|
$feedback,
|
|
v::if($showHelp, v::span([
|
|
"class" => "help-block",
|
|
c::qnz($this->ppHelp),
|
|
])),
|
|
]);
|
|
}
|
|
|
|
$vs[] = q($this->ppSuffix);
|
|
$vs[] = $form->getControlSuffix();
|
|
return $vs;
|
|
}
|
|
|
|
protected function getFgsLayout(array $control, bool $helpBefore=false): array {
|
|
$form = $this->form;
|
|
$vs = [$form->getControlPrefix(), q($this->ppPrefix)];
|
|
|
|
$showHelp = $form->SHOW_HELP();
|
|
if ($form->HORIZONTAL()) {
|
|
$vs[] = v::div([
|
|
"class" => "form-group",
|
|
v::div([
|
|
"class" => $form->FGS_CLASS(),
|
|
v::if($showHelp && $helpBefore, v::span([
|
|
"class" => "help-block",
|
|
c::qnz($this->ppHelp),
|
|
])),
|
|
$control,
|
|
v::if($showHelp && !$helpBefore, v::span([
|
|
"class" => "help-block",
|
|
c::qnz($this->ppHelp),
|
|
])),
|
|
]),
|
|
]);
|
|
} else {
|
|
$vs[] = [
|
|
v::if($showHelp && $helpBefore, v::span([
|
|
"class" => "help-block",
|
|
c::qnz($this->ppHelp),
|
|
])),
|
|
$control,
|
|
v::if($showHelp && !$helpBefore, v::span([
|
|
"class" => "help-block",
|
|
c::qnz($this->ppHelp),
|
|
])),
|
|
];
|
|
}
|
|
|
|
$vs[] = q($this->ppSuffix);
|
|
$vs[] = $form->getControlSuffix();
|
|
return $vs;
|
|
}
|
|
}
|