start_controls_section( 'style_section', [ 'label' => __( 'Map Link Settings', 'propertyhive' ), 'tab' => \Elementor\Controls_Manager::TAB_STYLE, ] ); $this->add_control( 'map_link_type', [ 'type' => \Elementor\Controls_Manager::SELECT, 'label' => esc_html__( 'Link Type', 'propertyhive' ), 'options' => [ '_blank' => 'Open map in new window', 'embedded' => 'Open embedded map in lightbox', 'iframe' => 'Open iframe map in lightbox', ], 'default' => '_blank', ] ); $this->add_group_control( \Elementor\Group_Control_Typography::get_type(), [ 'name' => 'typography', 'label' => __( 'Typography', 'propertyhive' ), 'global' => [ 'default' => \Elementor\Core\Kits\Documents\Tabs\Global_Typography::TYPOGRAPHY_PRIMARY, ], 'selector' => '{{WRAPPER}} a', ] ); $this->add_control( 'color', [ 'label' => __( 'Colour', 'propertyhive' ), 'type' => \Elementor\Controls_Manager::COLOR, 'global' => [ 'default' => \Elementor\Core\Kits\Documents\Tabs\Global_Colors::COLOR_PRIMARY, ], 'selectors' => [ '{{WRAPPER}} a' => 'color: {{VALUE}}', ], ] ); $this->add_control( 'text_align', [ 'label' => __( 'Alignment', 'propertyhive' ), 'type' => \Elementor\Controls_Manager::CHOOSE, 'options' => [ 'left' => [ 'title' => __( 'Left', 'propertyhive' ), 'icon' => 'eicon-text-align-left', ], 'center' => [ 'title' => __( 'Center', 'propertyhive' ), 'icon' => 'eicon-text-align-center', ], 'right' => [ 'title' => __( 'Right', 'propertyhive' ), 'icon' => 'eicon-text-align-right', ], ], 'default' => 'center', 'toggle' => true, 'selectors' => [ '{{WRAPPER}}' => 'text-align: {{VALUE}}', ], ] ); $this->add_control( 'background_color', [ 'label' => __( 'Background Colour', 'propertyhive' ), 'type' => \Elementor\Controls_Manager::COLOR, 'global' => [ 'default' => \Elementor\Core\Kits\Documents\Tabs\Global_Colors::COLOR_SECONDARY, ], 'selectors' => [ '{{WRAPPER}} a' => 'background: {{VALUE}}', ], ] ); $this->add_control( 'padding', [ 'label' => __( 'Link Padding', 'propertyhive' ), 'type' => \Elementor\Controls_Manager::DIMENSIONS, 'size_units' => [ 'px' ], 'selectors' => [ '{{WRAPPER}} a' => 'display:inline-block; padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], 'default' => [ 'top' => 5, 'right' => 5, 'bottom' => 5, 'left' => 5, 'isLinked' => true, ], ] ); $this->end_controls_section(); } protected function render() { global $property; $settings = $this->get_settings_for_display(); if ( !isset($property->id) ) { return; } if ( $property->latitude == '' || $property->longitude == '' || $property->latitude == '0' || $property->longitude == '0' ) { return; } $link_type = ( isset($settings['map_link_type']) && !empty($settings['map_link_type']) ) ? $settings['map_link_type'] : '_blank'; switch ($link_type) { case "_blank": { echo '' . esc_html(__( 'View Map', 'propertyhive' )) . ''; break; } case "embedded": { echo '' . esc_html(__( 'View Map', 'propertyhive' )) . ''; echo '
'; break; } case "iframe": { echo '' . esc_html(__( 'View Map', 'propertyhive' )) . ''; break; } } } }