<?php

class CallaElatedButtonWidget extends CallaElatedWidget {
	public function __construct() {
		parent::__construct(
			'eltdf_button_widget',
			esc_html__( 'Elated Button Widget', 'calla' ),
			array( 'description' => esc_html__( 'Add button element to widget areas', 'calla' ) )
		);
		
		$this->setParams();
	}
	
	protected function setParams() {
		$this->params = array(
			array(
				'type'    => 'dropdown',
				'name'    => 'type',
				'title'   => esc_html__( 'Type', 'calla' ),
				'options' => array(
					'solid'   => esc_html__( 'Solid', 'calla' ),
					'outline' => esc_html__( 'Outline', 'calla' ),
					'simple'  => esc_html__( 'Simple', 'calla' )
				)
			),
			array(
				'type'        => 'dropdown',
				'name'        => 'size',
				'title'       => esc_html__( 'Size', 'calla' ),
				'options'     => array(
					'small'  => esc_html__( 'Small', 'calla' ),
					'medium' => esc_html__( 'Medium', 'calla' ),
					'large'  => esc_html__( 'Large', 'calla' ),
					'huge'   => esc_html__( 'Huge', 'calla' )
				),
				'description' => esc_html__( 'This option is only available for solid and outline button type', 'calla' )
			),
			array(
				'type'    => 'textfield',
				'name'    => 'text',
				'title'   => esc_html__( 'Text', 'calla' ),
				'default' => esc_html__( 'Button Text', 'calla' )
			),
			array(
				'type'  => 'textfield',
				'name'  => 'link',
				'title' => esc_html__( 'Link', 'calla' )
			),
			array(
				'type'    => 'dropdown',
				'name'    => 'target',
				'title'   => esc_html__( 'Link Target', 'calla' ),
				'options' => calla_elated_get_link_target_array()
			),
			array(
				'type'  => 'colorpicker',
				'name'  => 'color',
				'title' => esc_html__( 'Color', 'calla' )
			),
			array(
				'type'  => 'colorpicker',
				'name'  => 'hover_color',
				'title' => esc_html__( 'Hover Color', 'calla' )
			),
			array(
				'type'        => 'colorpicker',
				'name'        => 'background_color',
				'title'       => esc_html__( 'Background Color', 'calla' ),
				'description' => esc_html__( 'This option is only available for solid button type', 'calla' )
			),
			array(
				'type'        => 'colorpicker',
				'name'        => 'hover_background_color',
				'title'       => esc_html__( 'Hover Background Color', 'calla' ),
				'description' => esc_html__( 'This option is only available for solid button type', 'calla' )
			),
			array(
				'type'        => 'colorpicker',
				'name'        => 'border_color',
				'title'       => esc_html__( 'Border Color', 'calla' ),
				'description' => esc_html__( 'This option is only available for solid and outline button type', 'calla' )
			),
			array(
				'type'        => 'colorpicker',
				'name'        => 'hover_border_color',
				'title'       => esc_html__( 'Hover Border Color', 'calla' ),
				'description' => esc_html__( 'This option is only available for solid and outline button type', 'calla' )
			),
			array(
				'type'        => 'textfield',
				'name'        => 'margin',
				'title'       => esc_html__( 'Margin', 'calla' ),
				'description' => esc_html__( 'Insert margin in format: top right bottom left (e.g. 10px 5px 10px 5px)', 'calla' )
			)
		);
	}
	
	public function widget( $args, $instance ) {
		$params = '';
		
		if ( ! is_array( $instance ) ) {
			$instance = array();
		}
		
		// Filter out all empty params
		$instance = array_filter( $instance, function ( $array_value ) {
			return trim( $array_value ) != '';
		} );
		
		// Default values
		if ( ! isset( $instance['text'] ) ) {
			$instance['text'] = 'Button Text';
		}
		
		// Generate shortcode params
		foreach ( $instance as $key => $value ) {
			$params .= " $key='$value' ";
		}
		
		echo '<div class="widget eltdf-button-widget">';
			echo do_shortcode( "[eltdf_button $params]" ); // XSS OK
		echo '</div>';
	}
}