White Label CMS - Version 2.3

Version Description

  • Improved: Hiding of Dashboard Widgets. Props to @tanohex
  • Bug Fix: Fixed hiding WooCommerce Home

=

Download this release

Release Info

Developer VideoUserManuals
Plugin Icon 128x128 White Label CMS
Version 2.3
Comparing to
See all releases

Code changes from version 2.2.6 to 2.3

changelog.txt CHANGED
@@ -1,5 +1,18 @@
1
  == Changelog ==
2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  = 2.2.5 =
4
  * Fixed WooCommerce Home issue
5
  * Fixed Yoast Menu issue reported by @davidbawiec
1
  == Changelog ==
2
 
3
+ = 2.2.9 =
4
+ * Improved: Plugin security. Thanks to Krzysztof Zając and WPScan
5
+ * Improved: Custom Dashboard for HTML wrapper justify-content
6
+
7
+ = 2.2.8 =
8
+ * Improved: Plugin security. Thanks to Erwan of WPScan
9
+
10
+ = 2.2.7 =
11
+ * Fixed Custom Welcome Dashboard Panel on WordPress 5.9
12
+
13
+ = 2.2.6 =
14
+ * Fixed WooCommerce Analytics reported by @evaldash
15
+
16
  = 2.2.5 =
17
  * Fixed WooCommerce Home issue
18
  * Fixed Yoast Menu issue reported by @davidbawiec
includes/Functions.php CHANGED
@@ -8,8 +8,14 @@ if (!function_exists('wlcms_field_setting')) {
8
  }
9
  }
10
 
11
- $value = wlcms()->Settings()->get($key, $default);
12
- return $value;
 
 
 
 
 
 
13
  }
14
  }
15
 
8
  }
9
  }
10
 
11
+ return wlcms_db_field_setting($key, $default);
12
+ }
13
+ }
14
+
15
+ if (!function_exists('wlcms_db_field_setting')) {
16
+ function wlcms_db_field_setting($key = "", $default = false)
17
+ {
18
+ return wlcms()->Settings()->get($key, $default);
19
  }
20
  }
21
 
includes/classes/Admin_Dashboard.php CHANGED
@@ -4,11 +4,6 @@ class WLCMS_Admin_Dashboard extends WLCMS_Previewable
4
  {
5
 
6
  private $is_dashboard_all_hidden;
7
- private $is_fullwidth;
8
- private $welcome_title;
9
- private $welcome_show_title;
10
- private $welcome_description;
11
- private $welcome_content;
12
 
13
  public function __construct()
14
  {
@@ -66,7 +61,7 @@ class WLCMS_Admin_Dashboard extends WLCMS_Previewable
66
  wlcms_set_css( '.wlcms-welcome-panel .welcome-panel-content > h2',
67
  array(
68
  'width' => '95%',
69
- 'padding' => '21px'
70
  )
71
  );
72
  wlcms_set_css( '.wlcms-welcome-panel .wlcms-welcome-content',
@@ -77,7 +72,9 @@ class WLCMS_Admin_Dashboard extends WLCMS_Previewable
77
  wlcms_set_css( '.wlcms-welcome-panel .welcome-panel-content',
78
  array(
79
  'max-width' => 'none!important',
80
- 'margin-left' => '0!important'
 
 
81
  )
82
  );
83
 
@@ -88,8 +85,40 @@ class WLCMS_Admin_Dashboard extends WLCMS_Previewable
88
  )
89
  );
90
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
91
  wlcms_set_css( '.wlcms-welcome-panel, .wlcms-welcome-panel .welcome-panel-content', array(
92
- 'padding' => '0!important',
 
 
 
 
93
  ));
94
  wlcms_set_css( '.wlcms-welcome-panel .welcome-panel-close',
95
  array(
@@ -97,6 +126,13 @@ class WLCMS_Admin_Dashboard extends WLCMS_Previewable
97
  'right' => '0!important',
98
  'background' => 'white!important',
99
  'z-index' => '1000',
 
 
 
 
 
 
 
100
  )
101
  );
102
  }
@@ -150,58 +186,55 @@ class WLCMS_Admin_Dashboard extends WLCMS_Previewable
150
  {
151
  global $wp_meta_boxes;
152
 
153
- if ($this->is_dashboard_all_hidden() && ($this->get_settings('hide_at_a_glance') &&
154
- $this->get_settings('hide_activities') &&
155
- $this->get_settings('hide_recent_comments') &&
156
- $this->get_settings('hide_news_and_events') &&
157
- $this->get_settings('hide_quick_press'))) {
158
-
159
- if (isset($wp_meta_boxes['dashboard'])) :
160
- foreach ($wp_meta_boxes['dashboard'] as $key => $widget) {
161
-
162
- if (isset($wp_meta_boxes['dashboard'][$key]['core'])) :
163
- foreach ($wp_meta_boxes['dashboard'][$key]['core'] as $dashboard_key => $dashboard) {
164
- if ($this->remove_dashboard_widget($dashboard_key)) {
165
- unset($wp_meta_boxes['dashboard'][$key]['core'][$dashboard_key]);
 
 
 
 
 
 
 
 
 
 
 
 
166
  }
 
167
  }
168
- endif;
169
  }
170
- endif;
171
- return;
172
- }
173
-
174
- if ($this->get_settings('hide_at_a_glance')) {
175
- unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_right_now']);
176
- }
177
-
178
- if ($this->get_settings('hide_activities')) {
179
- unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_activity']);
180
- }
181
-
182
- if ($this->get_settings('hide_recent_comments')) {
183
- unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_recent_comments']);
184
  }
 
185
 
186
- if ($this->get_settings('hide_news_and_events')) {
187
- unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']);
 
 
188
  }
189
 
190
- if ($this->get_settings('hide_quick_press')) {
191
- unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_quick_press']);
192
  }
193
- }
194
- private function remove_dashboard_widget($dashboard_key = false)
195
- {
196
- if (!$dashboard_key) return false;
197
 
198
- if (strpos($dashboard_key, 'custom_help_widget') !== false) return false;
199
-
200
- return !in_array($dashboard_key, $this->excluded_widgets());
201
  }
 
202
  private function excluded_widgets()
203
  {
204
- return array('wlcms_rss_box');
205
  }
206
 
207
  /**
@@ -293,7 +326,7 @@ class WLCMS_Admin_Dashboard extends WLCMS_Previewable
293
  return;
294
  }
295
 
296
- wlcms_set_css('.postbox-container .meta-box-sortables.empty-container, .index-php .empty-container', array('border' => '0'));
297
  }
298
 
299
  /**
@@ -440,4 +473,24 @@ class WLCMS_Admin_Dashboard extends WLCMS_Previewable
440
 
441
  WLCMS_Queue('Welcome dashboard message successfully reset.');
442
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
443
  }
4
  {
5
 
6
  private $is_dashboard_all_hidden;
 
 
 
 
 
7
 
8
  public function __construct()
9
  {
61
  wlcms_set_css( '.wlcms-welcome-panel .welcome-panel-content > h2',
62
  array(
63
  'width' => '95%',
64
+ 'padding' => '0 21px'
65
  )
66
  );
67
  wlcms_set_css( '.wlcms-welcome-panel .wlcms-welcome-content',
72
  wlcms_set_css( '.wlcms-welcome-panel .welcome-panel-content',
73
  array(
74
  'max-width' => 'none!important',
75
+ 'margin-left' => '0!important',
76
+ 'justify-content' => 'flex-start',
77
+ 'min-height' => 'auto'
78
  )
79
  );
80
 
85
  )
86
  );
87
 
88
+ wlcms_set_css( '.wlcms-welcome-panel', array(
89
+ 'position' => 'relative',
90
+ "border"=>"1px solid #c3c4c7",
91
+ "box-shadow"=>"0 1px 1px rgb(0 0 0 / 4%)",
92
+ "background"=>"#fff",
93
+ "font-size"=>"13px",
94
+ "line-height"=>"1.7",
95
+ "margin" => "16px 0"
96
+ ));
97
+
98
+ wlcms_set_css( '.wlcms-welcome-panel .welcome-panel-close:before', array(
99
+ "background"=>"0 0",
100
+ "color"=>"#787c82",
101
+ "content"=>'"\f153"',
102
+ "display"=>"block",
103
+ "font"=>"normal 16px/20px dashicons",
104
+ "speak"=>"never",
105
+ "height"=>"20px",
106
+ "text-align"=>"center",
107
+ "width"=>"20px",
108
+ "-webkit-font-smoothing"=>"antialiased",
109
+ "-moz-osx-font-smoothing"=>"grayscale",
110
+ "position"=>"absolute",
111
+ "top"=>"8px",
112
+ "left"=>"0",
113
+ "transition"=>"all .1s ease-in-out",
114
+ ));
115
+
116
  wlcms_set_css( '.wlcms-welcome-panel, .wlcms-welcome-panel .welcome-panel-content', array(
117
+ 'padding' => '0!important',
118
+ ));
119
+
120
+ wlcms_set_css( '.wlcms-welcome-panel a', array(
121
+ "color"=>"#2271b1",
122
  ));
123
  wlcms_set_css( '.wlcms-welcome-panel .welcome-panel-close',
124
  array(
126
  'right' => '0!important',
127
  'background' => 'white!important',
128
  'z-index' => '1000',
129
+ "position"=>"absolute",
130
+ "top"=>"0",
131
+ "right"=>"0",
132
+ "padding"=>"10px 15px 10px 24px",
133
+ "font-size"=>"13px",
134
+ "line-height"=>"1.23076923",
135
+ "text-decoration"=>"none"
136
  )
137
  );
138
  }
186
  {
187
  global $wp_meta_boxes;
188
 
189
+ $wlcms_widgets = $this->get_settings('dashboard_widgets');
190
+
191
+ if (!(isset($wp_meta_boxes['dashboard']) && is_array($wp_meta_boxes['dashboard']))) {
192
+ return;
193
+ }
194
+
195
+ foreach ($wp_meta_boxes['dashboard'] as $section_key => $section) {
196
+ if (!is_array($section)) {
197
+ continue;
198
+ }
199
+ foreach ( $section as $position_key => $position ) {
200
+ if (!is_array($position)) {
201
+ continue;
202
+ }
203
+ foreach ( $position as $widget_id => $widget ) {
204
+ if ($this->is_wlcms_widget($widget_id)) {
205
+ continue;
206
+ }elseif (!$this->is_dashboard_all_hidden()) {
207
+ if($wlcms_widgets && is_array($wlcms_widgets) && count($wlcms_widgets) > 0){
208
+ if (!in_array($widget_id, $wlcms_widgets)) {
209
+ continue;
210
+ }
211
+ } else {
212
+ continue;
213
+ }
214
  }
215
+ unset($wp_meta_boxes['dashboard'][$section_key][$position_key][$widget_id]);
216
  }
217
+
218
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
219
  }
220
+ }
221
 
222
+ private function is_wlcms_widget($dashboard_key = false)
223
+ {
224
+ if (!$dashboard_key){
225
+ return false;
226
  }
227
 
228
+ if (strpos($dashboard_key, 'custom_vum_widget') !== false) {
229
+ return true;
230
  }
 
 
 
 
231
 
232
+ return in_array($dashboard_key, $this->excluded_widgets());
 
 
233
  }
234
+
235
  private function excluded_widgets()
236
  {
237
+ return apply_filters('wlcms_exclude_dashboard_metaboxes', array('wlcms_rss_box'));
238
  }
239
 
240
  /**
326
  return;
327
  }
328
 
329
+ wlcms_set_css('body.index-php #dashboard-widgets .postbox-container .empty-container', array('border' => '0', 'visibility' => 'hidden'));
330
  }
331
 
332
  /**
473
 
474
  WLCMS_Queue('Welcome dashboard message successfully reset.');
475
  }
476
+
477
+ public function widgets()
478
+ {
479
+ global $wp_meta_boxes;
480
+
481
+ if (isset( $wp_meta_boxes['dashboard'] ) && is_array( $wp_meta_boxes['dashboard'])) {
482
+ return $wp_meta_boxes['dashboard'];
483
+ }
484
+
485
+ require_once ABSPATH . '/wp-admin/includes/dashboard.php';
486
+
487
+ set_current_screen( 'dashboard' );
488
+ //remove wlcms hook
489
+ remove_action('wp_dashboard_setup', array($this, 'dashboard_setup'), 999);
490
+ wp_dashboard_setup();
491
+ //re-apply wlcms hook
492
+ add_action('wp_dashboard_setup', array($this, 'dashboard_setup'), 999);
493
+ set_current_screen( get_current_screen() );
494
+ return $wp_meta_boxes['dashboard'];
495
+ }
496
  }
includes/classes/Admin_Menus.php CHANGED
@@ -388,6 +388,7 @@ class WLCMS_Admin_Menus
388
  {
389
  global $submenu;
390
 
 
391
  if (!isset($submenu) || !$this->hide_woo_home) {
392
  return false;
393
  }
@@ -404,9 +405,14 @@ class WLCMS_Admin_Menus
404
  if($count == 0) {
405
  wlcms_set_hidden_css('li.toplevel_page_woocommerce');
406
  }
 
407
 
408
  $submenu['woocommerce'] = array_values($submenu['woocommerce']);
 
 
409
  $submenu['woocommerce'][$count] = $home;
 
 
410
  }
411
 
412
  public function fix_yoast($sub)
388
  {
389
  global $submenu;
390
 
391
+
392
  if (!isset($submenu) || !$this->hide_woo_home) {
393
  return false;
394
  }
405
  if($count == 0) {
406
  wlcms_set_hidden_css('li.toplevel_page_woocommerce');
407
  }
408
+
409
 
410
  $submenu['woocommerce'] = array_values($submenu['woocommerce']);
411
+ $home[0] = '';
412
+ $home[3] = '';
413
  $submenu['woocommerce'][$count] = $home;
414
+
415
+ wlcms_set_hidden_css('li.toplevel_page_woocommerce li > a:empty');
416
  }
417
 
418
  public function fix_yoast($sub)
includes/classes/Login.php CHANGED
@@ -9,6 +9,7 @@ class WLCMS_Login extends WLCMS_Previewable
9
  $this->check_preview();
10
 
11
  add_action('login_footer', array($this, 'scripts'), 1000);
 
12
 
13
  add_action('wlcms_before_save_preview', array($this, 'save_preview_login'), 10, 2);
14
  add_action('wlcms_save_addtional_settings', array($this, 'save_preview_login'), 10, 2);
@@ -19,6 +20,26 @@ class WLCMS_Login extends WLCMS_Previewable
19
  add_filter('wlcms_setting_fields', array($this, 'setting_fields'), 11, 1);
20
  }
21
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22
  public function save_preview_login($setting, $placeholder)
23
  {
24
  // ignore if it has width or height request
@@ -72,7 +93,7 @@ class WLCMS_Login extends WLCMS_Previewable
72
  private function get_js()
73
  {
74
  $js = 'jQuery("#login").wrap("<div id=\'wlcms-login-wrapper\'></div>");';
75
- if ($this->get_settings('login_logo')) {
76
  $js .= ';jQuery(\'#login h1 a\').attr(\'title\',\'' . get_bloginfo('name') . '\');jQuery(\'#login h1 a\').attr(\'href\',\'' . get_bloginfo('url') . '\');';
77
  }
78
  return $js;
@@ -81,12 +102,12 @@ class WLCMS_Login extends WLCMS_Previewable
81
  private function set_logo_css()
82
  {
83
  $logo_css = '#login h1 a, .login h1 a { ';
84
- if ($login_logo = $this->get_settings('login_logo')) {
85
  $logo_css .= 'background-image: url(' . $login_logo . ');';
86
  }
87
 
88
  $has_width = false;
89
- if ($logo_width = $this->get_settings('logo_width')) {
90
  $logo_css .= 'width:' . wlcms_css_metrics($logo_width) . ';';
91
  $has_width = true;
92
  } else {
@@ -97,7 +118,7 @@ class WLCMS_Login extends WLCMS_Previewable
97
  $logo_css .= 'max-width:100%;';
98
 
99
  $has_height = false;
100
- if ($logo_height = $this->get_settings('logo_height')) {
101
  $has_height = true;
102
  $logo_css .= 'height:' . wlcms_css_metrics($logo_height) . ';';
103
  }
@@ -109,13 +130,13 @@ class WLCMS_Login extends WLCMS_Previewable
109
  }
110
  $logo_css .= $logo_css_background_size;
111
 
112
- if ($logo_bottom_margin = $this->get_settings('logo_bottom_margin')) {
113
  $logo_css .= 'margin-bottom: ' . $logo_bottom_margin . 'px!important;';
114
  }
115
 
116
  $logo_css .= '}'; // close #login h1 a, .login h1 a
117
 
118
- if ($retina_login_logo = $this->get_settings('retina_login_logo')) {
119
  $logo_css .= '@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
120
  #login h1 a, .login h1 a { background-image: url(' . $retina_login_logo . ');}
121
  }';
@@ -129,26 +150,26 @@ class WLCMS_Login extends WLCMS_Previewable
129
  {
130
  $body_login = 'body.login{';
131
 
132
- if ($this->get_settings('full_screen_background_image')) {
133
  $body_login .= '-webkit-background-size: cover !important;';
134
  $body_login .= '-moz-background-size: cover !important;';
135
  $body_login .= '-o-background-size: cover !important;';
136
  $body_login .= 'background-size: cover !important;';
137
  }
138
 
139
- if ($background_color = $this->get_settings('background_color')) {
140
  $body_login .= 'background-color:' . $background_color . '!important;';
141
  }
142
 
143
- if ($background_image = $this->get_settings('background_image')) {
144
  $body_login .= 'background-image: url(' . $background_image . ');';
145
  }
146
 
147
- if ($background_positions = $this->get_settings('background_positions')) {
148
  $body_login .= 'background-position:' . $background_positions . ';';
149
  }
150
 
151
- if ($background_repeat = $this->get_settings('background_repeat')) {
152
  $body_login .= 'background-repeat:' . $background_repeat . ';';
153
  }
154
 
@@ -161,19 +182,19 @@ class WLCMS_Login extends WLCMS_Previewable
161
  {
162
  $form_css = '';
163
 
164
- if ($form_label_color = $this->get_settings('form_label_color')) {
165
  $form_css .= '#loginform label{ color:' . $form_label_color . '}';
166
  }
167
 
168
- if ($form_background_color = $this->get_settings('form_background_color')) {
169
  $form_css .= '#loginform{ background-color:' . $form_background_color . '}';
170
  }
171
 
172
  /**
173
  * Submit Button css
174
  */
175
- $form_button_text_color = $this->get_settings('form_button_text_color');
176
- $form_button_color = $this->get_settings('form_button_color');
177
 
178
  if ($form_button_text_color || $form_button_color) {
179
  $form_css .= '#loginform input[type=submit],#loginform .submit input[type=button]{ ';
@@ -194,8 +215,8 @@ class WLCMS_Login extends WLCMS_Previewable
194
  /**
195
  * Submit Button Hover
196
  */
197
- $form_button_text_hover_color = $this->get_settings('form_button_text_hover_color');
198
- $form_button_hover_color = $this->get_settings('form_button_hover_color');
199
 
200
  if ($form_button_hover_color || $form_button_text_hover_color) {
201
  $form_css .= '#loginform input[type=submit]:hover,#loginform .submit input[type=button]:hover{ ';
@@ -216,27 +237,27 @@ class WLCMS_Login extends WLCMS_Previewable
216
  private function set_links_css()
217
  {
218
  $form_css = '';
219
- if ($this->get_settings('hide_register_lost_password')) {
220
  $form_css .= 'p#nav{display:none;}';
221
  }
222
 
223
- if ($this->get_settings('hide_back_to_link')) {
224
  $form_css .= 'p#backtoblog{display:none;}';
225
  }
226
 
227
- if ($back_to_register_link_color = $this->get_settings('back_to_register_link_color')) {
228
  $form_css .= 'p#backtoblog a, p#nav a{color:' . $back_to_register_link_color . '!important;}';
229
  }
230
 
231
- if ($back_to_register_link_hover_color = $this->get_settings('back_to_register_link_hover_color')) {
232
  $form_css .= 'p#backtoblog a:hover, p#nav a:hover{color:' . $back_to_register_link_hover_color . '!important;}';
233
  }
234
 
235
- if ($privacy_policy_link_color = $this->get_settings('privacy_policy_link_color')) {
236
  $form_css .= 'a.privacy-policy-link{color:' . $privacy_policy_link_color . '!important;text-decoration:none}';
237
  }
238
 
239
- if ($privacy_policy_link_hover_color = $this->get_settings('privacy_policy_link_hover_color')) {
240
  $form_css .= 'a.privacy-policy-link:hover{color:' . $privacy_policy_link_hover_color . '!important;}';
241
  }
242
 
@@ -245,7 +266,7 @@ class WLCMS_Login extends WLCMS_Previewable
245
 
246
  private function set_custom_css()
247
  {
248
- $content = $this->get_settings('login_custom_css');
249
 
250
  $content = wp_kses( $content, array( '\'', '\"' ) );
251
  $content = str_replace( '&gt;', '>', $content );
@@ -254,8 +275,9 @@ class WLCMS_Login extends WLCMS_Previewable
254
 
255
  private function set_custom_login_js()
256
  {
257
- return wlcms_esc_html_e($this->get_settings('login_custom_js'));
258
  }
 
259
  public function settings()
260
  {
261
  if ($this->saving_preview_section() == 'wizard') {
9
  $this->check_preview();
10
 
11
  add_action('login_footer', array($this, 'scripts'), 1000);
12
+ add_action('init', array($this, 'preview_init'));
13
 
14
  add_action('wlcms_before_save_preview', array($this, 'save_preview_login'), 10, 2);
15
  add_action('wlcms_save_addtional_settings', array($this, 'save_preview_login'), 10, 2);
20
  add_filter('wlcms_setting_fields', array($this, 'setting_fields'), 11, 1);
21
  }
22
 
23
+
24
+ public function preview_init()
25
+ {
26
+
27
+ if (!isset($_GET['wlcms-action'])) {
28
+ return;
29
+ }
30
+
31
+ if ($_GET['wlcms-action'] != 'preview') {
32
+ return;
33
+ }
34
+
35
+ if (current_user_can('manage_options')) {
36
+ return;
37
+ }
38
+
39
+ wp_die( __( 'Sorry, you are not allowed to do this action.' ) );
40
+
41
+ }
42
+
43
  public function save_preview_login($setting, $placeholder)
44
  {
45
  // ignore if it has width or height request
93
  private function get_js()
94
  {
95
  $js = 'jQuery("#login").wrap("<div id=\'wlcms-login-wrapper\'></div>");';
96
+ if ($this->get_db_setting('login_logo')) {
97
  $js .= ';jQuery(\'#login h1 a\').attr(\'title\',\'' . get_bloginfo('name') . '\');jQuery(\'#login h1 a\').attr(\'href\',\'' . get_bloginfo('url') . '\');';
98
  }
99
  return $js;
102
  private function set_logo_css()
103
  {
104
  $logo_css = '#login h1 a, .login h1 a { ';
105
+ if ($login_logo = $this->get_db_setting('login_logo')) {
106
  $logo_css .= 'background-image: url(' . $login_logo . ');';
107
  }
108
 
109
  $has_width = false;
110
+ if ($logo_width = $this->get_db_setting('logo_width')) {
111
  $logo_css .= 'width:' . wlcms_css_metrics($logo_width) . ';';
112
  $has_width = true;
113
  } else {
118
  $logo_css .= 'max-width:100%;';
119
 
120
  $has_height = false;
121
+ if ($logo_height = $this->get_db_setting('logo_height')) {
122
  $has_height = true;
123
  $logo_css .= 'height:' . wlcms_css_metrics($logo_height) . ';';
124
  }
130
  }
131
  $logo_css .= $logo_css_background_size;
132
 
133
+ if ($logo_bottom_margin = $this->get_db_setting('logo_bottom_margin')) {
134
  $logo_css .= 'margin-bottom: ' . $logo_bottom_margin . 'px!important;';
135
  }
136
 
137
  $logo_css .= '}'; // close #login h1 a, .login h1 a
138
 
139
+ if ($retina_login_logo = $this->get_db_setting('retina_login_logo')) {
140
  $logo_css .= '@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
141
  #login h1 a, .login h1 a { background-image: url(' . $retina_login_logo . ');}
142
  }';
150
  {
151
  $body_login = 'body.login{';
152
 
153
+ if ($this->get_db_setting('full_screen_background_image')) {
154
  $body_login .= '-webkit-background-size: cover !important;';
155
  $body_login .= '-moz-background-size: cover !important;';
156
  $body_login .= '-o-background-size: cover !important;';
157
  $body_login .= 'background-size: cover !important;';
158
  }
159
 
160
+ if ($background_color = $this->get_db_setting('background_color')) {
161
  $body_login .= 'background-color:' . $background_color . '!important;';
162
  }
163
 
164
+ if ($background_image = $this->get_db_setting('background_image')) {
165
  $body_login .= 'background-image: url(' . $background_image . ');';
166
  }
167
 
168
+ if ($background_positions = $this->get_db_setting('background_positions')) {
169
  $body_login .= 'background-position:' . $background_positions . ';';
170
  }
171
 
172
+ if ($background_repeat = $this->get_db_setting('background_repeat')) {
173
  $body_login .= 'background-repeat:' . $background_repeat . ';';
174
  }
175
 
182
  {
183
  $form_css = '';
184
 
185
+ if ($form_label_color = $this->get_db_setting('form_label_color')) {
186
  $form_css .= '#loginform label{ color:' . $form_label_color . '}';
187
  }
188
 
189
+ if ($form_background_color = $this->get_db_setting('form_background_color')) {
190
  $form_css .= '#loginform{ background-color:' . $form_background_color . '}';
191
  }
192
 
193
  /**
194
  * Submit Button css
195
  */
196
+ $form_button_text_color = $this->get_db_setting('form_button_text_color');
197
+ $form_button_color = $this->get_db_setting('form_button_color');
198
 
199
  if ($form_button_text_color || $form_button_color) {
200
  $form_css .= '#loginform input[type=submit],#loginform .submit input[type=button]{ ';
215
  /**
216
  * Submit Button Hover
217
  */
218
+ $form_button_text_hover_color = $this->get_db_setting('form_button_text_hover_color');
219
+ $form_button_hover_color = $this->get_db_setting('form_button_hover_color');
220
 
221
  if ($form_button_hover_color || $form_button_text_hover_color) {
222
  $form_css .= '#loginform input[type=submit]:hover,#loginform .submit input[type=button]:hover{ ';
237
  private function set_links_css()
238
  {
239
  $form_css = '';
240
+ if ($this->get_db_setting('hide_register_lost_password')) {
241
  $form_css .= 'p#nav{display:none;}';
242
  }
243
 
244
+ if ($this->get_db_setting('hide_back_to_link')) {
245
  $form_css .= 'p#backtoblog{display:none;}';
246
  }
247
 
248
+ if ($back_to_register_link_color = $this->get_db_setting('back_to_register_link_color')) {
249
  $form_css .= 'p#backtoblog a, p#nav a{color:' . $back_to_register_link_color . '!important;}';
250
  }
251
 
252
+ if ($back_to_register_link_hover_color = $this->get_db_setting('back_to_register_link_hover_color')) {
253
  $form_css .= 'p#backtoblog a:hover, p#nav a:hover{color:' . $back_to_register_link_hover_color . '!important;}';
254
  }
255
 
256
+ if ($privacy_policy_link_color = $this->get_db_setting('privacy_policy_link_color')) {
257
  $form_css .= 'a.privacy-policy-link{color:' . $privacy_policy_link_color . '!important;text-decoration:none}';
258
  }
259
 
260
+ if ($privacy_policy_link_hover_color = $this->get_db_setting('privacy_policy_link_hover_color')) {
261
  $form_css .= 'a.privacy-policy-link:hover{color:' . $privacy_policy_link_hover_color . '!important;}';
262
  }
263
 
266
 
267
  private function set_custom_css()
268
  {
269
+ $content = $this->get_db_setting('login_custom_css');
270
 
271
  $content = wp_kses( $content, array( '\'', '\"' ) );
272
  $content = str_replace( '&gt;', '>', $content );
275
 
276
  private function set_custom_login_js()
277
  {
278
+ return wlcms_esc_html_e($this->get_db_setting('login_custom_js'));
279
  }
280
+
281
  public function settings()
282
  {
283
  if ($this->saving_preview_section() == 'wizard') {
includes/classes/Previewable.php CHANGED
@@ -55,13 +55,29 @@ class WLCMS_Previewable
55
  return $this->preview_section;
56
  }
57
 
 
 
 
 
58
  public function get_settings($key)
59
  {
60
  // Prepend "_" placeholder if in preview mode to get the preview login settings
 
 
 
 
 
 
 
61
  if ($this->is_preview) {
62
  $key = $this->preview_setting_key_placeholder . $key;
63
  }
 
 
 
64
 
65
- return wlcms_field_setting($key);
 
 
66
  }
67
  }
55
  return $this->preview_section;
56
  }
57
 
58
+ public function settings() {
59
+ return [];
60
+ }
61
+
62
  public function get_settings($key)
63
  {
64
  // Prepend "_" placeholder if in preview mode to get the preview login settings
65
+ $key = $this->setting_key($key);
66
+
67
+ return wlcms_field_setting($key);
68
+ }
69
+
70
+ public function setting_key($key)
71
+ {
72
  if ($this->is_preview) {
73
  $key = $this->preview_setting_key_placeholder . $key;
74
  }
75
+
76
+ return $key;
77
+ }
78
 
79
+ public function get_db_setting($key)
80
+ {
81
+ return wlcms_db_field_setting($this->setting_key($key));
82
  }
83
  }
includes/classes/Settings.php CHANGED
@@ -310,7 +310,7 @@ class WLCMS_Settings
310
  $settings = $this->default_options();
311
  return isset($settings[$key]) ? $settings[$key] : null;
312
  }
313
-
314
  public function default_options()
315
  {
316
 
@@ -342,6 +342,7 @@ class WLCMS_Settings
342
  'dashboard_title' => 'Dashboard',
343
  'dashboard_role_stat' => false,
344
  'dashboard_widgets_visibility_roles' => array('administrator', 'editor', 'author', 'contributor', 'subscriber'),
 
345
  'hide_all_dashboard_panels' => false,
346
  'hide_at_a_glance' => false,
347
  'hide_activities' => false,
310
  $settings = $this->default_options();
311
  return isset($settings[$key]) ? $settings[$key] : null;
312
  }
313
+
314
  public function default_options()
315
  {
316
 
342
  'dashboard_title' => 'Dashboard',
343
  'dashboard_role_stat' => false,
344
  'dashboard_widgets_visibility_roles' => array('administrator', 'editor', 'author', 'contributor', 'subscriber'),
345
+ 'dashboard_widgets' => array(),
346
  'hide_all_dashboard_panels' => false,
347
  'hide_at_a_glance' => false,
348
  'hide_activities' => false,
includes/classes/Upgrade.php CHANGED
@@ -19,7 +19,51 @@ class WLCMS_Upgrades
19
  global $wpdb;
20
 
21
  $this->settings = wlcms()->Settings();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22
 
 
 
 
23
  $legacy_version = get_option('wlcms_o_ver', false);
24
 
25
  if (!$legacy_version) {
@@ -27,6 +71,8 @@ class WLCMS_Upgrades
27
  }
28
 
29
  $new_wlcms_options = get_option('wlcms_options', false);
 
 
30
  if ($legacy_version && $new_wlcms_options) {
31
  return;
32
  }
@@ -217,16 +263,6 @@ class WLCMS_Upgrades
217
  $url = 'themes.php';
218
  $count_sub_menus = 0;
219
 
220
- /*
221
- 'wlcms_o_hide_links', //////
222
- 'wlcms_o_subtemplate_hide_16', = Hide Header
223
- 'wlcms_o_subtemplate_hide_15', = Hide Header
224
- 'wlcms_o_subtemplate_hide_10', = Hide Menus
225
- 'wlcms_o_subtemplate_hide_7', = Hide Widgets
226
- 'wlcms_o_subtemplate_hide_6', = Hide Customize
227
- 'wlcms_o_subtemplate_hide_5', = Hide Themes
228
- */
229
-
230
  $theme_subs = array(
231
  'wlcms_o_subtemplate_hide_16' => 'custom-header',
232
  'wlcms_o_subtemplate_hide_15' => 'customize-php038autofocus%5bcontrol%5dheader_image',
19
  global $wpdb;
20
 
21
  $this->settings = wlcms()->Settings();
22
+
23
+ if (version_compare($this->settings->get('version'), '2.3', '<')) {
24
+ $this->process_upgrade_settings_dashboard();
25
+ }
26
+
27
+
28
+ $this->process_legacy();
29
+ }
30
+ public function process_upgrade_settings_dashboard()
31
+ {
32
+ $widgets = [];
33
+
34
+ if ($this->settings->get('hide_at_a_glance') || $this->settings->get('hide_all_dashboard_panels')) {
35
+ $widgets[] = 'dashboard_right_now';
36
+ $this->settings->remove('hide_at_a_glance');
37
+ }
38
+
39
+ if ($this->settings->get('hide_activities') || $this->settings->get('hide_all_dashboard_panels')) {
40
+ $widgets[] = 'dashboard_activity';
41
+ $this->settings->remove('hide_activities');
42
+ }
43
+
44
+ if ($this->settings->get('hide_recent_comments') || $this->settings->get('hide_all_dashboard_panels')) {
45
+ $widgets[] = 'dashboard_recent_comments';
46
+ $this->settings->remove('hide_recent_comments');
47
+ }
48
+
49
+ if ($this->settings->get('hide_news_and_events') || $this->settings->get('hide_all_dashboard_panels')) {
50
+ $widgets[] = 'dashboard_primary';
51
+ $this->settings->remove('hide_news_and_events');
52
+ }
53
+
54
+ if ($this->settings->get('hide_quick_press')) {
55
+ $widgets[] = 'dashboard_quick_press';
56
+ $this->settings->remove('hide_quick_press');
57
+ }
58
+ $this->settings->set('dashboard_widgets', $widgets);
59
+ $this->settings->set('version', WLCMS_VERSION);
60
+ $this->settings->save();
61
+
62
+ }
63
 
64
+ public function process_legacy()
65
+ {
66
+ global $wpdb;
67
  $legacy_version = get_option('wlcms_o_ver', false);
68
 
69
  if (!$legacy_version) {
71
  }
72
 
73
  $new_wlcms_options = get_option('wlcms_options', false);
74
+
75
+
76
  if ($legacy_version && $new_wlcms_options) {
77
  return;
78
  }
263
  $url = 'themes.php';
264
  $count_sub_menus = 0;
265
 
 
 
 
 
 
 
 
 
 
 
266
  $theme_subs = array(
267
  'wlcms_o_subtemplate_hide_16' => 'custom-header',
268
  'wlcms_o_subtemplate_hide_15' => 'customize-php038autofocus%5bcontrol%5dheader_image',
includes/classes/Welcome_Messages/Welcome_Messages_Beaver_Builder.php CHANGED
@@ -23,7 +23,7 @@ class Welcome_Messages_Beaver_Builder
23
  public function welcome_panel()
24
  {
25
  ?>
26
- <div id="welcome-panel<?php echo $this->key?>" data-welcome_key="<?php echo $this->key?>" class="welcome-panel wlcms-welcome-panel" style="display:none">
27
  <?php
28
  if(isset($this->settings['dismissible'])):
29
  ?><a class="welcome-panel-close" href="#" aria-label="Dismiss the welcome panel">Dismiss</a>
23
  public function welcome_panel()
24
  {
25
  ?>
26
+ <div id="welcome-panel<?php echo $this->key?>" data-welcome_key="<?php echo $this->key?>" class="wlcms-welcome-panel" style="display:none">
27
  <?php
28
  if(isset($this->settings['dismissible'])):
29
  ?><a class="welcome-panel-close" href="#" aria-label="Dismiss the welcome panel">Dismiss</a>
includes/classes/Welcome_Messages/Welcome_Messages_Elementor.php CHANGED
@@ -18,7 +18,7 @@ class Welcome_Messages_Elementor
18
  $has_dismissable = isset($this->settings['dismissible']);
19
  $is_show_title = isset($this->settings['page_id_elementor']) && isset($this->settings['show_title']);
20
  ?>
21
- <div id="welcome-panel<?php echo $this->key?>" data-welcome_key="<?php echo $this->key?>" class="welcome-panel wlcms-welcome-panel" style="display:none">
22
  <?php
23
  if($has_dismissable):
24
  ?><a class="welcome-panel-close" href="#" aria-label="Dismiss the welcome panel">Dismiss</a>
18
  $has_dismissable = isset($this->settings['dismissible']);
19
  $is_show_title = isset($this->settings['page_id_elementor']) && isset($this->settings['show_title']);
20
  ?>
21
+ <div id="welcome-panel<?php echo $this->key?>" data-welcome_key="<?php echo $this->key?>" class="wlcms-welcome-panel" style="display:none">
22
  <?php
23
  if($has_dismissable):
24
  ?><a class="welcome-panel-close" href="#" aria-label="Dismiss the welcome panel">Dismiss</a>
includes/classes/Welcome_Messages/Welcome_Messages_Html.php CHANGED
@@ -15,7 +15,7 @@ class Welcome_Messages_Html
15
  }
16
 
17
  wp_add_dashboard_widget(
18
- 'custom_help_widget' . $key,
19
  isset($this->settings['title']) ? $this->settings['title'] : '&nbsp;',
20
  array($this, 'welcome_description'),
21
  null,
@@ -30,7 +30,7 @@ class Welcome_Messages_Html
30
 
31
  public function welcome_panel()
32
  {?>
33
- <div id="welcome-panel<?php echo $this->key?>" data-welcome_key="<?php echo $this->key?>" class="welcome-panel wlcms-welcome-panel">
34
  <?php
35
  if(isset($this->settings['dismissible'])):
36
  ?><a class="welcome-panel-close" href="#" aria-label="Dismiss the welcome panel">Dismiss</a>
@@ -51,6 +51,6 @@ class Welcome_Messages_Html
51
 
52
  public function template()
53
  {
54
- return isset($this->settings['description']) ? $this->settings['description'] : '';
55
  }
56
  }
15
  }
16
 
17
  wp_add_dashboard_widget(
18
+ 'custom_vum_widget' . $key,
19
  isset($this->settings['title']) ? $this->settings['title'] : '&nbsp;',
20
  array($this, 'welcome_description'),
21
  null,
30
 
31
  public function welcome_panel()
32
  {?>
33
+ <div id="welcome-panel<?php echo $this->key?>" data-welcome_key="<?php echo $this->key?>" class="wlcms-welcome-panel">
34
  <?php
35
  if(isset($this->settings['dismissible'])):
36
  ?><a class="welcome-panel-close" href="#" aria-label="Dismiss the welcome panel">Dismiss</a>
51
 
52
  public function template()
53
  {
54
+ return isset($this->settings['description']) ? wpautop($this->settings['description']) : '';
55
  }
56
  }
readme.txt CHANGED
@@ -4,12 +4,12 @@ Contributors: VideoUserManuals
4
  Plugin Name: White Label CMS
5
  Plugin URI: https://www.videousermanuals.com/white-label-cms/?utm_campaign=wlcms&utm_medium=plugin&utm_source=readme-txt
6
  Tags: cms, custom, admin, branding, dashboard, administration, plugin, login, client, menu, navigation, appearance, menus, widgets, custom login, custom login logo, custom wp-login, login customizer, wp login
7
- Author URI: http://www.videousermanuals.com/?utm_campaign=wlcms&utm_medium=plugin&utm_source=readme-txt
8
  Author: Video User Manuals
9
  Requires at least: 3.3
10
  Requires PHP: 5.4
11
- Tested up to: 5.8
12
- Stable tag: 2.2.6
13
 
14
  Customise dashboard panels and branding, hide menus plus lots more.
15
 
@@ -66,8 +66,9 @@ There is so much that you can do with White Label CMS, but we want the experienc
66
 
67
  == Changelog ==
68
 
69
- = 2.2.6 =
70
- * Fixed WooCommerce Analytics reported by @evaldash
 
71
 
72
  == Frequently Asked Questions ==
73
  = Who is this plugin for?=
4
  Plugin Name: White Label CMS
5
  Plugin URI: https://www.videousermanuals.com/white-label-cms/?utm_campaign=wlcms&utm_medium=plugin&utm_source=readme-txt
6
  Tags: cms, custom, admin, branding, dashboard, administration, plugin, login, client, menu, navigation, appearance, menus, widgets, custom login, custom login logo, custom wp-login, login customizer, wp login
7
+ Author URI: https://www.videousermanuals.com/?utm_campaign=wlcms&utm_medium=plugin&utm_source=readme-txt
8
  Author: Video User Manuals
9
  Requires at least: 3.3
10
  Requires PHP: 5.4
11
+ Tested up to: 6.0
12
+ Stable tag: 2.3
13
 
14
  Customise dashboard panels and branding, hide menus plus lots more.
15
 
66
 
67
  == Changelog ==
68
 
69
+ = 2.3 =
70
+ * Improved: Hiding of Dashboard Widgets. Props to @tanohex
71
+ * Bug Fix: Fixed hiding WooCommerce Home
72
 
73
  == Frequently Asked Questions ==
74
  = Who is this plugin for?=
view/admin/parts/dashboard-default-panels.php CHANGED
@@ -2,6 +2,10 @@
2
  $default_settings = wlcms()->Settings()->get_default_option('dashboard_widgets_visibility_roles');
3
  $dashboard_role_stat = wlcms_field_setting('dashboard_role_stat');
4
  $dashboard_widgets_visibility_roles = wlcms_field_setting('dashboard_widgets_visibility_roles');
 
 
 
 
5
  if( ! $dashboard_role_stat) {
6
  $dashboard_widgets_visibility_roles = $default_settings;
7
  }
@@ -38,26 +42,34 @@ if( ! $dashboard_role_stat) {
38
  <?php _e('This will hide all the WordPress default dashboard panels. Or you can specify which panels should appear.', 'white-label-cms') ?>
39
  </div>
40
  <ul class="sub-fields">
41
- <li>
42
- <input class="wlcms-toggle wlcms-toggle-light" id="hide_at_a_glance" name="hide_at_a_glance" value="1" type="checkbox" <?php checked(wlcms_field_setting('hide_at_a_glance'), 1, true) ?>/>
43
- <label class="wlcms-toggle-btn" for="hide_at_a_glance"></label><label class="toggle-label" for="hide_at_a_glance"><?php _e('Hide \'At a Glance\'', 'white-label-cms')?></label>
44
- </li>
45
- <li>
46
- <input class="wlcms-toggle wlcms-toggle-light" id="hide_activities" name="hide_activities" value="1" type="checkbox" <?php checked(wlcms_field_setting('hide_activities'), 1, true) ?>/>
47
- <label class="wlcms-toggle-btn" for="hide_activities"></label><label class="toggle-label" for="hide_activities"><?php _e('Hide \'Activity\'', 'white-label-cms')?></label>
48
- </li>
49
- <li>
50
- <input class="wlcms-toggle wlcms-toggle-light" id="hide_recent_comments" name="hide_recent_comments" value="1" type="checkbox" <?php checked(wlcms_field_setting('hide_recent_comments'), 1, true) ?>/>
51
- <label class="wlcms-toggle-btn" for="hide_recent_comments"></label><label class="toggle-label" for="hide_recent_comments"><?php _e('Hide \'Recent Comments\'', 'white-label-cms') ?></label>
52
- </li>
53
- <li>
54
- <input class="wlcms-toggle wlcms-toggle-light" id="hide_quick_press" name="hide_quick_press" value="1" type="checkbox" <?php checked(wlcms_field_setting('hide_quick_press'), 1, true) ?>/>
55
- <label class="wlcms-toggle-btn" for="hide_quick_press"></label><label class="toggle-label" for="hide_quick_press"><?php _e('Remove \'Quick Draft\'', 'white-label-cms')?></label>
56
- </li>
57
- <li>
58
- <input class="wlcms-toggle wlcms-toggle-light" id="hide_news_and_events" name="hide_news_and_events" value="1" type="checkbox" <?php checked(wlcms_field_setting('hide_news_and_events'), 1, true) ?>/>
59
- <label class="wlcms-toggle-btn" for="hide_news_and_events"></label><label class="toggle-label" for="hide_news_and_events"><?php _e('Remove WordPress Events and News Widget', 'white-label-cms')?></label>
60
- </li>
 
 
 
 
 
 
 
 
61
  <li>
62
  <input class="wlcms-toggle wlcms-toggle-light" id="remove_empty_dash_panel" name="remove_empty_dash_panel" value="1" type="checkbox" <?php checked(wlcms_field_setting('remove_empty_dash_panel'), 1, true) ?>/>
63
  <label class="wlcms-toggle-btn" for="remove_empty_dash_panel"></label><label class="toggle-label" for="remove_empty_dash_panel"><?php _e('Remove Empty Dashboard Panel', 'white-label-cms')?></label>
2
  $default_settings = wlcms()->Settings()->get_default_option('dashboard_widgets_visibility_roles');
3
  $dashboard_role_stat = wlcms_field_setting('dashboard_role_stat');
4
  $dashboard_widgets_visibility_roles = wlcms_field_setting('dashboard_widgets_visibility_roles');
5
+ $dashboard_widget = wlcms_field_setting('dashboard_widgets');
6
+
7
+ $widgets = wlcms()->Admin_Dashboard()->widgets();
8
+
9
  if( ! $dashboard_role_stat) {
10
  $dashboard_widgets_visibility_roles = $default_settings;
11
  }
42
  <?php _e('This will hide all the WordPress default dashboard panels. Or you can specify which panels should appear.', 'white-label-cms') ?>
43
  </div>
44
  <ul class="sub-fields">
45
+ <?php
46
+ if (is_array($widgets)) {
47
+ foreach ( $widgets as $context => $section ) {
48
+ if (is_array($section)) {
49
+ foreach ( $section as $position ) {
50
+ if (is_array($position)) {
51
+ foreach ( $position as $widget_id => $widget ) {
52
+ if (false !== $widget && strpos($widget_id, 'custom_vum_widget') === false) {
53
+ $selected = false;
54
+ if(wlcms_field_setting('hide_all_dashboard_panels')) {
55
+ $selected = true;
56
+ }elseif($dashboard_widget && is_array($dashboard_widget)) {
57
+ $selected = in_array($widget_id,$dashboard_widget);
58
+ }
59
+ ?>
60
+ <li>
61
+ <input class="wlcms-toggle wlcms-toggle-light" id="<?php echo $widget_id ?>" name="dashboard_widgets[]" value="<?php echo $widget_id ?>" type="checkbox" <?php checked($selected, true, true) ?>/>
62
+ <label class="wlcms-toggle-btn" for="<?php echo $widget_id ?>"></label><label class="toggle-label" for="<?php echo $widget_id ?>"><?php echo wp_strip_all_tags( stripslashes($widget['title']) )?></label>
63
+ </li>
64
+ <?php
65
+ }
66
+ }
67
+ }
68
+ }
69
+ }
70
+ }
71
+ }
72
+ ?>
73
  <li>
74
  <input class="wlcms-toggle wlcms-toggle-light" id="remove_empty_dash_panel" name="remove_empty_dash_panel" value="1" type="checkbox" <?php checked(wlcms_field_setting('remove_empty_dash_panel'), 1, true) ?>/>
75
  <label class="wlcms-toggle-btn" for="remove_empty_dash_panel"></label><label class="toggle-label" for="remove_empty_dash_panel"><?php _e('Remove Empty Dashboard Panel', 'white-label-cms')?></label>
wlcms-plugin.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: White Label CMS
4
  Plugin URI: https://www.videousermanuals.com/white-label-cms/?utm_campaign=wlcms&utm_medium=plugin&utm_source=readme-txt
5
  Description: A plugin that allows you to brand WordPress CMS as your own
6
- Version: 2.2.6
7
  Author: www.videousermanuals.com
8
  Author URI: https://www.videousermanuals.com/?utm_campaign=wlcms&utm_medium=plugin&utm_source=readme-txt
9
  Text Domain: white-label-cms
@@ -13,7 +13,7 @@ Domain Path: /languages
13
 
14
  if (!defined('ABSPATH')) exit; // Exit if accessed directly
15
 
16
- define('WLCMS_VERSION', '2.2.6');
17
  define("WLCMS_DIR", plugin_dir_path(__FILE__));
18
  define("WLCMS_ASSETS_URL", plugin_dir_url(__FILE__) . 'assets/');
19
  define("WLCMS_BASENAME", plugin_basename(__FILE__));
3
  Plugin Name: White Label CMS
4
  Plugin URI: https://www.videousermanuals.com/white-label-cms/?utm_campaign=wlcms&utm_medium=plugin&utm_source=readme-txt
5
  Description: A plugin that allows you to brand WordPress CMS as your own
6
+ Version: 2.3
7
  Author: www.videousermanuals.com
8
  Author URI: https://www.videousermanuals.com/?utm_campaign=wlcms&utm_medium=plugin&utm_source=readme-txt
9
  Text Domain: white-label-cms
13
 
14
  if (!defined('ABSPATH')) exit; // Exit if accessed directly
15
 
16
+ define('WLCMS_VERSION', '2.3');
17
  define("WLCMS_DIR", plugin_dir_path(__FILE__));
18
  define("WLCMS_ASSETS_URL", plugin_dir_url(__FILE__) . 'assets/');
19
  define("WLCMS_BASENAME", plugin_basename(__FILE__));