Initial Drupal 11 with DDEV setup

This commit is contained in:
gluebox
2025-10-08 11:39:17 -04:00
commit 89ef74b305
25344 changed files with 2599172 additions and 0 deletions

View File

@ -0,0 +1,3 @@
.some-rule {
display: block;
}

View File

@ -0,0 +1,9 @@
name: 'Devel dumper test module'
type: module
description: 'Test pluggable dumpers.'
package: Testing
# Information added by Drupal.org packaging script on 2025-07-07
version: '5.4.0'
project: 'devel'
datestamp: 1751916160

View File

@ -0,0 +1,7 @@
devel_dumper_test:
version: 0
css:
theme:
css/devel_dumper_test.css: {}
js:
js/devel_dumper_test.js: {}

View File

@ -0,0 +1,40 @@
devel_dumper_test.dump:
path: '/devel_dumper_test/dump'
defaults:
_controller: '\Drupal\devel_dumper_test\Controller\DumperTestController::dump'
_title: 'Devel Dumper Test'
requirements:
_permission: 'access devel information'
devel_dumper_test.message:
path: '/devel_dumper_test/message'
defaults:
_controller: '\Drupal\devel_dumper_test\Controller\DumperTestController::message'
_title: 'Devel Dumper Test'
requirements:
_permission: 'access devel information'
devel_dumper_test.export:
path: '/devel_dumper_test/export'
defaults:
_controller: '\Drupal\devel_dumper_test\Controller\DumperTestController::export'
_title: 'Devel Dumper Test'
requirements:
_permission: 'access devel information'
devel_dumper_test.export_renderable:
path: '/devel_dumper_test/export_renderable'
defaults:
_controller: '\Drupal\devel_dumper_test\Controller\DumperTestController::exportRenderable'
_title: 'Devel Dumper Test'
requirements:
_permission: 'access devel information'
devel_dumper_test.debug:
path: '/devel_dumper_test/debug'
defaults:
_controller: '\Drupal\devel_dumper_test\Controller\DumperTestController::debug'
_title: 'Devel Dumper Test'
requirements:
# Specifically give access to all users for testing in testDumpersOutput().
_access: 'TRUE'

View File

@ -0,0 +1,95 @@
<?php
namespace Drupal\devel_dumper_test\Controller;
use Drupal\Core\Controller\ControllerBase;
use Drupal\devel\DevelDumperManagerInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
* Controller class for dumper_test module.
*
* @package Drupal\devel_dumper_test\Controller
*/
class DumperTestController extends ControllerBase {
/**
* The dumper manager.
*/
protected DevelDumperManagerInterface $dumper;
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container): static {
$instance = parent::create($container);
$instance->dumper = $container->get('devel.dumper');
return $instance;
}
/**
* Returns the dump output to test.
*
* @return array
* The render array output.
*/
public function dump(): array {
$this->dumper->dump('Test output');
return [
'#markup' => 'test',
];
}
/**
* Returns the message output to test.
*
* @return array
* The render array output.
*/
public function message(): array {
$this->dumper->message('Test output');
return [
'#markup' => 'test',
];
}
/**
* Returns the debug output to test.
*
* @return array
* The render array output.
*/
public function debug(): array {
$this->dumper->debug('Test output');
return [
'#markup' => 'test',
];
}
/**
* Returns the export output to test.
*
* @return array
* The render array output.
*/
public function export(): array {
return [
'#markup' => $this->dumper->export('Test output'),
];
}
/**
* Returns the renderable export output to test.
*
* @return array
* The render array output.
*/
public function exportRenderable(): array {
return $this->dumper->exportAsRenderable('Test output');
}
}

View File

@ -0,0 +1,63 @@
<?php
namespace Drupal\devel_dumper_test\Plugin\Devel\Dumper;
use Drupal\Component\Render\MarkupInterface;
use Drupal\devel\DevelDumperBase;
/**
* Provides a AvailableTestDumper plugin.
*
* @DevelDumper(
* id = "available_test_dumper",
* label = @Translation("Available test dumper."),
* description = @Translation("Drupal dumper for testing purposes (available).")
* )
*/
class AvailableTestDumper extends DevelDumperBase {
/**
* {@inheritdoc}
*/
public function dump($input, ?string $name = NULL): void {
// Add a predetermined string to $input to check if this dumper has been
// selected successfully.
$input = '<pre>AvailableTestDumper::dump() ' . $input . '</pre>';
echo $input;
}
/**
* {@inheritdoc}
*/
public function export(mixed $input, ?string $name = NULL): MarkupInterface|string {
// Add a predetermined string to $input to check if this dumper has been
// selected successfully.
$input = '<pre>AvailableTestDumper::export() ' . $input . '</pre>';
return $this->setSafeMarkup($input);
}
/**
* {@inheritdoc}
*/
public function exportAsRenderable($input, ?string $name = NULL): array {
// Add a predetermined string to $input to check if this dumper has been
// selected successfully.
$input = '<pre>AvailableTestDumper::exportAsRenderable() ' . $input . '</pre>';
return [
'#attached' => [
'library' => ['devel_dumper_test/devel_dumper_test'],
],
'#markup' => $this->setSafeMarkup($input),
];
}
/**
* {@inheritdoc}
*/
public static function checkRequirements(): bool {
return TRUE;
}
}

View File

@ -0,0 +1,43 @@
<?php
namespace Drupal\devel_dumper_test\Plugin\Devel\Dumper;
use Drupal\Component\Render\MarkupInterface;
use Drupal\devel\DevelDumperBase;
/**
* Provides a NotAvailableTestDumper plugin.
*
* @DevelDumper(
* id = "not_available_test_dumper",
* label = @Translation("Not available test dumper."),
* description = @Translation("Drupal dumper for testing purposes (not available).")
* )
*/
class NotAvailableTestDumper extends DevelDumperBase {
/**
* {@inheritdoc}
*/
public function dump($input, ?string $name = NULL): void {
$input = '<pre>' . $input . '</pre>';
echo $input;
}
/**
* {@inheritdoc}
*/
public function export(mixed $input, ?string $name = NULL): MarkupInterface|string {
$input = '<pre>' . $input . '</pre>';
return $this->setSafeMarkup($input);
}
/**
* {@inheritdoc}
*/
public static function checkRequirements(): bool {
return FALSE;
}
}

View File

@ -0,0 +1,13 @@
name: 'Devel entity test module'
type: module
description: 'Provides entity types for Devel tests.'
package: Testing
dependencies:
- drupal:field
- drupal:text
- drupal:entity_test
# Information added by Drupal.org packaging script on 2025-07-07
version: '5.4.0'
project: 'devel'
datestamp: 1751916160

View File

@ -0,0 +1,2 @@
devel_entity_test.local_tasks:
deriver: 'Drupal\devel_entity_test\Plugin\Derivative\DevelEntityTestLocalTasks'

View File

@ -0,0 +1,35 @@
<?php
/**
* @file
* Test module for the entity API providing several entity types for testing.
*/
/**
* Implements hook_entity_view_mode_info_alter().
*/
function devel_entity_test_entity_view_mode_info_alter(array &$view_modes): void {
$entity_info = \Drupal::entityTypeManager()->getDefinitions();
foreach ($entity_info as $entity_type => $info) {
if ($info->getProvider() !== 'devel_entity_test_canonical') {
continue;
}
if (isset($view_modes[$entity_type])) {
continue;
}
$view_modes[$entity_type] = [
'full' => [
'label' => t('Full object'),
'status' => TRUE,
'cache' => TRUE,
],
'teaser' => [
'label' => t('Teaser'),
'status' => TRUE,
'cache' => TRUE,
],
];
}
}

View File

@ -0,0 +1,44 @@
<?php
namespace Drupal\devel_entity_test\Entity;
use Drupal\entity_test\Entity\EntityTest;
/**
* Defines the test entity class.
*
* @ContentEntityType(
* id = "devel_entity_test_canonical",
* label = @Translation("Devel test entity with canonical link"),
* handlers = {
* "list_builder" = "Drupal\entity_test\EntityTestListBuilder",
* "view_builder" = "Drupal\entity_test\EntityTestViewBuilder",
* "access" = "Drupal\entity_test\EntityTestAccessControlHandler",
* "form" = {
* "default" = "Drupal\entity_test\EntityTestForm",
* "delete" = "Drupal\entity_test\EntityTestDeleteForm"
* },
* "route_provider" = {
* "html" = "Drupal\Core\Entity\Routing\DefaultHtmlRouteProvider",
* },
* "translation" = "Drupal\content_translation\ContentTranslationHandler",
* "views_data" = "Drupal\entity_test\EntityTestViewsData"
* },
* base_table = "devel_entity_test_canonical",
* persistent_cache = FALSE,
* entity_keys = {
* "id" = "id",
* "uuid" = "uuid",
* "bundle" = "type",
* "label" = "name",
* "langcode" = "langcode",
* },
* links = {
* "canonical" = "/devel_entity_test_canonical/{devel_entity_test_canonical}",
* },
* field_ui_base_route = "entity.entity_test.admin_form",
* )
*/
class DevelEntityTestCanonical extends EntityTest {
}

View File

@ -0,0 +1,44 @@
<?php
namespace Drupal\devel_entity_test\Entity;
use Drupal\entity_test\Entity\EntityTest;
/**
* Defines the test entity class.
*
* @ContentEntityType(
* id = "devel_entity_test_edit",
* label = @Translation("Devel test entity with edit form link"),
* handlers = {
* "list_builder" = "Drupal\entity_test\EntityTestListBuilder",
* "view_builder" = "Drupal\entity_test\EntityTestViewBuilder",
* "access" = "Drupal\entity_test\EntityTestAccessControlHandler",
* "form" = {
* "default" = "Drupal\entity_test\EntityTestForm",
* "delete" = "Drupal\entity_test\EntityTestDeleteForm"
* },
* "route_provider" = {
* "html" = "Drupal\Core\Entity\Routing\DefaultHtmlRouteProvider",
* },
* "translation" = "Drupal\content_translation\ContentTranslationHandler",
* "views_data" = "Drupal\entity_test\EntityTestViewsData"
* },
* base_table = "devel_entity_test_edit",
* persistent_cache = FALSE,
* entity_keys = {
* "id" = "id",
* "uuid" = "uuid",
* "bundle" = "type",
* "label" = "name",
* "langcode" = "langcode",
* },
* links = {
* "edit-form" = "/devel_entity_test_edit/manage/{devel_entity_test_edit}",
* },
* field_ui_base_route = "entity.entity_test.admin_form",
* )
*/
class DevelEntityTestEdit extends EntityTest {
}

View File

@ -0,0 +1,41 @@
<?php
namespace Drupal\devel_entity_test\Entity;
use Drupal\entity_test\Entity\EntityTest;
/**
* Defines the test entity class.
*
* @ContentEntityType(
* id = "devel_entity_test_no_links",
* label = @Translation("Devel test entity with no links"),
* handlers = {
* "list_builder" = "Drupal\entity_test\EntityTestListBuilder",
* "view_builder" = "Drupal\entity_test\EntityTestViewBuilder",
* "access" = "Drupal\entity_test\EntityTestAccessControlHandler",
* "form" = {
* "default" = "Drupal\entity_test\EntityTestForm",
* "delete" = "Drupal\entity_test\EntityTestDeleteForm"
* },
* "route_provider" = {
* "html" = "Drupal\Core\Entity\Routing\DefaultHtmlRouteProvider",
* },
* "translation" = "Drupal\content_translation\ContentTranslationHandler",
* "views_data" = "Drupal\entity_test\EntityTestViewsData"
* },
* base_table = "devel_entity_test_no_links",
* persistent_cache = FALSE,
* entity_keys = {
* "id" = "id",
* "uuid" = "uuid",
* "bundle" = "type",
* "label" = "name",
* "langcode" = "langcode",
* },
* field_ui_base_route = "entity.entity_test.admin_form",
* )
*/
class DevelEntityTestNoLinks extends EntityTest {
}

View File

@ -0,0 +1,31 @@
<?php
namespace Drupal\devel_entity_test\Plugin\Derivative;
use Drupal\Component\Plugin\Derivative\DeriverBase;
/**
* Defines the local tasks for all the entity_test entities.
*/
class DevelEntityTestLocalTasks extends DeriverBase {
/**
* {@inheritdoc}
*/
public function getDerivativeDefinitions($base_plugin_definition) {
$this->derivatives = [];
$this->derivatives['devel_entity_test_canonical.canonical'] = [];
$this->derivatives['devel_entity_test_canonical.canonical']['base_route'] = "entity.devel_entity_test_canonical.canonical";
$this->derivatives['devel_entity_test_canonical.canonical']['route_name'] = "entity.devel_entity_test_canonical.canonical";
$this->derivatives['devel_entity_test_canonical.canonical']['title'] = 'View';
$this->derivatives['devel_entity_test_edit.edit'] = [];
$this->derivatives['devel_entity_test_edit.edit']['base_route'] = "entity.devel_entity_test_edit.edit_form";
$this->derivatives['devel_entity_test_edit.edit']['route_name'] = "entity.devel_entity_test_edit.edit_form";
$this->derivatives['devel_entity_test_edit.edit']['title'] = 'Edit';
return parent::getDerivativeDefinitions($base_plugin_definition);
}
}

View File

@ -0,0 +1,9 @@
name: 'Devel test module'
type: module
description: 'Support module for Devel testing.'
package: Testing
# Information added by Drupal.org packaging script on 2025-07-07
version: '5.4.0'
project: 'devel'
datestamp: 1751916160

View File

@ -0,0 +1,18 @@
<?php
/**
* @file
* Helper module for devel test.
*/
/**
* Implements hook_mail().
*/
function devel_test_mail($key, array &$message, array $params): void {
if ($key === 'devel_mail_log') {
$message['subject'] = $params['subject'];
$message['body'][] = $params['body'];
$message['headers']['From'] = $params['headers']['from'];
$message['headers'] += $params['headers']['additional'];
}
}

View File

@ -0,0 +1,7 @@
devel.simple_page:
path: '/devel/simple-page'
defaults:
_controller: '\Drupal\devel_test\Controller\DevelTestController::simplePage'
_title: 'Simple Page'
requirements:
_permission: 'access devel information'

View File

@ -0,0 +1,7 @@
services:
devel_test.test_route_subscriber:
class: Drupal\devel_test\Routing\TestRouteSubscriber
arguments: ['@state']
tags:
- { name: event_subscriber }

View File

@ -0,0 +1,35 @@
<?php
namespace Drupal\devel_test\Controller;
use Drupal\Core\Controller\ControllerBase;
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
* Returns responses for devel module routes.
*/
class DevelTestController extends ControllerBase {
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container): static {
$instance = parent::create($container);
$instance->stringTranslation = $container->get('string_translation');
return $instance;
}
/**
* Returns a simple page output.
*
* @return array
* A render array.
*/
public function simplePage(): array {
return [
'#markup' => $this->t('Simple page'),
];
}
}

View File

@ -0,0 +1,36 @@
<?php
namespace Drupal\devel_test\Routing;
use Drupal\Core\Routing\RouteSubscriberBase;
use Drupal\Core\State\State;
use Symfony\Component\Routing\RouteCollection;
/**
* Router subscriber class for testing purpose.
*/
class TestRouteSubscriber extends RouteSubscriberBase {
/**
* The state store.
*/
protected State $state;
/**
* Constructor method.
*
* @param \Drupal\Core\State\State $state
* The object State.
*/
public function __construct(State $state) {
$this->state = $state;
}
/**
* {@inheritdoc}
*/
protected function alterRoutes(RouteCollection $collection) {
$this->state->set('devel_test_route_rebuild', 'Router rebuild fired');
}
}