';
}
add_filter( 'script_loader_tag', 'accesly_script_as_module', 10, 3 );
/**
* Admin Enqueue
*/
function accesly_widget_admin_enqueue_scripts( $hook_suffix ) {
if ( 'toplevel_page_accesly-settings' !== $hook_suffix ) {
return;
}
wp_enqueue_media();
wp_enqueue_style( 'accesly-widget-admin-style', ACCESLY_PLUGIN_URL . 'assets/css/aw-admin.css', array(), '1.0.0' );
wp_enqueue_script( 'accesly-widget-admin', ACCESLY_PLUGIN_URL . 'assets/js/aw-admin.js', array( 'jquery' ), '1.0.0', true );
wp_localize_script( 'accesly-widget-admin', 'acceslyDefaults', array(
'icon_dark' => esc_url( ACCESLY_PLUGIN_URL . 'assets/icons/accessly-dark.svg' ),
'icon_light' => esc_url( ACCESLY_PLUGIN_URL . 'assets/icons/accessly-light.svg' ),
'choose_icon_title' => esc_attr__( 'Choose Icon', 'accesly-widget' ),
'choose_icon_btn' => esc_attr__( 'Choose Icon', 'accesly-widget' ),
) );
}
add_action( 'admin_enqueue_scripts', 'accesly_widget_admin_enqueue_scripts' );
/**
* Admin Menu
*/
function accesly_register_admin_menu() {
add_menu_page(
'Accessibility Widget Settings',
'Accesly Widget',
'manage_options',
'accesly-settings',
'accesly_admin_settings_page',
plugins_url( 'assets/icons/accessly-favicon.svg', __FILE__ ),
81
);
}
add_action( 'admin_menu', 'accesly_register_admin_menu' );
function accesly_admin_settings_page() {
include_once ACCESLY_PLUGIN_DIR . 'includes/admin-settings-sections.php';
}
function accesly_footer_text() {
return '';
}
add_filter( 'admin_footer_text', 'accesly_footer_text' );
/**
* Settings Registration
*/
function accesly_register_settings() {
register_setting( 'accesly_settings_group', 'accesly_settings', 'accesly_sanitize_settings_array' );
add_settings_section( 'accesly_settings_section', __( 'Widget Settings', 'accesly-widget' ), 'accesly_section_callback', 'accesly-settings' );
$fields = array(
'accesly_widget_active' => __( 'Activate Widget', 'accesly-widget' ),
'accesly_button_colors' => __( 'Button Colors', 'accesly-widget' ),
'accesly_widget_theme' => __( 'Widget Theme', 'accesly-widget' ),
'accesly_widget_position' => __( 'Floating Button Position', 'accesly-widget' ),
'accesly_menu_position' => __( 'Widget Menu Position', 'accesly-widget' ),
'accesly_shortcode' => __( 'Use Widget as Shortcode', 'accesly-widget' ),
'accesly_excluded_pages' => __( 'Exclude Pages', 'accesly-widget' ),
'accesly_custom_icon' => __( 'Custom Floating Button Icon', 'accesly-widget' ),
'accesly_remove_branding' => __( 'Remove Branding', 'accesly-widget' ),
'accesly_language' => __( 'Language Settings', 'accesly-widget' ),
);
foreach ( $fields as $id => $title ) {
add_settings_field( $id, $title, $id . '_callback', 'accesly-settings', 'accesly_settings_section' );
}
}
add_action( 'admin_init', 'accesly_register_settings' );
function accesly_sanitize_settings_array( $input ) {
if ( ! is_array( $input ) ) {
return array();
}
// Basic sanitization for the array
return array_map( function( $value ) {
return is_array( $value ) ? $value : sanitize_text_field( $value );
}, $input );
}
function accesly_section_callback() {
echo '
' . esc_html__( 'Configure the settings for the Accessibility Widget here.', 'accesly-widget' ) . '
';
}
/**
* Field Callbacks
*/
function accesly_widget_active_callback() {
$options = get_option( 'accesly_settings' );
$active = isset( $options['widget_active'] ) ? $options['widget_active'] : 0;
echo '';
}
function accesly_button_colors_callback() {
$options = get_option( 'accesly_settings' );
$colors = isset( $options['button_colors'] ) ? $options['button_colors'] : array('accent' => '#ff0000', 'background' => '#ffffff', 'text' => '#000000');
foreach ( $colors as $key => $val ) {
echo '
';
}
}
function accesly_widget_theme_callback() {
$options = get_option( 'accesly_settings' );
$theme = isset( $options['widget_theme'] ) ? $options['widget_theme'] : 'modern';
echo '';
}
function accesly_widget_position_callback() {
$options = get_option( 'accesly_settings' );
$pos = isset( $options['widget_position'] ) ? $options['widget_position'] : 'unten rechts';
echo '';
}
function accesly_menu_position_callback() {
$options = get_option( 'accesly_settings' );
$menuPos = isset( $options['menu_position'] ) ? $options['menu_position'] : 'rechts';
echo '';
}
function accesly_shortcode_callback() {
$options = get_option( 'accesly_settings' );
$shortcode = isset( $options['shortcode'] ) ? $options['shortcode'] : 0;
echo ' [accesly_widget]';
}
function accesly_excluded_pages_callback() {
$options = get_option( 'accesly_settings' );
$excluded = isset( $options['excluded_pages'] ) ? (array)$options['excluded_pages'] : array();
$pages = get_pages();
foreach ( $pages as $page ) {
echo '
';
}
}
function accesly_custom_icon_callback() {
$options = get_option( 'accesly_settings' );
$icon = isset( $options['custom_icon'] ) ? $options['custom_icon'] : '';
echo '
';
}
function accesly_remove_branding_callback() {
$options = get_option( 'accesly_settings' );
$remove = isset( $options['remove_branding'] ) ? $options['remove_branding'] : 0;
echo '';
}
function accesly_language_callback() {
$options = get_option( 'accesly_settings' );
$lang = isset( $options['language'] ) ? $options['language'] : 'en';
$langs = array('browser' => 'Browser Detection', 'de' => 'German', 'en' => 'English', 'fr' => 'French', 'es' => 'Spanish');
echo '';
}
/**
* Shortcode & Frontend Include
*/
function accesly_shortcode_widget() {
ob_start();
echo '' . esc_html__( 'Accessibility Settings', 'accesly-widget' ) . '';
return ob_get_clean();
}
add_shortcode( 'accesly_widget', 'accesly_shortcode_widget' );
require_once ACCESLY_PLUGIN_DIR . 'includes/widget-frontend.php';
/**
* License & Cron Handling
*/
add_action( 'admin_post_accesly_activate_license', 'accesly_handle_license_activation' );
add_action( 'admin_post_accesly_deactivate_license', 'accesly_handle_license_deactivation' );
add_action( 'accesly_daily_license_check', 'accesly_daily_license_check' );
function accesly_handle_license_activation() {
if ( ! isset( $_POST['accesly_license_nonce'] ) || ! wp_verify_nonce( sanitize_key( wp_unslash( $_POST['accesly_license_nonce'] ) ), 'accesly_license_action' ) ) {
wp_die( esc_html__( 'Security check failed.', 'accesly-widget' ) );
}
if ( isset( $_POST['accesly_license_key'] ) ) {
$key = sanitize_text_field( wp_unslash( $_POST['accesly_license_key'] ) );
update_option( 'accesly_license_key', $key );
update_option( 'accesly_license_status', 'active' );
}
wp_redirect( admin_url( 'admin.php?page=accesly-settings' ) );
exit;
}
function accesly_handle_license_deactivation() {
update_option( 'accesly_license_status', 'inactive' );
update_option( 'accesly_license_key', '' );
wp_redirect( admin_url( 'admin.php?page=accesly-settings' ) );
exit;
}
function accesly_daily_license_check() {}
function accesly_schedule_license_check() {
if ( ! wp_next_scheduled( 'accesly_daily_license_check' ) ) {
wp_schedule_event( time(), 'daily', 'accesly_daily_license_check' );
}
}
add_action( 'wp', 'accesly_schedule_license_check' );