File "ep-inline-svg.php"
Full path: /home/kosmetik/public_html/wp-content/plugins/elements-plus/elements/ep-inline-svg.php
File
size: 6.02 B
MIME-type: text/x-php
Charset: utf-8
Download Open Edit Advanced Editor Back
<?php
namespace Elementor;
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
class Widget_SVG extends Widget_Base {
public function get_name() {
return 'ep-inline-svg';
}
public function get_title() {
return __( 'Inline SVG Plus!', 'elements-plus' );
}
public function get_icon() {
return 'ep-icon ep-icon-inline';
}
public function get_categories() {
return [ 'elements-plus' ];
}
protected function _register_controls() {
$this->start_controls_section(
'section_inline_svg',
[
'label' => __( 'Inline SVG Plus!', 'elements-plus' ),
]
);
$this->add_control(
'svg',
[
'label' => __( 'Select SVG file', 'elements-plus' ),
'type' => Controls_Manager::MEDIA,
'frontend_available' => true,
]
);
$this->add_control(
'link',
[
'label' => __( 'Link', 'elements-plus' ),
'type' => Controls_Manager::URL,
'placeholder' => 'https://your-site.com',
'default' => [
'url' => '',
],
'separator' => 'after',
'frontend_available' => true,
]
);
$this->end_controls_section();
$this->start_controls_section(
'section_style',
[
'label' => __( 'Styles', 'elements-plus' ),
'tab' => Controls_Manager::TAB_STYLE,
]
);
$this->add_responsive_control(
'align',
[
'label' => __( 'Alignment', 'elements-plus' ),
'type' => Controls_Manager::CHOOSE,
'options' => [
'left' => [
'title' => __( 'Left', 'elements-plus' ),
'icon' => 'fa fa-align-left',
],
'center' => [
'title' => __( 'Center', 'elements-plus' ),
'icon' => 'fa fa-align-center',
],
'right' => [
'title' => __( 'Right', 'elements-plus' ),
'icon' => 'fa fa-align-right',
],
],
'selectors' => [
'{{WRAPPER}}' => 'text-align: {{VALUE}};',
],
]
);
$this->add_responsive_control(
'width',
[
'label' => __( 'Width', 'elements-plus' ),
'description' => __( 'Set the maximum width', 'elements-plus' ),
'type' => Controls_Manager::SLIDER,
'default' => [
'size' => '',
],
'range' => [
'px' => [
'min' => 0,
'max' => 1920,
'step' => 10,
],
'%' => [
'min' => 0,
'max' => 100,
],
],
'size_units' => [ 'px', '%' ],
'selectors' => [
'{{WRAPPER}} .ep-inline-svg > svg' => 'width: {{SIZE}}{{UNIT}}; height: auto; display: inline-block !important;',
],
]
);
$this->add_control(
'override_colors',
[
'label' => __( 'Customize Color', 'elements-plus' ),
'description' => __( 'Modify the color of svg elements that have a fill or stroke color set.', 'elements-plus' ),
'type' => Controls_Manager::SWITCHER,
'default' => '',
'label_on' => __( 'Yes', 'elements-plus' ),
'label_off' => __( 'No', 'elements-plus' ),
'return_value' => 'yes',
'frontend_available' => true,
]
);
$this->add_control(
'color',
[
'label' => __( 'Color', 'elements-plus' ),
'type' => Controls_Manager::COLOR,
'scheme' => [
'type' => Scheme_Color::get_type(),
'value' => Scheme_Color::COLOR_1,
],
'default' => '',
'selectors' => [
'{{WRAPPER}} .ep-inline-svg' => 'color: {{VALUE}} !important',
],
'condition' => [
'override_colors!' => '',
],
]
);
$this->add_control(
'color_hover',
[
'label' => __( 'Hover Color', 'elements-plus' ),
'type' => Controls_Manager::COLOR,
'scheme' => [
'type' => Scheme_Color::get_type(),
'value' => Scheme_Color::COLOR_1,
],
'default' => '',
'selectors' => [
'{{WRAPPER}} .ep-inline-svg:hover' => 'color: {{VALUE}} !important',
],
'condition' => [
'override_colors!' => '',
],
]
);
$this->add_control(
'remove_inline_css',
[
'label' => __( 'Remove Inline CSS', 'elements-plus' ),
'description' => __( 'An SVG might include inline styles. If custom color options do not work, try this option to remove these styles. Please note, this will also remove non-color related styling.', 'elements-plus' ),
'type' => Controls_Manager::SWITCHER,
'default' => '',
'label_on' => __( 'Yes', 'elements-plus' ),
'label_off' => __( 'No', 'elements-plus' ),
'return_value' => 'yes',
'frontend_available' => true,
'condition' => [
'override_colors!' => '',
],
]
);
$this->end_controls_section();
}
protected function render() {
$settings = $this->get_settings();
$tag = $settings['link']['url'] ? 'a' : 'div';
// Add main class to wrapper.
$this->add_render_attribute( 'svg', 'class', 'ep-inline-svg' );
if ( ! empty( $settings['link']['url'] ) ) {
$this->add_render_attribute( 'svg', 'href', $settings['link']['url'] );
if ( $settings['link']['is_external'] ) {
$this->add_render_attribute( 'svg', 'target', '_blank' );
}
if ( ! empty( $settings['link']['nofollow'] ) ) {
$this->add_render_attribute( 'svg', 'rel', 'nofollow' );
}
}
?>
<div class="ep-inline-svg-wrapper">
<?php if ( ! empty( $settings['svg']['url'] ) ) { ?>
<<?php echo esc_html( $tag ); ?>
<?php echo $this->get_render_attribute_string( 'svg' ); ?>>
</<?php echo esc_html( $tag ); ?>>
<?php } ?>
</div>
<?php
}
protected function _content_template() {}
}
add_action(
'elementor/widgets/widgets_registered',
function ( $widgets_manager ) {
$widgets_manager->register_widget_type( new Widget_SVG() );
}
);
add_action(
'elementor/frontend/after_enqueue_scripts',
function () {
wp_enqueue_script( 'ep-inline-svg-scripts', ELEMENTS_PLUS_URL . 'assets/js/ep-inline-svg.js', array(), ELEMENTS_PLUS_VERSION, true );
}
);
add_action(
'elementor/frontend/after_enqueue_styles',
function () {
wp_enqueue_style( 'ep-inline-svg-styles', ELEMENTS_PLUS_URL . 'assets/css/ep-inline-svg.css', array(), ELEMENTS_PLUS_VERSION );
}
);