Skip to content
20 changes: 10 additions & 10 deletions examples/patterns/hero-carousel.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,18 @@
exit;
}

$pattern_images_url = trailingslashit( RT_CAROUSEL_URL . '/examples/data/images' );
$hero_slide_one = $pattern_images_url . 'slide-autoplay-1.webp';
$hero_slide_two = $pattern_images_url . 'slide-autoplay-2.webp';
$hero_slide_three = $pattern_images_url . 'slide-autoplay-3.webp';
$rt_carousel_images_url = trailingslashit( RT_CAROUSEL_URL . '/examples/data/images' );
$rt_carousel_slide_one = $rt_carousel_images_url . 'slide-autoplay-1.webp';
$rt_carousel_slide_two = $rt_carousel_images_url . 'slide-autoplay-2.webp';
$rt_carousel_slide_three = $rt_carousel_images_url . 'slide-autoplay-3.webp';
?>

<!-- wp:rt-carousel/carousel {"loop":true,"autoplay":true,"autoplayDelay":5000,"ariaLabel":"Hero Carousel","metadata":{"categories":["rt-carousel"],"patternName":"rt-carousel/hero-carousel","name":"rtCarousel: Hero Carousel"},"align":"wide","className":"wp-block-carousel-carousel"} -->
<div class="wp-block-rt-carousel-carousel alignwide rt-carousel wp-block-carousel-carousel" role="region" aria-roledescription="carousel" aria-label="Hero Carousel" dir="ltr" data-axis="x" data-loop="true" data-wp-interactive="rt-carousel/carousel" data-wp-context="{&quot;options&quot;:{&quot;loop&quot;:true,&quot;dragFree&quot;:false,&quot;align&quot;:&quot;start&quot;,&quot;containScroll&quot;:&quot;trimSnaps&quot;,&quot;direction&quot;:&quot;ltr&quot;,&quot;axis&quot;:&quot;x&quot;,&quot;slidesToScroll&quot;:1},&quot;autoplay&quot;:{&quot;delay&quot;:5000,&quot;stopOnInteraction&quot;:true,&quot;stopOnMouseEnter&quot;:false},&quot;isPlaying&quot;:true,&quot;timerIterationId&quot;:0,&quot;selectedIndex&quot;:-1,&quot;scrollSnaps&quot;:[],&quot;canScrollPrev&quot;:false,&quot;canScrollNext&quot;:false,&quot;scrollProgress&quot;:0,&quot;slideCount&quot;:0,&quot;ariaLabelPattern&quot;:&quot;Go to slide %d&quot;}" data-wp-init="callbacks.initCarousel" style="--rt-carousel-gap:0px"><!-- wp:rt-carousel/carousel-viewport {"className":"wp-block-carousel-carousel-viewport"} -->
<div class="wp-block-rt-carousel-carousel-viewport embla wp-block-carousel-carousel-viewport">
<div class="embla__container"><!-- wp:rt-carousel/carousel-slide {"className":"wp-block-carousel-carousel-slide"} -->
<div class="wp-block-rt-carousel-carousel-slide embla__slide wp-block-carousel-carousel-slide" role="group" aria-roledescription="slide" data-wp-interactive="rt-carousel/carousel" data-wp-class--is-active="callbacks.isSlideActive" data-wp-bind--aria-current="callbacks.isSlideActive"><!-- wp:cover {"url":"<?php echo esc_url( $hero_slide_one ); ?>","dimRatio":30,"minHeight":600,"minHeightUnit":"px"} -->
<div class="wp-block-cover" style="min-height:600px"><img class="wp-block-cover__image-background" alt="" src="<?php echo esc_url( $hero_slide_one ); ?>" data-object-fit="cover" /><span aria-hidden="true" class="wp-block-cover__background has-background-dim-30 has-background-dim"></span>
<div class="wp-block-rt-carousel-carousel-slide embla__slide wp-block-carousel-carousel-slide" role="group" aria-roledescription="slide" data-wp-interactive="rt-carousel/carousel" data-wp-class--is-active="callbacks.isSlideActive" data-wp-bind--aria-current="callbacks.isSlideActive"><!-- wp:cover {"url":"<?php echo esc_url( $rt_carousel_slide_one ); ?>","dimRatio":30,"minHeight":600,"minHeightUnit":"px"} -->
<div class="wp-block-cover" style="min-height:600px"><img class="wp-block-cover__image-background" alt="" src="<?php echo esc_url( $rt_carousel_slide_one ); ?>" data-object-fit="cover" /><span aria-hidden="true" class="wp-block-cover__background has-background-dim-30 has-background-dim"></span>
<div class="wp-block-cover__inner-container"><!-- wp:heading {"textAlign":"center","level":1,"textColor":"white"} -->
<h1 class="wp-block-heading has-text-align-center has-white-color has-text-color">Welcome to Our Site</h1>
<!-- /wp:heading -->
Expand All @@ -44,8 +44,8 @@
<!-- /wp:rt-carousel/carousel-slide -->

<!-- wp:rt-carousel/carousel-slide {"className":"wp-block-carousel-carousel-slide"} -->
<div class="wp-block-rt-carousel-carousel-slide embla__slide wp-block-carousel-carousel-slide" role="group" aria-roledescription="slide" data-wp-interactive="rt-carousel/carousel" data-wp-class--is-active="callbacks.isSlideActive" data-wp-bind--aria-current="callbacks.isSlideActive"><!-- wp:cover {"url":"<?php echo esc_url( $hero_slide_two ); ?>","dimRatio":30,"minHeight":600,"minHeightUnit":"px"} -->
<div class="wp-block-cover" style="min-height:600px"><img class="wp-block-cover__image-background" alt="" src="<?php echo esc_url( $hero_slide_two ); ?>" data-object-fit="cover" /><span aria-hidden="true" class="wp-block-cover__background has-background-dim-30 has-background-dim"></span>
<div class="wp-block-rt-carousel-carousel-slide embla__slide wp-block-carousel-carousel-slide" role="group" aria-roledescription="slide" data-wp-interactive="rt-carousel/carousel" data-wp-class--is-active="callbacks.isSlideActive" data-wp-bind--aria-current="callbacks.isSlideActive"><!-- wp:cover {"url":"<?php echo esc_url( $rt_carousel_slide_two ); ?>","dimRatio":30,"minHeight":600,"minHeightUnit":"px"} -->
<div class="wp-block-cover" style="min-height:600px"><img class="wp-block-cover__image-background" alt="" src="<?php echo esc_url( $rt_carousel_slide_two ); ?>" data-object-fit="cover" /><span aria-hidden="true" class="wp-block-cover__background has-background-dim-30 has-background-dim"></span>
<div class="wp-block-cover__inner-container"><!-- wp:heading {"textAlign":"center","level":1,"textColor":"white"} -->
<h1 class="wp-block-heading has-text-align-center has-white-color has-text-color">Build Something Amazing</h1>
<!-- /wp:heading -->
Expand All @@ -60,8 +60,8 @@
<!-- /wp:rt-carousel/carousel-slide -->

<!-- wp:rt-carousel/carousel-slide {"className":"wp-block-carousel-carousel-slide"} -->
<div class="wp-block-rt-carousel-carousel-slide embla__slide wp-block-carousel-carousel-slide" role="group" aria-roledescription="slide" data-wp-interactive="rt-carousel/carousel" data-wp-class--is-active="callbacks.isSlideActive" data-wp-bind--aria-current="callbacks.isSlideActive"><!-- wp:cover {"url":"<?php echo esc_url( $hero_slide_three ); ?>","dimRatio":30,"minHeight":600,"minHeightUnit":"px"} -->
<div class="wp-block-cover" style="min-height:600px"><img class="wp-block-cover__image-background" alt="" src="<?php echo esc_url( $hero_slide_three ); ?>" data-object-fit="cover" /><span aria-hidden="true" class="wp-block-cover__background has-background-dim-30 has-background-dim"></span>
<div class="wp-block-rt-carousel-carousel-slide embla__slide wp-block-carousel-carousel-slide" role="group" aria-roledescription="slide" data-wp-interactive="rt-carousel/carousel" data-wp-class--is-active="callbacks.isSlideActive" data-wp-bind--aria-current="callbacks.isSlideActive"><!-- wp:cover {"url":"<?php echo esc_url( $rt_carousel_slide_three ); ?>","dimRatio":30,"minHeight":600,"minHeightUnit":"px"} -->
<div class="wp-block-cover" style="min-height:600px"><img class="wp-block-cover__image-background" alt="" src="<?php echo esc_url( $rt_carousel_slide_three ); ?>" data-object-fit="cover" /><span aria-hidden="true" class="wp-block-cover__background has-background-dim-30 has-background-dim"></span>
<div class="wp-block-cover__inner-container"><!-- wp:heading {"textAlign":"center","level":1,"textColor":"white"} -->
<h1 class="wp-block-heading has-text-align-center has-white-color has-text-color">Join Our Community</h1>
<!-- /wp:heading -->
Expand Down
22 changes: 11 additions & 11 deletions examples/patterns/logo-showcase.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@
exit;
}

$pattern_images_url = trailingslashit( RT_CAROUSEL_URL . '/examples/data/images' );
$logo_one = $pattern_images_url . 'logo-placeholder-1.svg';
$logo_two = $pattern_images_url . 'logo-placeholder-2.svg';
$logo_three = $pattern_images_url . 'logo-placeholder-3.svg';
$logo_four = $pattern_images_url . 'logo-placeholder-4.svg';
$logo_five = $pattern_images_url . 'logo-placeholder-5.svg';
$rt_carousel_images_url = trailingslashit( RT_CAROUSEL_URL . '/examples/data/images' );
$rt_carousel_logo_one = $rt_carousel_images_url . 'logo-placeholder-1.svg';
$rt_carousel_logo_two = $rt_carousel_images_url . 'logo-placeholder-2.svg';
$rt_carousel_logo_three = $rt_carousel_images_url . 'logo-placeholder-3.svg';
$rt_carousel_logo_four = $rt_carousel_images_url . 'logo-placeholder-4.svg';
$rt_carousel_logo_five = $rt_carousel_images_url . 'logo-placeholder-5.svg';
?>

<!-- wp:rt-carousel/carousel {"loop":true,"autoplayDelay":3000,"autoplayStopOnInteraction":false,"ariaLabel":"Partner Logos","metadata":{"categories":["rt-carousel"],"patternName":"rt-carousel/logo-showcase","name":"rtCarousel: Logo Showcase"},"className":"wp-block-carousel-carousel is-style-columns-3"} -->
Expand All @@ -28,35 +28,35 @@
<div class="wp-block-rt-carousel-carousel-viewport embla wp-block-carousel-carousel-viewport">
<div class="embla__container"><!-- wp:rt-carousel/carousel-slide {"className":"wp-block-carousel-carousel-slide"} -->
<div class="wp-block-rt-carousel-carousel-slide embla__slide wp-block-carousel-carousel-slide" role="group" aria-roledescription="slide" data-wp-interactive="rt-carousel/carousel" data-wp-class--is-active="callbacks.isSlideActive" data-wp-bind--aria-current="callbacks.isSlideActive"><!-- wp:image {"width":"200px","sizeSlug":"full","linkDestination":"none","align":"center","className":"is-style-rounded"} -->
<figure class="wp-block-image aligncenter size-full is-resized is-style-rounded"><img src="<?php echo esc_url( $logo_one ); ?>" alt="Partner Logo 1" style="width:200px" /></figure>
<figure class="wp-block-image aligncenter size-full is-resized is-style-rounded"><img src="<?php echo esc_url( $rt_carousel_logo_one ); ?>" alt="Partner Logo 1" style="width:200px" /></figure>
<!-- /wp:image -->
</div>
<!-- /wp:rt-carousel/carousel-slide -->

<!-- wp:rt-carousel/carousel-slide {"className":"wp-block-carousel-carousel-slide"} -->
<div class="wp-block-rt-carousel-carousel-slide embla__slide wp-block-carousel-carousel-slide" role="group" aria-roledescription="slide" data-wp-interactive="rt-carousel/carousel" data-wp-class--is-active="callbacks.isSlideActive" data-wp-bind--aria-current="callbacks.isSlideActive"><!-- wp:image {"width":"200px","sizeSlug":"full","linkDestination":"none","align":"center","className":"is-style-rounded"} -->
<figure class="wp-block-image aligncenter size-full is-resized is-style-rounded"><img src="<?php echo esc_url( $logo_two ); ?>" alt="Partner Logo 2" style="width:200px" /></figure>
<figure class="wp-block-image aligncenter size-full is-resized is-style-rounded"><img src="<?php echo esc_url( $rt_carousel_logo_two ); ?>" alt="Partner Logo 2" style="width:200px" /></figure>
<!-- /wp:image -->
</div>
<!-- /wp:rt-carousel/carousel-slide -->

<!-- wp:rt-carousel/carousel-slide {"className":"wp-block-carousel-carousel-slide"} -->
<div class="wp-block-rt-carousel-carousel-slide embla__slide wp-block-carousel-carousel-slide" role="group" aria-roledescription="slide" data-wp-interactive="rt-carousel/carousel" data-wp-class--is-active="callbacks.isSlideActive" data-wp-bind--aria-current="callbacks.isSlideActive"><!-- wp:image {"width":"200px","sizeSlug":"full","linkDestination":"none","align":"center","className":"is-style-rounded"} -->
<figure class="wp-block-image aligncenter size-full is-resized is-style-rounded"><img src="<?php echo esc_url( $logo_three ); ?>" alt="Partner Logo 3" style="width:200px" /></figure>
<figure class="wp-block-image aligncenter size-full is-resized is-style-rounded"><img src="<?php echo esc_url( $rt_carousel_logo_three ); ?>" alt="Partner Logo 3" style="width:200px" /></figure>
<!-- /wp:image -->
</div>
<!-- /wp:rt-carousel/carousel-slide -->

<!-- wp:rt-carousel/carousel-slide {"className":"wp-block-carousel-carousel-slide"} -->
<div class="wp-block-rt-carousel-carousel-slide embla__slide wp-block-carousel-carousel-slide" role="group" aria-roledescription="slide" data-wp-interactive="rt-carousel/carousel" data-wp-class--is-active="callbacks.isSlideActive" data-wp-bind--aria-current="callbacks.isSlideActive"><!-- wp:image {"width":"200px","sizeSlug":"full","linkDestination":"none","align":"center","className":"is-style-rounded"} -->
<figure class="wp-block-image aligncenter size-full is-resized is-style-rounded"><img src="<?php echo esc_url( $logo_four ); ?>" alt="Partner Logo 4" style="width:200px" /></figure>
<figure class="wp-block-image aligncenter size-full is-resized is-style-rounded"><img src="<?php echo esc_url( $rt_carousel_logo_four ); ?>" alt="Partner Logo 4" style="width:200px" /></figure>
<!-- /wp:image -->
</div>
<!-- /wp:rt-carousel/carousel-slide -->

<!-- wp:rt-carousel/carousel-slide {"className":"wp-block-carousel-carousel-slide"} -->
<div class="wp-block-rt-carousel-carousel-slide embla__slide wp-block-carousel-carousel-slide" role="group" aria-roledescription="slide" data-wp-interactive="rt-carousel/carousel" data-wp-class--is-active="callbacks.isSlideActive" data-wp-bind--aria-current="callbacks.isSlideActive"><!-- wp:image {"width":"200px","sizeSlug":"full","linkDestination":"none","align":"center","className":"is-style-rounded"} -->
<figure class="wp-block-image aligncenter size-full is-resized is-style-rounded"><img src="<?php echo esc_url( $logo_five ); ?>" alt="Partner Logo 5" style="width:200px" /></figure>
<figure class="wp-block-image aligncenter size-full is-resized is-style-rounded"><img src="<?php echo esc_url( $rt_carousel_logo_five ); ?>" alt="Partner Logo 5" style="width:200px" /></figure>
<!-- /wp:image -->
</div>
<!-- /wp:rt-carousel/carousel-slide -->
Expand Down
55 changes: 38 additions & 17 deletions inc/Plugin.php
Original file line number Diff line number Diff line change
Expand Up @@ -39,22 +39,23 @@ protected function setup_hooks(): void {
add_filter( 'block_categories_all', [ $this, 'register_block_category' ] );
add_action( 'init', [ $this, 'register_pattern_category' ] );
add_action( 'init', [ $this, 'register_block_patterns' ] );
add_action( 'admin_init', [ $this, 'deactivate_legacy_plugin' ] );
add_action( 'admin_notices', [ $this, 'legacy_plugin_notice' ] );
add_action( 'network_admin_notices', [ $this, 'legacy_plugin_notice' ] );
}
Comment thread
theMasudRana marked this conversation as resolved.

/**
* Deactivate the legacy "Carousel Kit" plugin if still active.
* Show an admin notice if the legacy "Carousel Kit" plugin is still active.
*
* Handles both single-site and network-wide activations.
*/
public function deactivate_legacy_plugin(): void {
$old_plugin = 'carousel-kit/carousel-kit.php';
public function legacy_plugin_notice(): void {
$old_plugin = 'carousel-kit/carousel-kit.php';
$network_wide = is_multisite() && is_plugin_active_for_network( $old_plugin );

Comment thread
theMasudRana marked this conversation as resolved.
if ( ! is_plugin_active( $old_plugin ) ) {
return;
}

$network_wide = is_multisite() && is_plugin_active_for_network( $old_plugin );
if ( $network_wide && ! current_user_can( 'manage_network_plugins' ) ) {
return;
}
Expand All @@ -63,21 +64,41 @@ public function deactivate_legacy_plugin(): void {
return;
}

// Silent flag prevents deactivation hooks from firing redirect.
deactivate_plugins( $old_plugin, true, $network_wide );

if ( is_plugin_active( $old_plugin ) ) {
// Only show the notice in the matching admin context.
if ( is_network_admin() !== $network_wide ) {
return;
}

add_action(
'admin_notices',
static function (): void {
printf(
'<div class="notice notice-info is-dismissible"><p>%s</p></div>',
esc_html__( 'The old "Carousel Kit" plugin has been deactivated. rtCarousel is its replacement.', 'rt-carousel' )
);
}
if ( $network_wide ) {
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

additionally use is_network_admin() to check if users is no network admin site

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Implemented in this commit. 1f0c258

image

$deactivate_url = wp_nonce_url(
add_query_arg(
[
'action' => 'deactivate',
'plugin' => $old_plugin,
'networkwide' => '1',
],
network_admin_url( 'plugins.php' )
),
'deactivate-plugin_' . $old_plugin
);
} else {
$deactivate_url = wp_nonce_url(
add_query_arg(
[
'action' => 'deactivate',
'plugin' => $old_plugin,
],
admin_url( 'plugins.php' )
),
'deactivate-plugin_' . $old_plugin
);
}

printf(
'<div class="notice notice-warning is-dismissible"><p>%s <a href="%s">%s</a></p></div>',
esc_html__( 'The "Carousel Kit" plugin is still active. rtCarousel is its replacement — please deactivate Carousel Kit.', 'rt-carousel' ),
esc_url( $deactivate_url ),
esc_html__( 'Deactivate Carousel Kit', 'rt-carousel' )
);
}

Expand Down
4 changes: 2 additions & 2 deletions readme.txt
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ Yes. Each carousel instance maintains its own independent state.

= I am using "Carousel Kit". How do I upgrade to rtCarousel? =

rtCarousel is the successor to Carousel Kit. Simply install and activate rtCarousel — it will automatically migrate all existing carousel blocks in your content and deactivate the old plugin. No manual steps are needed. You can safely delete the old Carousel Kit plugin afterward.
rtCarousel is the successor to Carousel Kit. Simply install and activate rtCarousel — it will automatically migrate all existing carousel blocks in your content. You will see an admin notice prompting you to deactivate the old Carousel Kit plugin. After deactivating it, you can safely delete it.

Comment thread
theMasudRana marked this conversation as resolved.
== Screenshots ==

Expand Down Expand Up @@ -129,4 +129,4 @@ rtCarousel is the successor to Carousel Kit. Simply install and activate rtCarou
== Upgrade Notice ==

= 2.0.0 =
Plugin renamed from "Carousel Kit" to "rtCarousel". Existing carousel blocks are automatically migrated on activation. The old Carousel Kit plugin is deactivated automatically and can be safely deleted.
Plugin renamed from "Carousel Kit" to "rtCarousel". Existing carousel blocks are automatically migrated on activation. You will see an admin notice prompting you to deactivate the old Carousel Kit plugin, which can then be safely deleted.
Loading
Loading