X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=web%2Fmodules%2Fcontrib%2Fdevel%2Fsrc%2FController%2FElementInfoController.php;fp=web%2Fmodules%2Fcontrib%2Fdevel%2Fsrc%2FController%2FElementInfoController.php;h=a0440c32769d563740c801697a4ea22d63d17f9d;hp=0000000000000000000000000000000000000000;hb=af6d1fb995500ae68849458ee10d66abbdcfb252;hpb=680c79a86e3ed402f263faeac92e89fb6d9edcc0 diff --git a/web/modules/contrib/devel/src/Controller/ElementInfoController.php b/web/modules/contrib/devel/src/Controller/ElementInfoController.php new file mode 100644 index 000000000..a0440c327 --- /dev/null +++ b/web/modules/contrib/devel/src/Controller/ElementInfoController.php @@ -0,0 +1,162 @@ +elementInfo = $element_info; + $this->dumper = $dumper; + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container) { + return new static( + $container->get('element_info'), + $container->get('devel.dumper') + ); + } + + /** + * Builds the element overview page. + * + * @return array + * A render array as expected by the renderer. + */ + public function elementList() { + $headers = [ + $this->t('Name'), + $this->t('Provider'), + $this->t('Class'), + $this->t('Operations'), + ]; + + $rows = []; + + foreach ($this->elementInfo->getDefinitions() as $element_type => $definition) { + $row['name'] = [ + 'data' => $element_type, + 'class' => 'table-filter-text-source', + ]; + $row['provider'] = [ + 'data' => $definition['provider'], + 'class' => 'table-filter-text-source', + ]; + $row['class'] = [ + 'data' => $definition['class'], + 'class' => 'table-filter-text-source', + ]; + $row['operations']['data'] = [ + '#type' => 'operations', + '#links' => [ + 'devel' => [ + 'title' => $this->t('Devel'), + 'url' => Url::fromRoute('devel.elements_page.detail', ['element_name' => $element_type]), + 'attributes' => [ + 'class' => ['use-ajax'], + 'data-dialog-type' => 'modal', + 'data-dialog-options' => Json::encode([ + 'width' => 700, + 'minHeight' => 500, + ]), + ], + ], + ], + ]; + + $rows[$element_type] = $row; + } + + ksort($rows); + + $output['#attached']['library'][] = 'system/drupal.system.modules'; + + $output['filters'] = [ + '#type' => 'container', + '#attributes' => [ + 'class' => ['table-filter', 'js-show'], + ], + ]; + $output['filters']['text'] = [ + '#type' => 'search', + '#title' => $this->t('Search'), + '#size' => 30, + '#placeholder' => $this->t('Enter element id, provider or class'), + '#attributes' => [ + 'class' => ['table-filter-text'], + 'data-table' => '.devel-filter-text', + 'autocomplete' => 'off', + 'title' => $this->t('Enter a part of the element id, provider or class to filter by.'), + ], + ]; + $output['elements'] = [ + '#type' => 'table', + '#header' => $headers, + '#rows' => $rows, + '#empty' => $this->t('No elements found.'), + '#sticky' => TRUE, + '#attributes' => [ + 'class' => ['devel-element-list', 'devel-filter-text'], + ], + ]; + + return $output; + } + + /** + * Returns a render array representation of the element. + * + * @param string $element_name + * The name of the element to retrieve. + * + * @return array + * A render array containing the element. + * + * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException + * If the requested element is not defined. + */ + public function elementDetail($element_name) { + if (!$element = $this->elementInfo->getDefinition($element_name, FALSE)) { + throw new NotFoundHttpException(); + } + + $element += $this->elementInfo->getInfo($element_name); + return $this->dumper->exportAsRenderable($element, $element_name); + } + +}