File: /var/www/vfconf/wp-content/plugins/so-widgets-bundle/base/inc/fields/builder.class.php
<?php
/**
* A full instance of SiteOrigin Page Builder as a field.
*
* Class SiteOrigin_Widget_Field_Builder
*/
class SiteOrigin_Widget_Field_Builder extends SiteOrigin_Widget_Field_Base {
protected function render_field( $value, $instance ) {
if ( ! siteorigin_widgets_can_render_builder_field() ) {
?>
<p>
<?php
printf(
esc_html__( 'This field requires %sSiteOrigin Page Builder%s to be installed and activated.', 'so-widgets-bundle' ),
'<a href="https://siteorigin.com/page-builder/" target="_blank" rel="noopener noreferrer">',
'</a>'
);
?>
</p>
<?php
return;
}
// Encode builder data if necessary.
if ( ! empty( $value ) && is_array( $value ) ) {
$value = json_encode( $value );
}
?>
<div
class="siteorigin-page-builder-field"
data-mode="dialog"
data-type="<?php echo isset( $this->field_options['builder_type'] ) ? esc_attr( $this->field_options['builder_type'] ) : 'sow-builder-field'; ?>"
>
<p>
<button class="button-secondary siteorigin-panels-display-builder">
<?php esc_html_e( 'Open Builder', 'so-widgets-bundle' ); ?>
</button>
</p>
<input
type="hidden"
class="siteorigin-widget-input panels-data"
value="<?php echo sow_esc_attr( (string) $value, ENT_QUOTES, false, true ); ?>"
name="<?php echo esc_attr( $this->element_name ); ?>"
id="<?php echo esc_attr( $this->element_id ); ?>"
/>
</div>
<?php
}
/**
* Process the panels_data
*
* @param mixed $value
* @param array $instance
*
* @return array|mixed|object
*/
protected function sanitize_field_input( $value, $instance ) {
if ( empty( $value ) ) {
return array();
}
if ( is_string( $value ) ) {
$value = json_decode( $value, true );
}
if ( function_exists( 'siteorigin_panels_process_raw_widgets' ) && ! empty( $value['widgets'] ) && is_array( $value['widgets'] ) ) {
$value['widgets'] = siteorigin_panels_process_raw_widgets( $value['widgets'] );
}
// Add record of widget being inside of a builder field.
if ( ! empty( $value['widgets'] ) ) {
foreach ( $value['widgets'] as $widget_id => $widget ) {
$value['widgets'][ $widget_id ]['panels_info']['builder'] = true;
}
}
return $value;
}
}