Skip to content

Commit

Permalink
Merge pull request #10563 from jdalsem/checkboxes
Browse files Browse the repository at this point in the history
chore(views): full BC for input-checkbox via elgg_view_field
  • Loading branch information
jdalsem committed Nov 8, 2016
2 parents c081808 + 15a0ace commit 1d247fc
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 10 deletions.
30 changes: 22 additions & 8 deletions engine/lib/views.php
Original file line number Diff line number Diff line change
Expand Up @@ -1449,6 +1449,23 @@ function elgg_view_field(array $params = []) {

// $vars passed to input/$input_name
$input_vars = [];

$make_special_checkbox_label = false;
if ($input_type == 'checkbox' && (isset($params['label']) || isset($params['#label']))) {
if (isset($params['#label']) && isset($params['label'])) {
$params['label_tag'] = 'div';
} else {
$label = elgg_extract('label', $params);
$label = elgg_extract('#label', $params, $label);

$params['#label'] = $label;
unset($params['label']);

// Single checkbox input view gets special treatment
// We don't want the field label to appear a checkbox without a label
$make_special_checkbox_label = true;
}
}

// first pass non-hash keys into both
foreach ($params as $key => $value) {
Expand All @@ -1461,14 +1478,6 @@ function elgg_view_field(array $params = []) {
// field input view needs this
$input_vars['input_type'] = $input_type;

if ($input_type == 'checkbox' && isset($params['#label'])) {
// Single checkbox input view gets special treatment
// We don't want the field label to appear a checkbox without a label
$input_vars['label'] = $element_vars['label'];
$input_vars['label_tag'] = 'div';
unset($element_vars['label']);
}

// field views get more data
$element_vars['input_type'] = $input_type;

Expand All @@ -1489,6 +1498,11 @@ function elgg_view_field(array $params = []) {
$element_vars['label'] = elgg_view('elements/forms/label', $element_vars);
$element_vars['help'] = elgg_view('elements/forms/help', $element_vars);

if ($make_special_checkbox_label) {
$input_vars['label'] = $element_vars['label'];
$input_vars['label_tag'] = 'div';
unset($element_vars['label']);
}
$element_vars['input'] = elgg_view("elements/forms/input", $input_vars);

return elgg_view('elements/forms/field', $element_vars);
Expand Down
15 changes: 13 additions & 2 deletions mod/developers/views/default/theme_sandbox/forms.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,17 @@
'#label' => 'Radio input (.elgg-input-radios):',
));

echo elgg_view_field(array(
'#type' => 'checkbox',
'name' => 'f4s',
'id' => 'f4s',
'value' => 1,
'default' => false,
'required' => true,
'label' => 'a (.elgg-input-checkbox)',
'#help' => 'Single checkbox .elgg-input-checkbox wrapped in .elgg-input-single-checkbox (only label)',
));

echo elgg_view_field(array(
'#type' => 'checkbox',
'name' => 'f4s',
Expand All @@ -41,7 +52,7 @@
'default' => false,
'required' => true,
'#label' => 'a (.elgg-input-checkbox)',
'#help' => 'Single checkbox .elgg-input-checkbox wrapped in .elgg-input-single-checkbox',
'#help' => 'Single checkbox .elgg-input-checkbox wrapped in .elgg-input-single-checkbox (only #label)',
));

echo elgg_view_field(array(
Expand All @@ -53,7 +64,7 @@
'required' => true,
'#label' => 'a (.elgg-input-checkbox) - Field label',
'label' => 'a (.elgg-input-checkbox) - Input label',
'#help' => 'Single checkbox .elgg-input-checkbox wrapped in .elgg-input-single-checkbox',
'#help' => 'Single checkbox .elgg-input-checkbox wrapped in .elgg-input-single-checkbox (label and #label)',
));

echo elgg_view_input('checkbox', array(
Expand Down

0 comments on commit 1d247fc

Please sign in to comment.