id_base, __( 'Astra: Social Profiles', 'astra-widgets' ), array( 'classname' => $this->id_base, 'description' => __( 'Display social profiles.', 'astra-widgets' ), ), array( 'id_base' => $this->id_base, ) ); add_action( 'wp_enqueue_scripts', array( $this, 'register_scripts' ) ); add_action( 'admin_enqueue_scripts', array( $this, 'register_admin_scripts' ) ); } /** * Register admin scripts * * @return void */ function register_admin_scripts() { /* Directory and Extension */ $file_prefix = ( SCRIPT_DEBUG ) ? '' : '.min'; $dir_name = ( SCRIPT_DEBUG ) ? 'unminified' : 'minified'; $js_uri = ASTRA_WIDGETS_URI . 'assets/js/' . $dir_name . '/'; $css_uri = ASTRA_WIDGETS_URI . 'assets/css/' . $dir_name . '/'; wp_enqueue_script( 'astra-widgets-' . $this->id_base, $js_uri . 'astra-widget-social-profiles' . $file_prefix . '.js', array(), ASTRA_WIDGETS_VER ); wp_register_style( 'astra-widget-social-profiles-admin', $css_uri . 'astra-widget-social-profiles-admin' . $file_prefix . '.css' ); } /** * Register scripts * * @return void */ function register_scripts() { /* Directory and Extension */ $file_prefix = ( SCRIPT_DEBUG ) ? '' : '.min'; $dir_name = ( SCRIPT_DEBUG ) ? 'unminified' : 'minified'; $js_uri = ASTRA_WIDGETS_URI . 'assets/js/' . $dir_name . '/'; $css_uri = ASTRA_WIDGETS_URI . 'assets/css/' . $dir_name . '/'; wp_register_style( 'astra-widgets-' . $this->id_base, $css_uri . 'astra-widget-social-profiles' . '.css' ); } /** * Get fields * * @param string $field Widget field. * @param mixed $default Widget field default value. * @return mixed stored/default widget field value. */ function get_fields( $field = '', $default = '' ) { // Emtpy stored values. if ( empty( $this->stored_data ) ) { return $default; } // Emtpy field. if ( empty( $field ) ) { return $default; } if ( ! array_key_exists( $field, $this->stored_data ) ) { return $default; } return $this->stored_data[ $field ]; } /** * Frontend setup * * @param array $args Widget arguments. * @param array $instance Widget instance. * @return void */ function _front_setup( $args, $instance ) { // Set stored data. $this->stored_data = $instance; // Enqueue Scripts. wp_enqueue_style( 'astra-widgets-' . $this->id_base ); // Enqueue dynamic Scripts. wp_add_inline_style( 'astra-widgets-' . $this->id_base, $this->get_dynamic_css() ); } /** * Dynamic CSS * * @return string Dynamic CSS. */ function get_dynamic_css() { $dynamic_css = ''; $instances = get_option( 'widget_' . $this->id_base ); if ( array_key_exists( $this->number, $instances ) ) { $instance = $instances[ $this->number ]; $icon_color = isset( $instance['icon-color'] ) ? $instance['icon-color'] : ''; $bg_color = isset( $instance['bg-color'] ) ? $instance['bg-color'] : ''; $icon_hover_color = isset( $instance['icon-hover-color'] ) ? $instance['icon-hover-color'] : ''; $bg_hover_color = isset( $instance['bg-hover-color'] ) ? $instance['bg-hover-color'] : ''; $icon_width = isset( $instance['width'] ) ? $instance['width'] : ''; $color_type = isset( $instance['color-type'] ) ? $instance['color-type'] : ''; $list = isset( $instance['list'] ) ? $instance['list'] : ''; $icons_color = Astra_Widgets_Helper::get_icons(); if ( 'official-color' === $color_type ) { $new_color_output = ''; if ( ! empty( $list ) ) { foreach ( $list as $key => $value ) { $str = $value['icon']; $color_array = $icons_color[ $str ]; $icon_color_official = $color_array['color']; $trimmed = str_replace( 'astra-icon-', '', $str ); $color_output = array( '.astra-widget-social-profiles-inner.icon-official-color.simple li .' . $trimmed . '.icon' => array( 'color' => esc_attr( $icon_color_official ), 'background-color' => 'transparent', ), '.astra-widget-social-profiles-inner.icon-official-color li .' . $trimmed . '.icon' => array( 'color' => '#fff', 'background-color' => esc_attr( $icon_color_official ), ), ); $color_output = astra_parse_css( $color_output ); $new_color_output .= $color_output; } } $dynamic_css .= $dynamic_css . $new_color_output; } $css_output = array( '.astra-widget-social-profiles-inner li .icon' => array( 'color' => esc_attr( $icon_color ), ), '.astra-widget-social-profiles-inner li .icon:hover' => array( 'color' => esc_attr( $icon_hover_color ), ), '.astra-widget-social-profiles-inner.square-outline li .icon, .astra-widget-social-profiles-inner.circle-outline li .icon' => array( 'background' => 'transparent', 'color' => esc_attr( $icon_color ), 'border' => '1px solid ' . esc_attr( $bg_color ), 'color' => esc_attr( $icon_hover_color ), ), '.astra-widget-social-profiles-inner.square .icon, .astra-widget-social-profiles-inner.circle .icon' => array( 'background' => esc_attr( $bg_color ), 'border' => '1px solid ' . esc_attr( $bg_color ), 'color' => esc_attr( $icon_color ), ), '.astra-widget-social-profiles-inner.square-outline li .icon:hover, .astra-widget-social-profiles-inner.circle-outline li .icon:hover' => array( 'background' => 'transparent', 'color' => esc_attr( $icon_hover_color ), 'border' => '1px solid ' . esc_attr( $bg_hover_color ), ), '.astra-widget-social-profiles-inner.square .icon:hover, .astra-widget-social-profiles-inner.circle .icon:hover' => array( 'background' => esc_attr( $bg_hover_color ), 'border' => '1px solid ' . esc_attr( $bg_hover_color ), 'color' => esc_attr( $icon_hover_color ), ), '.astra-widget-social-profiles-inner .icon span' => array( 'font-size' => esc_attr( $icon_width ) . 'px', ), '.astra-widget-social-profiles-inner.circle li .icon, .astra-widget-social-profiles-inner.circle-outline li .icon' => array( 'font-size' => esc_attr( $icon_width ) . 'px', ), ); $css_output = astra_parse_css( $css_output ); $dynamic_css = $dynamic_css . $css_output; } return $dynamic_css; } /** * Widget * * @param array $args Widget arguments. * @param array $instance Widget instance. * @return void */ function widget( $args, $instance ) { $this->_front_setup( $args, $instance ); wp_enqueue_style( 'astra-widgets-font-style' ); $list = $this->get_fields( 'list', array() ); $align = $this->get_fields( 'align' ); $icon_color = $this->get_fields( 'icon-color' ); $bg_color = $this->get_fields( 'bg-color' ); $icon_hover_color = $this->get_fields( 'icon-hover-color' ); $bg_hover_color = $this->get_fields( 'bg-hover-color' ); $icon_style = $this->get_fields( 'icon-style' ); $display_title = $this->get_fields( 'display-title', false ); $color_type = $this->get_fields( 'color-type', false ); $icon = $this->get_fields( 'icon', false ); $title = apply_filters( 'widget_title', $this->get_fields( 'title' ) ); // Before Widget. echo $args['before_widget']; if ( $title ) { echo $args['before_title'] . $title . $args['after_title']; } ?>
id_base ); wp_enqueue_style( 'astra-widget-social-profiles-admin' ); wp_enqueue_style( 'astra-widgets-font-style' ); $fields = array( array( 'type' => 'text', 'id' => 'title', 'name' => __( 'Title', 'astra-widgets' ), 'default' => ( isset( $instance['title'] ) && ! empty( $instance['title'] ) ) ? $instance['title'] : '', ), array( 'type' => 'separator', ), array( 'type' => 'heading', 'name' => __( 'Social Profiles', 'astra-widgets' ), ), array( 'id' => 'list', 'type' => 'repeater', 'title' => __( 'Add Profile', 'astra-widgets' ), 'options' => array( array( 'type' => 'text', 'id' => 'title', 'name' => __( 'Title', 'astra-widgets' ), 'default' => '', ), array( 'type' => 'text', 'id' => 'link', 'name' => __( 'Link', 'astra-widgets' ), 'default' => '', ), array( 'type' => 'select', 'name' => 'Target', 'id' => 'link-target', 'default' => ( isset( $instance['link-target'] ) && ! empty( $instance['link-target'] ) ) ? $instance['link-target'] : 'same-page', 'options' => array( 'same-page' => __( 'Same Page', 'astra-widgets' ), 'new-page' => __( 'New Page', 'astra-widgets' ), ), ), array( 'type' => 'select', 'id' => 'nofollow', 'name' => __( 'No Follow', 'astra-widgets' ), 'default' => ( isset( $instance['nofollow'] ) && ! empty( $instance['nofollow'] ) ) ? $instance['nofollow'] : 'enable', 'options' => array( 'enable' => __( 'Enable', 'astra-widgets' ), 'disable' => __( 'Disable', 'astra-widgets' ), ), ), array( 'type' => 'icon', 'id' => 'icon', 'name' => __( 'Icon', 'astra-widgets' ), 'default' => '', 'show_icon' => 'yes', ), ), ), array( 'type' => 'separator', ), array( 'type' => 'heading', 'name' => __( 'Styling', 'astra-widgets' ), ), array( 'type' => 'checkbox', 'id' => 'display-title', 'name' => __( 'Display profile title?', 'astra-widgets' ), 'default' => ( isset( $instance['display-title'] ) && ! empty( $instance['display-title'] ) ) ? $instance['display-title'] : false, ), array( 'type' => 'select', 'id' => 'align', 'name' => __( 'Alignment', 'astra-widgets' ), 'default' => isset( $instance['align'] ) ? $instance['align'] : '', 'options' => array( 'inline' => __( 'Inline', 'astra-widgets' ), 'stack' => __( 'Stack', 'astra-widgets' ), ), ), array( 'type' => 'select', 'id' => 'icon-style', 'name' => __( 'Icon Style', 'astra-widgets' ), 'default' => isset( $instance['icon-style'] ) ? $instance['icon-style'] : '', 'options' => array( 'simple' => __( 'Simple', 'astra-widgets' ), 'circle' => __( 'Circle', 'astra-widgets' ), 'square' => __( 'Square', 'astra-widgets' ), 'circle-outline' => __( 'Circle Outline', 'astra-widgets' ), 'square-outline' => __( 'Square Outline', 'astra-widgets' ), ), ), array( 'type' => 'select', 'id' => 'color-type', 'name' => __( 'Alignment', 'astra-widgets' ), 'default' => isset( $instance['color-type'] ) ? $instance['color-type'] : '', 'options' => array( 'official-color' => __( 'Official Color', 'astra-widgets' ), 'custom-color' => __( 'Custom', 'astra-widgets' ), ), ), array( 'type' => 'color', 'id' => 'icon-color', 'name' => __( 'Icon Color', 'astra-widgets' ), 'default' => ( isset( $instance['icon-color'] ) && ! empty( $instance['icon-color'] ) ) ? $instance['icon-color'] : '', ), array( 'type' => 'color', 'id' => 'bg-color', 'name' => __( 'Background Color', 'astra-widgets' ), 'default' => ( isset( $instance['bg-color'] ) && ! empty( $instance['bg-color'] ) ) ? $instance['bg-color'] : '', ), array( 'type' => 'color', 'id' => 'icon-hover-color', 'name' => __( 'Hover Icon Color', 'astra-widgets' ), 'default' => ( isset( $instance['icon-hover-color'] ) && ! empty( $instance['icon-hover-color'] ) ) ? $instance['icon-hover-color'] : '', ), array( 'type' => 'color', 'id' => 'bg-hover-color', 'name' => __( 'Hover Background Color', 'astra-widgets' ), 'default' => ( isset( $instance['bg-hover-color'] ) && ! empty( $instance['bg-hover-color'] ) ) ? $instance['bg-hover-color'] : '', ), array( 'type' => 'number', 'id' => 'width', 'name' => __( 'Icon Width:', 'astra-widgets' ), 'default' => ( isset( $instance['width'] ) && ! empty( $instance['width'] ) ) ? $instance['width'] : '', ), ); ?>