Exemplo n.º 1
0
function siteorigin_widget_post_selector_admin_form_field($value, $field_name)
{
    ?>
	<input type="hidden" value="<?php 
    echo esc_attr($value);
    ?>
" name="<?php 
    echo $field_name;
    ?>
" class="siteorigin-widget-input" />
	<a href="#" class="sow-select-posts button button-secondary">
		<span class="sow-current-count"><?php 
    echo esc_html(siteorigin_widget_post_selector_count_posts($value));
    ?>
</span>
		<?php 
    esc_html_e('Build posts query', 'so-widgets-bundle');
    ?>
	</a>
	<?php 
}
    /**
     * Render a form field
     *
     * @param $name
     * @param $field
     * @param $value
     * @param array $repeater
     */
    function render_field($name, $field, $value, $repeater = array(), $is_template = false)
    {
        if (is_null($value) && isset($field['default'])) {
            $value = $field['default'];
        }
        $wrapper_classes = array('siteorigin-widget-field', 'siteorigin-widget-field-type-' . $field['type'], 'siteorigin-widget-field-' . $name);
        if (!empty($field['state_name'])) {
            $wrapper_classes[] = 'siteorigin-widget-field-state-' . $field['state_name'];
        }
        if (!empty($field['hidden'])) {
            $wrapper_classes[] = 'siteorigin-widget-field-is-hidden';
        }
        if (!empty($field['optional'])) {
            $wrapper_classes[] = 'siteorigin-widget-field-is-optional';
        }
        ?>
<div class="<?php 
        echo implode(' ', array_map('sanitize_html_class', $wrapper_classes));
        ?>
"><?php 
        $field_id = $this->so_get_field_id($name, $repeater, $is_template);
        if ($field['type'] != 'repeater' && $field['type'] != 'checkbox' && $field['type'] != 'separator' && !empty($field['label'])) {
            ?>
			<label for="<?php 
            echo $field_id;
            ?>
" class="siteorigin-widget-field-label <?php 
            if (empty($field['hide'])) {
                echo 'siteorigin-widget-section-visible';
            }
            ?>
">
				<?php 
            echo $field['label'];
            if (!empty($field['optional'])) {
                echo ' <span class="field-optional">(' . __('Optional', 'siteorigin-panels') . ')</span>';
            }
            ?>
			</label>
			<?php 
        }
        switch ($field['type']) {
            case 'text':
                ?>
<input type="text" name="<?php 
                echo $this->so_get_field_name($name, $repeater);
                ?>
" id="<?php 
                echo $field_id;
                ?>
" value="<?php 
                echo esc_attr($value);
                ?>
" class="widefat siteorigin-widget-input" /><?php 
                break;
            case 'color':
                ?>
<input type="text" name="<?php 
                echo $this->so_get_field_name($name, $repeater);
                ?>
" id="<?php 
                echo $field_id;
                ?>
" value="<?php 
                echo esc_attr($value);
                ?>
" class="widefat siteorigin-widget-input siteorigin-widget-input-color" /><?php 
                break;
            case 'number':
                ?>
<input type="text" name="<?php 
                echo $this->so_get_field_name($name, $repeater);
                ?>
" id="<?php 
                echo $field_id;
                ?>
" value="<?php 
                echo esc_attr($value);
                ?>
" class="widefat siteorigin-widget-input siteorigin-widget-input-number" /><?php 
                break;
            case 'textarea':
                ?>
<textarea type="text" name="<?php 
                echo $this->so_get_field_name($name, $repeater);
                ?>
" id="<?php 
                echo $field_id;
                ?>
" class="widefat siteorigin-widget-input" rows="<?php 
                echo !empty($field['rows']) ? intval($field['rows']) : 4;
                ?>
"><?php 
                echo esc_textarea($value);
                ?>
</textarea><?php 
                break;
            case 'editor':
                // The editor field doesn't actually work yet, this is just a placeholder
                ?>
<textarea type="text" name="<?php 
                echo $this->so_get_field_name($name, $repeater);
                ?>
" id="<?php 
                echo $field_id;
                ?>
" class="widefat siteorigin-widget-input siteorigin-widget-input-editor" rows="<?php 
                echo !empty($field['rows']) ? intval($field['rows']) : 4;
                ?>
"><?php 
                echo esc_textarea($value);
                ?>
</textarea><?php 
                break;
            case 'slider':
                ?>
				<div class="siteorigin-widget-slider-value"><?php 
                echo !empty($value) ? $value : 0;
                ?>
</div>
				<div class="siteorigin-widget-slider-wrapper">
					<div class="siteorigin-widget-value-slider"></div>
				</div>
				<input
					type="number"
					name="<?php 
                echo $this->so_get_field_name($name, $repeater);
                ?>
"
					id="<?php 
                echo $field_id;
                ?>
"
					value="<?php 
                echo !empty($value) ? esc_attr($value) : 0;
                ?>
"
					min="<?php 
                echo isset($field['min']) ? intval($field['min']) : 0;
                ?>
"
					max="<?php 
                echo isset($field['max']) ? intval($field['max']) : 100;
                ?>
"
					data-integer="<?php 
                echo !empty($field['integer']) ? 'true' : 'false';
                ?>
" />
				<?php 
                break;
            case 'select':
                ?>
				<select name="<?php 
                echo $this->so_get_field_name($name, $repeater);
                ?>
" id="<?php 
                echo $field_id;
                ?>
" class="siteorigin-widget-input">
					<?php 
                if (isset($field['prompt'])) {
                    ?>
						<option value="default" disabled="disabled" selected="selected"><?php 
                    echo esc_html($field['prompt']);
                    ?>
</option>
						<?php 
                }
                ?>
					<?php 
                foreach ($field['options'] as $key => $val) {
                    ?>
							<option value="<?php 
                    echo esc_attr($key);
                    ?>
" <?php 
                    selected($key, $value);
                    ?>
><?php 
                    echo esc_html($val);
                    ?>
</option>
					<?php 
                }
                ?>
				</select>
				<?php 
                break;
            case 'checkbox':
                ?>
				<label for="<?php 
                echo $field_id;
                ?>
">
					<input type="checkbox" name="<?php 
                echo $this->so_get_field_name($name, $repeater);
                ?>
" id="<?php 
                echo $field_id;
                ?>
" class="siteorigin-widget-input" <?php 
                checked(!empty($value));
                ?>
 />
					<?php 
                echo $field['label'];
                ?>
				</label>
				<?php 
                break;
            case 'radio':
                ?>
				<?php 
                if (!isset($field['options']) || empty($field['options'])) {
                    return;
                }
                ?>
				<?php 
                foreach ($field['options'] as $k => $v) {
                    ?>
					<label for="<?php 
                    echo $field_id . '-' . $k;
                    ?>
">
						<input type="radio" name="<?php 
                    echo $this->so_get_field_name($name, $repeater);
                    ?>
" id="<?php 
                    echo $field_id . '-' . $k;
                    ?>
" class="siteorigin-widget-input" value="<?php 
                    echo esc_attr($k);
                    ?>
" <?php 
                    checked($k, $value);
                    ?>
> <?php 
                    echo esc_html($v);
                    ?>
					</label>
				<?php 
                }
                ?>
				<?php 
                break;
            case 'media':
                if (version_compare(get_bloginfo('version'), '3.5', '<')) {
                    printf(__('You need to <a href="%s">upgrade</a> to WordPress 3.5 to use media fields', 'siteorigin'), admin_url('update-core.php'));
                    break;
                }
                if (!empty($value)) {
                    if (is_array($value)) {
                        $src = $value;
                    } else {
                        $post = get_post($value);
                        $src = wp_get_attachment_image_src($value, 'thumbnail');
                        if (empty($src)) {
                            $src = wp_get_attachment_image_src($value, 'thumbnail', true);
                        }
                    }
                } else {
                    $src = array('', 0, 0);
                }
                $choose_title = empty($field['choose']) ? __('Choose Media', 'siteorigin-widgets') : $field['choose'];
                $update_button = empty($field['update']) ? __('Set Media', 'siteorigin-widgets') : $field['update'];
                $library = empty($field['library']) ? 'image' : $field['library'];
                ?>
				<div class="media-field-wrapper">
					<div class="current">
						<div class="thumbnail-wrapper">
							<img src="<?php 
                echo esc_url($src[0]);
                ?>
" class="thumbnail" <?php 
                if (empty($src[0])) {
                    echo "style='display:none'";
                }
                ?>
 />
						</div>
						<div class="title"><?php 
                if (!empty($post)) {
                    echo esc_attr($post->post_title);
                }
                ?>
</div>
					</div>
					<a href="#" class="media-upload-button" data-choose="<?php 
                echo esc_attr($choose_title);
                ?>
" data-update="<?php 
                echo esc_attr($update_button);
                ?>
" data-library="<?php 
                echo esc_attr($library);
                ?>
">
						<?php 
                echo esc_html($choose_title);
                ?>
					</a>

					<a href="#" class="media-remove-button"><?php 
                _e('Remove', 'siteorigin');
                ?>
</a>
				</div>

				<input type="hidden" value="<?php 
                echo esc_attr(is_array($value) ? '-1' : $value);
                ?>
" name="<?php 
                echo $this->so_get_field_name($name, $repeater);
                ?>
" class="siteorigin-widget-input" />
				<div class="clear"></div>
				<?php 
                break;
            case 'posts':
                ?>
				<input type="hidden" value="<?php 
                echo esc_attr(is_array($value) ? '' : $value);
                ?>
" name="<?php 
                echo $this->so_get_field_name($name, $repeater);
                ?>
" class="siteorigin-widget-input" />
				<a href="#" class="sow-select-posts button button-secondary">
					<span class="sow-current-count"><?php 
                echo siteorigin_widget_post_selector_count_posts(is_array($value) ? '' : $value);
                ?>
</span>
					<?php 
                _e('Build posts query');
                ?>
				</a>
				<?php 
                break;
            case 'repeater':
                if (!isset($field['fields']) || empty($field['fields'])) {
                    return;
                }
                ob_start();
                $repeater[] = $name;
                foreach ($field['fields'] as $sub_field_name => $sub_field) {
                    $this->render_field($sub_field_name, $sub_field, isset($value[$sub_field_name]) ? $value[$sub_field_name] : null, $repeater, true);
                }
                $html = ob_get_clean();
                $this->repeater_html[$name] = $html;
                $item_label = isset($field['item_label']) ? $field['item_label'] : null;
                if (!empty($item_label)) {
                    // convert underscore naming convention to camelCase for javascript
                    // and encode as json string
                    $item_label = $this->underscores_to_camel_case($item_label);
                    $item_label = json_encode($item_label);
                }
                $item_name = !empty($field['item_name']) ? $field['item_name'] : __('Item', 'siteorigin-widgets');
                ?>
				<div class="siteorigin-widget-field-repeater" data-item-name="<?php 
                echo esc_attr($item_name);
                ?>
" data-repeater-name="<?php 
                echo esc_attr($name);
                ?>
" <?php 
                echo !empty($item_label) ? 'data-item-label="' . esc_attr($item_label) . '"' : '';
                ?>
>
					<div class="siteorigin-widget-field-repeater-top">
						<div class="siteorigin-widget-field-repeater-expend"></div>
						<h3><?php 
                echo $field['label'];
                ?>
</h3>
					</div>
					<div class="siteorigin-widget-field-repeater-items">
						<?php 
                if (!empty($value)) {
                    foreach ($value as $v) {
                        ?>
								<div class="siteorigin-widget-field-repeater-item ui-draggable">
									<div class="siteorigin-widget-field-repeater-item-top">
										<div class="siteorigin-widget-field-expand"></div>
										<div class="siteorigin-widget-field-remove"></div>
										<h4><?php 
                        echo esc_html($field['item_name']);
                        ?>
</h4>
									</div>
									<div class="siteorigin-widget-field-repeater-item-form">
										<?php 
                        foreach ($field['fields'] as $sub_field_name => $sub_field) {
                            $this->render_field($sub_field_name, $sub_field, isset($v[$sub_field_name]) ? $v[$sub_field_name] : null, $repeater);
                        }
                        ?>
									</div>
								</div>
								<?php 
                    }
                }
                ?>
					</div>
					<div class="siteorigin-widget-field-repeater-add"><?php 
                _e('Add', 'siteorigin-widgets');
                ?>
</div>
				</div>
				<?php 
                break;
            case 'widget':
                // Create the extra form entries
                $sub_widget = new $field['class']();
                ?>
<div class="siteorigin-widget-section <?php 
                if (!empty($field['hide'])) {
                    echo 'siteorigin-widget-section-hide';
                }
                ?>
"><?php 
                foreach ($sub_widget->form_options() as $sub_name => $sub_field) {
                    $this->render_field($name . '][' . $sub_name, $sub_field, isset($value[$sub_name]) ? $value[$sub_name] : null, $repeater);
                }
                ?>
</div><?php 
                break;
            case 'icon':
                static $widget_icon_families;
                if (empty($widget_icon_families)) {
                    $widget_icon_families = apply_filters('siteorigin_widgets_icon_families', array());
                }
                list($value_family, $null) = !empty($value) ? explode('-', $value, 2) : array('fontawesome', '');
                ?>
				<div class="siteorigin-widget-icon-selector siteorigin-widget-field-subcontainer">
					<select class="siteorigin-widget-icon-family" >
						<?php 
                foreach ($widget_icon_families as $family_id => $family_info) {
                    ?>
							<option value="<?php 
                    echo esc_attr($family_id);
                    ?>
" <?php 
                    selected($value_family, $family_id);
                    ?>
><?php 
                    echo esc_html($family_info['name']);
                    ?>
 (<?php 
                    echo count($family_info['icons']);
                    ?>
)</option>
						<?php 
                }
                ?>
					</select>

					<input type="hidden" name="<?php 
                echo $this->so_get_field_name($name, $repeater);
                ?>
" value="<?php 
                echo esc_attr($value);
                ?>
" class="siteorigin-widget-icon-icon siteorigin-widget-input" />

					<div class="siteorigin-widget-icon-icons"></div>
				</div>
				<?php 
                break;
            case 'section':
                ?>
<div class="siteorigin-widget-section <?php 
                if (!empty($field['hide'])) {
                    echo 'siteorigin-widget-section-hide';
                }
                ?>
"><?php 
                if (!isset($field['fields']) || empty($field['fields'])) {
                    return;
                }
                foreach ((array) $field['fields'] as $sub_name => $sub_field) {
                    $this->render_field($name . '][' . $sub_name, $sub_field, isset($value[$sub_name]) ? $value[$sub_name] : null, $repeater);
                }
                ?>
</div><?php 
                break;
            case 'bucket':
                // A bucket select and explore field
                ?>
<input type="text" name="<?php 
                echo $this->so_get_field_name($name, $repeater);
                ?>
" id="<?php 
                echo $field_id;
                ?>
" value="<?php 
                echo esc_attr($value);
                ?>
" class="widefat siteorigin-widget-input" /><?php 
                break;
            default:
                _e('Unknown Field', 'siteorigin-widgets');
                break;
        }
        if (!empty($field['description'])) {
            ?>
<div class="siteorigin-widget-field-description"><?php 
            echo wp_kses_post($field['description']);
            ?>
</div><?php 
        }
        ?>
</div><?php 
    }
    /**
     * Render a form field
     *
     * @param $name
     * @param $field
     * @param $value
     * @param array $repeater
     */
    function render_field($name, $field, $value, $repeater = array())
    {
        ?>
<div class="siteorigin-widget-field siteorigin-widget-field-type-<?php 
        echo sanitize_html_class($field['type']);
        ?>
 siteorigin-widget-field-<?php 
        echo sanitize_html_class($name);
        ?>
"><?php 
        if ($field['type'] != 'repeater' && $field['type'] != 'checkbox' && $field['type'] != 'separator') {
            ?>
<label aa for="<?php 
            echo $this->so_get_field_id($name, $repeater);
            ?>
" <?php 
            if (empty($field['hide'])) {
                echo 'class="siteorigin-widget-section-visible"';
            }
            ?>
><?php 
            echo $field['label'];
            ?>
</label><?php 
        }
        switch ($field['type']) {
            case 'text':
                ?>
<input type="text" name="<?php 
                echo $this->so_get_field_name($name, $repeater);
                ?>
" id="<?php 
                echo $this->so_get_field_id($name, $repeater);
                ?>
" value="<?php 
                echo esc_attr($value);
                ?>
" class="widefat siteorigin-widget-input" /><?php 
                break;
            case 'color':
                ?>
<input type="text" name="<?php 
                echo $this->so_get_field_name($name, $repeater);
                ?>
" id="<?php 
                echo $this->so_get_field_id($name, $repeater);
                ?>
" value="<?php 
                echo esc_attr($value);
                ?>
" class="widefat siteorigin-widget-input siteorigin-widget-input-color" /><?php 
                break;
            case 'number':
                ?>
<input type="text" name="<?php 
                echo $this->so_get_field_name($name, $repeater);
                ?>
" id="<?php 
                echo $this->so_get_field_id($name, $repeater);
                ?>
" value="<?php 
                echo esc_attr($value);
                ?>
" class="widefat siteorigin-widget-input siteorigin-widget-input-number" /><?php 
                break;
            case 'textarea':
                ?>
<textarea type="text" name="<?php 
                echo $this->so_get_field_name($name, $repeater);
                ?>
" id="<?php 
                echo $this->so_get_field_id($name, $repeater);
                ?>
" class="widefat siteorigin-widget-input" rows="<?php 
                echo !empty($field['rows']) ? intval($field['rows']) : 4;
                ?>
"><?php 
                echo esc_textarea($value);
                ?>
</textarea><?php 
                break;
            case 'editor':
                ?>
<textarea type="text" name="<?php 
                echo $this->so_get_field_name($name, $repeater);
                ?>
" id="<?php 
                echo $this->so_get_field_id($name, $repeater);
                ?>
" class="widefat siteorigin-widget-input siteorigin-widget-input-editor" rows="<?php 
                echo !empty($field['rows']) ? intval($field['rows']) : 4;
                ?>
"><?php 
                echo esc_textarea($value);
                ?>
</textarea><?php 
                break;
            case 'select':
                ?>
				<select name="<?php 
                echo $this->so_get_field_name($name, $repeater);
                ?>
" id="<?php 
                echo $this->so_get_field_id($name, $repeater);
                ?>
" class="siteorigin-widget-input">
					<?php 
                foreach ($field['options'] as $v => $t) {
                    ?>
						<option value="<?php 
                    echo esc_attr($v);
                    ?>
" <?php 
                    selected($v, $value);
                    ?>
><?php 
                    echo esc_html($t);
                    ?>
</option>
					<?php 
                }
                ?>
				</select>
				<?php 
                break;
            case 'checkbox':
                ?>
				<label for="<?php 
                echo $this->so_get_field_id($name, $repeater);
                ?>
">
					<input type="checkbox" name="<?php 
                echo $this->so_get_field_name($name, $repeater);
                ?>
" id="<?php 
                echo $this->so_get_field_id($name, $repeater);
                ?>
" class="siteorigin-widget-input" <?php 
                checked(!empty($value));
                ?>
 />
					<?php 
                echo $field['label'];
                ?>
				</label>
				<?php 
                break;
            case 'media':
                if (version_compare(get_bloginfo('version'), '3.5', '<')) {
                    printf(__('You need to <a href="%s">upgrade</a> to WordPress 3.5 to use media fields', 'siteorigin'), admin_url('update-core.php'));
                    break;
                }
                if (!empty($value)) {
                    if (is_array($value)) {
                        $src = $value;
                    } else {
                        $post = get_post($value);
                        $src = wp_get_attachment_image_src($value, 'thumbnail');
                        if (empty($src)) {
                            $src = wp_get_attachment_image_src($value, 'thumbnail', true);
                        }
                    }
                } else {
                    $src = array('', 0, 0);
                }
                $choose_title = empty($args['choose']) ? __('Choose Media', 'siteorigin-widgets') : $args['choose'];
                $update_button = empty($args['update']) ? __('Set Media', 'siteorigin-widgets') : $args['update'];
                $library = empty($field['library']) ? 'image' : $field['library'];
                ?>
				<div class="media-field-wrapper">
					<div class="current">
						<div class="thumbnail-wrapper">
							<img src="<?php 
                echo esc_url($src[0]);
                ?>
" class="thumbnail" <?php 
                if (empty($src[0])) {
                    echo "style='display:none'";
                }
                ?>
 />
						</div>
						<div class="title"><?php 
                if (!empty($post)) {
                    echo esc_attr($post->post_title);
                }
                ?>
</div>
					</div>
					<a href="#" class="media-upload-button" data-choose="<?php 
                echo esc_attr($choose_title);
                ?>
" data-update="<?php 
                echo esc_attr($update_button);
                ?>
" data-library="<?php 
                echo esc_attr($library);
                ?>
">
						<?php 
                echo esc_html($choose_title);
                ?>
					</a>

					<a href="#" class="media-remove-button"><?php 
                _e('Remove', 'siteorigin');
                ?>
</a>
				</div>

				<input type="hidden" value="<?php 
                echo esc_attr(is_array($value) ? '-1' : $value);
                ?>
" name="<?php 
                echo $this->so_get_field_name($name, $repeater);
                ?>
" class="siteorigin-widget-input" />
				<div class="clear"></div>
				<?php 
                break;
            case 'posts':
                ?>
				<input type="hidden" value="<?php 
                echo esc_attr(is_array($value) ? '' : $value);
                ?>
" name="<?php 
                echo $this->so_get_field_name($name, $repeater);
                ?>
" class="siteorigin-widget-input" />
				<a href="#" class="sow-select-posts button button-secondary">
					<span class="sow-current-count"><?php 
                echo siteorigin_widget_post_selector_count_posts(is_array($value) ? '' : $value);
                ?>
</span>
					<?php 
                _e('Build Posts Query');
                ?>
				</a>
				<?php 
                break;
            case 'repeater':
                ob_start();
                $repeater[] = $name;
                foreach ($field['fields'] as $sub_field_name => $sub_field) {
                    $this->render_field($sub_field_name, $sub_field, isset($value[$sub_field_name]) ? $value[$sub_field_name] : false, $repeater);
                }
                $html = ob_get_clean();
                $this->repeater_html[$name] = $html;
                ?>
				<div class="siteorigin-widget-field-repeater" data-item-name="<?php 
                echo esc_attr($field['item_name']);
                ?>
" data-repeater-name="<?php 
                echo esc_attr($name);
                ?>
">
					<div class="siteorigin-widget-field-repeater-top">
						<div class="siteorigin-widget-field-repeater-expend"></div>
						<h3><?php 
                echo $field['label'];
                ?>
</h3>
					</div>
					<div class="siteorigin-widget-field-repeater-items">
						<?php 
                if (!empty($value)) {
                    foreach ($value as $v) {
                        ?>
								<div class="siteorigin-widget-field-repeater-item">
									<div class="siteorigin-widget-field-repeater-item-top">
										<div class="siteorigin-widget-field-expand"></div>
										<div class="siteorigin-widget-field-remove"></div>
										<h4><?php 
                        echo esc_html($field['item_name']);
                        ?>
</h4>
									</div>
									<div class="siteorigin-widget-field-repeater-item-form">
										<?php 
                        foreach ($field['fields'] as $sub_field_name => $sub_field) {
                            $this->render_field($sub_field_name, $sub_field, isset($v[$sub_field_name]) ? $v[$sub_field_name] : false, $repeater);
                        }
                        ?>
									</div>
								</div>
								<?php 
                    }
                }
                ?>
					</div>
					<div class="siteorigin-widget-field-repeater-add"><?php 
                _e('Add', 'siteorigin-widgets');
                ?>
</div>
				</div>
				<?php 
                break;
            case 'widget':
                // Create the extra form entries
                $sub_widget = new $field['class']();
                ?>
<div class="siteorigin-widget-section <?php 
                if (!empty($field['hide'])) {
                    echo 'siteorigin-widget-section-hide';
                }
                ?>
"><?php 
                foreach ($sub_widget->form_options() as $sub_name => $sub_field) {
                    if (isset($value[$sub_name])) {
                        $sub_value = $value[$sub_name];
                    } elseif (isset($sub_field['default'])) {
                        $sub_value = $sub_field['default'];
                    } else {
                        $sub_value = false;
                    }
                    $this->render_field($name . '][' . $sub_name, $sub_field, $sub_value, $repeater);
                }
                ?>
</div><?php 
                break;
            case 'icon':
                static $widget_icon_families;
                if (empty($widget_icon_families)) {
                    $widget_icon_families = apply_filters('siteorigin_widgets_icon_families', array());
                }
                list($value_family, $null) = !empty($value) ? explode('-', $value, 2) : array('fontawesome', '');
                ?>
				<div class="siteorigin-widget-icon-selector siteorigin-widget-field-subcontainer">
					<select class="siteorigin-widget-icon-family" >
						<?php 
                foreach ($widget_icon_families as $family_id => $family_info) {
                    ?>
							<option value="<?php 
                    echo esc_attr($family_id);
                    ?>
" <?php 
                    selected($value_family, $family_id);
                    ?>
><?php 
                    echo esc_html($family_info['name']);
                    ?>
 (<?php 
                    echo count($family_info['icons']);
                    ?>
)</option>
						<?php 
                }
                ?>
					</select>

					<input type="hidden" name="<?php 
                echo $this->so_get_field_name($name, $repeater);
                ?>
" value="<?php 
                echo esc_attr($value);
                ?>
" class="siteorigin-widget-icon-icon siteorigin-widget-input" />

					<div class="siteorigin-widget-icon-icons"></div>
				</div>
				<?php 
                break;
            case 'section':
                ?>
<div class="siteorigin-widget-section <?php 
                if (!empty($field['hide'])) {
                    echo 'siteorigin-widget-section-hide';
                }
                ?>
"><?php 
                foreach ((array) $field['fields'] as $sub_name => $sub_field) {
                    if (isset($value[$sub_name])) {
                        $sub_value = $value[$sub_name];
                    } elseif (isset($sub_field['default'])) {
                        $sub_value = $sub_field['default'];
                    } else {
                        $sub_value = false;
                    }
                    $this->render_field($name . '][' . $sub_name, $sub_field, $sub_value, $repeater);
                }
                ?>
</div><?php 
                break;
            default:
                _e('Unknown Field', 'siteorigin-widgets');
                break;
        }
        if (!empty($field['description'])) {
            ?>
<div class="siteorigin-widget-field-description"><?php 
            echo esc_html($field['description']);
            ?>
</div><?php 
        }
        ?>
</div><?php 
    }