File "event-export.php"

Full Path: /home/romayxjt/public_html/wp-content/plugins/the-events-calendar/src/views/integrations/elementor/widgets/event-export.php
File size: 3.64 KB
MIME-type: text/x-php
Charset: utf-8

<?php
/**
 * View: Elementor Event Export widget.
 *
 * You can override this template in your own theme by creating a file at
 * [your-theme]/tribe/events/integrations/elementor/widgets/event-export.php
 *
 * @since 6.4.0
 *
 * Guaranteed variables:
 * @var array        $settings               The widget settings.
 * @var bool         $show                   Whether to show the widget.
 * @var bool         $show_gcal_link         Whether to show the Google Calendar link.
 * @var bool         $show_ical_link         Whether to show the iCalendar link.
 * @var bool         $show_outlook_365_link  Whether to show the Outlook 365 link.
 * @var bool         $show_outlook_live_link Whether to show the Outlook Live link.
 * @var int          $event_id               The event ID.
 * @var Event_Export $widget                 The widget instance.
 *
 * Additional optional variables based on user-input.
 * Each of these variables is only guaranteed to be present if the user has chosen to display the respective link.
 * Each is in the format:
 * $gcal = [
 *     'label' => string,
 *     'link'  => string,
 *     'class' => array,
 * ]
 * @var array        $gcal                   The Google Calendar link and label.
 * @var array        $ical                   The iCalendar link and label.
 * @var array        $outlook_365            The Outlook 365 link and label.
 * @var array        $outlook_live           The Outlook Live link and label.
 */

use TEC\Events\Integrations\Plugins\Elementor\Widgets\Event_Export;

// Ensure the Links are avail.
$gcal         ??= null;
$ical         ??= null;
$outlook_365  ??= null;
$outlook_live ??= null;

// Ensure we don't get notices.
$show_gcal_link         ??= false;
$show_ical_link         ??= false;
$show_outlook_365_link  ??= false;
$show_outlook_live_link ??= false;

$links_list = [
	'gcal'         => [
		'link'           => $gcal,
		'should_display' => $show_gcal_link,
	],
	'ical'         => [
		'link'           => $ical,
		'should_display' => $show_ical_link,
	],
	'outlook_365'  => [
		'link'           => $outlook_365,
		'should_display' => $show_outlook_365_link,
	],
	'outlook_live' => [
		'link'           => $outlook_live,
		'should_display' => $show_outlook_live_link,
	],
];

if ( empty( $show ) ) {
	return;
}
?>
<div <?php tribe_classes( $widget->get_widget_class() ); ?>>
	<div <?php tribe_classes( $widget->get_dropdown_class() ); ?>>
		<?php $this->template( 'widgets/event-export/button' ); ?>
		<div
			<?php tribe_classes( $widget->get_content_class() ); ?>
			style="display: none;"
		>
			<ul <?php tribe_classes( $widget->get_list_class() ); ?>>
				<?php foreach ( $links_list as $item ) : ?>
					<?php $this->template( 'widgets/event-export/list-item', $item ); ?>
				<?php endforeach; ?>
			</ul>
		</div>

		<script>
			// Some JS to toggle the dropdown, todo: maybe move this to a separate file?
			var exportButton = document.querySelector( ".<?php echo esc_attr( $widget->get_button_class() ); ?>" );
			var exportDropdownContent = document.querySelector( ".<?php echo esc_attr( $widget->get_content_class() ); ?>" );
			var exportDropdownIcon = document.querySelector( ".<?php echo esc_attr( $widget->get_dropdown_icon_class() ); ?>" );

			exportButton.addEventListener(
				"click",
				function () {
					let isClosed = exportDropdownContent.style.display !== "block";
					exportButton.ariaExpanded = isClosed ? "true" : "false"; // Update aria-expanded.
					exportDropdownContent.style.display = isClosed ? "block" : "none"; // Toggle display.
					exportDropdownIcon.classList.toggle( "<?php echo esc_attr( $widget->get_dropdown_icon_class() ); ?>--active" ); // Toggle arrow direction.
				}
			);
		</script>
	</div>
</div>