function et_builder_get_font_options_items() { $output = ''; $font_options = et_builder_font_options(); foreach ($font_options as $key => $value) { $output .= sprintf('<option value="%1$s">%2$s</option>', esc_attr($key), esc_html($value)); } return $output; }
function render_field($field) { $classes = array(); $hidden_field = ''; $is_custom_color = isset($field['custom_color']) && $field['custom_color']; $reset_button_html = '<span class="et-pb-reset-setting"></span>'; if ('select' !== $field['type']) { $classes = array('regular-text'); } foreach ($this->get_validation_class_rules() as $rule) { if (!empty($field[$rule])) { $this->validation_in_use = true; $classes[] = $rule; } } if (!empty($field['class'])) { if (is_string($field['class'])) { $field['class'] = array($field['class']); } $classes = array_merge($classes, $field['class']); } $field['class'] = implode(' ', $classes); $field_name = $this->get_field_name($field); $field['id'] = !empty($field['id']) ? $field['id'] : $field_name; $field['name'] = $field_name; if (isset($this->type) && 'child' === $this->type) { $field_name = "data.{$field_name}"; } $default = isset($field['default']) ? $field['default'] : ''; $value_html = ' value="<%%- typeof( %1$s ) !== \'undefined\' ? %2$s : \'%3$s\' %%>" '; $value = sprintf($value_html, esc_attr($field_name), esc_attr($field_name), $default); $attributes = ''; if (!empty($field['attributes'])) { if (is_array($field['attributes'])) { foreach ($field['attributes'] as $attribute_key => $attribute_value) { $attributes .= ' ' . esc_attr($attribute_key) . '="' . esc_attr($attribute_value) . '"'; } } else { $attributes = ' ' . $field['attributes']; } } if (!empty($field['affects'])) { $field['class'] .= ' et-pb-affects'; $attributes .= sprintf(' data-affects="%s"', esc_attr(implode(', ', $field['affects']))); } if ('font' === $field['type']) { $field['options'] = et_builder_font_options(); $field['class'] .= ' et-pb-font-select'; } if (in_array($field['type'], array('font', 'hidden'))) { $hidden_field = sprintf('<input type="hidden" name="%1$s" id="%2$s" class="et-pb-main-setting %3$s" %4$s %5$s/>', esc_attr($field['name']), esc_attr($field['id']), esc_attr($field['class']), $value, $attributes); } foreach ($this->get_validation_attr_rules() as $rule) { if (!empty($field[$rule])) { $this->validation_in_use = true; $attributes .= ' data-rule-' . esc_attr($rule) . '="' . esc_attr($field[$rule]) . '"'; } } switch ($field['type']) { case 'tiny_mce': if (!empty($field['tiny_mce_html_mode'])) { $field['class'] .= ' html_mode'; } $main_content_property_name = $main_content_field_name = 'et_pb_content_new'; if (isset($this->type) && 'child' === $this->type) { $main_content_property_name = "data.{$main_content_property_name}"; } $field_el = sprintf('<div id="%1$s"><%%= typeof( %2$s ) !== \'undefined\' ? %2$s : \'\' %%></div>', esc_attr($main_content_field_name), esc_html($main_content_property_name)); break; case 'textarea': case 'custom_css': $field_custom_value = esc_html($field_name); if ('custom_css' === $field['type']) { $field_custom_value .= '.replace( /\\|\\|/g, "\\n" )'; } $field_el = sprintf('<textarea class="et-pb-main-setting large-text code%1$s" rows="4" cols="50" id="%2$s"><%%= typeof( %3$s ) !== \'undefined\' ? %4$s : \'\' %%></textarea>', esc_attr($field['class']), esc_attr($field['id']), esc_html($field_name), $field_custom_value); break; case 'select': case 'yes_no_button': case 'font': if ('font' === $field['type']) { $field['id'] .= '_select'; $field_name .= '_select'; $field['class'] .= ' et-pb-helper-field'; } $button_options = array(); if ('yes_no_button' === $field['type']) { $button_options = isset($field['button_options']) ? $field['button_options'] : array(); } $field_el = $this->render_select($field_name, $field['options'], $field['id'], $field['class'], $attributes, $field['type'], $button_options); if ('font' === $field['type']) { $font_style_button_html = '<div class="et_builder_%1$s_font et_builder_font_style mce-widget mce-btn"> <button type="button"> <i class="mce-ico mce-i-%1$s"></i> </button> </div>'; $field_el .= sprintf('<div class="et_builder_font_styles mce-toolbar"> %1$s %2$s %3$s %4$s </div> <!-- .et_builder_font_styles -->', sprintf($font_style_button_html, 'bold'), sprintf($font_style_button_html, 'italic'), sprintf($font_style_button_html, 'uppercase'), sprintf($font_style_button_html, 'underline')); $field_el .= $hidden_field; } break; case 'color': case 'color-alpha': $field['default'] = !empty($field['default']) ? $field['default'] : ''; if ($is_custom_color && (!isset($field['default']) || '' === $field['default'])) { $field['default'] = ''; } $default = !empty($field['default']) && !$is_custom_color ? sprintf(' data-default-color="%s"', $field['default']) : ''; $color_id = sprintf(' id="%1$s"', esc_attr($field['id'])); $color_value_html = '<%%- typeof( %1$s ) !== \'undefined\' && %1$s !== \'\' ? %1$s : \'%2$s\' %%>'; $main_color_value = sprintf($color_value_html, esc_attr($field_name), $field['default']); $hidden_color_value = sprintf($color_value_html, esc_attr($field_name), ''); $field_el = sprintf('<input%1$s class="et-pb-color-picker-hex%5$s%8$s" type="text"%6$s%7$s placeholder="%9$s" value="%2$s"%3$s /> %4$s', !$is_custom_color ? $color_id : '', $main_color_value, $default, !empty($field['additional_code']) ? $field['additional_code'] : '', 'color-alpha' === $field['type'] ? ' et-pb-color-picker-hex-alpha' : '', 'color-alpha' === $field['type'] ? ' data-alpha="true"' : '', 'color' === $field['type'] ? ' maxlength="7"' : '', !$is_custom_color ? ' et-pb-main-setting' : '', esc_attr__('Hex Value', 'et_builder')); if ($is_custom_color) { $field_el = sprintf('<span class="et-pb-custom-color-button et-pb-choose-custom-color-button"><span>%1$s</span></span> <div class="et-pb-custom-color-container et_pb_hidden"> %2$s <input%3$s class="et-pb-main-setting et-pb-custom-color-picker" type="hidden" value="%4$s" /> %5$s </div> <!-- .et-pb-custom-color-container -->', esc_html__('Choose Custom Color', 'et_builder'), $field_el, $color_id, $hidden_color_value, $reset_button_html); } break; case 'upload': $field_data_type = !empty($field['data_type']) ? $field['data_type'] : 'image'; $field['upload_button_text'] = !empty($field['upload_button_text']) ? $field['upload_button_text'] : __('Upload', 'et_builder'); $field['choose_text'] = !empty($field['choose_text']) ? $field['choose_text'] : __('Choose image', 'et_builder'); $field['update_text'] = !empty($field['update_text']) ? $field['update_text'] : __('Set image', 'et_builder'); $field['classes'] = !empty($field['classes']) ? ' ' . $field['classes'] : ''; $field_additional_button = !empty($field['additional_button']) ? "\n\t\t\t\t\t" . $field['additional_button'] : ''; $field_el = sprintf('<input id="%1$s" type="text" class="et-pb-main-setting regular-text et-pb-upload-field%8$s" value="<%%- typeof( %2$s ) !== \'undefined\' ? %2$s : \'\' %%>" /> <input type="button" class="button button-upload et-pb-upload-button" value="%3$s" data-choose="%4$s" data-update="%5$s" data-type="%6$s" />%7$s', esc_attr($field['id']), esc_attr($field_name), esc_attr($field['upload_button_text']), esc_attr($field['choose_text']), esc_attr($field['update_text']), esc_attr($field_data_type), $field_additional_button, esc_attr($field['classes'])); break; case 'checkbox': $field_el = sprintf('<input type="checkbox" name="%1$s" id="%2$s" class="et-pb-main-setting" value="on" <%%- typeof( %1$s ) !== \'undefined\' && %1$s == \'on\' ? checked="checked" : "" %%>>', esc_attr($field['name']), esc_attr($field['id'])); break; case 'hidden': $field_el = $hidden_field; break; case 'custom_margin': case 'custom_padding': $field_el = sprintf('<div class="et_custom_margin_padding"> %6$s %7$s %8$s %9$s <input type="hidden" name="%1$s" data-default="%5$s" id="%2$s" class="et-pb-main-setting et_custom_margin_main" %3$s %4$s/> </div> <!-- .et_custom_margin_padding -->', esc_attr($field['name']), esc_attr($field['id']), $value, $attributes, esc_attr($default), !isset($field['sides']) || !empty($field['sides']) && in_array('top', $field['sides']) ? sprintf('<label>%1$s <input type="text" class="et_custom_margin et_custom_margin_top" /></label>', esc_html__('Top', 'et_builder')) : '', !isset($field['sides']) || !empty($field['sides']) && in_array('right', $field['sides']) ? sprintf('<label>%1$s <input type="text" class="et_custom_margin et_custom_margin_right" /></label>', esc_html__('Right', 'et_builder')) : '', !isset($field['sides']) || !empty($field['sides']) && in_array('bottom', $field['sides']) ? sprintf('<label>%1$s <input type="text" class="et_custom_margin et_custom_margin_bottom" /></label>', esc_html__('Bottom', 'et_builder')) : '', !isset($field['sides']) || !empty($field['sides']) && in_array('left', $field['sides']) ? sprintf('<label>%1$s <input type="text" class="et_custom_margin et_custom_margin_left" /></label>', esc_html__('Left', 'et_builder')) : ''); break; case 'text': case 'date_picker': case 'range': default: $validate_number = isset($field['number_validation']) && $field['number_validation'] ? true : false; if ('date_picker' === $field['type']) { $field['class'] .= ' et-pb-date-time-picker'; } $field['class'] .= 'range' === $field['type'] ? ' et-pb-range-input' : ' et-pb-main-setting'; $field_el = sprintf('<input id="%1$s" type="text" class="%2$s%5$s"%6$s%3$s%8$s %4$s/>%7$s', esc_attr($field['id']), esc_attr($field['class']), $value, $attributes, $validate_number ? ' et-validate-number' : '', $validate_number ? ' maxlength="3"' : '', !empty($field['additional_button']) ? $field['additional_button'] : '', '' !== $default ? sprintf(' data-default="%1$s"', esc_attr($default)) : ''); if ('range' === $field['type']) { $value = sprintf($value_html, esc_attr($field_name), esc_attr(sprintf('parseFloat( %1$s )', $field_name)), '' !== $default ? floatval($default) : ''); $range_settings_html = ''; $range_properties = apply_filters('et_builder_range_properties', array('min', 'max', 'step')); foreach ($range_properties as $property) { if (isset($field['range_settings'][$property])) { $range_settings_html .= sprintf(' %2$s="%1$s"', esc_attr($field['range_settings'][$property]), esc_html($property)); } } $range_el = sprintf('<input type="range" class="et-pb-main-setting et-pb-range" data-default="%2$s"%1$s%3$s />', $value, esc_attr($default), $range_settings_html); $field_el = $range_el . "\n" . $field_el; } break; } if (isset($field['type']) && isset($field['tab_slug']) && 'advanced' === $field['tab_slug'] && !$is_custom_color) { $field_el .= $reset_button_html; } return "\t" . $field_el; }