module_instructions-2.0.x-dev/src/Controller/ModuleInstructionsController.php

src/Controller/ModuleInstructionsController.php
<?php

namespace Drupal\module_instructions\Controller;

use Drupal\Core\Controller\ControllerBase;
use Drupal\Core\Extension\ExtensionPathResolver;
use Drupal\Core\Extension\ModuleHandlerInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;

/**
 * Base controller for the 'module instructions' module.
 */
class ModuleInstructionsController extends ControllerBase {

  /**
   * Returns the extension.path.resolver service.
   *
   * @var \Drupal\Core\Extension\ExtensionPathResolver
   */
  protected $pathResolver;

  /**
   * Returns the module_handler service.
   *
   * @var \Drupal\Core\Extension\ModuleHandlerInterface
   */
  protected $moduleHandler;

  /**
   * Constructs a ModuleInstructionsController object.
   *
   * @param \Drupal\Core\Extension\ExtensionPathResolver $path_resolver
   *   Factory for getting extension lists by type.
   * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
   *   Interface for classes that manage a set of enabled modules.
   */
  public function __construct(ExtensionPathResolver $path_resolver, ModuleHandlerInterface $module_handler) {
    $this->pathResolver = $path_resolver;
    $this->moduleHandler = $module_handler;
  }

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container) {
    return new static(
      $container->get('extension.path.resolver'),
      $container->get('module_handler')
    );
  }

  /**
   * Creates a title for the instruction page.
   */
  public function getTitle($module, $file) {
    return $this->t('@module (@file)', ['@module' => $module, '@file' => $file]);
  }

  /**
   * Displays the instruction file.
   */
  public function instruction($module, $file) {
    $fullpath = $this->pathResolver->getPath('module', $module) . '/' . $file;

    $filter = (object) [];
    $filter->settings = [
      'filter_url_length' => 256,
    ];

    if (file_exists($fullpath)) {
      $content = file_get_contents($fullpath);

      $context = [
        'module' => $module,
        'file' => $file,
        'format' => 'full_html',
      ];
      $this->moduleHandler->alter('module_instructions_pre_view', $content, $context);

      return [
        '#markup' => '<pre>' . check_markup(_filter_url($content, $filter), $context['format']) . '</pre>',
      ];
    }

    throw new NotFoundHttpException();
  }

}

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

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