Loading src/Annotation/EmailBuilder.php +14 −0 Original line number Diff line number Diff line Loading @@ -42,4 +42,18 @@ class EmailBuilder extends Plugin { */ public $common_adjusters = []; /** * Human-readable name of config to import. * * @var string */ public $import = ''; /** * Human-readable warning for importing. * * @var string */ public $import_warning = ''; } src/Controller/SymfonyMailerController.php +118 −0 Original line number Diff line number Diff line Loading @@ -3,8 +3,11 @@ namespace Drupal\symfony_mailer\Controller; use Drupal\Core\Controller\ControllerBase; use Drupal\Core\Url; use Drupal\symfony_mailer\Entity\MailerPolicy; use Drupal\symfony_mailer\MailerTransportInterface; use Drupal\symfony_mailer\Processor\EmailBuilderManagerInterface; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\HttpFoundation\Request; /** Loading @@ -12,6 +15,121 @@ use Symfony\Component\HttpFoundation\Request; */ class SymfonyMailerController extends ControllerBase { /** * The email builder manager. * * @var \Drupal\symfony_mailer\Processor\EmailBuilderManagerInterface */ protected $builderManager; /** * Constructs the MailerCommands object. * * @param \Drupal\symfony_mailer\Processor\EmailBuilderManagerInterface $email_builder_manager * The email builder manager. */ public function __construct(EmailBuilderManagerInterface $email_builder_manager) { $this->builderManager = $email_builder_manager; } /** * {@inheritdoc} */ public static function create(ContainerInterface $container) { return new static( $container->get('plugin.manager.email_builder') ); } /** * Returns a page about the config import status. * * @return array * Render array. */ public function importStatus() { $build = [ '#type' => 'table', '#header' => [ 'name' => $this->t('Name'), 'state_name' => $this->t('State'), 'warning' => $this->t('Warning'), 'operations' => $this->t('Operations'), ], //'#title' => $this->getTitle(), '#rows' => $this->builderManager->getImportInfo(), '#empty' => $this->t('There is no config to import.'), ]; foreach ($build['#rows'] as $id => &$row) { $state = $row['state']; unset($row['state']); $operations['import'] = [ 'title' => ($state == EmailBuilderManagerInterface::IMPORT_COMPLETE) ? $this->t('Re-import') : $this->t('Import'), 'url' => Url::fromRoute('symfony_mailer.import.import', ['id' => $id]), ]; if ($state == EmailBuilderManagerInterface::IMPORT_READY) { $operations['skip'] = [ 'title' => $this->t('Skip'), 'url' => Url::fromRoute('symfony_mailer.import.skip', ['id' => $id]), ]; } $row['operations']['data'] = [ '#type' => 'operations', '#links' => $operations, ]; } return $build; } /** * Imports all config not yet imported. * * @return \Symfony\Component\HttpFoundation\RedirectResponse * A redirect to the import status page. */ public function importAll() { $this->builderManager->importAll(); $this->messenger()->addStatus($this->t('Imported all configuration')); return $this->redirect('symfony_mailer.import.status'); } /** * Imports config for the specified id. * * @param string $id * The ID. * * @return \Symfony\Component\HttpFoundation\RedirectResponse * A redirect to the import status page. */ public function import(string $id) { $this->builderManager->import($id); $label = $this->builderManager->getDefinition($id)['label']; $this->messenger()->addStatus($this->t('Imported configuration for %label.', ['%label' => $label])); return $this->redirect('symfony_mailer.import.status'); } /** * Skips importing config for the specified id. * * @param string $id * The ID. * * @return \Symfony\Component\HttpFoundation\RedirectResponse * A redirect to the import status page. */ public function skip(string $id) { $this->builderManager->setImportState($id, EmailBuilderManagerInterface::IMPORT_SKIPPED); $label = $this->builderManager->getDefinition($id)['label']; $this->messenger()->addStatus($this->t('Skipped importing configuration for %label.', ['%label' => $label])); return $this->redirect('symfony_mailer.import.status'); } /** * Sets the transport as the default. * Loading symfony_mailer.links.action.yml +6 −0 Original line number Diff line number Diff line Loading @@ -3,3 +3,9 @@ symfony_mailer.mailer_policy.add: title: 'Add policy' appears_on: - entity.mailer_policy.collection symfony_mailer.import.all: route_name: symfony_mailer.import.all title: 'Import all' appears_on: - symfony_mailer.import.status symfony_mailer.links.task.yml +10 −4 Original line number Diff line number Diff line entity.mailer_policy.collection: title: Policy description: 'Listing of Mailer policy.' base_route: entity.mailer_policy.collection route_name: entity.mailer_policy.collection symfony_mailer.mailer_transport.collection: title: Transports description: 'Listing of Mailer transports.' base_route: entity.mailer_policy.collection route_name: entity.mailer_transport.collection entity.mailer_policy.collection: title: Policy description: 'Listing of Mailer policy.' symfony_mailer.import.status: title: Import description: 'Import configuration.' base_route: entity.mailer_policy.collection route_name: entity.mailer_policy.collection route_name: symfony_mailer.import.status entity.mailer_policy.edit_form: title: Edit Loading symfony_mailer.routing.yml +31 −0 Original line number Diff line number Diff line Loading @@ -76,3 +76,34 @@ entity.mailer_policy.delete_form: requirements: _entity_access: 'mailer_policy.delete' symfony_mailer.import.status: path: '/admin/config/system/mailer/import' defaults: _controller: '\Drupal\symfony_mailer\Controller\SymfonyMailerController::importStatus' _title: 'Import configuration' requirements: _permission: 'administer mailer' symfony_mailer.import.all: path: '/admin/config/system/mailer/import-all' defaults: _controller: '\Drupal\symfony_mailer\Controller\SymfonyMailerController::importAll' _title: 'Import all' requirements: _permission: 'administer mailer' symfony_mailer.import.import: path: '/admin/config/system/mailer/import/{id}' defaults: _controller: '\Drupal\symfony_mailer\Controller\SymfonyMailerController::import' _title: 'Import' requirements: _permission: 'administer mailer' symfony_mailer.import.skip: path: '/admin/config/system/mailer/import/{id}/skip' defaults: _controller: '\Drupal\symfony_mailer\Controller\SymfonyMailerController::skip' _title: 'Skip' requirements: _permission: 'administer mailer' Loading
src/Annotation/EmailBuilder.php +14 −0 Original line number Diff line number Diff line Loading @@ -42,4 +42,18 @@ class EmailBuilder extends Plugin { */ public $common_adjusters = []; /** * Human-readable name of config to import. * * @var string */ public $import = ''; /** * Human-readable warning for importing. * * @var string */ public $import_warning = ''; }
src/Controller/SymfonyMailerController.php +118 −0 Original line number Diff line number Diff line Loading @@ -3,8 +3,11 @@ namespace Drupal\symfony_mailer\Controller; use Drupal\Core\Controller\ControllerBase; use Drupal\Core\Url; use Drupal\symfony_mailer\Entity\MailerPolicy; use Drupal\symfony_mailer\MailerTransportInterface; use Drupal\symfony_mailer\Processor\EmailBuilderManagerInterface; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\HttpFoundation\Request; /** Loading @@ -12,6 +15,121 @@ use Symfony\Component\HttpFoundation\Request; */ class SymfonyMailerController extends ControllerBase { /** * The email builder manager. * * @var \Drupal\symfony_mailer\Processor\EmailBuilderManagerInterface */ protected $builderManager; /** * Constructs the MailerCommands object. * * @param \Drupal\symfony_mailer\Processor\EmailBuilderManagerInterface $email_builder_manager * The email builder manager. */ public function __construct(EmailBuilderManagerInterface $email_builder_manager) { $this->builderManager = $email_builder_manager; } /** * {@inheritdoc} */ public static function create(ContainerInterface $container) { return new static( $container->get('plugin.manager.email_builder') ); } /** * Returns a page about the config import status. * * @return array * Render array. */ public function importStatus() { $build = [ '#type' => 'table', '#header' => [ 'name' => $this->t('Name'), 'state_name' => $this->t('State'), 'warning' => $this->t('Warning'), 'operations' => $this->t('Operations'), ], //'#title' => $this->getTitle(), '#rows' => $this->builderManager->getImportInfo(), '#empty' => $this->t('There is no config to import.'), ]; foreach ($build['#rows'] as $id => &$row) { $state = $row['state']; unset($row['state']); $operations['import'] = [ 'title' => ($state == EmailBuilderManagerInterface::IMPORT_COMPLETE) ? $this->t('Re-import') : $this->t('Import'), 'url' => Url::fromRoute('symfony_mailer.import.import', ['id' => $id]), ]; if ($state == EmailBuilderManagerInterface::IMPORT_READY) { $operations['skip'] = [ 'title' => $this->t('Skip'), 'url' => Url::fromRoute('symfony_mailer.import.skip', ['id' => $id]), ]; } $row['operations']['data'] = [ '#type' => 'operations', '#links' => $operations, ]; } return $build; } /** * Imports all config not yet imported. * * @return \Symfony\Component\HttpFoundation\RedirectResponse * A redirect to the import status page. */ public function importAll() { $this->builderManager->importAll(); $this->messenger()->addStatus($this->t('Imported all configuration')); return $this->redirect('symfony_mailer.import.status'); } /** * Imports config for the specified id. * * @param string $id * The ID. * * @return \Symfony\Component\HttpFoundation\RedirectResponse * A redirect to the import status page. */ public function import(string $id) { $this->builderManager->import($id); $label = $this->builderManager->getDefinition($id)['label']; $this->messenger()->addStatus($this->t('Imported configuration for %label.', ['%label' => $label])); return $this->redirect('symfony_mailer.import.status'); } /** * Skips importing config for the specified id. * * @param string $id * The ID. * * @return \Symfony\Component\HttpFoundation\RedirectResponse * A redirect to the import status page. */ public function skip(string $id) { $this->builderManager->setImportState($id, EmailBuilderManagerInterface::IMPORT_SKIPPED); $label = $this->builderManager->getDefinition($id)['label']; $this->messenger()->addStatus($this->t('Skipped importing configuration for %label.', ['%label' => $label])); return $this->redirect('symfony_mailer.import.status'); } /** * Sets the transport as the default. * Loading
symfony_mailer.links.action.yml +6 −0 Original line number Diff line number Diff line Loading @@ -3,3 +3,9 @@ symfony_mailer.mailer_policy.add: title: 'Add policy' appears_on: - entity.mailer_policy.collection symfony_mailer.import.all: route_name: symfony_mailer.import.all title: 'Import all' appears_on: - symfony_mailer.import.status
symfony_mailer.links.task.yml +10 −4 Original line number Diff line number Diff line entity.mailer_policy.collection: title: Policy description: 'Listing of Mailer policy.' base_route: entity.mailer_policy.collection route_name: entity.mailer_policy.collection symfony_mailer.mailer_transport.collection: title: Transports description: 'Listing of Mailer transports.' base_route: entity.mailer_policy.collection route_name: entity.mailer_transport.collection entity.mailer_policy.collection: title: Policy description: 'Listing of Mailer policy.' symfony_mailer.import.status: title: Import description: 'Import configuration.' base_route: entity.mailer_policy.collection route_name: entity.mailer_policy.collection route_name: symfony_mailer.import.status entity.mailer_policy.edit_form: title: Edit Loading
symfony_mailer.routing.yml +31 −0 Original line number Diff line number Diff line Loading @@ -76,3 +76,34 @@ entity.mailer_policy.delete_form: requirements: _entity_access: 'mailer_policy.delete' symfony_mailer.import.status: path: '/admin/config/system/mailer/import' defaults: _controller: '\Drupal\symfony_mailer\Controller\SymfonyMailerController::importStatus' _title: 'Import configuration' requirements: _permission: 'administer mailer' symfony_mailer.import.all: path: '/admin/config/system/mailer/import-all' defaults: _controller: '\Drupal\symfony_mailer\Controller\SymfonyMailerController::importAll' _title: 'Import all' requirements: _permission: 'administer mailer' symfony_mailer.import.import: path: '/admin/config/system/mailer/import/{id}' defaults: _controller: '\Drupal\symfony_mailer\Controller\SymfonyMailerController::import' _title: 'Import' requirements: _permission: 'administer mailer' symfony_mailer.import.skip: path: '/admin/config/system/mailer/import/{id}/skip' defaults: _controller: '\Drupal\symfony_mailer\Controller\SymfonyMailerController::skip' _title: 'Skip' requirements: _permission: 'administer mailer'