crossword-8.x-1.x-dev/crossword.module
crossword.module
<?php
/**
* @file
* Register some themes and theme suggestions for the crossword module.
*/
use Drupal\Core\Field\FieldTypeCategoryManagerInterface;
/**
* Implements hook_theme().
*/
function crossword_theme($existing, $type, $theme, $path) {
return [
'crossword' => [
'variables' => [
'content' => NULL,
'pseudofield' => FALSE,
'field_formatter' => NULL,
'attributes' => [],
],
],
'crossword_controls' => [
'variables' => [
'content' => NULL,
'pseudofield' => FALSE,
'field_formatter' => NULL,
'attributes' => [],
],
],
'crossword_grid' => [
'variables' => [
'content' => NULL,
'pseudofield' => FALSE,
'field_formatter' => NULL,
'attributes' => [],
],
],
'crossword_grid_row' => [
'variables' => [
'content' => NULL,
'pseudofield' => FALSE,
'field_formatter' => NULL,
'attributes' => [],
],
],
'crossword_square' => [
'variables' => [
'fill' => NULL,
'numeral' => NULL,
'image' => NULL,
'pseudofield' => FALSE,
'field_formatter' => NULL,
'attributes' => [],
],
],
'crossword_clue' => [
'variables' => [
'text' => NULL,
'numeral' => NULL,
'direction' => NULL,
'direction_label' => NULL,
'pseudofield' => FALSE,
'field_formatter' => NULL,
'attributes' => [],
],
],
'crossword_clues' => [
'variables' => [
'content' => NULL,
'direction' => NULL,
'direction_label' => NULL,
'pseudofield' => FALSE,
'field_formatter' => NULL,
'attributes' => [],
],
],
'crossword_instructions' => [
'variables' => [
'field_formatter' => NULL,
'cheat' => TRUE,
'rebus' => TRUE,
'errors' => TRUE,
],
],
'crossword_active_clues' => [
'variables' => [
'congrats' => NULL,
'pseudofield' => FALSE,
'field_formatter' => NULL,
],
],
];
}
/**
* Implements hook_theme_suggestions_HOOK_alter() for crossword clues.
*
* Makes it easier to theme across clues and down clues separately.
*/
function crossword_theme_suggestions_crossword_clues_alter(array &$suggestions, array $variables) {
$suggestions[] = 'crossword_clues__' . $variables['direction'];
if ($variables['pseudofield']) {
$suggestions[] = 'crossword_clues__pseudofield';
$suggestions[] = 'crossword_clues__pseudofield__' . $variables['direction'];
}
if ($variables['field_formatter']) {
$suggestions[] = 'crossword_clues__' . $variables['field_formatter'];
$suggestions[] = 'crossword_clues__' . $variables['field_formatter'] . '__' . $variables['direction'];
}
}
/**
* Implements hook_theme_suggestions_HOOK_alter() for crossword clue.
*/
function crossword_theme_suggestions_crossword_clue_alter(array &$suggestions, array $variables) {
$suggestions[] = 'crossword_clue__' . $variables['direction'];
if ($variables['pseudofield']) {
$suggestions[] = 'crossword_clue__pseudofield';
$suggestions[] = 'crossword_clue__pseudofield__' . $variables['direction'];
}
if ($variables['field_formatter']) {
$suggestions[] = 'crossword_clue__' . $variables['field_formatter'];
$suggestions[] = 'crossword_clue__' . $variables['field_formatter'] . '__' . $variables['direction'];
}
}
/**
* Implements hook_theme_suggestions_HOOK_alter() for crossword controls.
*/
function crossword_theme_suggestions_crossword_controls_alter(array &$suggestions, array $variables) {
if ($variables['pseudofield']) {
$suggestions[] = 'crossword_controls__pseudofield';
}
if ($variables['field_formatter']) {
$suggestions[] = 'crossword_controls__' . $variables['field_formatter'];
}
}
/**
* Implements hook_theme_suggestions_HOOK_alter() for crossword square.
*/
function crossword_theme_suggestions_crossword_square_alter(array &$suggestions, array $variables) {
if ($variables['pseudofield']) {
$suggestions[] = 'crossword_square__pseudofield';
}
if ($variables['field_formatter']) {
$suggestions[] = 'crossword_square__' . $variables['field_formatter'];
}
}
/**
* Implements hook_theme_suggestions_HOOK_alter() for crossword grid.
*/
function crossword_theme_suggestions_crossword_grid_alter(array &$suggestions, array $variables) {
if ($variables['pseudofield']) {
$suggestions[] = 'crossword_grid__pseudofield';
}
if ($variables['field_formatter']) {
$suggestions[] = 'crossword_grid__' . $variables['field_formatter'];
}
}
/**
* Implements hook_theme_suggestions_HOOK_alter() for crossword grid row.
*/
function crossword_theme_suggestions_crossword_grid_row_alter(array &$suggestions, array $variables) {
if ($variables['pseudofield']) {
$suggestions[] = 'crossword_grid_row__pseudofield';
}
if ($variables['field_formatter']) {
$suggestions[] = 'crossword_grid_row__' . $variables['field_formatter'];
}
}
/**
* Implements hook_theme_suggestions_HOOK_alter() for crossword active clues.
*/
function crossword_theme_suggestions_crossword_active_clues_alter(array &$suggestions, array $variables) {
if ($variables['pseudofield']) {
$suggestions[] = 'crossword_active_clues__pseudofield';
}
if ($variables['field_formatter']) {
$suggestions[] = 'crossword_active_clues__' . $variables['field_formatter'];
}
}
/**
* Implements hook_theme_suggestions_HOOK_alter() for crossword.
*/
function crossword_theme_suggestions_crossword_alter(array &$suggestions, array $variables) {
if ($variables['field_formatter']) {
$suggestions[] = 'crossword__' . $variables['field_formatter'];
// This next thing is for maintaining BC.
if ($variables['field_formatter'] == 'crossword_solution') {
$suggestions[] = 'crossword_solution';
}
}
}
/**
* Implements hook_theme_suggestions_HOOK_alter() for crossword instructions.
*/
function crossword_theme_suggestions_crossword_instructions_alter(array &$suggestions, array $variables) {
if ($variables['field_formatter']) {
$suggestions[] = 'crossword_instructions__' . $variables['field_formatter'];
}
}
/**
* Implements hook_field_type_category_info_alter().
*/
function crossword_field_type_category_info_alter(&$definitions) {
// The `crossword` field type belongs in the `general` category, so the libraries
// need to be attached using an alter hook.
$definitions[FieldTypeCategoryManagerInterface::FALLBACK_CATEGORY]['libraries'][] = 'crossword/crossword.crossword-icon';
}
