PluginProbe
Bubble Menu – Floating Button Menu with Sticky Navigation / 4.1
Bubble Menu – Floating Button Menu with Sticky Navigation v4.1
trunk 1.3 2.0 2.2 2.2.1 3.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.1 3.1.1 4.0 4.0.1 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.1 4.1.1
bubble-menu / admin / class-wowp-admin.php

class-wowp-admin.php in Bubble Menu – Floating Button Menu with Sticky Navigation 4.1, at admin/class-wowp-admin.php

138 lines 4.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * Class WOWP_Admin
5 *
6 * The main admin class responsible for initializing the admin functionality of the plugin.
7 *
8 * @package BubbleMenu
9 * @subpackage Admin
10 * @author Dmytro Lobov <hey@wow-company.com>, Wow-Company
11 * @copyright 2024 Dmytro Lobov
12 * @license GPL-2.0+
13 */
14
15 namespace BubbleMenu;
16
17 use BubbleMenu\Admin\AdminActions;
18 use BubbleMenu\Admin\Dashboard;
19
20 defined( 'ABSPATH' ) || exit;
21
22 class WOWP_Admin {
23 public function __construct() {
24 Dashboard::init();
25 AdminActions::init();
26 $this->includes();
27
28 add_action( WOWP_Plugin::PREFIX . '_admin_header_links', [ $this, 'plugin_links' ] );
29 add_filter( WOWP_Plugin::PREFIX . '_save_settings', [ $this, 'save_settings' ] );
30 add_action( WOWP_Plugin::PREFIX . '_admin_load_assets', [ $this, 'load_assets' ] );
31
32 }
33
34 public function includes(): void {
35 require_once plugin_dir_path( __FILE__ ) . 'class-settings-helper.php';
36 }
37
38 public function plugin_links(): void {
39 ?>
40 <div class="wpie-links">
41 <a href="<?php echo esc_url( WOWP_Plugin::info( 'change' ) ); ?>" target="_blank">Check for Updates</a>
42 <a href="<?php echo esc_url( WOWP_Plugin::info( 'rating' ) ); ?>" target="_blank" class="wpie-color-orange">Rate Us</a>
43 <a href="<?php echo esc_url( WOWP_Plugin::info( 'docs' ) ); ?>" target="_blank">Documentation</a>
44 <span class="wpie-links-divider">|</span>
45 <a href="<?php echo esc_url( WOWP_Plugin::info( 'pro' ) ); ?>" target="_blank" class="wpie-color-danger">Upgrade to Pro</a>
46 <a href="<?php echo esc_url( WOWP_Plugin::info( 'demo' ) ); ?>" target="_blank">Live Pro Demo</a>
47 </div>
48 <?php
49 }
50
51 public function save_settings() {
52
53 $param = ! empty( $_POST['param'] ) ? map_deep( $_POST['param'], 'sanitize_text_field' ) : [];
54
55 if(!empty($_POST['param']['label'])) {
56 $param['label'] = $this->sanitize_tooltip( $_POST['param']['label'] );
57 }
58
59 if(!empty($_POST['param']['emoji'])) {
60 $param['emoji'] = $this->sanitize_tooltip( $_POST['param']['emoji'] );
61 }
62
63 if ( isset( $_POST['param']['item']['label'] ) ) {
64 $param['item']['label'] = map_deep( $_POST['param']['item']['label'], array(
65 $this,
66 'sanitize_tooltip'
67 ) );
68 }
69
70 if ( isset( $_POST['param']['item']['emoji'] ) ) {
71 $param['item']['emoji'] = map_deep( $_POST['param']['item']['emoji'], [
72 $this,
73 'sanitize_text'
74 ] );
75 }
76
77 if ( isset( $_POST['param']['item']['popup'] ) ) {
78 $param['item']['popup'] = map_deep( $_POST['param']['item']['popup'], [
79 $this,
80 'sanitize_tooltip'
81 ] );
82 }
83
84 return $param;
85
86 }
87
88 public function sanitize_text( $text ): string {
89 return wp_kses_post( wp_encode_emoji( wp_unslash( $text ) ) );
90 }
91
92 public function sanitize_tooltip( $text ): string {
93 return sanitize_text_field( wp_encode_emoji(wp_unslash( $text ) ));
94 }
95
96
97 public function load_assets(): void {
98 wp_enqueue_style( 'wp-color-picker' );
99 wp_enqueue_script( 'wp-color-picker' );
100 wp_enqueue_script( 'wp-tinymce' );
101 wp_enqueue_editor();
102 wp_enqueue_media();
103 wp_enqueue_script( 'thickbox' );
104 wp_enqueue_style( 'thickbox' );
105
106 wp_enqueue_script( 'jquery-ui-sortable' );
107
108 wp_enqueue_script( 'code-editor' );
109 wp_enqueue_style( 'code-editor' );
110 wp_enqueue_script( 'htmlhint' );
111 wp_enqueue_script( 'csslint' );
112
113
114 // include fonticonpicker styles & scripts
115 $url_assets = WOWP_Plugin::url() . 'vendors/';
116 $slug = WOWP_Plugin::SLUG;
117 $version = WOWP_Plugin::info( 'version' );
118
119 wp_enqueue_style( $slug. '-fontawesome', $url_assets . '/fontawesome/css/all.min.css', [], '7.0' );
120
121 $fonticonpicker_js = $url_assets . 'fonticonpicker/js/jquery.fonticonpicker.js';
122 wp_enqueue_script( $slug . '-fonticonpicker', $fonticonpicker_js, array( 'jquery' ), $version, true );
123
124 $fonticonpicker_css = $url_assets . 'fonticonpicker/css/base/jquery.fonticonpicker.css';
125 wp_enqueue_style( $slug . '-fonticonpicker', $fonticonpicker_css, null, $version );
126
127 $fonticonpicker_dark_css = $url_assets . 'fonticonpicker/css/themes/dark-grey-theme/jquery.fonticonpicker.darkgrey.css';
128 wp_enqueue_style( $slug . '-fonticonpicker-darkgrey', $fonticonpicker_dark_css, null, $version );
129
130 $arg = [
131 'plugin_url' => WOWP_Plugin::url(),
132 ];
133
134 wp_localize_script( 'wp-tinymce', 'notification_obj', $arg );
135 }
136
137
138 }