Skip to content

Commit

Permalink
Break field supplement into a two-part array "beforeField" and "after…
Browse files Browse the repository at this point in the history
…Field" (CFM-252)
  • Loading branch information
arlen committed Mar 17, 2023
1 parent 28bcc92 commit c2eaa79
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 40 deletions.
46 changes: 30 additions & 16 deletions app/src/View/Helper/FieldHelper.php
Original file line number Diff line number Diff line change
Expand Up @@ -100,8 +100,9 @@ public function control(string $fieldName,
// Specify a class on the <li> form control wrapper
$liClass = $cssClass;

// Collect any supplemental markup and/or JavaScript to pass along for field construction
$fieldSupplement = !empty($config['supplement']) ? $config['supplement'] : '';
// Collect any supplemental markup and/or JavaScript to pass along for field construction.
// Suppliment is an array: supplement['beforeField' => 'string', 'afterField' => 'string'].
$fieldSupplement = !empty($config['supplement']) ? $config['supplement'] : [];

// Remove prefix from field value
if(isset($config['prefix'], $this->getView()->get('vv_obj')->$fieldName)) {
Expand Down Expand Up @@ -278,10 +279,18 @@ protected function endLine(): string {
* @return string Form Info HTML
*/

protected function formInfoDiv(string $content, string $supplement): string {
return '<div class="field-info">
' . $content . $supplement . '
</div>';
protected function formInfoDiv(string $content, array $supplement): string {
$div = '<div class="field-info">' . PHP_EOL;
if(!empty($supplement['beforeField'])) {
$div .= $supplement['beforeField'] . PHP_EOL;
}
$div .= $content . PHP_EOL;
if(!empty($supplement['afterField'])) {
$div .= $supplement['afterField'] . PHP_EOL;
}
$div .= '</div>' . PHP_EOL;

return $div;
}

/**
Expand All @@ -293,16 +302,21 @@ protected function formInfoDiv(string $content, string $supplement): string {
* @return string Form Info HTML
*/

protected function formInfoWithPrefixDiv(string $context, string $prefix, string $supplement): string {
$div = '<div class="field-info">' . PHP_EOL
. '<div class="input-group mb-3">' . PHP_EOL
. '<div class="input-group-prepend">' . PHP_EOL
. '<span class="input-group-text" id="basic-addon3">' . $prefix . '</span>'
. '</div>' . PHP_EOL
. $context
. '</div>'
. $supplement
. '</div>';
protected function formInfoWithPrefixDiv(string $context, string $prefix, array $supplement): string {
$div = '<div class="field-info">' . PHP_EOL;
if(!empty($supplement['beforeField'])) {
$div .= $supplement['beforeField'] . PHP_EOL;
}
$div .= '<div class="input-group mb-3">' . PHP_EOL;
$div .= '<div class="input-group-prepend">' . PHP_EOL;
$div .= '<span class="input-group-text" id="basic-addon3">' . $prefix . '</span>';
$div .= '</div>' . PHP_EOL;
$div .= $context;
$div .= '</div>';
if(!empty($supplement['afterField'])) {
$div .= $supplement['afterField'] . PHP_EOL;
}
$div .= '</div>';

return $div;
}
Expand Down
53 changes: 29 additions & 24 deletions app/templates/Jobs/fields.inc
Original file line number Diff line number Diff line change
Expand Up @@ -38,30 +38,35 @@ if($vv_action == 'view') {
);
}

$fieldSupplement = '
<div class="field-suppliment">
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" id="format-toggle">
<label class="form-check-label" for="format-toggle">' .
__d('field','format')
. '</label>
</div>
</div>
<script>
parametersValue = $("#parameters").val();
parametersJSON = JSON.parse(parametersValue);
$("#format-toggle").click(function() {
if($(this).is(":checked")) {
$("#parameters").val(JSON.stringify(parametersJSON, null, 4));
paramsHeight = Object.keys(parametersJSON).length + 6 + "em";
$("#parameters").css("height",paramsHeight);
} else {
$("#parameters").val(parametersValue);
$("#parameters").css("height","4em");
}
});
</script>
';
$fieldSupplement =
[
'beforeField' => '
<div class="field-suppliment">
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" id="format-toggle">
<label class="form-check-label" for="format-toggle">' .
__d('field','format')
. '</label>
</div>
</div>
',
'afterField' => '
<script>
parametersValue = $("#parameters").val();
parametersJSON = JSON.parse(parametersValue);
$("#format-toggle").click(function() {
if($(this).is(":checked")) {
$("#parameters").val(JSON.stringify(parametersJSON, null, 4));
paramsHeight = Object.keys(parametersJSON).length + 6 + "em";
$("#parameters").css("height",paramsHeight);
} else {
$("#parameters").val(parametersValue);
$("#parameters").css("height","4em");
}
});
</script>
'
];
print $this->Field->control('parameters', [], null, ['supplement' => $fieldSupplement]);

print $this->Field->control('register_time');
Expand Down

0 comments on commit c2eaa79

Please sign in to comment.