Tribe__Events__Pro__Assets
Registers and Enqueues the assets
Source
File: src/Tribe/Assets.php
class Tribe__Events__Pro__Assets { /** * Registers and Enqueues the assets * * @since 4.4.30 * * @return void */ public function register() { $pro = Tribe__Events__Pro__Main::instance(); // Vendor tribe_assets( $pro, [ [ 'tribe-events-pro-imagesloaded', 'vendor/imagesloaded/imagesloaded.pkgd.js', [ 'tribe-events-pro' ] ], [ 'tribe-events-pro-isotope', 'vendor/isotope/isotope.pkgd.js', [ 'tribe-events-pro-imagesloaded' ] ], [ 'tribe-events-pro-slimscroll', 'vendor/nanoscroller/jquery.nanoscroller.js', [ 'tribe-events-pro', 'jquery-ui-draggable' ] ], ], null, [ 'in_footer' => false, ] ); // Vendor: Admin tribe_assets( $pro, [ [ 'tribe-events-pro-handlebars', 'vendor/handlebars/handlebars.min.js' ], [ 'tribe-events-pro-moment', 'vendor/momentjs/moment.min.js' ], ], 'admin_enqueue_scripts', [ 'conditionals' => [ Tribe__Main::instance(), 'should_load_common_admin_css' ], ] ); $api_url = 'https://maps.google.com/maps/api/js'; /** * Allows users to use a diferent Google Maps JS URL * * @deprecated 4.4.33 * * @param string $url */ $google_maps_js_url = apply_filters( 'tribe_events_pro_google_maps_api', $api_url ); tribe_asset( $pro, 'tribe-pro', 'pro.js', [], null, [ 'priority' => 5, ] ); tribe_asset( $pro, 'tribe-events-pro', 'tribe-events-pro.js', [ 'jquery', 'tribe-events-calendar-script' ], 'wp_enqueue_scripts', [ 'conditionals' => [ $this, 'should_enqueue_frontend' ], 'in_footer' => false, 'localize' => [ 'name' => 'TribeEventsPro', 'data' => [ $this, 'get_data_tribe_events_pro' ], ], ] ); tribe_asset( $pro, 'tribe-events-pro-photo', 'tribe-events-photo-view.js', [ 'tribe-events-pro-isotope' ], null, [ 'localize' => [ 'name' => 'TribePhoto', 'data' => [ 'ajaxurl' => admin_url( 'admin-ajax.php', ( is_ssl() ? 'https' : 'http' ) ), 'tribe_paged' => tribe_get_request_var( 'tribe_paged', 0 ), ], ], ] ); tribe_asset( $pro, 'tribe-events-pro-week', 'tribe-events-week.js', array( 'tribe-events-pro-slimscroll' ), null, array( 'localize' => array( 'name' => 'TribeWeek', 'data' => array( 'ajaxurl' => admin_url( 'admin-ajax.php', ( is_ssl() ? 'https' : 'http' ) ), 'post_type' => Tribe__Events__Main::POSTTYPE, ), ), ) ); $pro_ajax_maps_deps = array( 'jquery-placeholder' ); if ( ! tribe_is_using_basic_gmaps_api() ) { // This dependency is only available when a custom gMaps API Key is being used. $pro_ajax_maps_deps[] = 'tribe-events-google-maps'; } tribe_asset( $pro, 'tribe-events-pro-geoloc', 'tribe-events-ajax-maps.js', $pro_ajax_maps_deps, null, array( 'localize' => array( 'name' => 'GeoLoc', 'data' => array( $this, 'get_data_tribe_geoloc' ), ), ) ); tribe_assets( $pro, array( array( 'tribe_events-premium-admin-style', 'events-admin.css', array() ), array( 'tribe_events-premium-admin', 'events-admin.js', array( 'jquery-ui-datepicker', 'wp-util', 'tribe-timepicker' ) ), ), array( 'tribe_venues_enqueue', 'tribe_events_enqueue' ) ); tribe_assets( $pro, array( array( 'tribe-events-calendar-full-pro-mobile-style', 'tribe-events-pro-full-mobile.css', array( 'tribe-events-calendar-pro-style' ) ), array( 'tribe-events-calendar-pro-mobile-style', 'tribe-events-pro-theme-mobile.css', array( 'tribe-events-calendar-pro-style' ) ), ), 'wp_enqueue_scripts', array( 'media' => 'only screen and (max-width: ' . tribe_get_mobile_breakpoint() . 'px)', 'groups' => array( 'events-pro-styles' ), 'conditionals' => array( 'operator' => 'AND', array( $this, 'is_mobile_breakpoint' ), array( $this, 'should_enqueue_frontend' ), ), ) ); tribe_asset( $pro, 'tribe-events-full-pro-calendar-style', 'tribe-events-pro-full.css', array(), 'wp_enqueue_scripts', array( 'priority' => 5, 'conditionals' => array( 'operator' => 'AND', array( $this, 'is_style_option_tribe' ), array( $this, 'should_enqueue_frontend' ), ), ) ); tribe_asset( $pro, 'tribe-events-calendar-pro-style', $this->get_style_file(), array(), 'wp_enqueue_scripts', array( 'groups' => array( 'events-pro-styles' ), 'conditionals' => array( array( $this, 'should_enqueue_frontend' ), ), ) ); tribe_asset( $pro, 'tribe-events-calendar-pro-override-style', Tribe__Events__Templates::locate_stylesheet( 'tribe-events/pro/tribe-events-pro.css' ), array(), 'wp_enqueue_scripts', array( 'conditionals' => array( $this, 'should_enqueue_frontend' ), 'groups' => array( 'events-pro-styles' ), ) ); tribe_asset( $pro, 'tribe-mini-calendar', 'widget-calendar.js', array( 'jquery' ), null, array( 'localize' => array( 'name' => 'TribeMiniCalendar', 'data' => array( 'ajaxurl' => admin_url( 'admin-ajax.php', ( is_ssl() ? 'https' : 'http' ) ) ), ), ) ); tribe_asset( $pro, 'tribe-this-week', 'widget-this-week.js', array( 'jquery' ), null, array( 'localize' => array( 'name' => 'tribe_this_week', 'data' => array( 'ajaxurl' => admin_url( 'admin-ajax.php', ( is_ssl() ? 'https' : 'http' ) ) ), ), ) ); tribe_asset( $pro, 'tribe-events-countdown-widget', 'widget-countdown.js', array( 'jquery' ), null, array() ); tribe_asset( $pro, 'widget-calendar-pro-style', $this->get_widget_style_file(), array(), null, array() ); tribe_asset( $pro, Tribe__Events__Main::POSTTYPE . '-widget-calendar-pro-override-style', Tribe__Events__Templates::locate_stylesheet( 'tribe-events/pro/widget-calendar.css' ), array(), null, array() ); } /** * Checks if we have a mobile Breakpoint * * @since 4.4.30 * * @return bool */ public function is_mobile_breakpoint() { $mobile_break = tribe_get_mobile_breakpoint(); return $mobile_break > 0; } /** * Checks if we are using Tribe setting for Style * * @since 4.4.30 * * @return bool */ public function is_style_option_tribe() { $style_option = tribe_get_option( 'stylesheetOption', 'tribe' ); return 'tribe' === $style_option; } /** * Due to how we define which style we use based on an Option on the Administration * we need to determine this file. * * @since 4.4.30 * * @return string */ public function get_style_file() { $name = tribe_get_option( 'stylesheetOption', 'tribe' ); $stylesheets = array( 'tribe' => 'tribe-events-pro-theme.css', 'full' => 'tribe-events-pro-full.css', 'skeleton' => 'tribe-events-pro-skeleton.css', ) ; // By default we go with `tribe` $file = $stylesheets['tribe']; // if we have one we use it if ( isset( $stylesheets[ $name ] ) ) { $file = $stylesheets[ $name ]; } /** * Allows filtering of the Stylesheet file for Events Calendar Pro * * @deprecated 4.4.30 * * @param string $file Which file we are loading * @param string $name Option from the DB of style we are using */ return apply_filters( 'tribe_events_pro_stylesheet_url', $file, $name ); } /** * Due to how we define which style we use based on an Option on the Administration * we need to determine this file. * * @since 4.4.33 * * @return string */ public function get_widget_style_file() { $name = tribe_get_option( 'stylesheetOption', 'tribe' ); $stylesheets = array( 'tribe' => 'widget-theme.css', 'full' => 'widget-full.css', 'skeleton' => 'widget-skeleton.css', ) ; // By default we go with `tribe` $file = $stylesheets['tribe']; // if we have one we use it if ( isset( $stylesheets[ $name ] ) ) { $file = $stylesheets[ $name ]; } /** * Allows filtering of the Stylesheet file for Events Calendar Pro Widgets * * @deprecated 4.4.33 * * @param string $file Which file we are loading * @param string $name Option from the DB of style we are using */ return apply_filters( 'tribe_events_pro_widget_calendar_stylesheet_url', $file, $name ); } /** * When to enqueue the Pro Styles on the front-end * * @since 4.4.30 * * @return void */ public function should_enqueue_frontend() { global $post; return ( tribe_is_event_query() || ( $post instanceof WP_Post && has_shortcode( $post->post_content, 'tribe_events' ) ) ); } /** * Gets the localize data for Main Events Calendar Pro * * @since 4.4.30 * * @return array */ public function get_data_tribe_events_pro() { $data = array( 'geocenter' => Tribe__Events__Pro__Geo_Loc::instance()->estimate_center_point(), 'map_tooltip_event' => esc_html( sprintf( _x( '%s: ', 'Event title map marker prefix', 'tribe-events-calendar-pro' ), tribe_get_event_label_singular() ) ), 'map_tooltip_address' => esc_html__( 'Address: ', 'tribe-events-calendar-pro' ), ); /** * Filters the Main Events Calendar Pro script localization * * @since 4.4.30 * * @param array $data JS variable * @param string $object_name The localization object var name. * @param string $script Which script this localizes */ $data = apply_filters( 'tribe_events_pro_localize_script', $data, 'TribeEventsPro', 'tribe-events-pro' ); return $data; } /** * Gets the localize data for Geoloc on Events Calendar Pro * * @since 4.4.30 * * @return array */ public function get_data_tribe_geoloc() { $data = array( 'ajaxurl' => admin_url( 'admin-ajax.php', admin_url( 'admin-ajax.php', ( is_ssl() ? 'https' : 'http' ) ) ), 'nonce' => wp_create_nonce( 'tribe_geosearch' ), 'map_view' => 'map' === tribe( 'tec.main' )->displaying, 'pin_url' => Tribe__Customizer::instance()->get_option( array( 'global_elements', 'map_pin' ), false ), ); /** * Filters the Events Calendar Pro Maps script localization * * @since 4.4.30 Removed the Third param * * @param array $data JS variable * @param string $script Which script this localizes */ $data = apply_filters( 'tribe_events_pro_geoloc_localize_script', $data, 'tribe-events-pro-geoloc' ); return $data; } }
Changelog
Version | Description |
---|---|
4.4.30 | Introduced. |
Methods
- add_actions — Enqueue any asset loading to specific actions.
- enqueue_dependencies — Enqueue the dependency on any block editor page since because of widgets we might have special needs for these pages.
- get_data_tribe_events_pro — Gets the localize data for Main Events Calendar Pro
- get_data_tribe_geoloc — Gets the localize data for Geoloc on Events Calendar Pro
- get_style_file — Due to how we define which style we use based on an Option on the Administration we need to determine this file.
- get_widget_style_file — Due to how we define which style we use based on an Option on the Administration we need to determine this file.
- is_edit_screen — Check whether the current page is an edit post type page.
- is_mobile_breakpoint — Checks if we have a mobile Breakpoint
- is_style_option_tribe — Checks if we are using Tribe setting for Style
- register — Registers and Enqueues the assets
- should_enqueue_frontend — When to enqueue the Pro Styles on the front-end