PluginProbe
WP Coder – Insert & Manage Code Snippets / 4.5.2
WP Coder – Insert & Manage Code Snippets v4.5.2
4.5.2 4.5.1 1.1 2.3.1 2.3.2 2.4.1 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 3.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.1 3.1.1 3.2 3.2.1 3.3 3.4 3.5 All 40 releases
← All changes | includes/class-wowp-dashboard.php +55 -136 3.0 → 4.5.2 View file →
@@ -3,8 +3,9 @@
3 3 namespace WPCoder;
4 4
5 5 use WPCoder\Admin\AdminInitializer;
6 6 use WPCoder\Dashboard\DashboardInitializer;
7 +use WPCoder\Dashboard\ImporterExporter;
7 8
8 9 defined( 'ABSPATH' ) || exit;
9 10
10 11 class WOWP_Dashboard {
@@ -9,15 +10,22 @@
9 10
10 11 class WOWP_Dashboard {
11 12
12 13 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' ] );
14 + add_filter( WPCoder::PREFIX . '_menu_logo', [ $this, 'menu_logo' ] );
15 + add_action( WPCoder::PREFIX . '_admin_load_styles_scripts', [ $this, 'load_styles_scripts' ] );
16 + add_action( WPCoder::PREFIX . '_admin_page', [ $this, 'dashboard' ] );
17 + add_action( WPCoder::PREFIX . '_admin_header_links', [ $this, 'header_links' ] );
18 + add_filter( WPCoder::PREFIX . '_save_settings', [ $this, 'save_settings' ], 10, 2 );
19 + add_filter( WPCoder::PREFIX . '_default_custom_post', [ $this, 'default_custom_post' ] );
20 + AdminInitializer::init();
21 + add_action( 'admin_init', [ ImporterExporter::class, 'export_items' ] );
22 + }
18 23
19 - AdminInitializer::init();
24 + public function menu_logo( $logo ): string {
25 + $logo = '<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><title>code</title><g fill="#212121"><path d="M19.562,18.75c-.69-.862-1.948-1.003-2.811-.312L1.75,30.438c-.474,.379-.75,.954-.75,1.562s.276,1.182,.75,1.562l15,12c.369,.295,.81,.438,1.248,.438,.587,0,1.168-.257,1.563-.75,.69-.863,.55-2.121-.312-2.811l-13.048-10.438,13.048-10.438c.862-.69,1.002-1.948,.312-2.811Z" fill="#212121"></path><path d="M47.25,18.438c-.862-.691-2.121-.55-2.811,.312-.69,.863-.55,2.121,.312,2.811l13.048,10.438-13.048,10.438c-.862,.69-1.002,1.948-.312,2.811,.395,.494,.976,.75,1.563,.75,.438,0,.879-.143,1.248-.438l15-12c.474-.379,.75-.954,.75-1.562s-.276-1.182-.75-1.562l-15-12Z" fill="#212121"></path><path d="M39.539,5.074c-1.063-.298-2.167,.324-2.465,1.387l-14,50c-.298,1.063,.323,2.167,1.387,2.465,.18,.051,.362,.075,.54,.075,.875,0,1.678-.578,1.925-1.461L40.926,7.539c.298-1.063-.323-2.167-1.387-2.465Z" fill="#212121"></path></g></svg>';
26 +
27 + return $logo;
20 28 }
21 29
22 30 public function default_custom_post( $display_def ) {
23 31 if ( str_contains( $display_def, 'custom_post_selected' ) ) {
@@ -32,121 +40,31 @@
32 40
33 41 return $display_def;
34 42 }
35 43
36 - private function allowed_html() {
37 - $tags = wp_kses_allowed_html( 'post' );
38 -
39 - $additional_tags = [
40 - 'input' => [
41 - 'accept',
42 - 'alt',
43 - 'autocomplete',
44 - 'autofocus',
45 - 'checked',
46 - 'dirname',
47 - 'disabled',
48 - 'form',
49 - 'formaction',
50 - 'formenctype',
51 - 'formmethod',
52 - 'formnovalidate',
53 - 'formtarget',
54 - 'height',
55 - 'inputmode',
56 - 'list',
57 - 'max',
58 - 'maxlength',
59 - 'min',
60 - 'minlength',
61 - 'multiple',
62 - 'name',
63 - 'pattern',
64 - 'placeholder',
65 - 'readonly',
66 - 'required',
67 - 'size',
68 - 'src',
69 - 'step',
70 - 'type',
71 - 'value',
72 - 'width'
73 - ],
74 - 'select' => [
75 - 'autofocus',
76 - 'disabled',
77 - 'form',
78 - 'multiple',
79 - 'name',
80 - 'required',
81 - 'size'
82 - ],
83 - 'option' => [
84 - 'disabled',
85 - 'label',
86 - 'selected',
87 - 'value'
88 - ],
89 - 'form' => [
90 - 'action',
91 - 'accept',
92 - 'accept-charset',
93 - 'enctype',
94 - 'method',
95 - 'name',
96 - 'target'
97 - ],
98 - 'iframe' => [
99 - 'align',
100 - 'allow',
101 - 'allowfullscreen',
102 - 'allowpaymentrequest',
103 - 'allowusermedia',
104 - 'csp',
105 - 'height',
106 - 'importance',
107 - 'loading',
108 - 'name',
109 - 'referrerpolicy',
110 - 'sandbox',
111 - 'src',
112 - 'srcdoc',
113 - 'width',
114 - 'frameborder',
115 - 'longdesc',
116 - 'marginheight',
117 - 'marginwidth',
118 - 'scrolling'
119 - ],
120 - ];
121 -
122 - foreach ( $additional_tags as $tag => $attributes ) {
123 - $tags[ $tag ] = array_fill_keys( $attributes, true );
124 - }
125 -
126 - return $tags;
127 - }
128 -
129 44 public function save_settings( $settings, $request ): array {
130 45 $param = ! empty( $request['param'] ) ? map_deep( $request['param'], [ $this, 'sanitize_param' ] ) : [];
131 46
132 - $settings['data']['title'] = ! empty( $request['title'] ) ? sanitize_text_field( wp_unslash( $request['title'] ) ) : '';
133 - $settings['formats'][] = '%s';
134 - $allowed_html = $this->allowed_html();
135 - $settings['data']['html_code'] = ! empty( $request['html_code'] ) ? wp_kses( wp_unslash( $request['html_code'] ),
136 - $allowed_html ) : '';
137 - $settings['formats'][] = '%s';
138 - $settings['data']['css_code'] = ! empty( $request['css_code'] ) ? wp_kses_post( wp_unslash( $request['css_code'] ) ) : '';
139 - $settings['formats'][] = '%s';
140 - $settings['data']['js_code'] = ! empty( $request['js_code'] ) ? wp_kses_post( wp_unslash( $request['js_code'] ) ) : '';
141 - $settings['formats'][] = '%s';
142 - $settings['data']['status'] = ! empty( $request['status'] ) ? sanitize_textarea_field( wp_unslash( $request['status'] ) ) : '';
143 - $settings['formats'][] = '%d';
144 - $settings['data']['mode'] = ! empty( $request['mode'] ) ? sanitize_textarea_field( wp_unslash( $request['mode'] ) ) : '';
145 - $settings['formats'][] = '%d';
146 - $settings['data']['tag'] = ! empty( $request['tag'] ) ? sanitize_textarea_field( wp_unslash( $request['tag'] ) ) : '';
147 - $settings['formats'][] = '%s';
47 + $settings['data']['title'] = ! empty( $request['title'] ) ? sanitize_text_field( wp_unslash( $request['title'] ) ) : '';
48 + $settings['formats'][] = '%s';
49 + $settings['data']['html_code'] = ! empty( $request['html_code'] ) ? wp_unslash( $request['html_code'] ) : '';
50 + $settings['formats'][] = '%s';
51 + $settings['data']['css_code'] = ! empty( $request['css_code'] ) ? wp_unslash( $request['css_code'] ) : '';
52 + $settings['formats'][] = '%s';
53 + $settings['data']['js_code'] = ! empty( $request['js_code'] ) ? wp_unslash( $request['js_code'] ) : '';
54 + $settings['formats'][] = '%s';
55 + $settings['data']['php_code'] = ! empty( $request['php_code'] ) ? wp_unslash( $request['php_code'] ) : '';
56 + $settings['formats'][] = '%s';
57 + $settings['data']['status'] = ! empty( $request['status'] ) ? sanitize_textarea_field( wp_unslash( $request['status'] ) ) : '';
58 + $settings['formats'][] = '%d';
59 + $settings['data']['mode'] = ! empty( $request['mode'] ) ? sanitize_textarea_field( wp_unslash( $request['mode'] ) ) : '';
60 + $settings['formats'][] = '%d';
61 + $settings['data']['tag'] = ! empty( $request['tag'] ) ? sanitize_textarea_field( wp_unslash( $request['tag'] ) ) : '';
62 + $settings['formats'][] = '%s';
63 + $settings['data']['php_include'] = ! empty( $request['php_include'] ) ? sanitize_textarea_field( wp_unslash( $request['php_include'] ) ) : '';
64 + $settings['formats'][] = '%d';
148 65
66 +
149 67 if ( ! empty( $request['param']['include_file'] ) ) {
150 68 $param['include_file'] = ! empty( $request['param']['include_file'] ) ? map_deep( $request['param']['include_file'],
151 69 'esc_url' ) : [];
152 70 }
@@ -161,23 +79,28 @@
161 79 return wp_unslash( sanitize_text_field( $value ) );
162 80 }
163 81
164 82 public function load_styles_scripts(): void {
165 - $assets_url = WOW_Plugin::url() . 'assets/';
166 - $version = WOW_Plugin::VERSION;
167 - $slug = WOW_Plugin::SLUG;
83 + $assets_url = WPCoder::url() . 'assets/';
84 + $version = WPCoder::info( 'version' );
85 + $slug = WPCoder::SLUG;
168 86
87 + wp_enqueue_style( $slug . '-icons', $assets_url . 'icons/css/icons.css', null, $version );
169 88 wp_enqueue_style( $slug . '-admin', $assets_url . 'css/admin.css', null, $version );
170 89
171 - wp_enqueue_style( $slug . '-admin-icons', $assets_url . 'icons/wowpicon/css/style.css', null, $version );
172 -
173 90 wp_enqueue_script( 'code-editor' );
174 91 wp_enqueue_style( 'code-editor' );
175 92 wp_enqueue_script( 'htmlhint' );
176 93 wp_enqueue_script( 'csslint' );
177 94 wp_enqueue_script( 'jshint' );
95 + wp_enqueue_style( 'thickbox' );
96 + wp_enqueue_script( 'thickbox' );
178 97
98 + wp_enqueue_media();
99 +
179 100 wp_enqueue_script( $slug . '-admin', $assets_url . 'js/admin.js', array( 'jquery' ), $version );
101 +
102 + wp_enqueue_script( $slug . '-admin-jquery', $assets_url . 'js/admin-jquery.js', array( 'jquery' ), $version );
180 103 }
181 104
182 105 public function dashboard(): void {
183 106 DashboardInitializer::init();
@@ -184,27 +107,23 @@
184 107 }
185 108
186 109
187 110 public function header_links(): void {
188 - $logo = WOW_Plugin::url() . 'assets/img/wow-icon.png';
189 111 ?>
190 - <div class="wowp-links">
191 - <a href="https://wow-estore.com/" target="_blank">
192 - <img src="<?php
193 - echo esc_url( $logo ); ?>" alt="Logo Wow-Estore.com">
194 - <span>Wow-Estore</span>
195 - </a>
196 - <a href="https://wow-estore.com/guides/wp-coder/" target="_blank">
197 - <span class="dashicons dashicons-book-alt"></span>
198 - <span>Docs</span>
199 - </a>
200 - <a href="https://wordpress.org/support/plugin/wp-coder/reviews/" target="_blank">
201 - <span class="dashicons dashicons-star-filled"></span>
202 - <span>Reviews</span>
203 - </a>
204 - </div>
205 112
113 + <a href="https://wpcoder.pro/category/documentation/?utm_source=wordpress&utm_medium=admin-menu&utm_campaign=documentation"
114 + class="wowp-button button button-secondary">
115 + <span class="dashicons dashicons-book-alt"></span> Documentation
116 + </a>
117 + <a href="https://wordpress.org/support/plugin/wp-coder/reviews/" class="wowp-button button button-secondary">
118 + <span class="dashicons dashicons-star-filled"></span> Reviews
119 + </a>
120 +
121 + <a href="https://wpcoder.pro/" target="_blank"
122 + class="wowp-button button button-dark">
123 + <span>⭐</span> See PRO Features
124 + </a>
206 125 <?php
207 126 }
208 127
209 128
210 129 }