File "template-selection-helper.php"

Full Path: /home/romayxjt/public_html/wp-content/plugins/the-events-calendar/src/admin-views/integrations/plugins/elementor/template-selection-helper.php
File size: 1.81 KB
MIME-type: text/x-php
Charset: utf-8

<?php
/**
 * Template for the Elementor template selection helper.
 *
 * This template is used to inject a helper message to the Elementor editor to help users understand that they are editing,
 * the JavaScript and CSS are inline to avoid having the loading complexity for Elementor Edit area.
 *
 * @since 6.4.0
 *
 * @package TEC\Events\Integrations\Plugins\Elementor\Template
 */

?>
<style>
	.tec-events-elementor-template-selection-helper {
		width: 100%;
		margin-bottom: 10px;
	}
</style>
<script>
	( () => {
		const singleEventTemplateWrapper = document.getElementById( 'tribe-events-pg-template' );

		// Only continue if we have this element.
		if ( 0 === singleEventTemplateWrapper.length ) {
			return;
		}
		let injected = false;

		const helperContainer = document.createElement( 'div' );
		const text = document.createTextNode( '<?php esc_html_e( 'Looking for the Event template? Click the folder and navigate to My Templates.', 'the-events-calendar' ); ?>' );
		helperContainer.appendChild( text );
		helperContainer.classList.add( 'tec-events-elementor-template-selection-helper' );

		const mutationObserverCallback = ( mutationsList, observer ) => {
			// Already injected, no need to do it again.
			if ( injected ) {
				return;
			}

			const includedElementorEditArea = mutationsList.some( ( mutation ) => {
				return mutation.target.classList.contains( 'elementor-edit-area' );
			} );

			if ( false === includedElementorEditArea ) {
				return;
			}

			injected = true;

			document.querySelector( '.elementor-add-new-section' ).prepend( helperContainer );
		};
		const observer = new MutationObserver( mutationObserverCallback );

		// Actually do the observing of the DOM.
		observer.observe( singleEventTemplateWrapper, { childList: true, characterData: false, subtree: true, attributes: false } );
	} )();
</script>