plugin_name = $plugin_name;
$this->version = $version;
}
/**
* Enqueue admin styles.
*
* @param string $hook_suffix
*/
public function enqueue_styles( $hook_suffix ) {
// Only load on plugin admin page
if ( 'toplevel_page_essential-widgets' === $hook_suffix ) {
wp_enqueue_style(
$this->plugin_name . '-display-dashboard-admin',
plugin_dir_url( __FILE__ ) . 'css/essential-widgets-dasbhoard-admin.css',
array(),
$this->version,
'all'
);
wp_enqueue_style(
$this->plugin_name . '-display-dashboard',
plugin_dir_url( __FILE__ ) . 'css/admin-dashboard.css',
array(),
$this->version,
'all'
);
}
// Always load on widgets and customizer screens
global $pagenow;
if ( in_array( $pagenow, array( 'widgets.php', 'customize.php' ), true ) ) {
wp_enqueue_style(
$this->plugin_name,
plugin_dir_url( __FILE__ ) . 'css/essential-widgets-admin.css',
array(),
$this->version,
'all'
);
}
}
/**
* Enqueue admin scripts.
*
* @param string $hook_suffix
*/
public function enqueue_scripts( $hook_suffix ) {
if ( 'toplevel_page_essential-widgets' === $hook_suffix ) {
wp_enqueue_script(
'minHeight',
plugin_dir_url( __FILE__ ) . 'js/jquery.matchHeight.min.js',
array( 'jquery' ),
$this->version,
true
);
wp_enqueue_script(
$this->plugin_name . '-admin-script',
plugin_dir_url( __FILE__ ) . 'js/admin-scripts.js',
array( 'minHeight', 'jquery' ),
$this->version,
true
);
}
global $pagenow;
if ( in_array( $pagenow, array( 'widgets.php', 'customize.php' ), true ) ) {
wp_enqueue_script(
$this->plugin_name,
plugin_dir_url( __FILE__ ) . 'js/essential-widgets-admin.js',
array( 'jquery' ),
$this->version,
true
);
}
}
/**
* Add plugin menu in admin.
*/
public function add_plugin_settings_menu() {
add_menu_page(
esc_html__( 'Essential Widgets', 'essential-widgets' ),
esc_html__( 'Essential Widgets', 'essential-widgets' ),
'manage_options',
'essential-widgets',
array( $this, 'settings_page' ),
'',
99
);
}
/**
* Render the settings page.
*/
public function settings_page() {
if ( ! current_user_can( 'manage_options' ) ) {
wp_die( esc_html__( 'You do not have sufficient permissions to access this page.', 'essential-widgets' ) );
}
require plugin_dir_path( __FILE__ ) . 'partials/essential-widgets-admin-display.php';
}
/**
* Register plugin settings.
*/
public function register_settings() {
register_setting(
'essential-widgets-group',
'essential_widgets_options',
array( $this, 'sanitize_callback' )
);
}
/**
* Ajax switch handler (On/Off toggle).
*/
public function ew_switch() {
$post_data = wp_unslash( $_POST );
if ( empty( $post_data['security'] ) || ! wp_verify_nonce( sanitize_text_field( $post_data['security'] ), 'ew_nonce' ) ) {
wp_die( esc_html__( 'Unauthorized access!', 'essential-widgets' ) );
}
if ( ! current_user_can( 'manage_options' ) ) {
wp_die( esc_html__( 'Permission denied!', 'essential-widgets' ) );
}
$value = ( isset( $post_data['value'] ) && 'true' === $post_data['value'] ) ? 1 : 0;
$option_name = isset( $post_data['option_name'] ) ? sanitize_key( $post_data['option_name'] ) : '';
if ( empty( $option_name ) ) {
wp_die( esc_html__( 'Invalid option.', 'essential-widgets' ) );
}
$option_value = essential_widgets_get_options();
$option_value[ $option_name ] = $value;
if ( update_option( 'essential_widgets_options', $option_value ) ) {
echo esc_html( $value );
} else {
esc_html_e( 'Connection Error. Please try again.', 'essential-widgets' );
}
wp_die();
}
/**
* Add plugin meta links on plugin page.
*
* @param array $meta_fields
* @param string $file
* @return array
*/
public function add_plugin_meta_links( $meta_fields, $file ) {
if ( ESSENTIAL_WIDGETS_BASENAME === $file ) {
$meta_fields[] = '' . esc_html__( 'Support Forum', 'essential-widgets' ) . '';
$meta_fields[] = ''
. ''
. str_repeat('', 5)
. '';
$stars_color = '#ffb900';
echo '';
}
return $meta_fields;
}
/**
* Dummy sanitize callback.
*
* @param array $input
* @return array
*/
public function sanitize_callback( $input ) {
if ( ! is_array( $input ) ) {
return array();
}
$sanitized = array();
foreach ( $input as $key => $value ) {
$sanitized[ sanitize_key( $key ) ] = sanitize_text_field( $value );
}
return $sanitized;
}
public function action_links( $links ) {
$settings_link = '' . esc_html__( 'Settings', 'essential-widgets' ) . '';
array_unshift( $links, $settings_link );
return $links;
}
}