permissions_repository-1.0.x-dev/src/Controller/PermissionsRepositoryController.php

src/Controller/PermissionsRepositoryController.php
<?php

declare(strict_types=1);

namespace Drupal\permissions_repository\Controller;

use Drupal\Core\Controller\ControllerBase;
use Drupal\Core\Discovery\YamlDiscovery;
use Drupal\Core\Extension\ModuleHandlerInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Drupal\permissions_repository\Service\PermissionsRepositoryFactoryInterface;
use Drupal\permissions_repository\Service\PermissionsRepositoryReturnStyle;

/**
 * Returns responses for Permissions repository routes.
 */
final class PermissionsRepositoryController extends ControllerBase {

  /**
   * The controller constructor.
   */
  public function __construct(
    private readonly PermissionsRepositoryFactoryInterface $permissionsRepositoryFactory,
  ) {}

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container): self {
    return new self(
      $container->get('permissions_repository.repository_factory'),
    );
  }

  /**
   * Currently not used.
   */
  public function alterPermissionsForm(&$form, $form_state, $form_id) {
    $content['somehelp'] = [
      '#type' => 'markup',
      '#markup' => t('Some additional help message'),
    ];
    $form['permissions']['permissions_repository'][0] = [
      '#type' => 'inline_template',
      '#template' => '{{ title }} <i class="icon icon-info" data-tooltip="{{ settings }}"></i>',
      '#context' => [
        'settings' => \Drupal\Component\Serialization\Json::encode([
          'content' => \Drupal::service('renderer')->renderInIsolation($content),
          'placement' => 'bottom',
        ]),
        'title' => $form['permissions']['permissions_repository'][0]['#markup'],
      ],
    ];
    $form['#attached']['library'][] = 'tooltip/tooltip';
  }

  /**
   * @see permissions_repository.permissions.yml
   */
  public function getPerms(): array {
    return [
      'do something' => [
        'title' => 'Do something',
        'section' => 'admin',
      ],
    ];
  }

  /**
   * @see permissions_repository.permissions.yml
   */
  public function getSections(): array {
    return [
      'unused_section' => [
        'title' => 'unused_section',
      ],
    ];
  }

  public function repotest(): array {
    $yamlDiscovery = new YamlDiscovery('permissions', $this->moduleHandler()->getModuleDirectories());

    $list = $yamlDiscovery->findAll();

    $res = $this->permissionsRepositoryFactory->createPermissionsRepository($list);
    //rawdebug($res);

    $build['content'] = [
      '#type' => 'item',
      '#markup' => 'Change this to use rawdebug or print_r to see what $res contains.',
    ];

    return $build;
  }

}

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

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