208 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			208 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
class ET_Builder_Module_Signup_Item extends ET_Builder_Module {
 | 
						|
 | 
						|
	public $child_title_var  = 'field_title';
 | 
						|
	public $bb_support       = false;
 | 
						|
	public $main_css_element = '.et_pb_newsletter_form %%order_class%%';
 | 
						|
	public $no_render        = true;
 | 
						|
	public $slug             = 'et_pb_signup_custom_field';
 | 
						|
	public $type             = 'child';
 | 
						|
	public $vb_support       = 'on';
 | 
						|
 | 
						|
	public function init() {
 | 
						|
		$this->name                        = esc_html__( 'Custom Field', 'et_builder' );
 | 
						|
		$this->plural                      = esc_html__( 'Custom Fields', 'et_builder' );
 | 
						|
		$this->advanced_setting_title_text = $this->name;
 | 
						|
		$this->settings_text               = esc_html__( 'Custom Field Settings', 'et_builder' );
 | 
						|
	}
 | 
						|
 | 
						|
	public function get_advanced_fields_config() {
 | 
						|
		return array(
 | 
						|
			'background'     => array(
 | 
						|
				'css' => array(
 | 
						|
					'main' => '%%order_class%%',
 | 
						|
				),
 | 
						|
			),
 | 
						|
			'borders'        => array(
 | 
						|
				'default' => array(
 | 
						|
					'css'          => array(
 | 
						|
						'main'      => array(
 | 
						|
							'border_radii'  => sprintf( '%1$s .input, %1$s .input[type="checkbox"] + label i, %1$s .input[type="radio"] + label i', '.et_pb_newsletter_form .et_pb_newsletter_fields p%%order_class%%' ),
 | 
						|
							'border_styles' => sprintf( '%1$s .input, %1$s .input[type="checkbox"] + label i, %1$s .input[type="radio"] + label i', '.et_pb_newsletter_form .et_pb_newsletter_fields p%%order_class%%' ),
 | 
						|
						),
 | 
						|
						'important' => 'plugin_only',
 | 
						|
					),
 | 
						|
					'label_prefix' => esc_html__( 'Input', 'et_builder' ),
 | 
						|
					'defaults'     => array(
 | 
						|
						'border_radii'  => 'on|3px|3px|3px|3px',
 | 
						|
						'border_styles' => array(
 | 
						|
							'width' => '0px',
 | 
						|
							'color' => '#333333',
 | 
						|
							'style' => 'solid',
 | 
						|
						),
 | 
						|
					),
 | 
						|
					'fields_after' => array(
 | 
						|
						'use_focus_border_color' => array(
 | 
						|
							'label'            => esc_html__( 'Use Focus Borders', 'et_builder' ),
 | 
						|
							'description'      => esc_html__( 'Enabling this option will add borders to input fields when focused.', 'et_builder' ),
 | 
						|
							'type'             => 'yes_no_button',
 | 
						|
							'option_category'  => 'color_option',
 | 
						|
							'options'          => array(
 | 
						|
								'off' => et_builder_i18n( 'No' ),
 | 
						|
								'on'  => et_builder_i18n( 'Yes' ),
 | 
						|
							),
 | 
						|
							'affects'          => array(
 | 
						|
								'border_radii_focus',
 | 
						|
								'border_styles_focus',
 | 
						|
							),
 | 
						|
							'tab_slug'         => 'advanced',
 | 
						|
							'toggle_slug'      => 'border',
 | 
						|
							'default_on_front' => 'off',
 | 
						|
						),
 | 
						|
					),
 | 
						|
				),
 | 
						|
				'focus'   => array(
 | 
						|
					'label_prefix'    => esc_html__( 'Input Focus', 'et_builder' ),
 | 
						|
					'css'             => array(
 | 
						|
						'main'      => array(
 | 
						|
							'border_radii'  => sprintf( '%1$s .input:focus, %1$s .input[type="checkbox"]:focus + label i, %1$s .input[type="radio"]:focus + label i', '.et_pb_newsletter_form .et_pb_newsletter_fields p%%order_class%%' ),
 | 
						|
							'border_styles' => sprintf( '%1$s .input:focus, %1$s .input[type="checkbox"]:focus + label i, %1$s .input[type="radio"]:focus + label i', '.et_pb_newsletter_form .et_pb_newsletter_fields p%%order_class%%' ),
 | 
						|
						),
 | 
						|
						'important' => 'plugin_only',
 | 
						|
					),
 | 
						|
					'option_category' => 'border',
 | 
						|
					'tab_slug'        => 'advanced',
 | 
						|
					'toggle_slug'     => 'border',
 | 
						|
					'depends_on'      => array( 'use_focus_border_color' ),
 | 
						|
					'depends_show_if' => 'on',
 | 
						|
					'defaults'        => array(
 | 
						|
						'border_radii'  => 'on|3px|3px|3px|3px',
 | 
						|
						'border_styles' => array(
 | 
						|
							'width' => '0px',
 | 
						|
							'color' => '#333333',
 | 
						|
							'style' => 'solid',
 | 
						|
						),
 | 
						|
					),
 | 
						|
				),
 | 
						|
			),
 | 
						|
			'box_shadow'     => array(
 | 
						|
				'default' => array(
 | 
						|
					'css' => array(
 | 
						|
						'main'      => implode(
 | 
						|
							', ',
 | 
						|
							array(
 | 
						|
								'%%order_class%% input',
 | 
						|
								'%%order_class%% select',
 | 
						|
								'%%order_class%% textarea',
 | 
						|
								'%%order_class%% .et_pb_contact_field_options_list label > i',
 | 
						|
							)
 | 
						|
						),
 | 
						|
						'important' => true,
 | 
						|
					),
 | 
						|
				),
 | 
						|
			),
 | 
						|
			'filters'        => array(
 | 
						|
				'css' => array(
 | 
						|
					'main' => array(
 | 
						|
						'%%order_class%% input',
 | 
						|
						'%%order_class%% textarea',
 | 
						|
						'%%order_class%% label',
 | 
						|
					),
 | 
						|
				),
 | 
						|
			),
 | 
						|
			'margin_padding' => array(
 | 
						|
				'css' => array(
 | 
						|
					'main'      => '.et_pb_newsletter_form p%%order_class%%',
 | 
						|
					'padding'   => '.et_pb_newsletter_form p%%order_class%%.et_pb_newsletter_field.et_pb_signup_custom_field',
 | 
						|
					'important' => array( 'custom_margin' ), // needed to overwrite last module margin-bottom styling
 | 
						|
				),
 | 
						|
			),
 | 
						|
			'text'           => array(
 | 
						|
				'css' => array(
 | 
						|
					'text_orientation' => '%%order_class%% input, %%order_class%% textarea, %%order_class%% label',
 | 
						|
				),
 | 
						|
			),
 | 
						|
			'text_shadow'    => array(
 | 
						|
				// Don't add text-shadow fields since they already are via font-options
 | 
						|
				'default' => false,
 | 
						|
			),
 | 
						|
			'form_field'     => array(
 | 
						|
				'form_field' => array(
 | 
						|
					'label'          => esc_html__( 'Field', 'et_builder' ),
 | 
						|
					'css'            => array(
 | 
						|
						'main'                   => '.et_pb_newsletter_form .et_pb_newsletter_fields %%order_class%% .input',
 | 
						|
						'background_color'       => '.et_pb_newsletter_form .et_pb_newsletter_fields %%order_class%% input[type="text"], .et_pb_newsletter_form .et_pb_newsletter_fields %%order_class%% textarea, .et_pb_newsletter_form .et_pb_newsletter_fields %%order_class%% select, .et_pb_newsletter_form .et_pb_newsletter_fields %%order_class%% .input[type="checkbox"] + label i, .et_pb_newsletter_form .et_pb_newsletter_fields %%order_class%% .input[type="radio"] + label i',
 | 
						|
						'background_color_hover' => '.et_pb_newsletter_form .et_pb_newsletter_fields %%order_class%% input[type="text"]:hover, .et_pb_newsletter_form .et_pb_newsletter_fields %%order_class%% textarea:hover, .et_pb_newsletter_form .et_pb_newsletter_fields %%order_class%% select:hover, .et_pb_newsletter_form .et_pb_newsletter_fields %%order_class%% .input[type="checkbox"] + label:hover i, .et_pb_newsletter_form .et_pb_newsletter_fields %%order_class%% .input[type="radio"] + label:hover i',
 | 
						|
						'focus_background_color' => '.et_pb_newsletter_form .et_pb_newsletter_fields %%order_class%% input.input:focus, .et_pb_newsletter_form .et_pb_newsletter_fields %%order_class%% textarea:focus, .et_pb_newsletter_form .et_pb_newsletter_fields %%order_class%% select:focus',
 | 
						|
						'form_text_color'        => '.et_pb_newsletter_form .et_pb_newsletter_fields %%order_class%% input[type="text"], .et_pb_newsletter_form .et_pb_newsletter_fields %%order_class%% textarea, .et_pb_newsletter_form .et_pb_newsletter_fields %%order_class%% select, .et_pb_newsletter_form .et_pb_newsletter_fields %%order_class%% .input[type="checkbox"] + label i:before',
 | 
						|
						'form_text_color_hover'  => '.et_pb_newsletter_form .et_pb_newsletter_fields %%order_class%% input[type="text"]:hover, .et_pb_newsletter_form .et_pb_newsletter_fields %%order_class%% textarea:hover, .et_pb_newsletter_form .et_pb_newsletter_fields %%order_class%% select:hover, .et_pb_newsletter_form .et_pb_newsletter_fields %%order_class%% .input[type="checkbox"] + label:hover i:before',
 | 
						|
						'focus_text_color'       => '.et_pb_newsletter_form .et_pb_newsletter_fields %%order_class%% .input:focus',
 | 
						|
						'placeholder_focus'      => '.et_pb_newsletter_form .et_pb_newsletter_fields %%order_class%% .input:focus::-webkit-input-placeholder, .et_pb_newsletter_form .et_pb_newsletter_fields %%order_class%% .input:focus::-moz-placeholder, .et_pb_newsletter_form .et_pb_newsletter_fields %%order_class%% .input:focus:-ms-input-placeholder, .et_pb_newsletter_form .et_pb_newsletter_fields %%order_class%% textarea:focus::-webkit-input-placeholder, .et_pb_newsletter_form .et_pb_newsletter_fields %%order_class%% textarea:focus::-moz-placeholder, .et_pb_newsletter_form .et_pb_newsletter_fields %%order_class%% textarea:focus:-ms-input-placeholder',
 | 
						|
						'important'              => array( 'form_text_color', 'padding', 'margin' ),
 | 
						|
					),
 | 
						|
					'margin_padding' => false,
 | 
						|
					'box_shadow'     => false,
 | 
						|
					'border_styles'  => false,
 | 
						|
					'font_field'     => array(
 | 
						|
						'css' => array(
 | 
						|
							'main'      => array(
 | 
						|
								'%%order_class%%.et_pb_contact_field .et_pb_contact_field_options_title',
 | 
						|
								'.et_pb_newsletter_form .et_pb_newsletter_fields p%%order_class%% .input',
 | 
						|
								'.et_pb_newsletter_form .et_pb_newsletter_fields p%%order_class%% .input::-webkit-input-placeholder',
 | 
						|
								'.et_pb_newsletter_form .et_pb_newsletter_fields p%%order_class%% .input::-moz-placeholder',
 | 
						|
								'.et_pb_newsletter_form .et_pb_newsletter_fields p%%order_class%% .input:-ms-input-placeholder',
 | 
						|
								'.et_pb_newsletter_form .et_pb_newsletter_fields p%%order_class%% .input[type=checkbox] + label',
 | 
						|
								'.et_pb_newsletter_form .et_pb_newsletter_fields p%%order_class%% .input[type=radio] + label',
 | 
						|
							),
 | 
						|
							'hover'     => array(
 | 
						|
								'%%order_class%%.et_pb_contact_field .et_pb_contact_field_options_title:hover',
 | 
						|
								'.et_pb_newsletter_form .et_pb_newsletter_fields p%%order_class%% .input:hover',
 | 
						|
								'.et_pb_newsletter_form .et_pb_newsletter_fields p%%order_class%% .input:hover::-webkit-input-placeholder',
 | 
						|
								'.et_pb_newsletter_form .et_pb_newsletter_fields p%%order_class%% .input:hover::-moz-placeholder',
 | 
						|
								'.et_pb_newsletter_form .et_pb_newsletter_fields p%%order_class%% .input:hover:-ms-input-placeholder',
 | 
						|
								'.et_pb_newsletter_form .et_pb_newsletter_fields p%%order_class%% .input[type=checkbox] + label:hover',
 | 
						|
								'.et_pb_newsletter_form .et_pb_newsletter_fields p%%order_class%% .input[type=radio] + label:hover',
 | 
						|
							),
 | 
						|
							'important' => 'plugin_only',
 | 
						|
						),
 | 
						|
					),
 | 
						|
				),
 | 
						|
			),
 | 
						|
			'sticky'         => false,
 | 
						|
		);
 | 
						|
	}
 | 
						|
 | 
						|
	public function get_fields() {
 | 
						|
		$fields = ET_Core_API_Email_Fields::get_definitions( 'builder' );
 | 
						|
 | 
						|
		// Remove field background color because we already have one that support responsive settings
 | 
						|
		// on Form Field element.
 | 
						|
		if ( isset( $fields['field_background_color'] ) ) {
 | 
						|
			unset( $fields['field_background_color'] );
 | 
						|
		}
 | 
						|
 | 
						|
		return $fields;
 | 
						|
	}
 | 
						|
 | 
						|
	public function get_settings_modal_toggles() {
 | 
						|
		return array(
 | 
						|
			'general'  => array(
 | 
						|
				'toggles' => array(
 | 
						|
					'main_content'      => esc_html__( 'Field', 'et_builder' ),
 | 
						|
					'field_options'     => esc_html__( 'Field Options', 'et_builder' ),
 | 
						|
					'conditional_logic' => esc_html__( 'Conditional Logic', 'et_builder' ),
 | 
						|
					'background'        => et_builder_i18n( 'Background' ),
 | 
						|
				),
 | 
						|
			),
 | 
						|
			'advanced' => array(
 | 
						|
				'toggles' => array(
 | 
						|
					'layout' => et_builder_i18n( 'Layout' ),
 | 
						|
				),
 | 
						|
			),
 | 
						|
		);
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
new ET_Builder_Module_Signup_Item();
 |