PluginProbe ʕ •ᴥ•ʔ
Superb Addons: Blocks, Patterns, Pre-built Pages, Sliders, Popups, Free Forms, Animations & More / 3.4.0
Superb Addons: Blocks, Patterns, Pre-built Pages, Sliders, Popups, Free Forms, Animations & More v3.4.0
4.0.6 4.0.5 4.0.4 4.0.3 4.0.2 4.0.1 4.0.0 trunk 1.0.0 2.0.0 2.0.1 2.0.2 2.0.3 3.0 3.0.1 3.0.2 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.2 3.1.3 3.2.0 3.2.1 3.2.2 3.2.4 3.2.5 3.2.7 3.2.8 3.2.9 3.3.0 3.3.1 3.3.2 3.4.0 3.4.1 3.4.2 3.4.5 3.4.6 3.5.0 3.5.1 3.5.2 3.5.3 3.5.4 3.5.6 3.5.7 3.5.8 3.5.9 3.6.0 3.6.1 3.6.2 3.7.0 3.7.1
superb-blocks / src / tours / class-tour-controller.php
superb-blocks / src / tours Last commit date
class-tour-controller.php 1 year ago
class-tour-controller.php
159 lines
1 <?php
2
3 namespace SuperbAddons\Tours\Controllers;
4
5 use SuperbAddons\Admin\Controllers\TroubleshootingController;
6 use SuperbAddons\Components\Admin\Modal;
7 use SuperbAddons\Data\Controllers\RestController;
8 use SuperbAddons\Data\Utils\ScriptTranslations;
9
10 defined('ABSPATH') || exit();
11
12 class TourController
13 {
14 const TOUR_GUTENBERG = 'superb-tour-gutenberg';
15 const GUTENBERG_TOUR_BLOCKS = 'blocks';
16 const GUTENBERG_TOUR_PATTERNS = 'patterns';
17 const TOUR_ELEMENTOR = 'superb-tour-elementor';
18
19 const TOUR_ELEMENTOR_PAGE_ID_OPTION = 'superbaddons_elementor_tour_id';
20
21 public function __construct()
22 {
23 add_action('enqueue_block_editor_assets', array($this, 'MaybeLoadGutenbergTour'), 0);
24 add_action('elementor/editor/before_enqueue_scripts', array($this, 'MaybeLoadElementorTour'), 0);
25 }
26
27 public function MaybeLoadGutenbergTour()
28 {
29 if (!isset($_GET[self::TOUR_GUTENBERG])) return;
30
31 global $pagenow;
32 if ('post-new.php' !== $pagenow) {
33 return;
34 }
35
36 $this->GutenbergTourAssets();
37 }
38
39 public function MaybeLoadElementorTour()
40 {
41 if (!isset($_GET[self::TOUR_ELEMENTOR])) return;
42
43 global $pagenow;
44 if ('post.php' !== $pagenow) {
45 return;
46 }
47
48 if (!isset($_GET['action']) || $_GET['action'] !== 'elementor' || !isset($_GET['post'])) return;
49
50 $tour_page_id = get_option(self::TOUR_ELEMENTOR_PAGE_ID_OPTION);
51 if (!$tour_page_id || $tour_page_id !== $_GET['post']) return;
52
53 $this->ElementorTourAssets();
54 }
55
56 private function GutenbergTourAssets()
57 {
58 $this->TourAssets();
59 add_action('admin_footer', function () {
60 new Modal();
61 });
62
63 if ($_GET[self::TOUR_GUTENBERG] === self::GUTENBERG_TOUR_BLOCKS) {
64 wp_enqueue_script(
65 'superb-addons-guided-tours',
66 SUPERBADDONS_ASSETS_PATH . '/js/guided-tours/gutenberg-blocks.js',
67 array('wp-i18n', 'jquery'),
68 SUPERBADDONS_VERSION
69 );
70 ScriptTranslations::Set('superb-addons-guided-tours');
71 } else
72 if ($_GET[self::TOUR_GUTENBERG] === self::GUTENBERG_TOUR_PATTERNS) {
73 wp_enqueue_script(
74 'superb-addons-guided-tours',
75 SUPERBADDONS_ASSETS_PATH . '/js/guided-tours/gutenberg-patterns.js',
76 array('wp-i18n', 'jquery'),
77 SUPERBADDONS_VERSION
78 );
79 ScriptTranslations::Set('superb-addons-guided-tours');
80 }
81 }
82
83 private function ElementorTourAssets()
84 {
85 $this->TourAssets();
86 add_action('elementor/editor/footer', function () {
87 new Modal();
88 });
89 wp_enqueue_script(
90 'superb-addons-guided-tours',
91 SUPERBADDONS_ASSETS_PATH . '/js/guided-tours/elementor-sections.js',
92 array('wp-i18n', 'jquery'),
93 SUPERBADDONS_VERSION
94 );
95 ScriptTranslations::Set('superb-addons-guided-tours');
96 wp_localize_script('superb-addons-guided-tours', 'superbaddonstroubleshooting_g', array(
97 "rest" => array(
98 "base" => \get_rest_url(),
99 "namespace" => RestController::NAMESPACE,
100 "nonce" => wp_create_nonce("wp_rest"),
101 "tour_nonce" => isset($_GET[self::TOUR_ELEMENTOR]) ? $_GET[self::TOUR_ELEMENTOR] : false,
102 "routes" => array(
103 "tutorial" => TroubleshootingController::TUTORIAL_ROUTE,
104 )
105 ),
106 ));
107 }
108
109 private function TourAssets()
110 {
111 wp_enqueue_style(
112 'superbaddons-driver',
113 SUPERBADDONS_ASSETS_PATH . '/lib/driver.css',
114 array(),
115 SUPERBADDONS_VERSION
116 );
117 wp_enqueue_style(
118 'superb-addons-admin-modal',
119 SUPERBADDONS_ASSETS_PATH . '/css/admin-modal.min.css',
120 array(),
121 SUPERBADDONS_VERSION
122 );
123 }
124
125 public static function GetElementorTourURL()
126 {
127 $tour_page_id = get_option(self::TOUR_ELEMENTOR_PAGE_ID_OPTION);
128 $post_status = $tour_page_id ? get_post_status($tour_page_id) : false;
129 if (!$tour_page_id || $post_status !== 'draft') {
130 $tour_page_id = wp_insert_post(array(
131 'post_title' => __('Superb Addons Tutorial', "superb-blocks"),
132 'post_type' => 'page',
133 'post_status' => 'draft'
134 ));
135 update_option(self::TOUR_ELEMENTOR_PAGE_ID_OPTION, $tour_page_id, false);
136 } else {
137 }
138
139 $nonce = wp_create_nonce('superbaddons-tour-' . $tour_page_id);
140 $edit_link = get_edit_post_link($tour_page_id);
141 return add_query_arg(array(self::TOUR_ELEMENTOR => $nonce, "action" => "elementor"), $edit_link);
142 }
143
144 public static function CleanUpTourPage($nonce)
145 {
146 $tour_page_id = get_option(self::TOUR_ELEMENTOR_PAGE_ID_OPTION);
147 if (!$tour_page_id) {
148 return;
149 }
150
151 if (!wp_verify_nonce($nonce, 'superbaddons-tour-' . $tour_page_id)) {
152 return;
153 }
154
155 wp_delete_post($tour_page_id, true);
156 delete_option(self::TOUR_ELEMENTOR_PAGE_ID_OPTION);
157 }
158 }
159