'; } 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' );