first commit
This commit is contained in:
+84
@@ -0,0 +1,84 @@
|
||||
<?php
|
||||
/**
|
||||
* The admin-specific functionality of the module.
|
||||
*
|
||||
* @link https://codesupply.co
|
||||
* @since 1.0.0
|
||||
*
|
||||
* @package Powerkit
|
||||
* @subpackage Modules/Admin
|
||||
*/
|
||||
|
||||
/**
|
||||
* The admin-specific functionality of the module.
|
||||
*/
|
||||
class Powerkit_Slider_Gallery_Admin extends Powerkit_Module_Admin {
|
||||
|
||||
/**
|
||||
* Initialize
|
||||
*/
|
||||
public function initialize() {
|
||||
add_action( 'admin_init', array( $this, 'register_settings_section' ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Register admin page
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function register_settings_section() {
|
||||
|
||||
add_settings_section( 'powerkit_slider_gallery_settings', sprintf( '<span id="%s">%s</span>', powerkit_get_page_slug( $this->slug ), esc_html__( 'Slider Gallery', 'powerkit' ) ), array( $this, 'powerkit_slider_gallery_settings_callback' ), 'media' );
|
||||
|
||||
add_settings_field( 'powerkit_slider_gallery_page_dots', esc_html__( 'Display page dots', 'powerkit' ), array( $this, 'powerkit_slider_gallery_page_dots_callback' ), 'media', 'powerkit_slider_gallery_settings' );
|
||||
add_settings_field( 'powerkit_slider_gallery_page_info', esc_html__( 'Display page info', 'powerkit' ), array( $this, 'powerkit_slider_gallery_page_info_callback' ), 'media', 'powerkit_slider_gallery_settings' );
|
||||
add_settings_field( 'powerkit_slider_gallery_nav', esc_html__( 'Display buttons to click to previous & next slide', 'powerkit' ), array( $this, 'powerkit_slider_gallery_nav_callback' ), 'media', 'powerkit_slider_gallery_settings' );
|
||||
|
||||
register_setting( 'media', 'powerkit_slider_gallery_page_dots' );
|
||||
register_setting( 'media', 'powerkit_slider_gallery_page_info' );
|
||||
register_setting( 'media', 'powerkit_slider_gallery_nav' );
|
||||
}
|
||||
|
||||
/**
|
||||
* Section Description.
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function powerkit_slider_gallery_settings_callback() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Field | Display page dots.
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function powerkit_slider_gallery_page_dots_callback() {
|
||||
?>
|
||||
<input class="regular-text" id="powerkit_slider_gallery_page_dots" name="powerkit_slider_gallery_page_dots" type="checkbox" value="true" <?php checked( (bool) get_option( 'powerkit_slider_gallery_page_dots', true ) ); ?>>
|
||||
<?php
|
||||
}
|
||||
|
||||
/**
|
||||
* Field | Display page info.
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function powerkit_slider_gallery_page_info_callback() {
|
||||
?>
|
||||
<input class="regular-text" id="powerkit_slider_gallery_page_info" name="powerkit_slider_gallery_page_info" type="checkbox" value="true" <?php checked( (bool) get_option( 'powerkit_slider_gallery_page_info', true ) ); ?>>
|
||||
<?php
|
||||
}
|
||||
|
||||
/**
|
||||
* Field | Display buttons to click to previous & next slide.
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function powerkit_slider_gallery_nav_callback() {
|
||||
?>
|
||||
<input class="regular-text" id="powerkit_slider_gallery_nav" name="powerkit_slider_gallery_nav" type="checkbox" value="true" <?php checked( (bool) get_option( 'powerkit_slider_gallery_nav', true ) ); ?>>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
<?php
|
||||
/**
|
||||
* Slider Gallery
|
||||
*
|
||||
* @package Powerkit
|
||||
* @subpackage Modules
|
||||
*/
|
||||
|
||||
if ( class_exists( 'Powerkit_Module' ) ) {
|
||||
/**
|
||||
* Init module
|
||||
*/
|
||||
class Powerkit_Slider_Gallery extends Powerkit_Module {
|
||||
|
||||
/**
|
||||
* Register module
|
||||
*/
|
||||
public function register() {
|
||||
$this->name = esc_html__( 'Slider Gallery', 'powerkit' );
|
||||
$this->desc = esc_html__( 'Create beautiful slider galleries with the Slider Gallery module. Show or hide slider bullets, current and total slide numbers, next and previous buttons per gallery or globally.', 'powerkit' );
|
||||
$this->slug = 'slider_gallery';
|
||||
$this->type = 'default';
|
||||
$this->category = 'basic';
|
||||
$this->priority = 100;
|
||||
$this->public = true;
|
||||
$this->enabled = true;
|
||||
$this->links = array(
|
||||
array(
|
||||
'name' => esc_html__( 'Go to settings', 'powerkit' ),
|
||||
'url' => admin_url( sprintf( 'options-media.php#%s', powerkit_get_page_slug( $this->slug ) ) ),
|
||||
),
|
||||
array(
|
||||
'name' => esc_html__( 'View documentation', 'powerkit' ),
|
||||
'url' => powerkit_get_setting( 'documentation' ) . '/content-presentation/slider-gallery/',
|
||||
'target' => '_blank',
|
||||
),
|
||||
);
|
||||
$this->load_extensions = array(
|
||||
'gallery',
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize module
|
||||
*/
|
||||
public function initialize() {
|
||||
|
||||
/* Load the required dependencies for this module */
|
||||
|
||||
// Admin and public area.
|
||||
require_once dirname( __FILE__ ) . '/admin/class-powerkit-slider-gallery-admin.php';
|
||||
require_once dirname( __FILE__ ) . '/public/class-powerkit-slider-gallery-public.php';
|
||||
|
||||
new Powerkit_Slider_Gallery_Admin( $this->slug );
|
||||
new Powerkit_Slider_Gallery_Public( $this->slug );
|
||||
}
|
||||
}
|
||||
|
||||
new Powerkit_Slider_Gallery();
|
||||
}
|
||||
+82
@@ -0,0 +1,82 @@
|
||||
<?php
|
||||
/**
|
||||
* The public-facing functionality of the module.
|
||||
*
|
||||
* @link https://codesupply.co
|
||||
* @since 1.0.0
|
||||
*
|
||||
* @package Powerkit
|
||||
* @subpackage Modules/public
|
||||
*/
|
||||
|
||||
/**
|
||||
* The public-facing functionality of the module.
|
||||
*/
|
||||
class Powerkit_Slider_Gallery_Public extends Powerkit_Module_Public {
|
||||
|
||||
/**
|
||||
* Initialize
|
||||
*/
|
||||
public function initialize() {
|
||||
add_filter( 'powerkit_gallery_types', array( $this, 'gallery_types' ) );
|
||||
add_filter( 'powerkit_gallery_settings', array( $this, 'gallery_settings' ), 10, 2 );
|
||||
}
|
||||
|
||||
/**
|
||||
* Add new gallery types
|
||||
*
|
||||
* @param array $types Gallery types.
|
||||
*/
|
||||
public function gallery_types( $types ) {
|
||||
|
||||
$types = array_merge( $types, array(
|
||||
'slider' => esc_html__( 'Slider', 'powerkit' ),
|
||||
) );
|
||||
|
||||
return $types;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set gallery settings
|
||||
*
|
||||
* @param array $settings Gallery settings.
|
||||
* @param array $attr Gallery attr.
|
||||
*/
|
||||
public function gallery_settings( $settings, $attr ) {
|
||||
|
||||
if ( isset( $attr['type'] ) && 'slider' === $attr['type'] ) {
|
||||
$data = array(
|
||||
'pk-sg-page-dots' => (bool) get_option( 'powerkit_slider_gallery_page_dots', true ) ? 'true' : 'false',
|
||||
'pk-sg-page-info' => (bool) get_option( 'powerkit_slider_gallery_page_info', true ) ? 'true' : 'false',
|
||||
'pk-sg-nav' => (bool) get_option( 'powerkit_slider_gallery_nav', true ) ? 'true' : 'false',
|
||||
);
|
||||
|
||||
$data = array_merge( (array) $data, (array) $attr );
|
||||
|
||||
$settings['custom_attrs'] .= sprintf( ' pk-flickity="init" data-sg-page-dots="%s" data-sg-page-info="%s" data-sg-nav="%s"', $data['pk-sg-page-dots'], $data['pk-sg-page-info'], $data['pk-sg-nav'] );
|
||||
}
|
||||
|
||||
return $settings;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Register the stylesheets for the public-facing side of the site.
|
||||
*/
|
||||
public function wp_enqueue_scripts() {
|
||||
// Styles.
|
||||
wp_enqueue_style( 'powerkit-slider-gallery', powerkit_style( plugin_dir_url( __FILE__ ) . 'css/public-powerkit-slider-gallery.css' ), array(), powerkit_get_setting( 'version' ), 'all' );
|
||||
|
||||
// Add RTL support.
|
||||
wp_style_add_data( 'powerkit-slider-gallery', 'rtl', 'replace' );
|
||||
|
||||
// Scripts.
|
||||
wp_enqueue_script( 'flickity', plugin_dir_url( __FILE__ ) . 'js/flickity.pkgd.min.js', array( 'jquery', 'imagesloaded' ), powerkit_get_setting( 'version' ), true );
|
||||
|
||||
wp_enqueue_script( 'powerkit-slider-gallery', plugin_dir_url( __FILE__ ) . 'js/public-powerkit-slider-gallery.js', array( 'jquery', 'imagesloaded' ), powerkit_get_setting( 'version' ), true );
|
||||
|
||||
wp_localize_script( 'powerkit-slider-gallery', 'powerkit_sg_flickity', array(
|
||||
'page_info_sep' => esc_html__( ' of ', 'powerkit' ),
|
||||
) );
|
||||
}
|
||||
}
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
/**
|
||||
* All of the CSS for your public-facing functionality should be
|
||||
* included in this file.
|
||||
*/
|
||||
/**
|
||||
* Environment for all styles (variables, additions, etc).
|
||||
*/
|
||||
/*--------------------------------------------------------------*/
|
||||
/*--------------------------------------------------------------*/
|
||||
.gallery-type-slider.gallery {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.gallery-type-slider .gallery-item {
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.gallery-type-slider .wp-caption-text {
|
||||
margin-top: 1rem;
|
||||
}
|
||||
|
||||
.gallery-type-slider figure {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.gallery-type-slider img {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.gallery-type-slider > .gallery-item:not(:first-child) {
|
||||
position: fixed;
|
||||
top: -9999px;
|
||||
right: -9999px;
|
||||
}
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
/**
|
||||
* All of the CSS for your public-facing functionality should be
|
||||
* included in this file.
|
||||
*/
|
||||
/**
|
||||
* Environment for all styles (variables, additions, etc).
|
||||
*/
|
||||
/*--------------------------------------------------------------*/
|
||||
/*--------------------------------------------------------------*/
|
||||
.gallery-type-slider.gallery {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.gallery-type-slider .gallery-item {
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.gallery-type-slider .wp-caption-text {
|
||||
margin-top: 1rem;
|
||||
}
|
||||
|
||||
.gallery-type-slider figure {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.gallery-type-slider img {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.gallery-type-slider > .gallery-item:not(:first-child) {
|
||||
position: fixed;
|
||||
top: -9999px;
|
||||
left: -9999px;
|
||||
}
|
||||
+1
File diff suppressed because one or more lines are too long
+83
@@ -0,0 +1,83 @@
|
||||
/**
|
||||
* Slider Gallery
|
||||
*/
|
||||
( function( $ ) {
|
||||
|
||||
function powerkitInitSliderGallery() {
|
||||
|
||||
/**
|
||||
* Get Page Info
|
||||
*/
|
||||
function powerkitSliderPageInfo( cellNumber, cellsLength ) {
|
||||
var sep = powerkit_sg_flickity.page_info_sep;
|
||||
|
||||
return '<span class="current">' + ( cellNumber + 1 ) + '</span><span class="sep">' + sep + '</span><span class="cells">' + cellsLength + '</span>';
|
||||
}
|
||||
|
||||
/**
|
||||
* Slider Init
|
||||
*/
|
||||
$( '.gallery-type-slider:not(.gallery-type-slider-ready)' ).imagesLoaded( function( instance ) {
|
||||
|
||||
$( instance.elements ).each( function( index, el ) {
|
||||
var $el = $( el );
|
||||
|
||||
$el.filter(':not(.gallery-type-slider-ready)')
|
||||
.addClass( 'gallery-type-slider-ready' )
|
||||
.flickity( {
|
||||
pageDots: $el.data( 'sg-page-dots' ),
|
||||
prevNextButtons: $el.data( 'sg-nav' ),
|
||||
adaptiveHeight: true,
|
||||
cellAlign: 'left',
|
||||
contain: true,
|
||||
on: {
|
||||
ready: function() {
|
||||
var data = Flickity.data( el );
|
||||
|
||||
$el.addClass( 'is-animate slider-loaded' );
|
||||
|
||||
if ( $el.data( 'sg-page-info' ) ) {
|
||||
|
||||
if ( $el.data( 'sg-page-dots' ) ) {
|
||||
$el.find( '.flickity-page-dots' ).wrap( '<div class="flickity-pages"></div>' );
|
||||
} else {
|
||||
$el.append( '<div class="flickity-pages"></div>' );
|
||||
}
|
||||
|
||||
var cellNumber = data.selectedIndex;
|
||||
|
||||
$el.find( '.flickity-pages' ).append( '<div class="flickity-page-info">' + powerkitSliderPageInfo( cellNumber, data.cells.length ) + '</div>' );
|
||||
}
|
||||
|
||||
$( document.body ).trigger( 'image-load' );
|
||||
},
|
||||
change: function( cellNumber ) {
|
||||
var data = Flickity.data( el );
|
||||
|
||||
if ( $el.data( 'sg-page-info' ) ) {
|
||||
|
||||
$el.find( '.flickity-page-info' ).html( powerkitSliderPageInfo( cellNumber, data.cells.length ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
} );
|
||||
} );
|
||||
} );
|
||||
}
|
||||
|
||||
$( document ).ready( function() {
|
||||
powerkitInitSliderGallery();
|
||||
$( document.body ).on( 'post-load', function() {
|
||||
powerkitInitSliderGallery();
|
||||
} );
|
||||
|
||||
if ( 'undefined' !== typeof wp && 'undefined' !== typeof wp.hooks ) {
|
||||
wp.hooks.addAction( 'canvas.components.serverSideRender.onChange', 'canvas/slider-gallery.init', function( props ) {
|
||||
if ( 'canvas/slider-gallery' === props.block ) {
|
||||
powerkitInitSliderGallery();
|
||||
}
|
||||
} );
|
||||
}
|
||||
} );
|
||||
|
||||
} )( jQuery );
|
||||
Reference in New Issue
Block a user