' . __('Settings') . ''; array_unshift( $links, $settings_link ); return $links; } function plugin_menu_link(){ add_submenu_page( 'options-general.php', __( 'Smooth Scroll', 'wpmss' ), __( 'Smooth Scroll', 'wpmss' ), 'manage_options', basename( __FILE__ ), [ $this, 'admin_options_page' ] ); add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ), [ $this, 'filter_plugin_actions' ], 10, 2 ); } function plugin_init(){ $this->settings = get_option( 'wpmss_settings', [] ); if( ! isset( $this->settings['general']['timestamp'] ) ){ $this->settings['js_library'] = 'darkroomengineering'; $this->settings['general']['timestamp'] = time(); $this->settings['general']['pulseAlgorithm'] = 1; $this->settings['general']['keyboardSupport'] = 1; update_option( 'wpmss_settings', $this->settings ); }else{ if( ! isset( $this->settings['js_library'] ) ){ $this->settings['js_library'] = 'gblazex'; } } $this->uploads = wp_get_upload_dir(); $this->process_settings(); add_action( 'wp_enqueue_scripts', [ $this, 'plugin_scripts_load' ] ); } function process_settings(){ $unsanitized_settings = $this->settings; $this->settings = [ 'js_library' => '', 'general' => [], 'lenis' => [], ]; if( empty( $unsanitized_settings['js_library'] ) ){ $this->settings['js_library'] = 'darkroomengineering'; }else{ $this->settings['js_library'] = in_array( $unsanitized_settings['js_library'], [ 'gblazex', 'darkroomengineering' ] ) ? $unsanitized_settings['js_library'] : 'darkroomengineering'; } $this->settings['general']['timestamp'] = empty( $unsanitized_settings['general']['timestamp'] ) ? time() : intval( $unsanitized_settings['general']['timestamp'] ); $this->settings['lenis']['lerp'] = empty( $unsanitized_settings['lenis']['lerp'] ) ? 0.1 : floatval( $unsanitized_settings['lenis']['lerp'] ); $this->settings['lenis']['duration'] = empty( $unsanitized_settings['lenis']['duration'] ) ? 1.2 : floatval( $unsanitized_settings['lenis']['duration'] ); $this->settings['lenis']['wheelMultiplier'] = empty( $unsanitized_settings['lenis']['wheelMultiplier'] ) ? 1 : floatval( $unsanitized_settings['lenis']['wheelMultiplier'] ); $this->settings['lenis']['easing'] = empty( $unsanitized_settings['lenis']['easing'] ) ? 'Math.min(1,1.001-Math.pow(2,-10*x))' : sanitize_text_field( $unsanitized_settings['lenis']['easing'] ); $this->settings['general']['frameRate'] = empty( $unsanitized_settings['general']['frameRate'] ) ? 150 : intval( $unsanitized_settings['general']['frameRate'] ); $this->settings['general']['animationTime'] = empty( $unsanitized_settings['general']['animationTime'] ) ? 1000 : intval( $unsanitized_settings['general']['animationTime'] ); $this->settings['general']['stepSize'] = empty( $unsanitized_settings['general']['stepSize'] ) ? 100 : intval( $unsanitized_settings['general']['stepSize'] ); $this->settings['general']['pulseAlgorithm'] = empty( $unsanitized_settings['general']['pulseAlgorithm'] ) ? 0 : intval( $unsanitized_settings['general']['pulseAlgorithm'] ); $this->settings['general']['pulseScale'] = empty( $unsanitized_settings['general']['pulseScale'] ) ? 4 : intval( $unsanitized_settings['general']['pulseScale'] ); $this->settings['general']['pulseNormalize'] = empty( $unsanitized_settings['general']['pulseNormalize'] ) ? 1 : intval( $unsanitized_settings['general']['pulseNormalize'] ); $this->settings['general']['accelerationDelta'] = empty( $unsanitized_settings['general']['accelerationDelta'] ) ? 50 : intval( $unsanitized_settings['general']['accelerationDelta'] ); $this->settings['general']['accelerationMax'] = empty( $unsanitized_settings['general']['accelerationMax'] ) ? 3 : intval( $unsanitized_settings['general']['accelerationMax'] ); $this->settings['general']['keyboardSupport'] = empty( $unsanitized_settings['general']['keyboardSupport'] ) ? 0 : intval( $unsanitized_settings['general']['keyboardSupport'] ); $this->settings['general']['arrowScroll'] = empty( $unsanitized_settings['general']['arrowScroll'] ) ? 50 : intval( $unsanitized_settings['general']['arrowScroll'] ); $this->settings['general']['allowedBrowsers'] = empty( $unsanitized_settings['general']['allowedBrowsers'] ) ? [ 'IEWin7', 'Chrome', 'Safari' ] : array_intersect( [ 'Mobile', 'IEWin7', 'Edge', 'Chrome', 'Safari', 'Firefox', 'other' ], $unsanitized_settings['general']['allowedBrowsers'] ); if( ( $this->settings['js_library'] == 'gblazex' && ! file_exists( $this->uploads['basedir'] . '/wpmss/wpmss.min.js' ) ) || ( $this->settings['js_library'] == 'darkroomengineering' && ! file_exists( $this->uploads['basedir'] . '/wpmss/lenis-init.min.js' ) ) ){ $this->save_js_config(); } } function plugin_scripts_load(){ if( ! empty( $_GET['ct_builder'] ) ) return; // skip for oxygen editor switch( $this->settings['js_library'] ){ case 'darkroomengineering': wp_enqueue_script( 'lenis', plugins_url( 'js/lenis.min.js', __FILE__ ), [], '1.1.19', 1 ); wp_enqueue_script( 'lenis-init', $this->uploads['baseurl'] . '/wpmss/lenis-init.min.js', ['lenis'], $this->settings['general']['timestamp'], 1 ); break; case 'gblazex': wp_enqueue_script( 'wpmssab', $this->uploads['baseurl'] . '/wpmss/wpmssab.min.js', [], $this->settings['general']['timestamp'], 1 ); wp_enqueue_script( 'SmoothScroll', plugins_url( 'js/SmoothScroll.min.js', __FILE__ ), ['wpmssab'], '1.5.1', 1 ); wp_enqueue_script( 'wpmss', $this->uploads['baseurl'] . '/wpmss/wpmss.min.js', ['SmoothScroll'], $this->settings['general']['timestamp'], 1 ); break; } } function plugin_admin_tabs( $current = 'general' ){ $tabs = [ 'general' => __('General'), 'info' => __('Help') ]; ?>
' . __('Settings saved.') . '
|
', '' ) ?> |
|
|---|---|
| 0.1 | |
| s 1.2 | |
| 1 | |
| Math.min(1,1.001-Math.pow(2,-10*x)) | |
| [Hz] 150 | |
| [ms] 1000 | |
| [px] 100 | |
ratio of "tail" to "acceleration"', 'wpmss' ) ?> |
|
| settings['general']['pulseAlgorithm'] ? 'checked="checked"' : '' ?> id="q_field_35"> on | |
| 4 | |
| 1 | |
| 50 | |
| 3 | |
| settings['general']['keyboardSupport'] ? 'checked="checked"' : '' ?> id="q_field_75"> on | |
| [px] 50 | |
| IEWin7, Chrome, Safari | |