pluginManager = $plugin_manager; } /** * {@inheritdoc} */ public static function create(ContainerInterface $container) { return new static( $container->get('plugin.manager.webform.handler') ); } /** * {@inheritdoc} */ public function index() { $definitions = $this->pluginManager->getDefinitions(); $definitions = $this->pluginManager->getSortedDefinitions($definitions); $rows = []; foreach ($definitions as $plugin_id => $definition) { $rows[$plugin_id] = [ $plugin_id, $definition['label'], $definition['description'], $definition['category'], ($definition['cardinality'] == -1) ? $this->t('Unlimited') : $definition['cardinality'], $definition['results'] ? $this->t('Processed') : $this->t('Ignored'), $definition['provider'], ]; } ksort($rows); return [ '#type' => 'table', '#header' => [ $this->t('ID'), $this->t('Label'), $this->t('Description'), $this->t('Category'), $this->t('Cardinality'), $this->t('Results'), $this->t('Provided by'), ], '#rows' => $rows, '#sticky' => TRUE, ]; } /** * Shows a list of webform handlers that can be added to a webform. * * @param \Symfony\Component\HttpFoundation\Request $request * The current request. * @param \Drupal\webform\WebformInterface $webform * A webform. * * @return array * A render array as expected by the renderer. */ public function listHandlers(Request $request, WebformInterface $webform) { $headers = [ ['data' => $this->t('Handler'), 'width' => '20%'], ['data' => $this->t('Description'), 'width' => '40%'], ['data' => $this->t('Category'), 'width' => '20%'], ['data' => $this->t('Operations'), 'width' => '20%'], ]; $definitions = $this->pluginManager->getDefinitions(); $definitions = $this->pluginManager->getSortedDefinitions($definitions); $rows = []; foreach ($definitions as $plugin_id => $definition) { // Skip email handler which has dedicated button. if ($plugin_id == 'email') { continue; } // Check cardinality. $cardinality = $definition['cardinality']; $is_cardinality_unlimited = ($cardinality == WebformHandlerInterface::CARDINALITY_UNLIMITED); $is_cardinality_reached = ($webform->getHandlers($plugin_id)->count() >= $cardinality); if (!$is_cardinality_unlimited && $is_cardinality_reached) { continue; } $row = []; $row['title']['data'] = [ '#type' => 'inline_template', '#template' => '