[fields][{$field_id}]",
'value' => $key,
],
'class' => [ 'wpforms-payment-price' ],
'data' => [
'amount' => wpforms_format_amount( wpforms_sanitize_amount( $choice['value'] ) ),
],
'id' => "wpforms-{$form_id}-field_{$field_id}_{$key}",
'icon' => isset( $choice['icon'] ) ? $choice['icon'] : '',
'icon_style' => isset( $choice['icon_style'] ) ? $choice['icon_style'] : '',
'image' => isset( $choice['image'] ) ? $choice['image'] : '',
'required' => ! empty( $field['required'] ) ? 'required' : '',
'default' => isset( $choice['default'] ),
];
}
// Required class for pagebreak validation.
if ( ! empty( $field['required'] ) ) {
$properties['input_container']['class'][] = 'wpforms-field-required';
}
// Custom properties if image choices are enabled.
if ( ! empty( $field['choices_images'] ) ) {
$properties['input_container']['class'][] = 'wpforms-image-choices';
$properties['input_container']['class'][] = 'wpforms-image-choices-' . sanitize_html_class( $field['choices_images_style'] );
foreach ( $properties['inputs'] as $key => $inputs ) {
$properties['inputs'][ $key ]['container']['class'][] = 'wpforms-image-choices-item';
if ( in_array( $field['choices_images_style'], [ 'modern', 'classic' ], true ) ) {
$properties['inputs'][ $key ]['class'][] = 'wpforms-screen-reader-element';
}
}
} elseif ( ! empty( $field['choices_icons'] ) ) {
$properties = wpforms()->get( 'icon_choices' )->field_properties( $properties, $field );
}
// Add selected class for choices with defaults.
foreach ( $properties['inputs'] as $key => $inputs ) {
if ( ! empty( $inputs['default'] ) ) {
$properties['inputs'][ $key ]['container']['class'][] = 'wpforms-selected';
}
}
return $properties;
}
/**
* Get field populated single property value.
*
* @since 1.8.2
*
* @param string $raw_value Value from a GET param, always a string.
* @param string $input Represent a subfield inside the field. May be empty.
* @param array $properties Field properties.
* @param array $field Current field specific data.
*
* @return array Modified field properties.
*/
protected function get_field_populated_single_property_value( $raw_value, $input, $properties, $field ) {
/*
* When the form is submitted we get only values (prices) from the Fallback.
* As payment-multiple (radio) field doesn't support 'show_values' option -
* we should transform value into label to check against using general logic in parent method.
*/
if (
! is_string( $raw_value ) ||
empty( $field['choices'] ) ||
! is_array( $field['choices'] )
) {
return $properties;
}
// The form submits only the sum, so shortcut for Dynamic.
if ( ! is_numeric( $raw_value ) ) {
return parent::get_field_populated_single_property_value( $raw_value, $input, $properties, $field );
}
$get_value = wpforms_format_amount( wpforms_sanitize_amount( $raw_value ) );
foreach ( $field['choices'] as $choice ) {
if (
isset( $choice['label'], $choice['value'] ) &&
wpforms_format_amount( wpforms_sanitize_amount( $choice['value'] ) ) === $get_value
) {
$trans_value = $choice['label'];
// Stop iterating over choices.
break;
}
}
if ( empty( $trans_value ) ) {
return $properties;
}
return parent::get_field_populated_single_property_value( $trans_value, $input, $properties, $field );
}
/**
* Field options panel inside the builder.
*
* @since 1.8.2
*
* @param array $field Field settings.
*/
public function field_options( $field ) {
/*
* Basic field options.
*/
// Options open markup.
$this->field_option(
'basic-options',
$field,
[
'markup' => 'open',
]
);
// Label.
$this->field_option( 'label', $field );
// Choices option.
$this->field_option( 'choices_payments', $field );
// Show price after item labels.
$fld = $this->field_element(
'toggle',
$field,
[
'slug' => 'show_price_after_labels',
'value' => isset( $field['show_price_after_labels'] ) ? '1' : '0',
'desc' => esc_html__( 'Show price after item labels', 'wpforms-lite' ),
'tooltip' => esc_html__( 'Check this option to show price of the item after the label.', 'wpforms-lite' ),
],
false
);
$args = [
'slug' => 'show_price_after_labels',
'content' => $fld,
];
$this->field_element( 'row', $field, $args );
// Choices Images.
$this->field_option( 'choices_images', $field );
// Choices Images Style (theme).
$this->field_option( 'choices_images_style', $field );
// Choices Icons.
$this->field_option( 'choices_icons', $field );
// Choices Icons Color.
$this->field_option( 'choices_icons_color', $field );
// Choices Icons Size.
$this->field_option( 'choices_icons_size', $field );
// Choices Icons Style.
$this->field_option( 'choices_icons_style', $field );
// Description.
$this->field_option( 'description', $field );
// Required toggle.
$this->field_option( 'required', $field );
// Options close markup.
$this->field_option(
'basic-options',
$field,
[
'markup' => 'close',
]
);
/*
* Advanced field options.
*/
// Options open markup.
$this->field_option(
'advanced-options',
$field,
[
'markup' => 'open',
]
);
// Input columns.
$this->field_option( 'input_columns', $field );
// Custom CSS classes.
$this->field_option( 'css', $field );
// Hide label.
$this->field_option( 'label_hide', $field );
// Options close markup.
$this->field_option(
'advanced-options',
$field,
[
'markup' => 'close',
]
);
}
/**
* Field preview inside the builder.
*
* @since 1.8.2
*
* @param array $field Field settings.
*/
public function field_preview( $field ) {
// Label.
$this->field_preview_option( 'label', $field );
// Choices.
$this->field_preview_option( 'choices', $field );
// Description.
$this->field_preview_option( 'description', $field );
}
/**
* Field display on the form front-end.
*
* @since 1.8.2
*
* @param array $field Field settings.
* @param array $deprecated Deprecated array.
* @param array $form_data Form data and settings.
*/
public function field_display( $field, $deprecated, $form_data ) { // phpcs:ignore Generic.Metrics.CyclomaticComplexity.TooHigh
// Define data.
$container = $field['properties']['input_container'];
$choices = $field['properties']['inputs'];
printf(
'
',
wpforms_html_attributes( $container['id'], $container['class'], $container['data'], $container['attr'] ) // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
);
foreach ( $choices as $key => $choice ) {
$label = isset( $choice['label']['text'] ) ? $choice['label']['text'] : '';
/* translators: %s - Choice item number. */
$label = $label !== '' ? $label : sprintf( esc_html__( 'Item %s', 'wpforms-lite' ), $key );
$label .= ! empty( $field['show_price_after_labels'] ) && isset( $choice['data']['amount'] ) ? ' - ' . wpforms_format_amount( wpforms_sanitize_amount( $choice['data']['amount'] ), true ) : '';
printf(
'',
wpforms_html_attributes( $choice['container']['id'], $choice['container']['class'], $choice['container']['data'], $choice['container']['attr'] ) // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
);
if ( empty( $field['dynamic_choices'] ) && ! empty( $field['choices_images'] ) ) {
// Image choices.
printf(
'',
wpforms_html_attributes( $choice['label']['id'], $choice['label']['class'], $choice['label']['data'], $choice['label']['attr'] ) // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
);
if ( ! empty( $choice['image'] ) ) {
printf(
' ',
esc_url( $choice['image'] ),
esc_attr( $choice['label']['text'] ),
! empty( $choice['label']['text'] ) ? ' title="' . esc_attr( $choice['label']['text'] ) . '"' : ''
);
}
if ( $field['choices_images_style'] === 'none' ) {
echo ' ';
}
printf(
' ',
wpforms_html_attributes( $choice['id'], $choice['class'], $choice['data'], $choice['attr'] ), // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
esc_attr( $choice['required'] ),
checked( '1', $choice['default'], false )
);
echo '' . wp_kses_post( $label ) . ' ';
echo ' ';
} elseif ( empty( $field['dynamic_choices'] ) && ! empty( $field['choices_icons'] ) ) {
// Icon Choices.
wpforms()->get( 'icon_choices' )->field_display( $field, $choice, 'radio', $label );
} else {
// Normal display.
printf(
' ',
wpforms_html_attributes( $choice['id'], $choice['class'], $choice['data'], $choice['attr'] ), // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
esc_attr( $choice['required'] ),
checked( '1', $choice['default'], false )
);
printf(
'%s ',
wpforms_html_attributes( $choice['label']['id'], $choice['label']['class'], $choice['label']['data'], $choice['label']['attr'] ), // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
wp_kses_post( $label )
);
}
echo ' ';
}
echo ' ';
}
/**
* Validate field on form submit.
*
* @since 1.8.2
*
* @param int $field_id Field ID.
* @param array $field_submit Submitted form data.
* @param array $form_data Form data and settings.
*/
public function validate( $field_id, $field_submit, $form_data ) {
// Basic required check - If field is marked as required, check for entry data.
if ( ! empty( $form_data['fields'][ $field_id ]['required'] ) && empty( $field_submit ) ) {
wpforms()->get( 'process' )->errors[ $form_data['id'] ][ $field_id ] = wpforms_get_required_label();
}
// Validate that the option selected is real.
if ( ! empty( $field_submit ) && empty( $form_data['fields'][ $field_id ]['choices'][ $field_submit ] ) ) {
wpforms()->get( 'process' )->errors[ $form_data['id'] ][ $field_id ] = esc_html__( 'Invalid payment option.', 'wpforms-lite' );
}
}
/**
* Format and sanitize field.
*
* @since 1.8.2
*
* @param int $field_id Field ID.
* @param string $field_submit Submitted form data.
* @param array $form_data Form data and settings.
*/
public function format( $field_id, $field_submit, $form_data ) {
$field = $form_data['fields'][ $field_id ];
$name = sanitize_text_field( $field['label'] );
$value = '';
$amount = 0;
$choice_label = '';
$image = '';
if ( ! empty( $field_submit ) && ! empty( $field['choices'][ $field_submit ] ) ) {
$amount = wpforms_sanitize_amount( $field['choices'][ $field_submit ]['value'] );
$value = wpforms_format_amount( $amount, true );
if ( ! empty( $field['choices'][ $field_submit ]['label'] ) ) {
$choice_label = sanitize_text_field( $field['choices'][ $field_submit ]['label'] );
$value = $choice_label . ' - ' . $value;
}
if ( ! empty( $field['choices_images'] ) ) {
$image = ! empty( $field['choices'][ $field_submit ]['image'] ) ? esc_url_raw( $field['choices'][ $field_submit ]['image'] ) : '';
}
}
wpforms()->get( 'process' )->fields[ $field_id ] = [
'name' => $name,
'value' => $value,
'value_choice' => $choice_label,
'value_raw' => sanitize_text_field( $field_submit ),
'amount' => wpforms_format_amount( $amount ),
'amount_raw' => $amount,
'currency' => wpforms_get_currency(),
'image' => $image,
'id' => absint( $field_id ),
'type' => sanitize_key( $this->type ),
];
}
/**
* Return boolean determining if field HTML values uses images.
*
* @since 1.8.2
*
* @param string $context Context of the field.
*
* @return bool
*/
private function filter_field_html_value_images( $context ) {
/**
* Filters whether to use HTML formatting for a field with image choices enabled.
*
* @since 1.5.1
*
* @param bool $use_html Whether to use HTML formatting.
* @param string $context Value display context.
*/
return (bool) apply_filters( "wpforms_{$this->type}_field_html_value_images", true, $context ); // phpcs:ignore WPForms.PHP.ValidateHooks.InvalidHookName
}
}
Sterling Silver Cross Pendant w/Blue Stone & Marcasites
Skip to content
Selected:
Vintage Sterling Silver Cross…
Vintage Sterling Silver Cross Pendant w/Blue Stone & Marcasites
$ 19.95
Vintage Sterling Silver Cross Pendant w/Blue Stone & Marcasites in excellent “as found” condition. Marked Sterling Top Please view the pendant for condition and details and grade by your own grading standards. It appears to be in good condition. No returns.
In stock
Description
Vintage Sterling Silver Cross Pendant w/Blue Stone & Marcasites in excellent “as found” condition. Marked Sterling Top Please view the pendant for condition and details and grade by your own grading standards. It appears to be in good condition. No returns.
Reviews
There are no reviews yet.