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 +132 -58 2.2.12.9.7 View file →
@@ -1,46 +1,56 @@
1 1 <?php
2 2 /**
3 3 * Plugin Admin Page
4 - *
5 - */
4 + * @package GutSliderBlocks
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 - add_action( 'admin_menu', [ $this, 'admin_menu' ] );
19 - add_action( 'admin_enqueue_scripts', [ $this, 'admin_assests' ] );
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']);
33 + }
20 34
21 - // register settings
22 - add_action('admin_init', [ $this, 'custom_register_settings' ]);
23 - add_action( 'rest_api_init', [ $this, 'custom_register_settings' ] );
35 + /**
36 + * Initialize admin functionality
37 + */
38 + public function initialize_admin() {
39 + $this->register_settings();
40 + $this->include_data_sdk();
24 41 }
25 42
26 43 /**
27 - * Enqueue admin scripts
44 + * Enqueue admin scripts and styles
45 + * @param string $screen Current admin screen
28 46 */
29 - public function admin_assests( $screen ) {
47 + public function admin_assets($screen) {
48 + if ($screen !== 'toplevel_page_gutslider-blocks') {
49 + return;
50 + }
30 51
31 - if( $screen === 'toplevel_page_gutslider-blocks' ){
32 -
33 - $dependencyFile = GUTSLIDER_DIR . '/build/admin/admin.asset.php';
34 - $dependencies = file_exists( $dependencyFile ) ? require_once $dependencyFile : [];
35 -
36 - wp_enqueue_style( 'gutslider-admin-style', GUTSLIDER_URL . 'build/admin/style-admin.css', [], GUTSLIDER_VERSION );
37 - wp_enqueue_script( 'gutslider-admin-script', GUTSLIDER_URL . 'build/admin/admin.js', $dependencies[ 'dependencies' ] , GUTSLIDER_VERSION, true );
38 -
39 - // enqueue wp-style
40 - wp_enqueue_style( 'wp-components' );
41 -
42 - }
52 + $this->enqueue_admin_assets();
43 53 }
44 54
45 55 /**
46 56 * Add admin menu
@@ -45,51 +55,115 @@
45 55 /**
46 56 * Add admin menu
47 57 */
48 58 public function admin_menu() {
49 - 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 + );
50 77 }
51 78
52 79 /**
53 - * Admin page
80 + * Render admin page
54 81 */
55 - public function gutslider_admin_page() {
56 - ?>
57 - <div id="gutslider"></div>
58 - <?php
82 + public function render_admin_page() {
83 + echo '<div id="gutslider"></div>';
59 84 }
60 85
61 86 /**
62 - * Register settings
63 - * return void
87 + * Register block settings
64 88 */
65 - 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 + }
66 99
67 - // assets registration
68 - register_setting('rest-api-settings', 'swiper_scripts', array(
69 - 'type' => 'boolean',
70 - 'default' => true,
71 - 'show_in_rest' => true,
72 - 'sanitize_callback' => 'rest_sanitize_boolean',
73 - ));
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 + }
74 125
75 - // fixed content slider
76 - register_setting('rest-api-settings', 'gut_fixed_content_slider', array(
77 - 'type' => 'boolean',
78 - 'default' => true,
79 - 'show_in_rest' => true,
80 - 'sanitize_callback' => 'rest_sanitize_boolean',
81 - ));
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 + }
82 146
83 - // any content
84 - register_setting('rest-api-settings', 'gut_any_content_slider', array(
85 - 'type' => 'boolean',
86 - 'default' => true,
87 - 'show_in_rest' => true,
88 - 'sanitize_callback' => 'rest_sanitize_boolean',
89 - ));
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) : [];
153 +
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');
157 +
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 + ]);
90 165 }
91 166 }
92 - }
167 +}
93 168
94 -
95 -new GutSlider_Admin(); // initialize the class
169 +new GutSlider_Admin();