first commit
This commit is contained in:
1
wp-content/plugins/elementor-addon/assets/css/main.css
Normal file
1
wp-content/plugins/elementor-addon/assets/css/main.css
Normal file
@@ -0,0 +1 @@
|
||||
.elementor-widget-custom-slider .custom-slider-wrapper{position:relative;width:100%;overflow:hidden;height:500px}@media(max-width: 768px){.elementor-widget-custom-slider .custom-slider-wrapper{height:400px}}.elementor-widget-custom-slider .custom-slider-wrapper .custom-slider-swiper{width:100%;height:100%}.elementor-widget-custom-slider .custom-slider-wrapper .swiper-wrapper{height:100%}.elementor-widget-custom-slider .custom-slider-wrapper .swiper-slide{height:100%}.elementor-widget-custom-slider .custom-slider-wrapper .swiper-slide .custom-slider-slide-inner{width:100%;height:100%;overflow:hidden}.elementor-widget-custom-slider .custom-slider-wrapper .swiper-slide .custom-slider-slide-inner img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;filter:brightness(0.5);transform:scale(1.05)}.elementor-widget-custom-slider .custom-slider-wrapper .swiper-slide-active .custom-slider-slide-inner img{animation:customSliderZoom 4.5s ease-out forwards}@keyframes customSliderZoom{from{transform:scale(1)}to{transform:scale(1.05)}}.elementor-widget-custom-slider .custom-slider-wrapper .custom-slider-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:1}.elementor-widget-custom-slider .custom-slider-wrapper .custom-slider-overlay .custom-slider-overlay-inner{max-width:700px;text-align:center;padding:20px;pointer-events:auto;color:#fff}@media(max-width: 768px){.elementor-widget-custom-slider .custom-slider-wrapper .custom-slider-overlay .custom-slider-overlay-inner{padding:15px}}.elementor-widget-custom-slider .custom-slider-wrapper .custom-slider-overlay .custom-slider-overlay-inner .custom-slider-title{margin:0 0 10px;font-size:clamp(26px,4vw,42px);font-family:"Inconsolata",Sans-serif;font-weight:700}.elementor-widget-custom-slider .custom-slider-wrapper .custom-slider-overlay .custom-slider-overlay-inner .custom-slider-text{margin:0 0 20px;font-size:clamp(14px,2vw,18px);font-family:"Inconsolata",Sans-serif;letter-spacing:2px;font-weight:300}.elementor-widget-custom-slider .custom-slider-wrapper .custom-slider-overlay .custom-slider-overlay-inner .custom-slider-button{display:inline-block;border-radius:0;border:none;text-decoration:none;transition:.35s ease all;color:#fff;font-family:"Inconsolata",Sans-serif;font-size:14px;font-weight:400;letter-spacing:2px;padding:15px 40px;background:#bc1834;outline:0;text-transform:uppercase}.elementor-widget-custom-slider .custom-slider-wrapper .custom-slider-overlay .custom-slider-overlay-inner .custom-slider-button:hover{background:#021526}.elementor-widget-custom-slider .custom-slider-wrapper .swiper-button-prev,.elementor-widget-custom-slider .custom-slider-wrapper .swiper-button-next{color:#fff;transition:opacity .3s ease}.elementor-widget-custom-slider .custom-slider-wrapper .swiper-button-prev:hover,.elementor-widget-custom-slider .custom-slider-wrapper .swiper-button-next:hover{opacity:.7}.elementor-widget-custom-slider .custom-slider-wrapper .swiper-pagination-bullet{background:hsla(0,0%,100%,.6);opacity:1}.elementor-widget-custom-slider .custom-slider-wrapper .swiper-pagination-bullet-active{background:#fff}/*# sourceMappingURL=main.css.map */
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["main.scss"],"names":[],"mappings":"AACE,uDACE,iBAAA,CACA,UAAA,CACA,eAAA,CACA,YAAA,CAEA,yBANF,uDAOI,YAAA,CAAA,CAGF,6EACE,UAAA,CACA,WAAA,CAGF,uEACE,WAAA,CAGF,qEACE,WAAA,CAEA,gGACE,UAAA,CACA,WAAA,CACA,eAAA,CAEA,oGACE,UAAA,CACA,WAAA,CACA,mBAAA,CAAA,gBAAA,CACA,sBAAA,CAEA,qBAAA,CAKN,2GACE,iDAAA,CAGF,4BACE,KACE,kBAAA,CAGF,GACE,qBAAA,CAAA,CAIJ,8EACE,iBAAA,CACA,OAAA,CACA,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,mBAAA,CACA,SAAA,CAEA,2GACE,eAAA,CACA,iBAAA,CACA,YAAA,CACA,mBAAA,CACA,UAAA,CAEA,yBAPF,2GAQI,YAAA,CAAA,CAGF,gIACE,eAAA,CACA,8BAAA,CACA,oCAAA,CACA,eAAA,CAGF,+HACE,eAAA,CACA,8BAAA,CACA,oCAAA,CACA,kBAAA,CACA,eAAA,CAGF,iIACE,oBAAA,CACA,eAAA,CACA,WAAA,CACA,oBAAA,CACA,wBAAA,CACA,UAAA,CACA,oCAAA,CACA,cAAA,CACA,eAAA,CACA,kBAAA,CACA,iBAAA,CACA,kBAAA,CACA,SAAA,CACA,wBAAA,CAEA,uIACE,kBAAA,CAMR,sJAEE,UAAA,CACA,2BAAA,CAEA,kKACE,UAAA,CAIJ,iFACE,6BAAA,CACA,SAAA,CAEA,wFACE,eAAA","file":"main.css"}
|
||||
131
wp-content/plugins/elementor-addon/assets/css/main.scss
Normal file
131
wp-content/plugins/elementor-addon/assets/css/main.scss
Normal file
@@ -0,0 +1,131 @@
|
||||
.elementor-widget-custom-slider {
|
||||
.custom-slider-wrapper {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
height: 500px;
|
||||
|
||||
@media (max-width: 768px) {
|
||||
height: 400px;
|
||||
}
|
||||
|
||||
.custom-slider-swiper {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.swiper-wrapper {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.swiper-slide {
|
||||
height: 100%;
|
||||
|
||||
.custom-slider-slide-inner {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
|
||||
img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
filter: brightness(0.5);
|
||||
|
||||
transform: scale(1.05);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.swiper-slide-active .custom-slider-slide-inner img {
|
||||
animation: customSliderZoom 4.5s ease-out forwards;
|
||||
}
|
||||
|
||||
@keyframes customSliderZoom {
|
||||
from {
|
||||
transform: scale(1);
|
||||
}
|
||||
|
||||
to {
|
||||
transform: scale(1.05);
|
||||
}
|
||||
}
|
||||
|
||||
.custom-slider-overlay {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
pointer-events: none;
|
||||
z-index: 1;
|
||||
|
||||
.custom-slider-overlay-inner {
|
||||
max-width: 700px;
|
||||
text-align: center;
|
||||
padding: 20px;
|
||||
pointer-events: auto;
|
||||
color: #fff;
|
||||
|
||||
@media (max-width: 768px) {
|
||||
padding: 15px;
|
||||
}
|
||||
|
||||
.custom-slider-title {
|
||||
margin: 0 0 10px;
|
||||
font-size: clamp(26px, 4vw, 42px);
|
||||
font-family: 'Inconsolata', Sans-serif;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.custom-slider-text {
|
||||
margin: 0 0 20px;
|
||||
font-size: clamp(14px, 2vw, 18px);
|
||||
font-family: 'Inconsolata', Sans-serif;
|
||||
letter-spacing: 2px;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.custom-slider-button {
|
||||
display: inline-block;
|
||||
border-radius: 0;
|
||||
border: none;
|
||||
text-decoration: none;
|
||||
transition: 0.35s ease all;
|
||||
color: #fff;
|
||||
font-family: "Inconsolata", Sans-serif;
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
letter-spacing: 2px;
|
||||
padding: 15px 40px;
|
||||
background: #bc1834;
|
||||
outline: 0;
|
||||
text-transform: uppercase;
|
||||
|
||||
&:hover {
|
||||
background: #021526;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.swiper-button-prev,
|
||||
.swiper-button-next {
|
||||
color: #fff;
|
||||
transition: opacity 0.3s ease;
|
||||
|
||||
&:hover {
|
||||
opacity: 0.7;
|
||||
}
|
||||
}
|
||||
|
||||
.swiper-pagination-bullet {
|
||||
background: rgba(255, 255, 255, 0.6);
|
||||
opacity: 1;
|
||||
|
||||
&-active {
|
||||
background: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
63
wp-content/plugins/elementor-addon/assets/js/main.js
Normal file
63
wp-content/plugins/elementor-addon/assets/js/main.js
Normal file
@@ -0,0 +1,63 @@
|
||||
;(function ($) {
|
||||
function initCustomSlider($scope) {
|
||||
var $wrappers = $scope.find('.custom-slider-wrapper')
|
||||
|
||||
if (!$wrappers.length) {
|
||||
return
|
||||
}
|
||||
|
||||
$wrappers.each(function () {
|
||||
var $wrapper = $(this)
|
||||
var $swiperEl = $wrapper.find('.custom-slider-swiper')[0]
|
||||
|
||||
if (!$swiperEl) {
|
||||
return
|
||||
}
|
||||
|
||||
var autoplayDelay = parseInt($wrapper.data('autoplay-delay'), 10) || 4000
|
||||
var transitionSpeed =
|
||||
parseInt($wrapper.data('transition-speed'), 10) || 1200
|
||||
|
||||
if ($wrapper.data('swiper-initialized')) {
|
||||
return
|
||||
}
|
||||
|
||||
var swiper = new Swiper($swiperEl, {
|
||||
loop: true,
|
||||
slidesPerView: 1,
|
||||
effect: 'fade',
|
||||
fadeEffect: {
|
||||
crossFade: true,
|
||||
},
|
||||
speed: transitionSpeed,
|
||||
autoplay: {
|
||||
delay: autoplayDelay,
|
||||
disableOnInteraction: false,
|
||||
},
|
||||
pagination: {
|
||||
el: $wrapper.find('.custom-slider-pagination')[0],
|
||||
clickable: true,
|
||||
},
|
||||
navigation: {
|
||||
nextEl: $wrapper.find('.custom-slider-button-next')[0],
|
||||
prevEl: $wrapper.find('.custom-slider-button-prev')[0],
|
||||
},
|
||||
})
|
||||
|
||||
$wrapper.data('swiper-initialized', true)
|
||||
})
|
||||
}
|
||||
|
||||
$(document).ready(function () {
|
||||
initCustomSlider($(document))
|
||||
})
|
||||
|
||||
$(window).on('elementor/frontend/init', function () {
|
||||
elementorFrontend.hooks.addAction(
|
||||
'frontend/element_ready/custom-slider.default',
|
||||
function ($scope) {
|
||||
initCustomSlider($scope)
|
||||
}
|
||||
)
|
||||
})
|
||||
})(jQuery)
|
||||
66
wp-content/plugins/elementor-addon/elementor-addon.php
Normal file
66
wp-content/plugins/elementor-addon/elementor-addon.php
Normal file
@@ -0,0 +1,66 @@
|
||||
<?php
|
||||
/**
|
||||
* Plugin Name: Elementor Addon
|
||||
* Description: Simple hello world widgets for Elementor.
|
||||
* Version: 1.0.0
|
||||
* Author: Elementor Developer
|
||||
* Author URI: https://developers.elementor.com/
|
||||
* Text Domain: elementor-addon
|
||||
*
|
||||
* Requires Plugins: elementor
|
||||
* Elementor tested up to: 3.21.0
|
||||
* Elementor Pro tested up to: 3.21.0
|
||||
*/
|
||||
|
||||
function register_hello_world_widget( $widgets_manager ) {
|
||||
require_once( __DIR__ . '/widgets/custom-slider.php' );
|
||||
|
||||
$widgets_manager->register( new \Elementor_Custom_Slider() );
|
||||
}
|
||||
add_action( 'elementor/widgets/register', 'register_hello_world_widget' );
|
||||
|
||||
function enqueue_elementor_addon_styles() {
|
||||
if ( did_action( 'elementor/loaded' ) ) {
|
||||
wp_enqueue_style(
|
||||
'elementor-addon-main-css',
|
||||
plugins_url( 'assets/css/main.css', __FILE__ ),
|
||||
[],
|
||||
'1.0.0'
|
||||
);
|
||||
}
|
||||
}
|
||||
add_action( 'wp_enqueue_scripts', 'enqueue_elementor_addon_styles' );
|
||||
|
||||
|
||||
function enqueue_elementor_addon_scripts() {
|
||||
if ( did_action( 'elementor/loaded' ) ) {
|
||||
wp_enqueue_script(
|
||||
'elementor-addon-main-js',
|
||||
plugins_url( 'assets/js/main.js', __FILE__ ),
|
||||
[ 'jquery' ],
|
||||
'1.0.0',
|
||||
true
|
||||
);
|
||||
}
|
||||
}
|
||||
add_action( 'wp_enqueue_scripts', 'enqueue_elementor_addon_scripts' );
|
||||
|
||||
|
||||
function enqueue_elementor_addon_swiper() {
|
||||
if ( did_action( 'elementor/loaded' ) ) {
|
||||
wp_enqueue_style(
|
||||
'elementor-addon-swiper-css',
|
||||
plugins_url( 'plugins/swiper/swiper-bundle.min.css', __FILE__ ),
|
||||
[],
|
||||
'11.2.3'
|
||||
);
|
||||
wp_enqueue_script(
|
||||
'elementor-addon-swiper-js',
|
||||
plugins_url( 'plugins/swiper/swiper-bundle.min.js', __FILE__ ),
|
||||
[],
|
||||
'11.2.3',
|
||||
true
|
||||
);
|
||||
}
|
||||
}
|
||||
add_action( 'wp_enqueue_scripts', 'enqueue_elementor_addon_swiper' );
|
||||
13
wp-content/plugins/elementor-addon/plugins/swiper/swiper-bundle.min.css
vendored
Normal file
13
wp-content/plugins/elementor-addon/plugins/swiper/swiper-bundle.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
14
wp-content/plugins/elementor-addon/plugins/swiper/swiper-bundle.min.js
vendored
Normal file
14
wp-content/plugins/elementor-addon/plugins/swiper/swiper-bundle.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
220
wp-content/plugins/elementor-addon/widgets/custom-slider.php
Normal file
220
wp-content/plugins/elementor-addon/widgets/custom-slider.php
Normal file
@@ -0,0 +1,220 @@
|
||||
<?php
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
use Elementor\Controls_Manager;
|
||||
use Elementor\Widget_Base;
|
||||
|
||||
class Elementor_Custom_Slider extends Widget_Base {
|
||||
|
||||
public function get_name() {
|
||||
return 'custom-slider';
|
||||
}
|
||||
|
||||
public function get_title() {
|
||||
return esc_html__( 'Custom Slider', 'elementor-addon' );
|
||||
}
|
||||
|
||||
public function get_icon() {
|
||||
return 'eicon-slides';
|
||||
}
|
||||
|
||||
public function get_categories() {
|
||||
return [ 'basic' ];
|
||||
}
|
||||
|
||||
public function get_keywords() {
|
||||
return [ 'slider', 'custom', 'swiper' ];
|
||||
}
|
||||
|
||||
protected function register_controls() {
|
||||
|
||||
// ---- Слайди (галерея) ----
|
||||
$this->start_controls_section(
|
||||
'slides_section',
|
||||
[
|
||||
'label' => esc_html__( 'Slides', 'elementor-addon' ),
|
||||
'tab' => Controls_Manager::TAB_CONTENT,
|
||||
]
|
||||
);
|
||||
|
||||
$this->add_control(
|
||||
'slides',
|
||||
[
|
||||
'label' => esc_html__( 'Images', 'elementor-addon' ),
|
||||
'type' => Controls_Manager::GALLERY,
|
||||
'default' => [],
|
||||
]
|
||||
);
|
||||
|
||||
$this->end_controls_section();
|
||||
|
||||
// ---- Текстовий блок поверх ----
|
||||
$this->start_controls_section(
|
||||
'overlay_section',
|
||||
[
|
||||
'label' => esc_html__( 'Overlay Content', 'elementor-addon' ),
|
||||
'tab' => Controls_Manager::TAB_CONTENT,
|
||||
]
|
||||
);
|
||||
|
||||
$this->add_control(
|
||||
'overlay_title',
|
||||
[
|
||||
'label' => esc_html__( 'Title', 'elementor-addon' ),
|
||||
'type' => Controls_Manager::TEXT,
|
||||
'default' => esc_html__( 'Custom Slider Title', 'elementor-addon' ),
|
||||
'placeholder' => esc_html__( 'Enter title', 'elementor-addon' ),
|
||||
'label_block' => true,
|
||||
]
|
||||
);
|
||||
|
||||
$this->add_control(
|
||||
'overlay_text',
|
||||
[
|
||||
'label' => esc_html__( 'Text', 'elementor-addon' ),
|
||||
'type' => Controls_Manager::TEXTAREA,
|
||||
'default' => esc_html__( 'Your description goes here.', 'elementor-addon' ),
|
||||
'placeholder' => esc_html__( 'Enter description', 'elementor-addon' ),
|
||||
'rows' => 3,
|
||||
]
|
||||
);
|
||||
|
||||
$this->add_control(
|
||||
'overlay_link',
|
||||
[
|
||||
'label' => esc_html__( 'Button Link', 'elementor-addon' ),
|
||||
'type' => Controls_Manager::URL,
|
||||
'placeholder' => 'https://example.com',
|
||||
'default' => [
|
||||
'url' => '',
|
||||
'is_external' => false,
|
||||
'nofollow' => false,
|
||||
],
|
||||
]
|
||||
);
|
||||
|
||||
$this->add_control(
|
||||
'overlay_link_text',
|
||||
[
|
||||
'label' => esc_html__( 'Button Text', 'elementor-addon' ),
|
||||
'type' => Controls_Manager::TEXT,
|
||||
'default' => esc_html__( 'Learn more', 'elementor-addon' ),
|
||||
'placeholder' => esc_html__( 'Enter button text', 'elementor-addon' ),
|
||||
'condition' => [
|
||||
'overlay_link[url]!' => '',
|
||||
],
|
||||
]
|
||||
);
|
||||
|
||||
$this->end_controls_section();
|
||||
|
||||
// ---- Налаштування анімації (необов’язково) ----
|
||||
$this->start_controls_section(
|
||||
'settings_section',
|
||||
[
|
||||
'label' => esc_html__( 'Slider Settings', 'elementor-addon' ),
|
||||
'tab' => Controls_Manager::TAB_CONTENT,
|
||||
]
|
||||
);
|
||||
|
||||
$this->add_control(
|
||||
'autoplay_delay',
|
||||
[
|
||||
'label' => esc_html__( 'Autoplay Delay (ms)', 'elementor-addon' ),
|
||||
'type' => Controls_Manager::NUMBER,
|
||||
'default' => 4000,
|
||||
'min' => 1000,
|
||||
'step' => 500,
|
||||
]
|
||||
);
|
||||
|
||||
$this->add_control(
|
||||
'transition_speed',
|
||||
[
|
||||
'label' => esc_html__( 'Transition Speed (ms)', 'elementor-addon' ),
|
||||
'type' => Controls_Manager::NUMBER,
|
||||
'default' => 1200,
|
||||
'min' => 200,
|
||||
'step' => 100,
|
||||
]
|
||||
);
|
||||
|
||||
$this->end_controls_section();
|
||||
}
|
||||
|
||||
protected function render() {
|
||||
$settings = $this->get_settings_for_display();
|
||||
|
||||
if ( empty( $settings['slides'] ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$slider_id = 'custom-slider-' . $this->get_id();
|
||||
|
||||
$autoplay_delay = ! empty( $settings['autoplay_delay'] ) ? (int) $settings['autoplay_delay'] : 4000;
|
||||
$transition_speed = ! empty( $settings['transition_speed'] ) ? (int) $settings['transition_speed'] : 1200;
|
||||
|
||||
$overlay_title = ! empty( $settings['overlay_title'] ) ? $settings['overlay_title'] : '';
|
||||
$overlay_text = ! empty( $settings['overlay_text'] ) ? $settings['overlay_text'] : '';
|
||||
$overlay_link = ! empty( $settings['overlay_link']['url'] ) ? $settings['overlay_link'] : null;
|
||||
$overlay_link_text = ! empty( $settings['overlay_link_text'] ) ? $settings['overlay_link_text'] : '';
|
||||
|
||||
?>
|
||||
<div id="<?php echo esc_attr( $slider_id ); ?>"
|
||||
class="custom-slider-wrapper"
|
||||
data-autoplay-delay="<?php echo esc_attr( $autoplay_delay ); ?>"
|
||||
data-transition-speed="<?php echo esc_attr( $transition_speed ); ?>">
|
||||
|
||||
<div class="swiper custom-slider-swiper">
|
||||
<div class="swiper-wrapper">
|
||||
<?php foreach ( $settings['slides'] as $item ) :
|
||||
$image_url = ! empty( $item['url'] ) ? $item['url'] : '';
|
||||
if ( ! $image_url ) {
|
||||
continue;
|
||||
}
|
||||
?>
|
||||
<div class="swiper-slide">
|
||||
<div class="custom-slider-slide-inner">
|
||||
<img src="<?php echo esc_url( $image_url ); ?>"
|
||||
alt="<?php echo esc_attr( get_post_meta( $item['id'], '_wp_attachment_image_alt', true ) ); ?>">
|
||||
</div>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
|
||||
<div class="custom-slider-pagination swiper-pagination"></div>
|
||||
</div>
|
||||
|
||||
<?php if ( $overlay_title || $overlay_text ) : ?>
|
||||
<div class="custom-slider-overlay">
|
||||
<div class="custom-slider-overlay-inner">
|
||||
<?php if ( $overlay_title ) : ?>
|
||||
<h2 class="custom-slider-title">
|
||||
<?php echo esc_html( $overlay_title ); ?>
|
||||
</h2>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ( $overlay_text ) : ?>
|
||||
<p class="custom-slider-text">
|
||||
<?php echo wp_kses_post( $overlay_text ); ?>
|
||||
</p>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ( $overlay_link && ! empty( $overlay_link['url'] ) ) :
|
||||
$target = $overlay_link['is_external'] ? ' target="_blank"' : '';
|
||||
$rel = $overlay_link['nofollow'] ? ' rel="nofollow"' : '';
|
||||
?>
|
||||
<a class="custom-slider-button"
|
||||
href="<?php echo esc_url( $overlay_link['url'] ); ?>"<?php echo $target . $rel; ?>>
|
||||
<?php echo $overlay_link_text ? esc_html( $overlay_link_text ) : esc_html__( 'Learn more', 'elementor-addon' ); ?>
|
||||
</a>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user