112 lines
3.4 KiB
PHP
112 lines
3.4 KiB
PHP
<?php
|
|
|
|
namespace DgoraWcas;
|
|
|
|
// Exit if accessed directly
|
|
if ( ! defined( 'ABSPATH' ) ) {
|
|
exit;
|
|
}
|
|
|
|
class Blocks {
|
|
public function init() {
|
|
add_action( 'init', function () {
|
|
$this->registerBlocks();
|
|
|
|
add_filter( 'widget_types_to_hide_from_legacy_widget_block', array( $this, 'hideLegacyWidgetBlock' ) );
|
|
} );
|
|
}
|
|
|
|
private function registerBlocks() {
|
|
register_block_type(
|
|
DGWT_WCAS_DIR . 'build/blocks/search',
|
|
array(
|
|
'render_callback' => array( $this, 'renderCallback' ),
|
|
)
|
|
);
|
|
|
|
register_block_type(
|
|
DGWT_WCAS_DIR . 'build/blocks/search-nav',
|
|
array(
|
|
'render_callback' => array( $this, 'renderCallback' ),
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Render FiboSearch blocks content
|
|
*
|
|
* @param $attributes
|
|
* @param $content
|
|
* @param $block
|
|
*
|
|
* @return string
|
|
*/
|
|
public function renderCallback( $attributes, $content, $block ) {
|
|
$normalizedAttributes = array();
|
|
|
|
$isBackend = defined( 'REST_REQUEST' ) && REST_REQUEST && isset( $_REQUEST['context'] ) && $_REQUEST['context'] === 'edit';
|
|
|
|
if ( isset( $attributes['inheritPluginSettings'] ) && ! $attributes['inheritPluginSettings'] ) {
|
|
if ( isset( $attributes['layout'] ) ) {
|
|
$normalizedAttributes['layout'] = esc_attr( $attributes['layout'] );
|
|
}
|
|
if ( isset( $attributes['darkenedBackground'] ) ) {
|
|
$normalizedAttributes['darken_bg'] = esc_attr( $attributes['darkenedBackground'] );
|
|
}
|
|
if ( isset( $attributes['mobileOverlay'] ) ) {
|
|
$normalizedAttributes['mobile_overlay'] = esc_attr( $attributes['mobileOverlay'] );
|
|
}
|
|
if ( isset( $attributes['iconColor'] ) ) {
|
|
$normalizedAttributes['icon_color'] = esc_attr( $attributes['iconColor'] );
|
|
}
|
|
|
|
if ( $isBackend ) {
|
|
if ( isset( $attributes['layout'] ) && $attributes['layout'] === 'icon-flexible' ) {
|
|
ob_start();
|
|
echo '<div class="dgwt-wcas-show-on-preview-desktop">';
|
|
$normalizedAttributes['layout'] = 'classic';
|
|
echo do_shortcode( '[fibosearch ' . $this->getAttributesString( $normalizedAttributes ) . ']' );
|
|
echo '</div>';
|
|
|
|
echo '<div class="dgwt-wcas-show-on-preview-tablet dgwt-wcas-show-on-preview-mobile">';
|
|
$normalizedAttributes['layout'] = 'icon';
|
|
echo do_shortcode( '[fibosearch ' . $this->getAttributesString( $normalizedAttributes ) . ']' );
|
|
echo '</div>';
|
|
|
|
return ob_get_clean();
|
|
} else if ( isset( $attributes['layout'] ) && $attributes['layout'] === 'icon-flexible-inv' ) {
|
|
ob_start();
|
|
|
|
echo '<div class="dgwt-wcas-show-on-preview-desktop">';
|
|
$normalizedAttributes['layout'] = 'icon';
|
|
echo do_shortcode( '[fibosearch ' . $this->getAttributesString( $normalizedAttributes ) . ']' );
|
|
echo '</div>';
|
|
|
|
echo '<div class="dgwt-wcas-show-on-preview-tablet dgwt-wcas-show-on-preview-mobile">';
|
|
$normalizedAttributes['layout'] = 'classic';
|
|
echo do_shortcode( '[fibosearch ' . $this->getAttributesString( $normalizedAttributes ) . ']' );
|
|
echo '</div>';
|
|
|
|
return ob_get_clean();
|
|
}
|
|
}
|
|
}
|
|
|
|
return do_shortcode( '[fibosearch ' . $this->getAttributesString( $normalizedAttributes ) . ']' );
|
|
}
|
|
|
|
public function hideLegacyWidgetBlock( $widgetTypes ) {
|
|
$widgetTypes[] = 'dgwt_wcas_ajax_search';
|
|
|
|
return $widgetTypes;
|
|
}
|
|
|
|
private function getAttributesString( $attributes ) {
|
|
$attributesStringArr = array_map( function ( $key, $value ) {
|
|
return $key . '="' . $value . '"';
|
|
}, array_keys( $attributes ), $attributes );
|
|
|
|
return implode( ' ', $attributesStringArr );
|
|
}
|
|
}
|