lightning_layout-8.x-2.x-dev/modules/lightning_landing_page/lightning_landing_page.module
modules/lightning_landing_page/lightning_landing_page.module
<?php
/**
* @file
* Contains landing page functionality for Lightning.
*/
use Drupal\content_moderation\Plugin\WorkflowType\ContentModerationInterface;
use Drupal\Core\Plugin\ObjectWithPluginCollectionInterface;
use Drupal\node\Entity\NodeType;
use Drupal\workflows\WorkflowInterface;
/**
* Implements hook_modules_installed().
*/
function lightning_landing_page_modules_installed(array $modules) {
// Don't do anything during config sync.
if (\Drupal::isConfigSyncing()) {
return;
}
$node_type = NodeType::load('landing_page');
if (in_array('lightning_search', $modules, TRUE)) {
lightning_search_node_type_insert($node_type);
}
if (in_array('menu_ui', $modules, TRUE)) {
$node_type
->setThirdPartySetting('menu_ui', 'available_menus', ['main'])
->setThirdPartySetting('menu_ui', 'parent', 'main:')
->save();
}
}
/**
* Implements hook_ENITY_TYPE_presave().
*/
function lightning_landing_page_workflow_presave(WorkflowInterface $workflow) {
if (Drupal::isConfigSyncing()) {
return;
}
elseif ($workflow->isNew() && $workflow->id() === 'editorial' && Drupal::moduleHandler()->moduleExists('lightning_workflow')) {
$type_plugin = $workflow->getTypePlugin();
if ($type_plugin instanceof ContentModerationInterface) {
$type_plugin->addEntityTypeAndBundle('node', 'landing_page');
// Since this hook is invoked _after_ Workflow::preSave(), we need to
// ensure that the stored settings for the type plugin will be up-to-date
// with the changes we've made here.
if ($workflow instanceof ObjectWithPluginCollectionInterface) {
foreach ($workflow->getPluginCollections() as $key => $plugin_collection) {
$workflow->set($key, $plugin_collection->getConfiguration());
}
}
}
}
}
