state = $value[ 'so_field_container_state' ]; } else { $this->state = $this->hide ? 'closed' : 'open'; } parent::render_before_field( $value, $instance ); } protected function get_label_classes( $value, $instance ) { $label_classes = parent::get_label_classes( $value, $instance ); if( $this->state == 'open' ) $label_classes[] = 'siteorigin-widget-section-visible'; return $label_classes; } protected function render_field_label( $value, $instance ) { if ($this->collapsible ) { parent::render_field_label( $value, $instance ); } } protected function create_and_render_sub_fields( $values, $parent_container = null, $is_template = false ) { $this->sub_fields = array(); if( isset( $parent_container )) { if( ! in_array( $parent_container, $this->parent_container, true ) ){ $this->parent_container[] = $parent_container; } } /* @var $field_factory SiteOrigin_Widget_Field_Factory */ $field_factory = SiteOrigin_Widget_Field_Factory::single(); foreach( $this->fields as $sub_field_name => $sub_field_options ) { /* @var $field SiteOrigin_Widget_Field_Base */ $field = $field_factory->create_field( $sub_field_name, $sub_field_options, $this->for_widget, $this->parent_container, $is_template ); $sub_value = ( ! empty( $values ) && isset( $values[$sub_field_name] ) ) ? $values[$sub_field_name] : null; $field->render( $sub_value, $values ); $field_js_vars = $field->get_javascript_variables(); if( ! empty( $field_js_vars ) ) { $this->javascript_variables[$sub_field_name] = $field_js_vars; } $field->enqueue_scripts(); $this->sub_fields[$sub_field_name] = $field; } } protected function sanitize_field_input( $value, $instance ) { /* @var $field_factory SiteOrigin_Widget_Field_Factory */ $field_factory = SiteOrigin_Widget_Field_Factory::single(); foreach( $this->fields as $sub_field_name => $sub_field_options ) { /* @var $sub_field SiteOrigin_Widget_Field_Base */ if( ! empty( $this->sub_fields ) && ! empty( $this->sub_fields[$sub_field_name] ) ) { $sub_field = $this->sub_fields[$sub_field_name]; } else { $sub_field = $field_factory->create_field( $this->base_name . '][' . $sub_field_name, $sub_field_options, $this->for_widget, $this->parent_container ); } $value[$sub_field_name] = $sub_field->sanitize( isset($value[$sub_field_name]) ? $value[$sub_field_name] : null, $value ); $value = $sub_field->sanitize_instance( $value ); } return $value; } }