imdb_api-1.0.x-dev/src/ImdbItemRenderable.php

src/ImdbItemRenderable.php
<?php

namespace Drupal\imdb_api;

use Drupal\Component\Utility\Unicode;

trait ImdbItemRenderable {

  public function getItemRenderable($entity, $type, $view_mode, $image_style, $truncate_size) {
    // @TODO decouple this method.
    $item = [
      '#theme' => 'imdb_item__' . $view_mode,
      '#title' => '',
      '#description' => '',
      '#image' => '',
    ];

    switch ($type) {
      case 'actor':
        $item['#title'] = $entity->getName();

        if ($mini_bios = $entity->getMiniBios()) {
          $mini_bio = reset($mini_bios);
          $item['#description'] = Unicode::truncate($mini_bio->text, $truncate_size, TRUE, TRUE);
        }
        break;
      default:
        $item['#title'] = $entity->getTitle();

        if (($overview_details = $entity->getOverviewDetails()) && isset($overview_details->plotSummary->text)) {
          $item['#description'] = Unicode::truncate($overview_details->plotSummary->text, $truncate_size, TRUE, TRUE);
        }
    }

    // Since adjacent text describes image alt may be empty.
    $image_url = $entity->getImage()->url;
    $item['#image'] = [
      '#type' => 'html_tag',
      '#tag' => 'img',
      '#attributes' => [
        'src' => $image_url,
        'alt' => '',
      ],
    ];
    if (\Drupal::moduleHandler()->moduleExists('imagecache_external')) {
      $item['#image'] = [
        '#theme' => 'imagecache_external',
        '#uri' => $image_url,
        '#style_name' => $image_style,
        '#alt' => '',
      ];
    }

    return $item;
  }

  public function renderItem($entity, $type, $view_mode, $image_style, $truncate_size) {
    $item = $this->getItemRenderable($entity, $type, $view_mode, $image_style, $truncate_size);

    return \Drupal::service('renderer')->render($item);
  }

}

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

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