mdrop_suite-1.0.0-alpha1/modules/mdrop_suite_block/src/Controller/MdropSuiteBlockChooseBlockController.php

modules/mdrop_suite_block/src/Controller/MdropSuiteBlockChooseBlockController.php
<?php

namespace Drupal\mdrop_suite_block\Controller;

use Drupal\layout_builder\SectionStorageInterface;
use Drupal\layout_builder_restrictions\Controller\ChooseBlockController as ChooseBlockControllerCore;
use Drupal\Core\Render\Element;
use Drupal\Core\Render\Markup;

/**
 * Choose a new block.
 */
class MdropSuiteBlockChooseBlockController extends ChooseBlockControllerCore {

  /**
   * {@inheritdoc}
   */
  public function build(SectionStorageInterface $section_storage, $delta, $region) {
    $build = parent::build($section_storage, $delta, $region);
    $inline_build = parent::inlineBlockList($section_storage, $delta, $region);
    if (!empty($build['add_block'])) {
      $build['add_block']['#access'] = FALSE;
    }
    if (!empty($inline_build['back_button'])) {
      $inline_build['back_button']['#access'] = FALSE;
    }
    // Add wrapper to get filters working @see
    // https://www.drupal.org/project/drupal/issues/3308658#comment-15002205
    $build['#type'] = 'container';

    if (!empty($inline_build['links']) && !empty($inline_build['links']['#links'])) {
      $build['block_categories']['InlineBlocks'] = [
        '#type' => 'details',
        '#attributes' => ['class' => ['js-layout-builder-category']],
        '#open' => TRUE,
        '#title' => $this->t('Add new block'),
        'links' => $inline_build['links'],
        '#weight' => -200,
      ];
    }
    if (!empty($build['block_categories'])) {
      foreach (Element::children($build['block_categories']) as $category_key) {
        $build['block_categories'][$category_key]['#open'] = $category_key == 'InlineBlocks';
        $this->categoryBlockLinksAddIcon($build['block_categories'][$category_key], $category_key);
//        dpm($category_key);
      }
    }
    return $build;
  }

  /**
   * Generate block icons for category block links.
   *
   * @param array $category
   *   Categroty.
   */
  protected function categoryBlockLinksAddIcon(array &$category, $category_key) {
    if (!empty($category['links']) && !empty($category['links']['#links'])) {
      // Default block image.
      $icon_base_path = base_path() . \Drupal::service('extension.list.module')->getPath('mdrop_suite_block') . '/images/f5f5f2/';
      // @TODO!
      // $icon_url = \Drupal::service('file_url_generator')->generateString($icon_base_path . 'linuxfoundation.svg');
      $icon_url = $icon_base_path . 'grid.svg';

      foreach (Element::children($category['links']['#links']) as $delta) {
        if (!empty($category['links']['#links'][$delta]['url'])) {
          if ($category_key == 'InlineBlocks') {
            if ($category['links']['#links'][$delta]['url']->getRouteParameters()['plugin_id'] == 'inline_block:mdrop_suite_text') {
              $icon_url = $icon_base_path . 'pencil.svg';
            }
            elseif ($category['links']['#links'][$delta]['url']->getRouteParameters()['plugin_id'] == 'inline_block:mdrop_suite_image') {
              $icon_url = $icon_base_path . 'linuxfoundation.svg';
            }
            elseif ($category['links']['#links'][$delta]['url']->getRouteParameters()['plugin_id'] == 'inline_block:mdrop_suite_cta') {
              $icon_url = $icon_base_path . 'star.svg';
            }
            
            elseif ($category['links']['#links'][$delta]['url']->getRouteParameters()['plugin_id'] == 'inline_block:mdrop_suite_webform') {
              $icon_url = $icon_base_path . 'table.svg';
            }
            elseif ($category['links']['#links'][$delta]['url']->getRouteParameters()['plugin_id'] == 'inline_block:mdrop_suite_remote_video' || $category['links']['#links'][$delta]['url']->getRouteParameters()['plugin_id'] == 'inline_block:mdrop_suite_local_video') {
              $icon_url = $icon_base_path . 'youtube.svg';
            }
            elseif ($category['links']['#links'][$delta]['url']->getRouteParameters()['plugin_id'] == 'inline_block:mdrop_suite_paragraph') {
              $icon_url = $icon_base_path . 'puzzlepiece.svg';
            }
          }
          $label = $category['links']['#links'][$delta]['title'];
          $category['links']['#links'][$delta]['title'] = Markup::create('<img src="' . $icon_url . '" class="block-link-img" /> ' . '<span class="block-link-label">' . $label . '</span>');
        }
      }
    }
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc