PluginProbe
GutSlider – All in One Slider and Carousel Blocks for Gutenberg / 2.9.7
GutSlider – All in One Slider and Carousel Blocks for Gutenberg v2.9.7
3.1.0 3.0.0 2.13.2 2.13.1 2.13.0 trunk 1.0.0 2.1.0 2.10.0 2.10.1 2.11.0 2.11.1 2.11.2 2.11.3 2.11.4 2.12.0 2.2.1 2.2.2 2.3.0 2.4.0 2.5.1 2.5.3 2.5.4 2.5.5 2.6.1 All 56 releases
← All changes | admin/admin.php +126 -109 2.4.02.9.7 View file →
@@ -1,79 +1,56 @@
1 1 <?php
2 2 /**
3 3 * Plugin Admin Page
4 - *
4 + * @package GutSliderBlocks
5 5 */
6 6
7 - if( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
7 +if (!defined('ABSPATH')) exit;
8 8
9 - if( ! class_exists( 'GutSlider_Admin' ) ) {
10 -
9 +if (!class_exists('GutSlider_Admin')) {
11 10 class GutSlider_Admin {
11 + /**
12 + * Slider block settings
13 + */
14 + private const BLOCK_SETTINGS = [
15 + 'gut_fixed_content_slider',
16 + 'gut_any_content_slider',
17 + 'gut_testimonial_slider',
18 + 'gut_post_slider',
19 + 'gut_photo_carousel',
20 + 'gut_logo_carousel',
21 + 'gut_before_after_slider',
22 + 'gut_videos_carousel'
23 + ];
12 24
13 25 /**
14 26 * Constructor
15 - * return void
16 27 */
17 28 public function __construct() {
18 - // include admin notice
19 - $this->include_admin_notice();
20 -
21 - add_action( 'admin_menu', [ $this, 'admin_menu' ] );
22 - add_action( 'admin_enqueue_scripts', [ $this, 'admin_assests' ] );
23 -
24 - // register settings
25 - add_action('admin_init', [ $this, 'custom_register_settings' ]);
26 - add_action( 'rest_api_init', [ $this, 'custom_register_settings' ] );
27 -
28 - // include admin data SDk
29 - add_action( 'plugins_loaded', [ $this, 'dci_plugin_gutslider' ] );
29 + add_action('admin_menu', [$this, 'admin_menu'], 20);
30 + add_action('admin_enqueue_scripts', [$this, 'admin_assets']);
31 + add_action('admin_init', [$this, 'initialize_admin']);
32 + add_action('rest_api_init', [$this, 'register_settings']);
30 33 }
31 34
32 35 /**
33 - * Include admin notice
36 + * Initialize admin functionality
34 37 */
35 - public function include_admin_notice() {
36 - require_once trailingslashit( GUTSLIDER_DIR ) . '/admin/notice/notice.php';
38 + public function initialize_admin() {
39 + $this->register_settings();
40 + $this->include_data_sdk();
37 41 }
38 -
39 - /**
40 - * Include data SDK
41 - */
42 - public function dci_plugin_gutslider() {
43 - // Include DCI SDK.
44 - require_once dirname( __FILE__ ) . '/dci/start.php';
45 - dci_dynamic_init( array(
46 - 'sdk_version' => '1.0.0',
47 - 'plugin_title' => 'GutSlider',
48 - 'product_id' => 3,
49 - 'api_endpoint' => 'https://dashboard.gutenbergkits.com/wp-json/dci/v1/data-insights',
50 - 'slug' => 'slider-blocks',
51 - 'public_key' => 'pk_KxU4qcYXPyqvBDwsyyBkbCfY9Gulc1z5',
52 - 'is_premium' => false,
53 - 'menu' => array(
54 - 'slug' => 'gutslider-blocks',
55 - ),
56 - ) );
57 - }
58 42
59 43 /**
60 - * Enqueue admin scripts
44 + * Enqueue admin scripts and styles
45 + * @param string $screen Current admin screen
61 46 */
62 - public function admin_assests( $screen ) {
47 + public function admin_assets($screen) {
48 + if ($screen !== 'toplevel_page_gutslider-blocks') {
49 + return;
50 + }
63 51
64 - if( $screen === 'toplevel_page_gutslider-blocks' ){
65 -
66 - $dependencyFile = trailingslashit( GUTSLIDER_DIR ) . '/build/admin/admin.asset.php';
67 - $dependencies = file_exists( $dependencyFile ) ? require_once $dependencyFile : [];
68 -
69 - wp_enqueue_style( 'gutslider-admin-style', trailingslashit( GUTSLIDER_URL ) . 'build/admin/style-admin.css', [], GUTSLIDER_VERSION );
70 - wp_enqueue_script( 'gutslider-admin-script', trailingslashit( GUTSLIDER_URL ) . 'build/admin/admin.js', $dependencies[ 'dependencies' ] , GUTSLIDER_VERSION, true );
71 -
72 - // enqueue wp-style
73 - wp_enqueue_style( 'wp-components' );
74 -
75 - }
52 + $this->enqueue_admin_assets();
76 53 }
77 54
78 55 /**
79 56 * Add admin menu
@@ -78,75 +55,115 @@
78 55 /**
79 56 * Add admin menu
80 57 */
81 58 public function admin_menu() {
82 - add_menu_page( __( 'GutSlider', 'slider-blocks' ), __( 'GutSlider', 'slider-blocks' ), 'manage_options', 'gutslider-blocks', [ $this, 'gutslider_admin_page' ], 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiByeD0iMTIiIGZpbGw9IiNEOUQ5RDkiLz4KPHBhdGggZD0iTTE1IDdIMTEuODIzNUg5VjE3SDE1VjEyLjQxNjdIMTIuODgyNEgxMS44MjM1IiBzdHJva2U9IiMxRDIzMjciIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+Cjwvc3ZnPgo=', 100 );
59 + add_menu_page(
60 + __('GutSlider', 'slider-blocks'),
61 + __('GutSlider', 'slider-blocks'),
62 + 'manage_options',
63 + 'gutslider-blocks',
64 + [$this, 'render_admin_page'],
65 + 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiByeD0iMTIiIGZpbGw9IiNEOUQ5RDkiLz4KPHBhdGggZD0iTTE1IDdIMTEuODIzNUg5VjE3SDE1VjEyLjQxNjdIMTIuODgyNEgxMS44MjM1IiBzdHJva2U9IiMxRDIzMjciIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+Cjwvc3ZnPgo=',
66 + 100
67 + );
68 +
69 + add_submenu_page(
70 + 'gutslider-blocks',
71 + __( 'Welcome', 'slider-blocks' ),
72 + __( 'Welcome', 'slider-blocks' ),
73 + 'manage_options',
74 + 'gutslider-blocks',
75 + array( $this, 'render_admin_page' )
76 + );
83 77 }
84 78
85 79 /**
86 - * Admin page
80 + * Render admin page
87 81 */
88 - public function gutslider_admin_page() {
89 - ?>
90 - <div id="gutslider"></div>
91 - <?php
82 + public function render_admin_page() {
83 + echo '<div id="gutslider"></div>';
92 84 }
93 85
94 86 /**
95 - * Register settings
96 - * return void
87 + * Register block settings
97 88 */
98 - public function custom_register_settings() {
89 + public function register_settings() {
90 + foreach (self::BLOCK_SETTINGS as $setting) {
91 + register_setting('rest-api-settings', $setting, [
92 + 'type' => 'boolean',
93 + 'default' => true,
94 + 'show_in_rest' => true,
95 + 'sanitize_callback' => 'rest_sanitize_boolean',
96 + ]);
97 + }
98 + }
99 99
100 - // assets registration
101 - register_setting('rest-api-settings', 'swiper_scripts', array(
102 - 'type' => 'boolean',
103 - 'default' => true,
104 - 'show_in_rest' => true,
105 - 'sanitize_callback' => 'rest_sanitize_boolean',
106 - ));
100 + /**
101 + * Include data SDK
102 + */
103 + private function include_data_sdk() {
104 + require_once dirname(__FILE__) . '/dci/start.php';
105 +
106 + dci_dynamic_init([
107 + 'sdk_version' => '1.2.1',
108 + 'product_id' => 3,
109 + 'plugin_name' => 'GutSlider',
110 + 'plugin_title' => 'GutSlider',
111 + 'api_endpoint' => 'https://dashboard.codedivo.com/wp-json/dci/v1/data-insights',
112 + 'slug' => 'gutslider-blocks',
113 + 'core_file' => false,
114 + 'plugin_deactivate_id' => false,
115 + 'menu' => ['slug' => 'gutslider-blocks'],
116 + 'public_key' => 'pk_KxU4qcYXPyqvBDwsyyBkbCfY9Gulc1z5',
117 + 'is_premium' => false,
118 + 'popup_notice' => false,
119 + 'deactivate_feedback' => true,
120 + 'delay_time' => ['time' => 3 * DAY_IN_SECONDS],
121 + 'text_domain' => 'slider-blocks',
122 + 'plugin_msg' => '<p>Thank you for using GutSlider! 🎉</p><p>We collect some non-sensitive data to improve our product and decide which features to build next.</p>',
123 + ]);
124 + }
107 125
108 - // fixed content slider
109 - register_setting('rest-api-settings', 'gut_fixed_content_slider', array(
110 - 'type' => 'boolean',
111 - 'default' => true,
112 - 'show_in_rest' => true,
113 - 'sanitize_callback' => 'rest_sanitize_boolean',
114 - ));
126 + /**
127 + * Get GutSlider changelogs
128 + * @return array|false Changelog data or false on failure
129 + */
130 + private function get_change_logs() {
131 + $changelog_file = GUTSLIDER_DIR . '/changelogs.json';
132 +
133 + if (!file_exists($changelog_file)) {
134 + return false;
135 + }
136 +
137 + global $wp_filesystem;
138 + if (empty($wp_filesystem)) {
139 + require_once(ABSPATH . '/wp-admin/includes/file.php');
140 + WP_Filesystem();
141 + }
142 +
143 + $changelogs = $wp_filesystem->get_contents($changelog_file);
144 + return json_decode($changelogs, true);
145 + }
115 146
116 - // any content
117 - register_setting('rest-api-settings', 'gut_any_content_slider', array(
118 - 'type' => 'boolean',
119 - 'default' => true,
120 - 'show_in_rest' => true,
121 - 'sanitize_callback' => 'rest_sanitize_boolean',
122 - ));
147 + /**
148 + * Enqueue admin assets
149 + */
150 + private function enqueue_admin_assets() {
151 + $dependency_file = GUTSLIDER_DIR . '/build/admin/admin.asset.php';
152 + $dependencies = file_exists($dependency_file) ? require_once($dependency_file) : [];
123 153
124 - // testimonial slider
125 - register_setting('rest-api-settings', 'gut_testimonial_slider', array(
126 - 'type' => 'boolean',
127 - 'default' => true,
128 - 'show_in_rest' => true,
129 - 'sanitize_callback' => 'rest_sanitize_boolean',
130 - ));
154 + wp_enqueue_style('gutslider-admin-style', GUTSLIDER_URL . 'build/admin/style-admin.css', [], GUTSLIDER_VERSION);
155 + wp_enqueue_script('gutslider-admin-script', GUTSLIDER_URL . 'build/admin/admin.js', $dependencies['dependencies'], GUTSLIDER_VERSION, true);
156 + wp_enqueue_style('wp-components');
131 157
132 - // post slider
133 - register_setting('rest-api-settings', 'gut_post_slider', array(
134 - 'type' => 'boolean',
135 - 'default' => true,
136 - 'show_in_rest' => true,
137 - 'sanitize_callback' => 'rest_sanitize_boolean',
138 - ));
139 -
140 - // photo carousel
141 - register_setting('rest-api-settings', 'gut_photo_carousel', array(
142 - 'type' => 'boolean',
143 - 'default' => true,
144 - 'show_in_rest' => true,
145 - 'sanitize_callback' => 'rest_sanitize_boolean',
146 - ));
158 + wp_localize_script('gutslider-admin-script', 'gutslider', [
159 + 'version' => GUTSLIDER_VERSION,
160 + 'changeLogs' => $this->get_change_logs(),
161 + 'nonce' => wp_create_nonce('gutslider_nonce'),
162 + 'isPro' => defined('GUTSLIDER_PRO_VERSION'),
163 + 'proVersion' => defined('GUTSLIDER_PRO_VERSION') ? GUTSLIDER_PRO_VERSION : '',
164 + ]);
147 165 }
148 166 }
149 - }
167 +}
150 168
151 -
152 -new GutSlider_Admin(); // initialize the class
169 +new GutSlider_Admin();