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;
 | |
|   }
 | |
| }
 |