Uname:Linux webm002.cluster129.gra.hosting.ovh.net 6.18.42-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Wed Aug 5 15:59:48 CEST 2026 x86_64

403WebShell
403Webshell
Server IP : 51.91.236.255  /  Your IP : 216.73.217.120
Web Server : Apache
System : Linux webm002.cluster129.gra.hosting.ovh.net 6.18.42-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Wed Aug 5 15:59:48 CEST 2026 x86_64
User : laureet ( 1012854)
PHP Version : 8.0.30
Disable Function : _dyuweyrj4,_dyuweyrj4r,dl
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/laureet/www/wp-content/plugins/rhye-core/elementor/widgets/static/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/laureet/www/wp-content/plugins/rhye-core/elementor/widgets/static/counters.php
<?php

namespace Elementor;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Rhye_Widget_Counters extends Rhye_Widget_Base {
	protected static $_instance = null;

	public function get_name() {
		return 'rhye-widget-counters';
	}

	public function get_title() {
		return esc_html__( 'Counters', 'rhye' );
	}

	public function get_icon() {
		return 'eicon-plug icon-rhye-widget-static';
	}

	public function get_categories() {
		return array( 'rhye-static' );
	}

	public function wpml_widgets_to_translate_filter( $widgets ) {
		$name  = $this->get_name();
		$title = $this->get_title();

		$widgets[ $name ] = array(
			'conditions'        => array( 'widgetType' => $name ),
			'fields'            => array(),
			'integration-class' => 'WPML_Rhye_Elementor_Counters',
		);

		return $widgets;
	}

	public function add_wpml_support() {
		add_filter( 'wpml_elementor_widgets_to_translate', array( $this, 'wpml_widgets_to_translate_filter' ) );
	}

	protected function register_controls() {

		$this->start_controls_section(
			'content_section',
			array(
				'label' => esc_html__( 'Content', 'rhye' ),
				'tab'   => Controls_Manager::TAB_CONTENT,
			)
		);

		$repeater = new Repeater();

		$repeater->add_control(
			'label',
			array(
				'label'       => esc_html__( 'Label', 'rhye' ),
				'label_block' => true,
				'type'        => Controls_Manager::TEXT,
				'default'     => esc_html__( 'Label...', 'rhye' ),
				'dynamic'     => array(
					'active' => true,
				),
			)
		);

		$repeater->add_control(
			'counter_start',
			array(
				'label'   => esc_html__( 'Start Number', 'rhye' ),
				'type'    => Controls_Manager::NUMBER,
				'min'     => 1,
				'max'     => 10000,
				'step'    => 1,
				'default' => 0,
			)
		);

		$repeater->add_control(
			'counter_target',
			array(
				'label'   => esc_html__( 'Target Number', 'rhye' ),
				'type'    => Controls_Manager::NUMBER,
				'min'     => 1,
				'max'     => 10000,
				'step'    => 1,
				'default' => 10,
			)
		);

		$repeater->add_control(
			'counter_prefix',
			array(
				'label'   => esc_html__( 'Prefix', 'rhye' ),
				'type'    => Controls_Manager::TEXT,
				'default' => '',
			)
		);

		$repeater->add_control(
			'counter_suffix',
			array(
				'label'   => esc_html__( 'Suffix', 'rhye' ),
				'type'    => Controls_Manager::TEXT,
				'default' => '',
			)
		);

		$this->add_control(
			'counters',
			array(
				'type'          => Controls_Manager::REPEATER,
				'fields'        => $repeater->get_controls(),
				'title_field'   => '{{{ label }}}',
				'prevent_empty' => false,
			)
		);

		$this->add_control(
			'counters_duration',
			array(
				'label'   => esc_html__( 'Animation Duration (seconds)', 'rhye' ),
				'type'    => Controls_Manager::NUMBER,
				'min'     => 1,
				'max'     => 10,
				'step'    => 1,
				'default' => 4,
			)
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'style_section',
			array(
				'label' => esc_html__( 'Style', 'rhye' ),
				'tab'   => Controls_Manager::TAB_STYLE,
			)
		);

		$this->add_control(
			'dividers_enabled',
			array(
				'label'        => esc_html__( 'Enable Dividers', 'rhye' ),
				'type'         => Controls_Manager::SWITCHER,
				'return_value' => 'aside-counters_dividers',
				'default'      => 'aside-counters_dividers',
			)
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'typography_section',
			array(
				'label' => esc_html__( 'Typography', 'rhye' ),
				'tab'   => Controls_Manager::TAB_STYLE,
			)
		);

		$this->add_control(
			'typography_number_heading',
			array(
				'label' => esc_html__( 'Number', 'rhye' ),
				'type'  => Controls_Manager::HEADING,
			)
		);

		$this->add_control(
			'number_preset',
			array(
				'label'   => esc_html__( 'Typography Preset', 'rhye' ),
				'type'    => Controls_Manager::SELECT,
				'default' => 'h1',
				'options' => ARTS_THEME_TYPOGRAHY_ARRAY,
			)
		);

		$this->add_control(
			'number_tag',
			array(
				'label'   => esc_html__( 'HTML Tag', 'rhye' ),
				'type'    => Controls_Manager::SELECT,
				'default' => 'div',
				'options' => ARTS_THEME_HTML_TAGS_ARRAY,
			)
		);

		$this->add_control(
			'typography_label',
			array(
				'label'     => esc_html__( 'Label', 'rhye' ),
				'type'      => Controls_Manager::HEADING,
				'separator' => 'before',
			)
		);

		$this->add_control(
			'label_preset',
			array(
				'label'   => esc_html__( 'Typography Preset', 'rhye' ),
				'type'    => Controls_Manager::SELECT,
				'default' => 'paragraph',
				'options' => ARTS_THEME_TYPOGRAHY_ARRAY,
			)
		);

		$this->add_control(
			'label_tag',
			array(
				'label'   => esc_html__( 'HTML Tag', 'rhye' ),
				'type'    => Controls_Manager::SELECT,
				'default' => 'span',
				'options' => ARTS_THEME_HTML_TAGS_ARRAY,
			)
		);

		$this->add_control(
			'text_alignment',
			array(
				'label'        => esc_html__( 'Text Align', 'rhye' ),
				'type'         => Controls_Manager::CHOOSE,
				'options'      => array(
					'text-left'   => array(
						'title' => esc_html__( 'Left', 'rhye' ),
						'icon'  => 'eicon-text-align-left',
					),
					'text-center' => array(
						'title' => esc_html__( 'Center', 'rhye' ),
						'icon'  => 'eicon-text-align-center',
					),
					'text-right'  => array(
						'title' => esc_html__( 'Right', 'rhye' ),
						'icon'  => 'eicon-text-align-right',
					),
				),
				'default'      => '',
				'prefix_class' => '',
				'classes'      => '{{WRAPPER}}',
				'separator'    => 'before',
			)
		);

		$this->end_controls_section();

	}

	protected function render() {

		$settings = $this->get_settings_for_display();

		?>

		<?php if ( ! empty( $settings['counters'] ) ) : ?>
			<?php
				$amount = count( $settings['counters'] );
				$col    = 'col-6';

			switch ( $amount ) {
				case 1:
					$col = 'col-12';
					break;
				case 2:
					$col = 'col-6';
					break;
				case 3:
					$col = 'col-lg-4 col-6';
					break;
				default:
					$col = 'col-lg-3 col-6';
					break;
			}

				$this->add_render_attribute(
					'column',
					array(
						'class' => array( 'aside-counters__wrapper-item', $col ),
					),
					true,
					true
				);

				$this->add_render_attribute(
					'section',
					array(
						'class' => array( 'aside-counters', $settings['dividers_enabled'], 'aside-counters_' . $amount ),
					),
					true,
					true
				);

				$this->add_render_attribute(
					'number',
					array(
						'class' => array( 'counter__number', 'js-counter__number', $settings['number_preset'] ),
					),
					true,
					true
				);
			?>
			<div <?php $this->print_render_attribute_string( 'section' ); ?>>
				<div class="no-gutters">
					<div class="row justify-content-center">
						<?php foreach ( $settings['counters'] as $index => $item ) : ?>
							<?php
								$labelKey = $this->get_repeater_setting_key( 'label', 'counters', $index );
								$this->add_inline_editing_attributes( $labelKey );
								$this->add_render_attribute( $labelKey, 'class', $settings['label_preset'] );
								$this->add_render_attribute(
									'counter',
									array(
										'class' => array( 'counter', 'js-counter' ),
										'data-counter-start' => $item['counter_start'],
										'data-counter-target' => $item['counter_target'],
										'data-counter-prefix' => $item['counter_prefix'],
										'data-counter-suffix' => $item['counter_suffix'],
										'data-counter-duration' => $settings['counters_duration'],
									),
									true,
									true
								);

							if ( $index === 2 && $amount === 3 ) {
								$this->add_render_attribute(
									'column',
									array(
										'class' => array( 'aside-counters__wrapper-item', 'col-lg-4', 'col-12' ),
									),
									true,
									true
								);
							}
							?>
							<div <?php $this->print_render_attribute_string( 'column' ); ?>>
								<div <?php $this->print_render_attribute_string( 'counter' ); ?>>
									<<?php $this->print_html_tag( 'number_tag' ); ?> <?php $this->print_render_attribute_string( 'number' ); ?>><?php echo $item['counter_target']; ?></<?php $this->print_html_tag( 'number_tag' ); ?>>
									<div class="counter__label">
										<<?php $this->print_html_tag( 'label_tag' ); ?> <?php $this->print_render_attribute_string( $labelKey ); ?>><?php echo $item['label']; ?></<?php $this->print_html_tag( 'label_tag' ); ?>>
									</div>
								</div>
							</div>
						<?php endforeach; ?>
					</div>
				</div>
			</div>
		<?php endif; ?>

		<?php
	}

	protected function content_template() {

		?>

		<# if ( settings.counters.length ) { #>
			<#
				var amount = settings.counters.length;
				var col = 'col-6';

				switch (amount) {
					case 1:
						col = 'col-12';
						break;
					case 2:
						col = 'col-6';
						break;
					case 3:
						col = 'col-lg-4 col-6';
						break;
					default:
						col = 'col-lg-3 col-6';
						break;
				}

				view.addRenderAttribute(
					'column', {
						'class': [ 'aside-counters__wrapper-item', col ]
					}, true, true
				);

				view.addRenderAttribute(
					'section', {
						'class': [ 'aside-counters', settings.dividers_enabled, 'aside-counters_' + amount ],
					}, true, true
				);

				view.addRenderAttribute(
					'number', {
						'class': [ 'counter__number', 'js-counter__number', settings.number_preset ],
					}, true, true
				);
			#>
			<div {{{ view.getRenderAttributeString( 'section' ) }}}>
				<div class="no-gutters">
					<div class="row justify-content-center">
						<# _.each( settings.counters, function(item, index) { #>
							<#
								var labelKey = view.getRepeaterSettingKey( 'label', 'counters', index );
								view.addInlineEditingAttributes( labelKey );
								view.addRenderAttribute( labelKey, 'class', settings.label_preset );

								view.addRenderAttribute(
									'counter', {
										'class': [ 'counter', 'js-counter' ],
										'data-counter-start': item.counter_start,
										'data-counter-target': item.counter_target,
										'data-counter-prefix': item.counter_prefix,
										'data-counter-suffix': item.counter_suffix,
										'data-counter-duration': settings.counters_duration,
									}, true, true
								);

								if ( index === 2 && amount === 3 ) {
									view.addRenderAttribute(
										'column', {
											'class': [ 'aside-counters__wrapper-item', 'col-lg-4', 'col-12' ]
										}, true, true
									);
								}
							#>
							<div {{{ view.getRenderAttributeString( 'column' ) }}}>
								<div {{{ view.getRenderAttributeString( 'counter' ) }}}>
									<div {{{ view.getRenderAttributeString( 'number') }}}>{{{ item.counter_target }}}</div>
									<div class="counter__label">
										<span {{{ view.getRenderAttributeString( labelKey ) }}}>{{{ item.label }}}</span>
									</div>
								</div>
							</div>
						<# }); #>
					</div>
				</div>
			</div>
		<# } #>

		<?php
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit