PluginProbe
Floating Button – Easily Create Sticky, Fixed & Floating Buttons / 6.0
Floating Button – Easily Create Sticky, Fixed & Floating Buttons v6.0
trunk 2.0.2 3.0 4.0 4.1.2 4.3 5.0 5.0.1 5.1 5.1.1 5.2 5.3 5.3.1 6.0 6.0.1 6.0.10 6.0.11 6.0.12 6.0.13 6.0.2 6.0.3 6.0.4 6.0.5 6.0.6 6.0.7 All 31 releases
floating-button / includes / class-wowp-dashboard.php

class-wowp-dashboard.php in Floating Button – Easily Create Sticky, Fixed & Floating Buttons 6.0, at includes/class-wowp-dashboard.php

194 lines 6.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace FloatingButton;
4
5 use FloatingButton\Admin\AdminInitializer;
6 use FloatingButton\Dashboard\DashboardInitializer;
7
8 defined( 'ABSPATH' ) || exit;
9
10 class WOWP_Dashboard {
11
12 public function __construct() {
13 add_action( WOW_Plugin::PREFIX . '_admin_load_styles_scripts', [ $this, 'load_styles_scripts' ] );
14 add_action( WOW_Plugin::PREFIX . '_admin_page', [ $this, 'dashboard' ] );
15 add_action( WOW_Plugin::PREFIX . '_admin_header_links', [ $this, 'header_links' ] );
16 add_filter( WOW_Plugin::PREFIX . '_save_settings', [ $this, 'save_settings' ], 10, 2 );
17 add_filter( WOW_Plugin::PREFIX . '_default_custom_post', [ $this, 'default_custom_post' ] );
18
19 AdminInitializer::init();
20 }
21
22 public function default_custom_post( $display_def ) {
23 if ( str_contains( $display_def, 'custom_post_selected' ) ) {
24 return 'post_selected';
25 }
26 if ( str_contains( $display_def, 'custom_post_tax' ) ) {
27 return 'post_category';
28 }
29 if ( str_contains( $display_def, 'custom_post_all' ) ) {
30 return 'post_all';
31 }
32
33 return $display_def;
34 }
35
36 public function save_settings( $settings, $request ): array {
37 $param = ! empty( $request['param'] ) ? map_deep( $request['param'], [ $this, 'sanitize_param' ] ) : [];
38
39 $settings['data']['title'] = ! empty( $request['title'] ) ? sanitize_text_field( wp_unslash( $request['title'] ) ) : '';
40 $settings['formats'][] = '%s';
41
42 $settings['data']['status'] = ! empty( $request['status'] ) ? sanitize_textarea_field( wp_unslash( $request['status'] ) ) : '';
43 $settings['formats'][] = '%d';
44
45 $settings['data']['mode'] = ! empty( $request['mode'] ) ? sanitize_textarea_field( wp_unslash( $request['mode'] ) ) : '';
46 $settings['formats'][] = '%d';
47
48 $settings['data']['tag'] = ! empty( $request['tag'] ) ? sanitize_textarea_field( wp_unslash( $request['tag'] ) ) : '';
49 $settings['formats'][] = '%s';
50
51 $param = map_deep( $_POST['param'], [ $this, 'sanitize_param' ] );
52 $param = $this->additional_sanitize( $param, $_POST['param'] );
53 $settings['data']['param'] = maybe_serialize( $param );
54 $settings['formats'][] = '%s';
55
56 return $settings;
57 }
58
59 public function additional_sanitize( $param, $arr ) {
60
61 // For main button
62 if ( isset( $arr['extra_style'] ) ) {
63 $param['extra_style'] = sanitize_textarea_field( wp_unslash($arr['extra_style']) );
64 }
65 if ( isset( $arr['item_link'] ) ) {
66 $param['item_link'] = sanitize_url( $arr['item_link'] );
67 }
68
69 if ( isset( $arr['custom_icon_url'] ) ) {
70 $param['custom_icon_url'] = sanitize_url( $arr['custom_icon_url'] );
71 }
72
73 if ( isset( $arr['custom_icon_emoji'] ) ) {
74 $param['custom_icon_emoji'] = wp_kses_post( wp_encode_emoji( $arr['custom_icon_emoji'] ) );
75 }
76
77 // For menu 1
78 if ( isset( $arr['menu_1']['item_link'] ) && is_array( $arr['menu_1']['item_link'] ) ) {
79 $param['menu_1']['item_link'] = map_deep( $arr['menu_1']['item_link'], 'sanitize_url' );
80 }
81
82 if ( isset( $arr['menu_1']['custom_icon_url'] ) && is_array( $arr['menu_1']['custom_icon_url'] ) ) {
83 $param['menu_1']['custom_icon_url'] = map_deep( $arr['menu_1']['custom_icon_url'], 'sanitize_url' );
84 }
85
86 if ( isset( $arr['menu_1']['custom_icon_emoji'] ) && is_array( $arr['menu_1']['custom_icon_emoji'] ) ) {
87 $param['menu_1']['custom_icon_emoji'] = map_deep( $arr['menu_1']['custom_icon_emoji'], [
88 $this,
89 'sanitize_emoji'
90 ] );
91 }
92
93 // For menu 2
94 if ( isset( $arr['menu_2']['item_link'] ) && is_array( $arr['menu_2']['item_link'] ) ) {
95 $param['menu_2']['item_link'] = map_deep( $arr['menu_2']['item_link'], 'sanitize_url' );
96 }
97
98 if ( isset( $arr['menu_2']['custom_icon_url'] ) && is_array( $arr['menu_2']['custom_icon_url'] ) ) {
99 $param['menu_2']['custom_icon_url'] = map_deep( $arr['menu_2']['custom_icon_url'], 'sanitize_url' );
100 }
101
102 if ( isset( $arr['menu_2']['custom_icon_emoji'] ) && is_array( $arr['menu_2']['custom_icon_emoji'] ) ) {
103 $param['menu_2']['custom_icon_emoji'] = map_deep( $arr['menu_2']['custom_icon_emoji'], [
104 $this,
105 'sanitize_emoji'
106 ] );
107 }
108
109 return $param;
110 }
111
112
113 public function sanitize_emoji( $text ): string {
114 return wp_kses_post( wp_encode_emoji( wp_unslash( $text ) ) );
115 }
116
117
118 public function sanitize_param( $value ): string {
119 return sanitize_text_field( wp_unslash( $value ) );
120 }
121
122 public function load_styles_scripts(): void {
123 $assets_url = WOW_Plugin::url() . 'assets/';
124 $version = WOW_Plugin::info( 'version' );
125 $slug = WOW_Plugin::SLUG;
126
127 wp_enqueue_style( $slug . '-admin', $assets_url . 'css/admin.css', null, $version );
128
129 wp_enqueue_style( $slug . '-admin-fontawesome', $assets_url . 'vendors/fontawesome/css/fontawesome-all.min.css', null, '6.4.2' );
130
131 // include fonticonpicker styles & scripts
132
133
134 $fonticonpicker_css = $assets_url . 'vendors/fonticonpicker/jquery.fonticonpicker.min.css';
135 wp_enqueue_style( $slug . '-fonticonpicker', $fonticonpicker_css );
136
137 $fonticonpicker_dark_css = $assets_url . 'vendors/fonticonpicker/jquery.fonticonpicker.grey.min.css';
138 wp_enqueue_style( $slug . '-fonticonpicker-darkgrey', $fonticonpicker_dark_css );
139
140 $fonticonpicker_js = $assets_url . 'vendors/fonticonpicker/jquery.fonticonpicker.js';
141 wp_enqueue_script( $slug . '-fonticonpicker', $fonticonpicker_js, [ 'jquery' ] );
142
143 // include the color picker
144 wp_enqueue_script( 'code-editor' );
145 wp_enqueue_style( 'code-editor' );
146 wp_enqueue_script( 'csslint' );
147
148 wp_enqueue_style( 'wp-color-picker' );
149 wp_enqueue_script( 'wp-color-picker' );
150 wp_enqueue_media();
151
152 wp_enqueue_script( 'jquery-ui-sortable' );
153
154 $url_alpha = $assets_url . 'js/wp-color-picker-alpha.js';
155 wp_enqueue_script( 'wp-color-picker-alpha', $url_alpha, array( 'wp-color-picker' ), false, true );
156
157
158
159
160 wp_enqueue_script( $slug . '-admin-jquery', $assets_url . 'js/admin-jquery.js', [
161 'jquery',
162 'wp-color-picker-alpha'
163 ], $version, true );
164 }
165
166 public function dashboard(): void {
167 DashboardInitializer::init();
168 }
169
170
171 public function header_links(): void {
172 $logo = WOW_Plugin::url() . 'assets/img/wow-icon.png';
173 ?>
174 <div class="wowp-links">
175 <a href="https://wow-estore.com/" target="_blank">
176 <img src="<?php
177 echo esc_url( $logo ); ?>" alt="Logo Wow-Estore.com">
178 <span>Wow-Estore</span>
179 </a>
180 <a href="https://wow-estore.com/guides/floating-button/" target="_blank">
181 <span class="dashicons dashicons-book-alt"></span>
182 <span>Docs</span>
183 </a>
184 <a href="https://wordpress.org/support/plugin/floating-button/reviews/?filter=5" target="_blank">
185 <span class="dashicons dashicons-star-filled"></span>
186 <span>Reviews</span>
187 </a>
188 </div>
189
190 <?php
191 }
192
193
194 }