Skip to content
17 changes: 10 additions & 7 deletions islandora_mirador.module
Original file line number Diff line number Diff line change
Expand Up @@ -42,19 +42,22 @@ function template_preprocess_mirador(&$variables) {
$config = \Drupal::service('config.factory')
->get('islandora_mirador.settings');

// Add config as cache dependency so changes invalidate the render cache.
$variables['#cache']['tags'][] = 'config:islandora_mirador.settings';

$mirador_plugins = $mirador_plugin_manager->getDefinitions();
$enabled_plugins = $config->get('mirador_enabled_plugins');
$variables['#attached']['drupalSettings']['mirador']['enabled_plugins'] = array_filter(array_values($enabled_plugins));

$window_config = $variables['window_config'];
foreach ($mirador_plugins as $plugin_id => $plugin_definition) {
if (isset($enabled_plugins[$plugin_id])) {
$plugin_instance = $mirador_plugin_manager->createInstance($plugin_id);
/**
* @var Drupal\islandora_mirador\IslandoraMiradorPluginInterface
*/
$plugin_instance->windowConfigAlter($window_config);
}

// Always call plugins - they will check their own state.
/**
* @var Drupal\islandora_mirador\IslandoraMiradorPluginInterface
*/
$plugin_instance = $mirador_plugin_manager->createInstance($plugin_id);
$plugin_instance->windowConfigAlter($window_config);
}

// XXX: Maintain the original properties, for now.
Expand Down
56 changes: 53 additions & 3 deletions src/Plugin/IslandoraMiradorPlugin/MiradorImageTools.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
namespace Drupal\islandora_mirador\Plugin\IslandoraMiradorPlugin;

use Drupal\islandora_mirador\IslandoraMiradorPluginPluginBase;
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;

/**
* Plugin implementation of the islandora_mirador.
Expand All @@ -13,14 +16,61 @@
* description = @Translation("MIrador image manipluation..")
* )
*/
class MiradorImageTools extends IslandoraMiradorPluginPluginBase {
class MiradorImageTools extends IslandoraMiradorPluginPluginBase implements ContainerFactoryPluginInterface {
/**
* The config factory.
*
* @var \Drupal\Core\Config\ConfigFactoryInterface
*/
protected $configFactory;

/**
* Constructs a TextOverlay object.
*
* @param array $configuration
* A configuration array containing information about the plugin instance.
* @param string $plugin_id
* The plugin_id for the plugin instance.
* @param mixed $plugin_definition
* The plugin implementation definition.
* @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
* The config factory.
*/
public function __construct(array $configuration, $plugin_id, $plugin_definition, ConfigFactoryInterface $config_factory) {
parent::__construct($configuration, $plugin_id, $plugin_definition);
$this->configFactory = $config_factory;
}

/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
return new static(
$configuration,
$plugin_id,
$plugin_definition,
$container->get('config.factory')
);
}

/**
* {@inheritdoc}
*/
public function windowConfigAlter(array &$windowConfig) {
$windowConfig['imageToolsEnabled'] = TRUE;
$windowConfig['imageToolsOpen'] = TRUE;
// Get the config to check if this plugin is enabled.
$config = $this->configFactory->get('islandora_mirador.settings');
$enabled_plugins = $config->get('mirador_enabled_plugins');

if (!empty($enabled_plugins['miradorImageToolsPlugin'])) {
// Enabled config - checkbox is checked.
$windowConfig['imageToolsEnabled'] = TRUE;
$windowConfig['imageToolsOpen'] = TRUE;
}
else {
// Disabled config - checkbox is unchecked.
$windowConfig['imageToolsEnabled'] = FALSE;
$windowConfig['imageToolsOpen'] = FALSE;
}
Comment thread
joecorall marked this conversation as resolved.
Outdated
Comment thread
joecorall marked this conversation as resolved.
Outdated
}

}
65 changes: 59 additions & 6 deletions src/Plugin/IslandoraMiradorPlugin/TextOverlay.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
namespace Drupal\islandora_mirador\Plugin\IslandoraMiradorPlugin;

use Drupal\islandora_mirador\IslandoraMiradorPluginPluginBase;
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;

/**
* Plugin implementation of the islandora_mirador.
Expand All @@ -13,17 +16,67 @@
* description = @Translation("Mirador text overlay plugin for text selection and accessibility.")
* )
*/
class TextOverlay extends IslandoraMiradorPluginPluginBase {
class TextOverlay extends IslandoraMiradorPluginPluginBase implements ContainerFactoryPluginInterface {
/**
* The config factory.
*
* @var \Drupal\Core\Config\ConfigFactoryInterface
*/
protected $configFactory;

/**
* Constructs a TextOverlay object.
*
* @param array $configuration
* A configuration array containing information about the plugin instance.
* @param string $plugin_id
* The plugin_id for the plugin instance.
* @param mixed $plugin_definition
* The plugin implementation definition.
* @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
* The config factory.
*/
public function __construct(array $configuration, $plugin_id, $plugin_definition, ConfigFactoryInterface $config_factory) {
parent::__construct($configuration, $plugin_id, $plugin_definition);
$this->configFactory = $config_factory;
}

/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
return new static(
$configuration,
$plugin_id,
$plugin_definition,
$container->get('config.factory')
);
}

/**
* {@inheritdoc}
*/
public function windowConfigAlter(array &$windowConfig) {
$windowConfig['textOverlay'] = [
"enabled" => TRUE,
"selectable" => TRUE,
"visible" => FALSE,
];
// Get the config to check if this plugin is enabled.
$config = $this->configFactory->get('islandora_mirador.settings');
$enabled_plugins = $config->get('mirador_enabled_plugins');

if (!empty($enabled_plugins['textOverlayPlugin'])) {
// Enabled config - checkbox is checked.
$windowConfig['textOverlay'] = [
"enabled" => TRUE,
"selectable" => TRUE,
"visible" => FALSE,
];
}
else {
// Disabled config - checkbox is unchecked.
$windowConfig['textOverlay'] = [
"enabled" => FALSE,
"selectable" => FALSE,
"visible" => FALSE,
];
}
Comment thread
joecorall marked this conversation as resolved.
Outdated
}

}
Loading