Untitled

 avatar
unknown
plain_text
a year ago
4.9 kB
9
Indexable
add_filter(
	'render_block',
	function( $block_content, $block ) {
		if ( 'blackstone/performance-data' === $block['blockName'] ) {
			if ( $block['innerBlocks'] ) {

				$groupTitles = array(); 
				foreach( $block['innerBlocks'] as $inner_block ) {
					$groupTitle = $inner_block['attrs']['groupTitle'];
					if ( ! empty( $groupTitle ) && ! in_array( $groupTitle, $groupTitles, true ) ) {
						$groupTitles[] = $groupTitle;
					}
				}

				if ( empty( $groupTitles ) ) {
					$tabs  = '<div class="performance-data__action">';
					$tabs .= '<div class="custom-select">';
					$tabs .= '<select name="performance-class" class="performance-data__select">';
	
					$has_default_states = ! empty(
						array_filter(
							array_map(
								function( $inner_block ) {
									return ! empty( $inner_block['attrs']['states'] );
								},
								$block['innerBlocks']
							)
						)
					);
	
					if ( is_array( $block['innerBlocks'] ) ) {
						foreach ( $block['innerBlocks'] as $inner_block ) {
	
							$title    = $inner_block['attrs']['title'];
							$states   = ! empty( $inner_block['attrs']['states'] ) ? $inner_block['attrs']['states'] : [];
							$id       = sanitize_title_with_dashes( $title );
							$gtm_atts = setup_multiple_gtm_attributes(array("category"=>"Page Engagement", "action"=>"Filter Click", "label"=>'Performance Filter | ' . esc_attr( $title ), "component_type"=>"Chart tabs", "click_text"=>esc_attr( $title ), "tag_name"=>"Page Engagement Click"), false);
							$tabs    .= '<option ' . $gtm_atts . ' value="' . esc_attr( $id ) . '" data-default-in-states="' . esc_attr( implode( ' ', $states ) ) . '">' . esc_html( $title ) . '</option>';
						}
					}
	
					$tabs .= '</select>';
					$tabs .= '</div>';
					$tabs .= '</div>';
				} else {
					
					$shareClass = __( 'Share Class', 'blackstone' );
					
					$tabs  = '<div class="performance-data__actions">';
					$tabs .= '<div class="custom-select">';
					$tabs .= '<div class="custome-in">';
					$tabs .= '<div class="share-class">' . $shareClass . '</div>';
					$tabs .= '<div class="shared-class-in">';
					$tabs .= '<select name="performance-class" class="performance-data__select">';

					$has_default_states = ! empty(
						array_filter(
							array_map(
								function( $inner_block ) {
									return ! empty( $inner_block['attrs']['states'] );
								},
								$block['innerBlocks']
							)
						)
					);

					if ( is_array( $block['innerBlocks'] ) ) {
						$groupsPerforamcenBars = array();
						
						foreach( $block['innerBlocks'] as $inner_block ) {
							$groupTitle = trim( $inner_block['attrs']['groupTitle'] );
							if ( ! isset( $groupsPerforamcenBars[ $groupTitle ] ) ) {
								$groupsPerforamcenBars[ $groupTitle ] = array();
							}

							$groupsPerforamcenBars[ $groupTitle ][] = $inner_block;
						}

						foreach ( $groupsPerforamcenBars as $groupTitle => $group_tabs ) {
							$tabs    .= '<optgroup class="performance-data_group-title" label="'.$groupTitle.'">';
							foreach ( $group_tabs as $inner_block ) {
								$title    = $inner_block['attrs']['title'];
								$states   = ! empty( $inner_block['attrs']['states'] ) ? $inner_block['attrs']['states'] : [];
								$id       = sanitize_title_with_dashes( $title );
								$groupTitles = $inner_block['attrs']['groupTitle'] ? explode("\n", $inner_block['attrs']['groupTitle']) : [];
								$gtm_atts = setup_multiple_gtm_attributes(array("category"=>"Page Engagement", "action"=>"Filter Click", "label"=>'Performance Filter | ' . esc_attr( $title ), "component_type"=>"Chart tabs", "click_text"=>esc_attr( $title ), "tag_name"=>"Page Engagement Click"), false);
								$tabs    .= '<option ' . $gtm_atts . ' value="' . esc_attr( $id ) . '" data-default-in-states="' . esc_attr( implode( ' ', $states ) ) . '">' . esc_html( $title ) . '</option>';
							}
							$tabs .= '</optgroup>';
						}
					}

					$tabs .= '</select>';
					$tabs .= '</div>';
					$tabs .= '</div>';
					$tabs .= '</div>';
					$tabs .= '</div>';
				}

				// Add custom select.
				$block_content = str_replace( '<!-- Tabs Placeholder -->', $tabs, $block_content );

				$block_content = str_replace( 'data-component="chart-tabs-tab-item-link"', 'data-component="chart-tabs-tab-item-link" data-disable-ga-auto-tracking="true"', $block_content );

				if ( $has_default_states ) {
					$block_content = str_replace( 'data-initially-hidden="false"', 'data-initially-hidden="true"', $block_content );
				}

				// Make first item visible.
				$block_content = preg_replace( '/role=\"tabpanel\" aria-selected=\"false\"/', 'role="tabpanel" aria-selected="true"', $block_content, 1 );
			}
		}

		return $block_content;
	},
	10,
	2
);







Editor is loading...
Leave a Comment