PluginProbe ʕ •ᴥ•ʔ
Superb Addons: Blocks, Patterns, Pre-built Pages, Sliders, Popups, Free Forms, Animations & More / 3.2.7
Superb Addons: Blocks, Patterns, Pre-built Pages, Sliders, Popups, Free Forms, Animations & More v3.2.7
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 / admin / controllers / class-dashboard-controller.php
superb-blocks / src / admin / controllers Last commit date
class-dashboard-controller.php 2 years ago class-notice-controller.php 2 years ago class-settings-controller.php 2 years ago class-troubleshooting-controller.php 2 years ago
class-dashboard-controller.php
458 lines
1 <?php
2
3 namespace SuperbAddons\Admin\Controllers;
4
5 defined('ABSPATH') || exit();
6
7 use SuperbAddons\Admin\Pages\AdditionalCSSPage;
8 use SuperbAddons\Admin\Pages\DashboardPage;
9 use SuperbAddons\Admin\Pages\ElementorDashboardPage;
10 use SuperbAddons\Admin\Pages\GutenbergDashboardPage;
11 use SuperbAddons\Admin\Pages\SettingsPage;
12 use SuperbAddons\Admin\Pages\SupportPage;
13 use SuperbAddons\Components\Admin\FeedbackModal;
14 use SuperbAddons\Config\Capabilities;
15 use SuperbAddons\Data\Controllers\RestController;
16
17 use SuperbAddons\Components\Admin\Navigation;
18 use SuperbAddons\Data\Controllers\CSSController;
19 use SuperbAddons\Data\Controllers\KeyController;
20 use SuperbAddons\Elementor\Controllers\ElementorController;
21 use SuperbAddons\Gutenberg\Controllers\GutenbergController;
22
23 class DashboardController
24 {
25 const MENU_SLUG = 'superbaddons';
26 const DASHBOARD = 'dashboard';
27 const ELEMENTOR_DASHBOARD = 'superbaddons-element-dashboard';
28 const GUTENBERG_DASHBOARD = 'superbaddons-gutenberg-dashboard';
29 const ADDITIONAL_CSS = 'superbaddons-additional-css';
30 const SETTINGS = 'superbaddons-settings';
31 const SUPPORT = 'superbaddons-support';
32
33 const PREMIUM_CLASS = 'superbaddons-get-premium';
34
35 private $hooks;
36
37 public function __construct()
38 {
39 new SettingsController();
40 new TroubleshootingController();
41 $this->hooks = array();
42 add_action("admin_menu", array($this, 'SuperbAddonsAdminMenu'));
43 add_action("admin_menu", array($this, 'AdminMenuAdditions'));
44 add_filter('plugin_action_links_' . SUPERBADDONS_BASE, array($this, 'PluginActions'));
45 add_action('admin_enqueue_scripts', array($this, 'AdminMenuEnqueues'), 1000);
46 if (!KeyController::HasValidPremiumKey()) {
47 add_action("admin_head", array($this, 'AdminMenuHighlightScripts'));
48 }
49 $this->HandleNotices();
50 }
51
52
53 public function PluginActions($actions)
54 {
55 $added_actions = array(
56 "<a href='" . esc_url(admin_url("admin.php?page=" . self::MENU_SLUG)) . "'>" . esc_html__('Dashboard', "superb-blocks") . "</a>",
57 "<a href='" . esc_url(admin_url("admin.php?page=" . self::SETTINGS)) . "'>" . esc_html__('Settings', "superb-blocks") . "</a>",
58 "<a href='" . esc_url(admin_url("admin.php?page=" . self::SUPPORT)) . "'>" . esc_html__('Support', "superb-blocks") . "</a>"
59 );
60 $actions = array_merge($added_actions, $actions);
61 if (!KeyController::HasValidPremiumKey()) {
62 $actions[] = "<a href='" . esc_url("https://superbthemes.com/superb-addons/") . "' class='" . self::PREMIUM_CLASS . "' target='_blank'>" . esc_html__('Get Premium', "superb-blocks") . "</a>";
63 }
64 return $actions;
65 }
66
67 public function SuperbAddonsAdminMenu()
68 {
69 add_menu_page(__('Superb Addons', "superb-blocks"), __('Superb Addons', "superb-blocks") . $this->GetAdminMenuNotification(), Capabilities::CONTRIBUTOR, self::MENU_SLUG, array($this, 'SuperbDashboard'), SUPERBADDONS_ASSETS_PATH . '/img/icon-superb-dashboard-menu.png', '58.6');
70 $this->hooks[self::DASHBOARD] = add_submenu_page(self::MENU_SLUG, __('Superb Addons - Dashboard', "superb-blocks"), __('Dashboard', "superb-blocks"), Capabilities::CONTRIBUTOR, self::MENU_SLUG);
71 $this->hooks[self::GUTENBERG_DASHBOARD] = add_submenu_page(self::MENU_SLUG, __('Superb Addons - Gutenberg', "superb-blocks"), __('Gutenberg Addons', "superb-blocks"), Capabilities::CONTRIBUTOR, self::GUTENBERG_DASHBOARD, array($this, 'GutenbergDashboard'));
72 $this->hooks[self::ELEMENTOR_DASHBOARD] = add_submenu_page(self::MENU_SLUG, __('Superb Addons - Elementor', "superb-blocks"), __('Elementor Addons', "superb-blocks"), Capabilities::CONTRIBUTOR, self::ELEMENTOR_DASHBOARD, array($this, 'ElementorDashboard'));
73 $this->hooks[self::ADDITIONAL_CSS] = add_submenu_page(self::MENU_SLUG, __('Superb Addons - Custom CSS', "superb-blocks"), __('Custom CSS', "superb-blocks"), Capabilities::ADMIN, self::ADDITIONAL_CSS, array($this, 'AdditionalCSS'));
74 $this->hooks[self::SETTINGS] = add_submenu_page(self::MENU_SLUG, __('Superb Addons - Settings', "superb-blocks"), __('Settings', "superb-blocks") . $this->GetAdminMenuNotification(), Capabilities::ADMIN, self::SETTINGS, array($this, 'Settings'));
75 $this->hooks[self::SUPPORT] = add_submenu_page(self::MENU_SLUG, __('Superb Addons - Get Help', "superb-blocks"), __('Get Help', "superb-blocks"), Capabilities::CONTRIBUTOR, self::SUPPORT, array($this, 'Support'));
76 }
77
78 public function AdminMenuAdditions()
79 {
80 // Block theme related admin menu additions
81 if (!wp_is_block_theme()) return;
82
83 $front_page_template = get_block_template(get_stylesheet() . "//front-page");
84 if ($front_page_template && isset($front_page_template->id)) {
85 add_pages_page(
86 __('Edit Front Page', "superb-blocks"),
87 __('Edit Front Page', "superb-blocks"),
88 Capabilities::ADMIN,
89 add_query_arg(
90 array(
91 'postType' => 'wp_template',
92 'postId' => urlencode($front_page_template->id),
93 ),
94 admin_url('site-editor.php')
95 )
96 );
97 }
98 }
99
100 private function GetAdminMenuNotification()
101 {
102 $HasRegisteredKey = KeyController::HasRegisteredKey();
103 if ($HasRegisteredKey) {
104 $KeyStatus = KeyController::GetKeyStatus();
105 if (!$KeyStatus['active'] || $KeyStatus['expired'] || !$KeyStatus['verified'] || $KeyStatus['exceeded']) {
106 return sprintf('<span class="update-plugins count-1"><span class="plugin-count" aria-hidden="true">1</span><span class="screen-reader-text">%s</span></span>', esc_html__("Issue Detected", "superb-blocks"));
107 }
108 }
109
110 return;
111 }
112
113 public function AdminMenuHighlightScripts()
114 {
115 ?>
116 <style>
117 tbody#the-list .<?= self::PREMIUM_CLASS ?> {
118 color: #4312E2;
119 font-weight: 900;
120 }
121 </style>
122 <?php
123 }
124
125 public function HandleNotices()
126 {
127 $options = array("notices" => array());
128 if (!KeyController::HasValidPremiumKey()) {
129 $options["notices"][] = array(
130 'unique_id' => 'addons_delayed',
131 'content' => "addons-notice.php",
132 'delay' => '+6 days'
133 );
134 }
135 AdminNoticeController::init($options);
136 }
137
138 public function AdminMenuEnqueues($page_hook)
139 {
140 if ($page_hook === 'plugins.php') {
141 wp_enqueue_style(
142 'superb-addons-elements',
143 SUPERBADDONS_ASSETS_PATH . '/css/framework.min.css',
144 array(),
145 SUPERBADDONS_VERSION
146 );
147 wp_enqueue_style(
148 'superb-addons-font-manrope',
149 SUPERBADDONS_ASSETS_PATH . '/fonts/manrope/manrope.css',
150 array(),
151 SUPERBADDONS_VERSION
152 );
153 wp_enqueue_style(
154 'superb-addons-admin-modal',
155 SUPERBADDONS_ASSETS_PATH . '/css/admin-modal.min.css',
156 array(),
157 SUPERBADDONS_VERSION
158 );
159
160 wp_enqueue_script('superb-addons-feedback', SUPERBADDONS_ASSETS_PATH . '/js/admin/deactivate-feedback.js', array('jquery'), SUPERBADDONS_VERSION, true);
161 wp_localize_script('superb-addons-feedback', 'superbaddonssettings_g', array(
162 "plugin" => plugin_basename(SUPERBADDONS_BASE),
163 "rest" => array(
164 "base" => \get_rest_url(),
165 "namespace" => RestController::NAMESPACE,
166 "nonce" => wp_create_nonce("wp_rest"),
167 "routes" => array(
168 "settings" => SettingsController::SETTINGS_ROUTE,
169 )
170 )
171 ));
172 add_action('admin_footer', function () {
173 new FeedbackModal();
174 });
175 return;
176 }
177
178 if (!in_array($page_hook, array_values($this->hooks))) {
179 return;
180 }
181 wp_enqueue_style(
182 'superb-addons-admin-dashboard',
183 SUPERBADDONS_ASSETS_PATH . '/css/admin-dashboard.min.css',
184 array(),
185 SUPERBADDONS_VERSION
186 );
187 wp_enqueue_style(
188 'superb-addons-elements',
189 SUPERBADDONS_ASSETS_PATH . '/css/framework.min.css',
190 array(),
191 SUPERBADDONS_VERSION
192 );
193 wp_enqueue_style(
194 'superb-addons-font-manrope',
195 SUPERBADDONS_ASSETS_PATH . '/fonts/manrope/manrope.css',
196 array(),
197 SUPERBADDONS_VERSION
198 );
199
200 if ($page_hook === $this->hooks[self::SUPPORT]) {
201 wp_enqueue_script('superb-addons-troubleshooting', SUPERBADDONS_ASSETS_PATH . '/js/admin/troubleshooting.js', array('jquery', 'wp-i18n'), SUPERBADDONS_VERSION, true);
202 wp_localize_script('superb-addons-troubleshooting', 'superbaddonstroubleshooting_g', array(
203 "rest" => array(
204 "base" => \get_rest_url(),
205 "namespace" => RestController::NAMESPACE,
206 "nonce" => wp_create_nonce("wp_rest"),
207 "routes" => array(
208 "troubleshooting" => TroubleshootingController::TROUBLESHOOTING_ROUTE,
209 "tutorial" => TroubleshootingController::TUTORIAL_ROUTE,
210 )
211 ),
212 "steps" => array(
213 "wordpressversion" => array(
214 "title" => esc_html__("WordPress Version", "superb-blocks"),
215 "text" => esc_html__("Checking Compatibility", "superb-blocks"),
216 "errorText" => esc_html__("Incompatible. Please update WordPress.", "superb-blocks"),
217 "successText" => esc_html__("Compatible", "superb-blocks"),
218 ),
219 "elementorversion" => array(
220 "title" => esc_html__("Elementor Version", "superb-blocks"),
221 "text" => esc_html__("Checking Compatibility", "superb-blocks"),
222 "errorText" => esc_html__("Incompatible. Please install or update Elementor.", "superb-blocks"),
223 "successText" => esc_html__("Compatible", "superb-blocks"),
224 ),
225 "connection" => array(
226 "title" => esc_html__("Connection Status", "superb-blocks"),
227 "text" => esc_html__("Checking Connection", "superb-blocks"),
228 "errorText" => esc_html__("No Connection", "superb-blocks"),
229 "successText" => esc_html__("Connected", "superb-blocks"),
230 ),
231 "domainshift" => array(
232 "title" => esc_html__("Connection Update", "superb-blocks"),
233 "text" => esc_html__("Trying New Connection", "superb-blocks"),
234 "errorText" => esc_html__("Connection Blocked", "superb-blocks"),
235 "successText" => esc_html__("Connected", "superb-blocks"),
236 ),
237 "service" => array(
238 "title" => esc_html__("Service Status", "superb-blocks"),
239 "text" => esc_html__("Checking Service", "superb-blocks"),
240 "errorText" => esc_html__("Service Unavailable", "superb-blocks"),
241 "successText" => esc_html__("Service Online", "superb-blocks"),
242 ),
243 "keycheck" => array(
244 "title" => esc_html__("License Key Status", "superb-blocks"),
245 "text" => esc_html__("Checking License Key", "superb-blocks"),
246 "errorText" => esc_html__("Invalid License Key", "superb-blocks"),
247 "successText" => esc_html__("Valid License Key", "superb-blocks"),
248 ),
249 "keyverify" => array(
250 "title" => esc_html__("License Key Verification", "superb-blocks"),
251 "text" => esc_html__("Re-verifying License Key", "superb-blocks"),
252 "errorText" => esc_html__("License could not be verified", "superb-blocks"),
253 "successText" => esc_html__("License Key Verified", "superb-blocks"),
254 ),
255 "cacheclear" => array(
256 "title" => esc_html__("Cache Status", "superb-blocks"),
257 "text" => esc_html__("Clearing Cache", "superb-blocks"),
258 "errorText" => esc_html__("Cache could not be cleared", "superb-blocks"),
259 "successText" => esc_html__("Cache Cleared", "superb-blocks"),
260 )
261 )
262 ));
263 add_action("admin_footer", array($this, 'TroubleshootingTemplates'));
264 wp_enqueue_style(
265 'superb-addons-admin-modal',
266 SUPERBADDONS_ASSETS_PATH . '/css/admin-modal.min.css',
267 array(),
268 SUPERBADDONS_VERSION
269 );
270 wp_enqueue_style(
271 'superbaddons-js-snackbar',
272 SUPERBADDONS_ASSETS_PATH . '/lib/js-snackbar.min.css',
273 array(),
274 SUPERBADDONS_VERSION
275 );
276 } elseif ($page_hook === $this->hooks[self::SETTINGS]) {
277 wp_enqueue_style(
278 'superb-addons-admin-modal',
279 SUPERBADDONS_ASSETS_PATH . '/css/admin-modal.min.css',
280 array(),
281 SUPERBADDONS_VERSION
282 );
283
284 wp_enqueue_script('superb-addons-settings', SUPERBADDONS_ASSETS_PATH . '/js/admin/settings.js', array('jquery'), SUPERBADDONS_VERSION, true);
285 wp_localize_script('superb-addons-settings', 'superbaddonssettings_g', array(
286 "save_message" => esc_html__("Settings saved successfully.", "superb-blocks"),
287 "modal" => array(
288 "cache" => array(
289 "title" => esc_html__("Clear Cache", "superb-blocks"),
290 "content" => esc_html__("All element- data and images will need to be loaded again if the cache is removed. This should only be done if you are experiencing issues or planning to delete the plugin. Are you sure you want to clear the cache?", "superb-blocks"),
291 "success" => esc_html__("Cache cleared successfully.", "superb-blocks")
292 ),
293 "view_logs" => array(
294 "title" => esc_html__("Error Log", "superb-blocks"),
295 "no_logs" => esc_html__("No errors have been logged.", "superb-blocks"),
296 "icon_unshared" => esc_url(SUPERBADDONS_ASSETS_PATH . "/img/cloud-slash.svg"),
297 "unshared_title" => esc_html__("Error Log Not Shared", "superb-blocks"),
298 "icon_shared" => esc_url(SUPERBADDONS_ASSETS_PATH . "/img/cloud-check.svg"),
299 "shared_title" => esc_html__("Error Log Shared", "superb-blocks"),
300 ),
301 "clear_logs" => array(
302 "title" => esc_html__("Clear Logs", "superb-blocks"),
303 "content" => esc_html__("Error Logs are used for debugging purposes and help improve the plugin when shared with our support team and developers. Are you sure you want to clear the error logs?", "superb-blocks"),
304 "success" => esc_html__("Error logs cleared successfully.", "superb-blocks")
305 ),
306 "remove_key" => array(
307 "title" => esc_html__("Remove License Key", "superb-blocks"),
308 "content" => esc_html__("Are you sure you want to remove your license key from this website?", "superb-blocks"),
309 )
310 ),
311 "rest" => array(
312 "base" => \get_rest_url(),
313 "namespace" => RestController::NAMESPACE,
314 "nonce" => wp_create_nonce("wp_rest"),
315 "routes" => array(
316 "settings" => SettingsController::SETTINGS_ROUTE,
317 )
318 )
319 ));
320 wp_enqueue_style(
321 'superbaddons-js-snackbar',
322 SUPERBADDONS_ASSETS_PATH . '/lib/js-snackbar.min.css',
323 array(),
324 SUPERBADDONS_VERSION
325 );
326 } elseif ($page_hook === $this->hooks[self::ELEMENTOR_DASHBOARD] || $page_hook === $this->hooks[self::GUTENBERG_DASHBOARD]) {
327 $library_loader_file = $page_hook === $this->hooks[self::ELEMENTOR_DASHBOARD] ? 'elementor' : 'gutenberg';
328 $menu_items = $page_hook === $this->hooks[self::ELEMENTOR_DASHBOARD] ? ElementorController::GetElementorLibraryMenuItems() : GutenbergController::GetGutenbergLibraryMenuItems();
329
330
331 wp_enqueue_script('superb-addons-select2', SUPERBADDONS_ASSETS_PATH . '/lib/select2.min.js', array('jquery'), SUPERBADDONS_VERSION, true);
332 wp_enqueue_script('superb-addons-library-dashboard', SUPERBADDONS_ASSETS_PATH . '/js/admin/' . $library_loader_file . '.js', array('jquery'), SUPERBADDONS_VERSION, true);
333 wp_localize_script('superb-addons-library-dashboard', 'superblayoutlibrary_g', array(
334 "style_placeholder" => esc_html__('All themes', "superb-blocks"),
335 "category_placeholder" => esc_html__('All categories', "superb-blocks"),
336 "snacks" => array(
337 "list_error" => esc_html__('Something went wrong while attempting to list elements. Please try again or contact support if the problem persists.', "superb-blocks")
338 ),
339 "menu_items" => $menu_items,
340 "rest" => array(
341 "base" => \get_rest_url(),
342 "namespace" => RestController::NAMESPACE,
343 "nonce" => wp_create_nonce("wp_rest"),
344 "routes" => array(
345 "settings" => SettingsController::SETTINGS_ROUTE,
346 )
347 )
348 ));
349
350 wp_enqueue_style(
351 'superb-elementor-editor-layout-library',
352 SUPERBADDONS_ASSETS_PATH . '/css/layout-library-editor.min.css',
353 array(),
354 SUPERBADDONS_VERSION
355 );
356 wp_enqueue_style(
357 'superbaddons-select2',
358 SUPERBADDONS_ASSETS_PATH . '/lib/select2.min.css',
359 array(),
360 SUPERBADDONS_VERSION
361 );
362 wp_enqueue_style(
363 'superbaddons-js-snackbar',
364 SUPERBADDONS_ASSETS_PATH . '/lib/js-snackbar.min.css',
365 array(),
366 SUPERBADDONS_VERSION
367 );
368 } elseif ($page_hook === $this->hooks[self::ADDITIONAL_CSS]) {
369 wp_enqueue_style(
370 'superb-addons-admin-modal',
371 SUPERBADDONS_ASSETS_PATH . '/css/admin-modal.min.css',
372 array(),
373 SUPERBADDONS_VERSION
374 );
375 wp_enqueue_style(
376 'superbaddons-js-snackbar',
377 SUPERBADDONS_ASSETS_PATH . '/lib/js-snackbar.min.css',
378 array(),
379 SUPERBADDONS_VERSION
380 );
381 wp_enqueue_style(
382 'superbaddons-select2',
383 SUPERBADDONS_ASSETS_PATH . '/lib/select2.min.css',
384 array(),
385 SUPERBADDONS_VERSION
386 );
387
388 do_action('superbaddons/admin/css-blocks/enqueue');
389
390 wp_enqueue_script('superb-addons-select2', SUPERBADDONS_ASSETS_PATH . '/lib/select2.min.js', array('jquery'), SUPERBADDONS_VERSION, true);
391 $code_editor_settings = wp_enqueue_code_editor(array('type' => 'text/css', 'codemirror' => array('lint' => true)));
392 wp_enqueue_script('superb-addons-css-blocks', SUPERBADDONS_ASSETS_PATH . '/js/admin/cssblocks.js', array('jquery', 'wp-i18n'), SUPERBADDONS_VERSION, true);
393 wp_localize_script('superb-addons-css-blocks', 'superbaddonscssblocks_g', array(
394 "codeEditorSettings" => $code_editor_settings,
395 "rest" => array(
396 "base" => \get_rest_url(),
397 "namespace" => RestController::NAMESPACE,
398 "nonce" => wp_create_nonce("wp_rest"),
399 "routes" => array(
400 "css" => CSSController::CSS_ROUTE,
401 ),
402 "error_message" => esc_html__("An error occurred while updating the CSS block. Please try again.", "superb-blocks"),
403 ),
404 ));
405 }
406 }
407
408 public function TroubleshootingTemplates()
409 {
410 ob_start();
411 include(SUPERBADDONS_PLUGIN_DIR . 'src/admin/templates/troubleshooting-step.php');
412 $template = ob_get_clean();
413 echo '<script type="text/template" id="tmpl-superb-addons-troubleshooting-step">' . $template . '</script>';
414 }
415
416 public function SuperbDashboard()
417 {
418 $this->DashboardPageSetup(DashboardPage::class);
419 }
420
421 public function ElementorDashboard()
422 {
423 $this->DashboardPageSetup(ElementorDashboardPage::class);
424 }
425
426 public function GutenbergDashboard()
427 {
428 $this->DashboardPageSetup(GutenbergDashboardPage::class);
429 }
430
431 public function AdditionalCSS()
432 {
433 $this->DashboardPageSetup(AdditionalCSSPage::class);
434 }
435
436 public function Support()
437 {
438 $this->DashboardPageSetup(SupportPage::class);
439 }
440
441 public function Settings()
442 {
443 $this->DashboardPageSetup(SettingsPage::class);
444 }
445
446 private function DashboardPageSetup($page_class)
447 {
448 ?>
449 <div class="superbaddons-wrap">
450 <?php new Navigation(); ?>
451 <div class="superbaddons-wrap-inner">
452 <?php new $page_class(); ?>
453 </div>
454 </div>
455 <?php
456 }
457 }
458