epub_reader_framework-2.0.0-alpha2/epub_reader_framework.module
epub_reader_framework.module
<?php
/**
* @file
* Contains epub_reader_framework.module.
*/
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Routing\RouteMatchInterface;
use Drupal\node\NodeInterface;
/**
* Implements hook_help().
*/
function epub_reader_framework_help($route_name, RouteMatchInterface $route_match) {
switch ($route_name) {
case 'help.page.epub_reader_framework':
$output = '';
$output .= '<h3>' . t('About') . '</h3>';
$output .= '<p>' . t('Provides a chapter-based publication system for display content from E-Pub InDesign files.') . '</p>';
return $output;
default:
}
}
/**
* Implements hook_form_FORM_ID_alter().
*/
function epub_reader_framework_form_node_reader_publication_edit_form_alter(&$form, FormStateInterface $form_state, $form_id) {
/** @var \Drupal\epub_reader_framework\Form\ReaderPublicationFormAlter $node_form_alter */
$node_form_alter = \Drupal::service('epub_reader_framework.reader_publication_form_alter');
$node_form_alter->formAlter($form, $form_state, $form_id);
}
/**
* Implements hook_form_FORM_ID_alter().
*/
function epub_reader_framework_form_node_reader_publication_form_alter(&$form, FormStateInterface $form_state, $form_id) {
/** @var \Drupal\epub_reader_framework\Form\ReaderPublicationFormAlter $node_form_alter */
$node_form_alter = \Drupal::service('epub_reader_framework.reader_publication_form_alter');
$node_form_alter->formAlter($form, $form_state, $form_id);
}
/**
* Implements hook_form_FORM_ID_alter().
*/
function epub_reader_framework_form_node_reader_chapter_edit_form_alter(&$form, FormStateInterface $form_state, $form_id) {
/** @var \Drupal\epub_reader_framework\Form\ReaderChapterFormAlter $node_form_alter */
$node_form_alter = \Drupal::service('epub_reader_framework.reader_chapter_form_alter');
$node_form_alter->formAlter($form, $form_state, $form_id);
}
/**
* Implements hook_form_FORM_ID_alter().
*/
function epub_reader_framework_form_node_reader_chapter_form_alter(&$form, FormStateInterface $form_state, $form_id) {
/** @var \Drupal\epub_reader_framework\Form\ReaderChapterFormAlter $node_form_alter */
$node_form_alter = \Drupal::service('epub_reader_framework.reader_chapter_form_alter');
$node_form_alter->formAlter($form, $form_state, $form_id);
}
/**
* Implements hook_ENTITY_TYPE_insert().
*/
function epub_reader_framework_node_insert(EntityInterface $entity) {
/** @var \Drupal\epub_reader_framework\Entity\ReaderEntityPostsave $entity_postsave */
$entity_postsave = \Drupal::service('epub_reader_framework.reader_entity_postsave');
$entity_postsave->entityPostsave($entity);
}
/**
* Implements hook_ENTITY_TYPE_update().
*/
function epub_reader_framework_node_update(EntityInterface $entity) {
/** @var \Drupal\epub_reader_framework\Entity\ReaderEntityPostsave $entity_postsave */
$entity_postsave = \Drupal::service('epub_reader_framework.reader_entity_postsave');
$entity_postsave->entityPostsave($entity);
}
/**
* Implements hook_preprocess_node().
*/
function epub_reader_framework_preprocess_node(&$variables) {
$node = $variables['node'];
if ($node instanceof NodeInterface && in_array($node->bundle(), [
'reader_publication',
'reader_chapter',
])) {
// Allow modification of blocks to load for the reader navigation.
$navigation_block_id = 'reader_navigation_block';
$previous_next_block_id = 'reader_previous_next_block';
\Drupal::moduleHandler()->alter('epub_reader_framework_navigation_block_id', $navigation_block_id);
\Drupal::moduleHandler()->alter('epub_reader_framework_previous_next_block_id', $previous_next_block_id);
if ($navigation_block_id || $previous_next_block_id) {
/** @var \Drupal\Core\Block\BlockManagerInterface $block_manager */
$block_manager = \Drupal::service('plugin.manager.block');
// Add the reader navigation block.
if ($navigation_block_id) {
$plugin_block = $block_manager->createInstance($navigation_block_id, []);
/** @var \Drupal\Core\Access\AccessResultInterface $access_result */
$access_result = $plugin_block->access(\Drupal::currentUser());
if (!is_object($access_result) || !$access_result->isAllowed()) {
$variables['reader_navigation'] = $plugin_block->build();
}
}
// Add the reader previous next block.
if ($previous_next_block_id) {
$plugin_block = $block_manager->createInstance($previous_next_block_id, []);
/** @var \Drupal\Core\Access\AccessResultInterface $access_result */
$access_result = $plugin_block->access(\Drupal::currentUser());
if (!is_object($access_result) || !$access_result->isAllowed()) {
$variables['reader_previous_next'] = $plugin_block->build();
}
}
}
// Add the navigation ajax callback commands.
$variables['#attached']['library'][] = 'epub_reader_framework/epub_reader_framework.history-api';
$variables['#attached']['library'][] = 'epub_reader_framework/epub_reader_framework.commands';
$variables['#attached']['library'][] = 'epub_reader_framework/epub_reader_framework.reader_navigation_expand';
}
}
/**
* Implements hook_theme().
*/
function epub_reader_framework_theme() {
return [
'reader_navigation' => [
'template' => 'reader-navigation',
'variables' => [
'chapter_items' => [],
],
],
'reader_previous_next' => [
'template' => 'reader-previous-next',
'variables' => [
'previous' => NULL,
'next' => NULL,
],
],
];
}
