Browse Source

added config

main
astanley 1 week ago
parent
commit
8b6ae86765
  1. 7
      caption_linker.links.menu.yml
  2. 40
      caption_linker.module
  3. 7
      caption_linker.routing.yml
  4. 52
      src/Form/CaptionLinkerSettingsForm.php

7
caption_linker.links.menu.yml

@ -0,0 +1,7 @@
caption_linker.caption_linker_settings:
title: 'Caption Linker settings'
description: 'Configure Caption Linker.'
parent: system.admin_config_system
route_name: caption_linker.caption_linker_settings
weight: 100

40
caption_linker.module

@ -2,6 +2,7 @@
/** /**
* @file * @file
* Caption Linker module hooks.
*/ */
use Drupal\Core\Entity\EntityInterface; use Drupal\Core\Entity\EntityInterface;
@ -12,18 +13,42 @@ use Drupal\node\NodeInterface;
* Implements hook_entity_insert(). * Implements hook_entity_insert().
*/ */
function caption_linker_entity_insert(EntityInterface $entity): void { function caption_linker_entity_insert(EntityInterface $entity): void {
if ($entity instanceof MediaInterface) { _caption_linker_handle_media_change($entity);
_caption_linker_link_caption_if_possible($entity);
}
} }
/** /**
* Implements hook_entity_update(). * Implements hook_entity_update().
*/ */
function caption_linker_entity_update(EntityInterface $entity): void { function caption_linker_entity_update(EntityInterface $entity): void {
if ($entity instanceof MediaInterface) { _caption_linker_handle_media_change($entity);
}
/**
* Shared handler for media insert/update.
*/
function _caption_linker_handle_media_change(EntityInterface $entity): void {
if (!$entity instanceof MediaInterface) {
return;
}
if (!_caption_linker_is_hook_enabled()) {
return;
}
_caption_linker_link_caption_if_possible($entity); _caption_linker_link_caption_if_possible($entity);
} }
/**
* Returns TRUE if caption linking via hooks is enabled in config.
*/
function _caption_linker_is_hook_enabled(): bool {
static $enabled;
if (!isset($enabled)) {
$enabled = (bool) \Drupal::config('caption_linker.settings')->get('use_hook');
}
return $enabled;
} }
/** /**
@ -32,11 +57,14 @@ function caption_linker_entity_update(EntityInterface $entity): void {
function _caption_linker_link_caption_if_possible(MediaInterface $media): void { function _caption_linker_link_caption_if_possible(MediaInterface $media): void {
/** @var \Drupal\islandora\IslandoraUtils $islandora_utils */ /** @var \Drupal\islandora\IslandoraUtils $islandora_utils */
$islandora_utils = \Drupal::service('islandora.utils'); $islandora_utils = \Drupal::service('islandora.utils');
/** @var \Drupal\caption_linker\Service\CaptionLinker $caption_linker */ /** @var \Drupal\caption_linker\Service\CaptionLinker $caption_linker */
$caption_linker = \Drupal::service('caption_linker.caption_linker'); $caption_linker = \Drupal::service('caption_linker.caption_linker');
$node = $islandora_utils->getParentNode($media); $node = $islandora_utils->getParentNode($media);
if ($node instanceof NodeInterface) { if (!$node instanceof NodeInterface) {
$caption_linker->linkCaption($node); return;
} }
$caption_linker->linkCaption($node);
} }

7
caption_linker.routing.yml

@ -0,0 +1,7 @@
caption_linker.caption_linker_settings:
path: '/admin/config/system/caption-linker-settings'
defaults:
_title: 'Caption Linker settings'
_form: 'Drupal\caption_linker\Form\CaptionLinkerSettingsForm'
requirements:
_permission: 'administer site configuration'

52
src/Form/CaptionLinkerSettingsForm.php

@ -0,0 +1,52 @@
<?php
declare(strict_types=1);
namespace Drupal\caption_linker\Form;
use Drupal\Core\Form\ConfigFormBase;
use Drupal\Core\Form\FormStateInterface;
/**
* Configure Caption Linker settings for this site.
*/
final class CaptionLinkerSettingsForm extends ConfigFormBase {
/**
* {@inheritdoc}
*/
public function getFormId(): string {
return 'caption_linker_settings_form';
}
/**
* {@inheritdoc}
*/
protected function getEditableConfigNames(): array {
return ['caption_linker.settings'];
}
/**
* {@inheritdoc}
*/
public function buildForm(array $form, FormStateInterface $form_state) {
$config = $this->config('caption_linker.settings');
$use_hook = $config->get('use_hook');
$form['use_hook'] = [
'#type' => 'checkbox',
'#title' => $this->t('Automatically link captions to Audio or Video Media'),
'#description' => $this->t("If checked, a media tagged <strong>Transcript</strong> will be automatically linked to an AblePlayer Audio or Video Media."),
'#default_value' => $use_hook,
];
return parent::buildForm($form, $form_state);
}
public function submitForm(array &$form, FormStateInterface $form_state) {
$use_hook = $form_state->getValue('use_hook');
$this->config('caption_linker.settings')
->set('use_hook', $use_hook)
->save();
}
}
Loading…
Cancel
Save