PluginProbe
Float menu – awesome floating side menu / 7.2.3
Float menu – awesome floating side menu v7.2.3
7.2.5 trunk 2.1 2.2 3.0.1 3.1 3.2.2 3.3.1 3.5 3.5.1 3.5.2 3.5.3. 3.5.4 4.0 4.1 4.1.1 4.2 4.3 4.3.1 4.3.2 5.0 5.0.1 5.0.2 5.0.3 5.1 All 57 releases
float-menu / classes / Admin / Demo.php

Demo.php in Float menu – awesome floating side menu 7.2.3, at classes/Admin/Demo.php

200 lines 6.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace FloatMenuLite\Admin;
4
5 use FloatMenuLite\Update\UpdateDB;
6 use FloatMenuLite\WOWP_Plugin;
7
8 class Demo {
9
10 public static function init() {
11 add_action( WOWP_Plugin::PREFIX . '_admin_after_button', [ __CLASS__, 'demo_button' ] );
12 add_action( 'wp_ajax_' . WOWP_Plugin::PREFIX . '_upload_demo', [ __CLASS__, 'upload_demo' ] );
13 }
14
15 public static function demo_button(): void {
16 $demo = [
17 'Simple-Floating-Menu' => [
18 'name' => __( 'Simple Floating Menu', 'float-menu' ),
19 'link' => 'https://lite.wow-estore.com/float-menu/',
20 ],
21 'Social-Media-Menu' => [
22 'name' => __( 'Social Media Menu', 'float-menu' ),
23 'link' => 'https://lite.wow-estore.com/float-menu/',
24 ],
25 'Navigation-Menu' => [
26 'name' => __( 'Navigation Menu', 'float-menu' ),
27 'link' => 'https://lite.wow-estore.com/float-menu/',
28 ],
29 'Quick-Actions-Menu' => [
30 'name' => __( 'Quick Actions Menu', 'float-menu' ),
31 'link' => 'https://lite.wow-estore.com/float-menu/',
32 'in' => 1,
33 ],
34
35 'Share_pro' => [
36 'name' => __( 'Share Buttons', 'float-menu' ),
37 'link' => 'https://demo.wow-estore.com/float-menu-pro/share/',
38 ],
39
40 'Save-Content_pro' => [
41 'name' => __( 'Save Content', 'float-menu' ),
42 'link' => 'https://demo.wow-estore.com/float-menu-pro/share/',
43 ],
44
45 'Messaging_pro' => [
46 'name' => __( 'Messaging', 'float-menu' ),
47 'link' => 'https://demo.wow-estore.com/float-menu-pro/share/',
48 ],
49
50 'Translate_pro' => [
51 'name' => __( 'Translate', 'float-menu' ),
52 'link' => 'https://demo.wow-estore.com/float-menu-pro/translate-page/',
53 ],
54
55 'Icon-with-Text_pro' => [
56 'name' => __( 'Icon with Text', 'float-menu' ),
57 'link' => 'https://demo.wow-estore.com/float-menu-pro/icon-with-text/',
58 ],
59
60 'Scrolling_pro' => [
61 'name' => __( 'Scrolling', 'float-menu' ),
62 'link' => 'https://demo.wow-estore.com/float-menu-pro/scrolling/',
63 ],
64
65 'Icon-animation_pro' => [
66 'name' => __( 'Icon animations', 'float-menu' ),
67 'link' => 'https://demo.wow-estore.com/float-menu-pro/icon-animations/',
68 ],
69
70 'Actions_pro' => [
71 'name' => __( 'Actions', 'float-menu' ),
72 'link' => 'https://demo.wow-estore.com/float-menu-pro/actions/',
73 'in' => 1,
74 ],
75
76 'Show-After-Position_pro' => [
77 'name' => __( 'Show after Position ', 'float-menu' ),
78 'link' => 'https://demo.wow-estore.com/float-menu-pro/show-after-position/',
79 ],
80
81 'Hide-after-Position_pro' => [
82 'name' => __( ' Hide after Position ', 'float-menu' ),
83 'link' => 'https://demo.wow-estore.com/float-menu-pro/hide-after-position/',
84 ],
85
86 'menu-with-radius_pro' => [
87 'name' => __( 'Menu with Custom Radius', 'float-menu' ),
88 'link' => 'https://demo.wow-estore.com/float-menu-pro/custom-border-radius/',
89 ],
90
91 'horizontal-menu_pro' => [
92 'name' => __( 'Horizontal Menu', 'float-menu' ),
93 'link' => 'https://demo.wow-estore.com/float-menu-pro/horizontal-menu/',
94 ],
95
96
97 'Contact_pro' => [
98 'name' => __( 'Contact', 'float-menu' ),
99 'link' => 'https://demo.wow-estore.com/float-menu-pro/contact/',
100 ],
101 ];
102
103
104 ?>
105
106 <button type="button" class="button" onclick="window.demoUpload.showModal()">
107 <?php esc_html_e( 'Load Example', 'float-menu' ); ?>
108 </button>
109
110 <dialog id="demoUpload" class="wpie-dialog">
111 <button type="button" class="wpie-dialog-close" onclick="window.demoUpload.close()">
112 <span class="wpie-icon wpie_icon-xmark"></span>
113 </button>
114 <table>
115 <thead>
116 <tr>
117 <th>
118 <?php esc_html_e( 'Name', 'float-menu' ); ?>
119 </th>
120 <th>
121 <?php esc_html_e( 'Preview Link', 'float-menu' ); ?>
122 </th>
123 <th>
124 <?php esc_html_e( 'Action', 'float-menu' ); ?>
125 </th>
126 </tr>
127 </thead>
128 <tbody>
129 <?php foreach ( $demo as $file => $item ) : ?>
130 <tr>
131 <td><?php echo esc_html( $item['name'] ); ?></td>
132 <td><a href="<?php echo esc_url( $item['link'] ); ?>"
133 target="_blank"><?php esc_html_e( 'Preview', 'float-menu' ); ?></a></td>
134 <td>
135 <?php if ( strpos( $file, '_pro' ) === false || class_exists( '\FloatMenuLite\WOWP_PRO' ) ) : ?>
136 <button class="wpie-download"
137 data-menu="<?php echo esc_attr( strtolower( $file ) ); ?>">
138 <?php esc_html_e( 'Download', 'float-menu' ); ?>
139 </button>
140 <?php else: ?>
141 <a href="<?php echo esc_url( WOWP_Plugin::info( 'pro' ) ); ?>"
142 class="wpie-pro"><?php esc_html_e( 'Available in Pro', 'float-menu' ); ?></a>
143 <?php endif; ?>
144 </td>
145 </tr>
146 <?php endforeach; ?>
147 </tbody>
148 </table>
149 </dialog>
150
151 <?php
152 }
153
154 public static function upload_demo(): void {
155 $menu = sanitize_key( $_POST['menu'] ?? '' );
156 if ( strpos( $menu, '_pro' ) !== false ) {
157 $demo_path = WOWP_Plugin::dir() . 'includes/pro/demo/' . $menu . '.json';
158 } else {
159 $demo_path = WOWP_Plugin::dir() . 'admin/demo/' . $menu . '.json';
160 }
161
162
163 if ( ! current_user_can( 'manage_options' ) ) {
164 wp_send_json_error( [ 'message' => 'Permission denied' ], 403 );
165 }
166
167 if ( ! isset( $_POST['security'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['security'] ) ), WOWP_Plugin::PREFIX . '_settings' ) ) {
168 wp_send_json_error( [ 'message' => 'Invalid nonce' ], 400 );
169 }
170
171 if ( file_exists( $demo_path ) ) {
172 $settings = wp_json_file_decode( $demo_path );
173 $columns = DBManager::get_columns();
174
175 foreach ( $settings as $key => $val ) {
176 $data = [];
177 $formats = [];
178
179 foreach ( $columns as $column ) {
180 $name = $column->Field;
181
182 $data[ $name ] = ! empty( $val->$name ) ? $val->$name : '';
183
184 if ( $name === 'id' || $name === 'status' || $name === 'mode' ) {
185 $formats[] = '%d';
186 } else {
187 $formats[] = '%s';
188 }
189 }
190
191 $index = array_search( 'id', array_keys( $data ), true );
192 unset( $data['id'], $formats[ $index ] );
193 DBManager::insert( $data, $formats );
194 }
195 }
196
197 wp_send_json_success( [ 'path' => $demo_path ] );
198 }
199
200 }