*/ private $requested_tunings = array(); /** * Mark frontend assets for enqueue. * * @return void */ public function mark_frontend_required() { $this->should_enqueue_frontend = true; } /** * Mark a tuning as needed for front-end rendering. * * @param string $tuning Tuning key. * @return void */ public function mark_tuning_required( $tuning ) { $tuning = '' !== $tuning ? $tuning : 'gCEA'; if ( ! in_array( $tuning, $this->requested_tunings, true ) ) { $this->requested_tunings[] = $tuning; } } /** * Register frontend assets and enqueue when needed. * * @return void */ public function register_frontend_assets() { wp_register_style( 'da-plectrum-frontend', DA_PLECTRUM_PLUGIN_URL . 'assets/css/frontend.css', array(), DA_PLECTRUM_PLUGIN_VERSION ); wp_register_style( 'da-plectrum-print', DA_PLECTRUM_PLUGIN_URL . 'assets/css/print.css', array( 'da-plectrum-frontend' ), DA_PLECTRUM_PLUGIN_VERSION, 'print' ); wp_register_script( 'da-plectrum-chord-diagram', DA_PLECTRUM_PLUGIN_URL . 'assets/js/chord-diagram.js', array(), DA_PLECTRUM_PLUGIN_VERSION, true ); wp_register_script( 'da-plectrum-transpose', DA_PLECTRUM_PLUGIN_URL . 'assets/js/transpose.js', array( 'da-plectrum-chord-diagram' ), DA_PLECTRUM_PLUGIN_VERSION, true ); wp_register_script( 'da-plectrum-frontend', DA_PLECTRUM_PLUGIN_URL . 'assets/js/frontend.js', array( 'da-plectrum-chord-diagram', 'da-plectrum-transpose' ), DA_PLECTRUM_PLUGIN_VERSION, true ); if ( ! apply_filters( 'da_plectrum_should_enqueue_assets', $this->should_enqueue_frontend ) ) { return; } wp_enqueue_style( 'da-plectrum-frontend' ); wp_enqueue_style( 'da-plectrum-print' ); wp_enqueue_script( 'da-plectrum-chord-diagram' ); wp_enqueue_script( 'da-plectrum-transpose' ); wp_enqueue_script( 'da-plectrum-frontend' ); wp_add_inline_script( 'da-plectrum-chord-diagram', 'window.daPlectrumConfig = ' . wp_json_encode( array( 'textDomain' => DA_PLECTRUM_TEXT_DOMAIN, 'libraries' => $this->get_frontend_libraries(), 'i18n' => array( /* translators: %s: Chord name used in the chord diagram label. */ 'diagramLabelTemplate' => __( '%s ukulele chord diagram', 'plectrum' ), 'displaySizeUpdated' => __( 'Display size updated.', 'plectrum' ), 'displaySizeReset' => __( 'Display size reset.', 'plectrum' ), 'printDialogOpened' => __( 'Print dialog opened.', 'plectrum' ), 'diagramsShown' => __( 'Chord diagrams shown.', 'plectrum' ), 'diagramsHidden' => __( 'Chord diagrams hidden.', 'plectrum' ), 'showDiagrams' => __( 'Show Diagrams', 'plectrum' ), 'hideDiagrams' => __( 'Hide Diagrams', 'plectrum' ), 'transpositionReset' => __( 'Transposition reset.', 'plectrum' ), 'transpositionDirection' => array( 'up' => __( 'up', 'plectrum' ), 'down' => __( 'down', 'plectrum' ), ), /* translators: 1: Direction, 2: semitone count, 3: semitone label. */ 'transpositionTemplate' => __( 'Transposed %1$s %2$d %3$s.', 'plectrum' ), 'semitoneSingular' => __( 'semitone', 'plectrum' ), 'semitonePlural' => __( 'semitones', 'plectrum' ), ), ) ) . ';', 'before' ); } /** * Register admin assets. * * @return void */ public function register_admin_assets() { wp_register_style( 'da-plectrum-admin', DA_PLECTRUM_PLUGIN_URL . 'assets/css/admin.css', array(), DA_PLECTRUM_PLUGIN_VERSION ); wp_register_script( 'da-plectrum-admin', DA_PLECTRUM_PLUGIN_URL . 'assets/js/admin.js', array(), DA_PLECTRUM_PLUGIN_VERSION, true ); } /** * Enqueue settings page assets. * * @return void */ public function enqueue_admin_assets() { wp_enqueue_style( 'da-plectrum-admin' ); wp_enqueue_script( 'da-plectrum-admin' ); } /** * Get normalized chord libraries for requested tunings. * * @return array>> */ private function get_frontend_libraries() { $tunings = ! empty( $this->requested_tunings ) ? $this->requested_tunings : array( 'gCEA' ); $libraries = array(); foreach ( $tunings as $tuning ) { $libraries[ $tuning ] = da_plectrum_get_chord_library_map( $tuning ); } return $libraries; } }