Example #1
0
 /**
  * Render a repeatable group
  */
 public function render_group($args)
 {
     // If field is requesting to be conditionally shown
     if (isset($args['show_on_cb']) && is_callable($args['show_on_cb']) && !call_user_func($args['show_on_cb'], $this)) {
         return;
     }
     if (!isset($args['id'], $args['fields']) || !is_array($args['fields'])) {
         return;
     }
     $args['count'] = 0;
     $field_group = new CMB2_Field(array('field_args' => $args, 'object_type' => $this->object_type(), 'object_id' => $this->object_id()));
     $desc = $field_group->args('description');
     $label = $field_group->args('name');
     $sortable = $field_group->options('sortable') ? ' sortable' : '';
     $group_val = (array) $field_group->value();
     $nrows = count($group_val);
     $remove_disabled = $nrows <= 1 ? 'disabled="disabled" ' : '';
     echo '<div class="cmb-row cmb-repeat-group-wrap"><div class="cmb-td"><div id="', $field_group->id(), '_repeat" class="cmb-nested cmb-field-list cmb-repeatable-group', $sortable, '" 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 $iterator => $field_id) {
             $this->render_group_row($field_group, $remove_disabled);
         }
     } else {
         $this->render_group_row($field_group, $remove_disabled);
     }
     echo '<div class="cmb-row"><div class="cmb-td"><p class="cmb-add-row"><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>';
 }
Example #2
0
 /**
  * Render a repeatable group
  */
 public function render_group($args)
 {
     if (!isset($args['id'], $args['fields']) || !is_array($args['fields'])) {
         return;
     }
     $args['count'] = 0;
     $field_group = new CMB2_Field(array('field_args' => $args, 'object_type' => $this->object_type(), 'object_id' => $this->object_id()));
     $desc = $field_group->args('description');
     $label = $field_group->args('name');
     $sortable = $field_group->options('sortable') ? ' sortable' : '';
     $group_val = (array) $field_group->value();
     $nrows = count($group_val);
     $remove_disabled = $nrows <= 1 ? 'disabled="disabled" ' : '';
     echo '<li class="cmb-row cmb-repeat-group-wrap"><div class="cmb-td"><ul id="', $field_group->id(), '_repeat" class="cmb-nested repeatable-group' . $sortable . '" style="width:100%;">';
     if ($desc || $label) {
         $class = $desc ? ' cmb-group-description' : '';
         echo '<li 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></li>';
     }
     if (!empty($group_val)) {
         foreach ($group_val as $iterator => $field_id) {
             $this->render_group_row($field_group, $remove_disabled);
         }
     } else {
         $this->render_group_row($field_group, $remove_disabled);
     }
     echo '<li class="cmb-row"><div class="cmb-td"><p class="add-row"><button data-selector="', $field_group->id(), '_repeat" data-grouptitle="', $field_group->options('group_title'), '" class="add-group-row button">' . $field_group->options('add_button') . '</button></p></div></li>';
     echo '</ul></div></li>';
 }
    /**
     * Render a repeatable group row
     * @since  1.0.2
     * @param  CMB2_Field $field_group  CMB2_Field group field object
     * @param  string  $remove_disabled Attribute string to disable the remove button
     */
    public function render_group_row($field_group, $remove_disabled)
    {
        $field_group->peform_param_callback('before_group_row');
        $closed_class = $field_group->options('closed') ? ' closed' : '';
        echo '
		<div class="postbox cmb-row cmb-repeatable-grouping', $closed_class, '" data-iterator="', $field_group->index, '">';
        if ($field_group->args('repeatable')) {
            echo '<button ', $remove_disabled, 'data-selector="', $field_group->id(), '_repeat" class="dashicons-before dashicons-no-alt cmb-remove-group-row"></button>';
        }
        echo '
			<div class="cmbhandle" title="', __('Click to toggle', 'cmb2'), '"><br></div>
			<h3 class="cmb-group-title cmbhandle-title"><span>', $field_group->replace_hash($field_group->options('group_title')), '</span></h3>

			<div class="inside cmb-td cmb-nested cmb-field-list">';
        // Loop and render repeatable group fields
        foreach (array_values($field_group->args('fields')) as $field_args) {
            if ('hidden' == $field_args['type']) {
                // Save rendering for after the metabox
                $this->add_hidden_field(array('field_args' => $field_args, 'group_field' => $field_group));
            } else {
                $field_args['show_names'] = $field_group->args('show_names');
                $field_args['context'] = $field_group->args('context');
                $field = $this->get_field($field_args, $field_group)->render_field();
            }
        }
        if ($field_group->args('repeatable')) {
            echo '
					<div class="cmb-row cmb-remove-field-row">
						<div class="cmb-remove-row">
							<button ', $remove_disabled, 'data-selector="', $field_group->id(), '_repeat" class="button cmb-remove-group-row alignright">', $field_group->options('remove_button'), '</button>
						</div>
					</div>
					';
        }
        echo '
			</div>
		</div>
		';
        $field_group->peform_param_callback('after_group_row');
    }
Example #4
0
 /**
  * Get field min. user level (defaults to 2).
  *
  * @param  CMB2_Field $field
  *
  * @return int Numeric min. user level.
  */
 public function get_minimum_user_level(CMB2_Field $field)
 {
     $level = $field->options('minimum_user_level');
     return is_numeric($level) ? absint($level) : 2;
 }