public function render_group($args)
{
if (!isset($args['id'], $args['fields']) || !is_array($args['fields'])) {
return;
}
$field_group = $this->get_field($args);
// If field is requesting to be conditionally shown
if (!$field_group || !$field_group->should_show()) {
return;
}
$desc = $field_group->args('description');
$label = $field_group->args('name');
$sortable = $field_group->options('sortable') ? ' sortable' : ' non-sortable';
$repeat_class = $field_group->args('repeatable') ? ' repeatable' : ' non-repeatable';
$group_val = (array) $field_group->value();
$nrows = count($group_val);
$remove_disabled = $nrows <= 1 ? 'disabled="disabled" ' : '';
$field_group->index = 0;
$field_group->peform_param_callback('before_group');
echo '<div class="cmb-row cmb-repeat-group-wrap ', $field_group->row_classes(), '" data-fieldtype="group"><div class="cmb-td"><div id="', $field_group->id(), '_repeat" class="cmb-nested cmb-field-list cmb-repeatable-group', $sortable, $repeat_class, '" style="width:100%;">';
if ($desc || $label) {
$class = $desc ? ' cmb-group-description' : '';
echo '<div class="cmb-row', $class, '"><div class="cmb-th">';
if ($label) {
echo '<h2 class="cmb-group-name">', $label, '</h2>';
}
if ($desc) {
echo '<p class="cmb2-metabox-description">', $desc, '</p>';
}
echo '</div></div>';
}
if (!empty($group_val)) {
foreach ($group_val as $group_key => $field_id) {
$this->render_group_row($field_group, $remove_disabled);
$field_group->index++;
}
} else {
$this->render_group_row($field_group, $remove_disabled);
}
if ($field_group->args('repeatable')) {
echo '<div class="cmb-row"><div class="cmb-td"><p class="cmb-add-row"><button type="button" data-selector="', $field_group->id(), '_repeat" data-grouptitle="', $field_group->options('group_title'), '" class="cmb-add-group-row button">', $field_group->options('add_button'), '</button></p></div></div>';
}
echo '</div></div></div>';
$field_group->peform_param_callback('after_group');
return $field_group;
}