Move into nested docroot
This commit is contained in:
parent
83a0d3a149
commit
c8b70abde9
13405 changed files with 0 additions and 0 deletions
165
web/core/modules/book/src/Controller/BookController.php
Normal file
165
web/core/modules/book/src/Controller/BookController.php
Normal file
|
|
@ -0,0 +1,165 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\book\Controller;
|
||||
|
||||
use Drupal\book\BookExport;
|
||||
use Drupal\book\BookManagerInterface;
|
||||
use Drupal\Core\Controller\ControllerBase;
|
||||
use Drupal\Core\Render\RendererInterface;
|
||||
use Drupal\Core\Url;
|
||||
use Drupal\node\NodeInterface;
|
||||
use Symfony\Component\DependencyInjection\Container;
|
||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
||||
|
||||
/**
|
||||
* Controller routines for book routes.
|
||||
*/
|
||||
class BookController extends ControllerBase {
|
||||
|
||||
/**
|
||||
* The book manager.
|
||||
*
|
||||
* @var \Drupal\book\BookManagerInterface
|
||||
*/
|
||||
protected $bookManager;
|
||||
|
||||
/**
|
||||
* The book export service.
|
||||
*
|
||||
* @var \Drupal\book\BookExport
|
||||
*/
|
||||
protected $bookExport;
|
||||
|
||||
/**
|
||||
* The renderer.
|
||||
*
|
||||
* @var \Drupal\Core\Render\RendererInterface
|
||||
*/
|
||||
protected $renderer;
|
||||
|
||||
/**
|
||||
* Constructs a BookController object.
|
||||
*
|
||||
* @param \Drupal\book\BookManagerInterface $bookManager
|
||||
* The book manager.
|
||||
* @param \Drupal\book\BookExport $bookExport
|
||||
* The book export service.
|
||||
* @param \Drupal\Core\Render\RendererInterface $renderer
|
||||
* The renderer.
|
||||
*/
|
||||
public function __construct(BookManagerInterface $bookManager, BookExport $bookExport, RendererInterface $renderer) {
|
||||
$this->bookManager = $bookManager;
|
||||
$this->bookExport = $bookExport;
|
||||
$this->renderer = $renderer;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function create(ContainerInterface $container) {
|
||||
return new static(
|
||||
$container->get('book.manager'),
|
||||
$container->get('book.export'),
|
||||
$container->get('renderer')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an administrative overview of all books.
|
||||
*
|
||||
* @return array
|
||||
* A render array representing the administrative page content.
|
||||
*/
|
||||
public function adminOverview() {
|
||||
$rows = array();
|
||||
|
||||
$headers = array(t('Book'), t('Operations'));
|
||||
// Add any recognized books to the table list.
|
||||
foreach ($this->bookManager->getAllBooks() as $book) {
|
||||
/** @var \Drupal\Core\Url $url */
|
||||
$url = $book['url'];
|
||||
if (isset($book['options'])) {
|
||||
$url->setOptions($book['options']);
|
||||
}
|
||||
$row = array(
|
||||
$this->l($book['title'], $url),
|
||||
);
|
||||
$links = array();
|
||||
$links['edit'] = array(
|
||||
'title' => t('Edit order and titles'),
|
||||
'url' => Url::fromRoute('book.admin_edit', ['node' => $book['nid']]),
|
||||
);
|
||||
$row[] = array(
|
||||
'data' => array(
|
||||
'#type' => 'operations',
|
||||
'#links' => $links,
|
||||
),
|
||||
);
|
||||
$rows[] = $row;
|
||||
}
|
||||
return array(
|
||||
'#type' => 'table',
|
||||
'#header' => $headers,
|
||||
'#rows' => $rows,
|
||||
'#empty' => t('No books available.'),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints a listing of all books.
|
||||
*
|
||||
* @return array
|
||||
* A render array representing the listing of all books content.
|
||||
*/
|
||||
public function bookRender() {
|
||||
$book_list = array();
|
||||
foreach ($this->bookManager->getAllBooks() as $book) {
|
||||
$book_list[] = $this->l($book['title'], $book['url']);
|
||||
}
|
||||
return array(
|
||||
'#theme' => 'item_list',
|
||||
'#items' => $book_list,
|
||||
'#cache' => [
|
||||
'tags' => \Drupal::entityManager()->getDefinition('node')->getListCacheTags(),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates representations of a book page and its children.
|
||||
*
|
||||
* The method delegates the generation of output to helper methods. The method
|
||||
* name is derived by prepending 'bookExport' to the camelized form of given
|
||||
* output type. For example, a type of 'html' results in a call to the method
|
||||
* bookExportHtml().
|
||||
*
|
||||
* @param string $type
|
||||
* A string encoding the type of output requested. The following types are
|
||||
* currently supported in book module:
|
||||
* - html: Printer-friendly HTML.
|
||||
* Other types may be supported in contributed modules.
|
||||
* @param \Drupal\node\NodeInterface $node
|
||||
* The node to export.
|
||||
*
|
||||
* @return array
|
||||
* A render array representing the node and its children in the book
|
||||
* hierarchy in a format determined by the $type parameter.
|
||||
*
|
||||
* @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException
|
||||
*/
|
||||
public function bookExport($type, NodeInterface $node) {
|
||||
$method = 'bookExport' . Container::camelize($type);
|
||||
|
||||
// @todo Convert the custom export functionality to serializer.
|
||||
if (!method_exists($this->bookExport, $method)) {
|
||||
drupal_set_message(t('Unknown export format.'));
|
||||
throw new NotFoundHttpException();
|
||||
}
|
||||
|
||||
$exported_book = $this->bookExport->{$method}($node);
|
||||
return new Response($this->renderer->renderRoot($exported_book));
|
||||
}
|
||||
|
||||
}
|
||||
Reference in a new issue