wayfinding-2.1.x-dev/modules/digital_signage/wayfinding_digital_signage.module

modules/digital_signage/wayfinding_digital_signage.module
<?php

/**
 * @file
 * Module file for the wayfinding for digital signage module.
 */

use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Entity\EntityTypeInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\digital_signage_framework\DeviceInterface;
use Drupal\digital_signage_framework\Entity\Device;

/**
 * Implements hook_entity_base_field_info().
 */
function wayfinding_digital_signage_entity_base_field_info(EntityTypeInterface $entity_type): array {
  if ($entity_type->id() === 'digital_signage_device') {
    /** @var \Drupal\wayfinding_digital_signage\EntityUpdate $service */
    $service = Drupal::service('wayfinding_digital_signage.entity_update');
    return $service->fieldDefinition();
  }
  return [];
}

/**
 * Prepares variables for views wayfinding master templates.
 *
 * Default template: views-view-wayfinding-wrapper.html.twig.
 *
 * @param array $variables
 *   The variables for the twig template.
 */
function wayfinding_digital_signage_preprocess_views_view_wayfinding_wrapper(array &$variables): void {
  /** @var \Drupal\views\ViewExecutable $view */
  $view = $variables['view'];
  if (!empty($view->args[1])) {
    $service = Drupal::service('wayfinding.query');
    $perspective = $view->args[0] ?? 0;
    /** @var \Drupal\digital_signage_framework\DeviceInterface $device */
    $device = $view->args[1] instanceof DeviceInterface ?
      $view->args[1] :
      Device::load($view->args[1]);
    $bgimg = $service->getRenderedMedia($perspective, 'user', 1, TRUE);
    if (!($device->get('pin_location_x')->value === NULL || $device->get('pin_location_y')->value === NULL)) {
      $pinLocation = [
        'x' => $device->get('pin_location_x')->value ?? 0,
        'y' => $device->get('pin_location_y')->value ?? 0,
      ];
      $pinContent = '<g transform="translate(' . $pinLocation['x'] . ',' . $pinLocation['y'] . ')">' .
        $service->getRenderedPin(TRUE) . '</g>';
      $bgimg = str_replace('</svg>', $pinContent . '</svg>', $bgimg);
    }
    else {
      $variables['pinimg'] = $service->getRenderedPin();
    }
    $variables['bgimg'] = $bgimg;
  }
}

/**
 * Implements hook_entity_insert().
 */
function wayfinding_digital_signage_entity_insert(EntityInterface $entity): void {
  Drupal::service('wayfinding_digital_signage.events')->insert($entity);
}

/**
 * Implements hook_entity_update().
 */
function wayfinding_digital_signage_entity_update(EntityInterface $entity): void {
  Drupal::service('wayfinding_digital_signage.events')->update($entity);
}

/**
 * Implements hook_entity_delete().
 */
function wayfinding_digital_signage_entity_delete(EntityInterface $entity): void {
  Drupal::service('wayfinding_digital_signage.events')->delete($entity);
}

/**
 * Implements hook_inline_entity_form_entity_form_alter().
 */
function wayfinding_digital_signage_inline_entity_form_entity_form_alter(array &$entity_form, FormStateInterface $form_state): void {
  if (($entity_form['#entity_type'] === 'digital_signage_content_setting') && method_exists($form_state->getBuildInfo()['callback_object'], 'getEntity')) {
    /** @var \Drupal\Core\Entity\ContentEntityInterface $entity */
    $entity = $form_state->getBuildInfo()['callback_object']->getEntity();
    if ($entity->getEntityTypeId() === 'digsig_computed_content' && $entity->bundle() === 'wayfinding') {
      $entity_form['devices']['#access'] = FALSE;
    }
  }
}

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

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