You are here

class PrintDownload in Entity Print 8.2

Downloads the Printed entity.

@Action( id = "entity_print_download_action", label = @Translation("Print"), type = "node" )

@TODO, support multiple entity types once core is fixed.

Hierarchy

Expanded class hierarchy of PrintDownload

See also

https://www.drupal.org/node/2011038

File

src/Plugin/Action/PrintDownload.php, line 31

Namespace

Drupal\entity_print\Plugin\Action
View source
class PrintDownload extends ConfigurableActionBase implements ContainerFactoryPluginInterface {

  /**
   * Access manager.
   *
   * @var \Drupal\Core\Access\AccessManagerInterface
   */
  protected $accessManager;

  /**
   * The Print builder service.
   *
   * @var \Drupal\entity_print\PrintBuilderInterface
   */
  protected $printBuilder;

  /**
   * The Entity Print plugin manager.
   *
   * @var \Drupal\entity_print\Plugin\EntityPrintPluginManagerInterface
   */
  protected $entityPrintPluginManager;

  /**
   * The export type manager.
   *
   * @var \Drupal\entity_print\Plugin\ExportTypeManagerInterface
   */
  protected $exportTypeManager;

  /**
   * The Print engine implementation.
   *
   * @var \Drupal\entity_print\Plugin\PrintEngineInterface
   */
  protected $printEngine;

  /**
   * {@inheritdoc}
   */
  public function __construct(array $configuration, $plugin_id, $plugin_definition, AccessManagerInterface $access_manager, PrintBuilderInterface $print_builder, PluginManagerInterface $entity_print_plugin_manager, ExportTypeManagerInterface $export_type_manager) {
    parent::__construct($configuration, $plugin_id, $plugin_definition);
    $this->accessManager = $access_manager;
    $this->printBuilder = $print_builder;
    $this->entityPrintPluginManager = $entity_print_plugin_manager;
    $this->exportTypeManager = $export_type_manager;
  }

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
    return new static($configuration, $plugin_id, $plugin_definition, $container
      ->get('access_manager'), $container
      ->get('entity_print.print_builder'), $container
      ->get('plugin.manager.entity_print.print_engine'), $container
      ->get('plugin.manager.entity_print.export_type'));
  }

  /**
   * {@inheritdoc}
   */
  public function access($object, AccountInterface $account = NULL, $return_as_object = FALSE) {

    /** @var \Drupal\node\NodeInterface $object */
    $route_params = [
      'export_type' => $this->configuration['export_type'],
      'entity_id' => $object
        ->id(),
      'entity_type' => $object
        ->getEntityTypeId(),
    ];
    return $this->accessManager
      ->checkNamedRoute('entity_print.view', $route_params, $account, $return_as_object);
  }

  /**
   * {@inheritdoc}
   */
  public function execute($entity = NULL) {
    $this
      ->executeMultiple([
      $entity,
    ]);
  }

  /**
   * {@inheritdoc}
   */
  public function executeMultiple(array $entities) {
    try {
      (new StreamedResponse(function () use ($entities) {
        $this->printBuilder
          ->deliverPrintable($entities, $this->entityPrintPluginManager
          ->createSelectedInstance($this->configuration['export_type']), TRUE);
      }))
        ->send();
    } catch (PrintEngineException $e) {
      $this
        ->messenger()
        ->addError(new FormattableMarkup(Xss::filter($e
        ->getMessage()), []));
    }
  }

  /**
   * {@inheritdoc}
   */
  public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
    $form['export_type'] = [
      '#type' => 'select',
      '#title' => $this
        ->t('Export type'),
      '#options' => $this->exportTypeManager
        ->getFormOptions(),
      '#required' => TRUE,
      '#default_value' => !empty($this->configuration['export_type']) ? $this->configuration['export_type'] : NULL,
    ];
    return $form;
  }

  /**
   * {@inheritdoc}
   */
  public function submitConfigurationForm(array &$form, FormStateInterface $form_state) {
    $this->configuration['export_type'] = $form_state
      ->getValue('export_type');
  }

}

Members

Namesort descending Modifiers Type Description Overrides
ConfigurableActionBase::calculateDependencies public function Calculates dependencies for the configured plugin. Overrides DependentPluginInterface::calculateDependencies 1
ConfigurableActionBase::defaultConfiguration public function Gets default configuration for this plugin. Overrides ConfigurableInterface::defaultConfiguration 8
ConfigurableActionBase::getConfiguration public function Gets this plugin's configuration. Overrides ConfigurableInterface::getConfiguration
ConfigurableActionBase::setConfiguration public function Sets the configuration for this plugin instance. Overrides ConfigurableInterface::setConfiguration
ConfigurableActionBase::validateConfigurationForm public function Form validation handler. Overrides PluginFormInterface::validateConfigurationForm 2
DependencySerializationTrait::$_entityStorages protected property An array of entity type IDs keyed by the property name of their storages.
DependencySerializationTrait::$_serviceIds protected property An array of service IDs keyed by property name used for serialization.
DependencySerializationTrait::__sleep public function 1
DependencySerializationTrait::__wakeup public function 2
MessengerTrait::$messenger protected property The messenger. 29
MessengerTrait::messenger public function Gets the messenger. 29
MessengerTrait::setMessenger public function Sets the messenger.
PluginBase::$configuration protected property Configuration information passed into the plugin. 1
PluginBase::$pluginDefinition protected property The plugin implementation definition. 1
PluginBase::$pluginId protected property The plugin_id.
PluginBase::DERIVATIVE_SEPARATOR constant A string which is used to separate base plugin IDs from the derivative ID.
PluginBase::getBaseId public function Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface::getBaseId
PluginBase::getDerivativeId public function Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface::getDerivativeId
PluginBase::getPluginDefinition public function Gets the definition of the plugin implementation. Overrides PluginInspectionInterface::getPluginDefinition 3
PluginBase::getPluginId public function Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface::getPluginId
PluginBase::isConfigurable public function Determines if the plugin is configurable.
PrintDownload::$accessManager protected property Access manager.
PrintDownload::$entityPrintPluginManager protected property The Entity Print plugin manager.
PrintDownload::$exportTypeManager protected property The export type manager.
PrintDownload::$printBuilder protected property The Print builder service.
PrintDownload::$printEngine protected property The Print engine implementation.
PrintDownload::access public function Checks object access. Overrides ActionInterface::access
PrintDownload::buildConfigurationForm public function Form constructor. Overrides PluginFormInterface::buildConfigurationForm
PrintDownload::create public static function Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface::create
PrintDownload::execute public function Executes the plugin. Overrides ExecutableInterface::execute
PrintDownload::executeMultiple public function Executes the plugin for an array of objects. Overrides ActionBase::executeMultiple
PrintDownload::submitConfigurationForm public function Form submission handler. Overrides PluginFormInterface::submitConfigurationForm
PrintDownload::__construct public function Constructs a \Drupal\Component\Plugin\PluginBase object. Overrides ConfigurableActionBase::__construct
StringTranslationTrait::$stringTranslation protected property The string translation service. 1
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.