lupus_decoupled-1.x-dev/modules/lupus_decoupled_responsive_preview/src/LupusDecoupledResponsivePreview.php

modules/lupus_decoupled_responsive_preview/src/LupusDecoupledResponsivePreview.php
<?php

namespace Drupal\lupus_decoupled_responsive_preview;

use Drupal\Component\Utility\UrlHelper;
use Drupal\Core\Url;
use Drupal\lupus_decoupled_ce_api\BaseUrlProviderTrait;
use Drupal\responsive_preview\ResponsivePreview;

/**
 * LupusDecoupledResponsivePreview service.
 *
 * This overrides ResponsivePreview service from responsive_preview module.
 */
class LupusDecoupledResponsivePreview extends ResponsivePreview {

  use BaseUrlProviderTrait;

  /**
   * {@inheritdoc}
   */
  public function getPreviewUrl() {
    $preview_url = parent::getPreviewUrl();
    $entityTypeId = $this->routeMatch->getRouteObject()->getDefault('entity_type_id');
    $routeName = $this->routeMatch->getRouteName();
    $parameters = iterator_to_array($this->routeMatch->getRawParameters());
    $entity = NULL;

    // Add support for preview of editing entities' individual layouts.
    if ($entityTypeId && $routeName == "layout_builder.overrides.$entityTypeId.view") {
      $entity = $this->entityTypeManager->getStorage($entityTypeId)->load($parameters[$entityTypeId]);
      $preview_url = Url::fromRoute("lupus_decoupled_layout_builder.layout_builder.$entityTypeId.view", $parameters, [])
        ->toString();
    }

    // Modify any preview URL to have the correct frontend base URL. This is
    // usually done by LupusFrontendPathProcessor, but that needs a URL object
    // which we don't always have here.
    if ($preview_url && !UrlHelper::isExternal($preview_url)) {
      $baseUrlProvider = $this->getBaseUrlProvider();
      if ($entity) {
        $frontend_url = $baseUrlProvider->getFrontendBaseUrlForEntity($entity);
      }
      else {
        $frontend_url = $baseUrlProvider->getFrontendBaseUrl();
      }
      $preview_url = $frontend_url . $preview_url;
    }
    return $preview_url;
  }

}

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

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