lightning_landing_page.module in Lightning Layout 8.2
Same filename and directory in other branches
Contains landing page functionality for Lightning.
File
modules/lightning_landing_page/lightning_landing_page.moduleView source
<?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 Layout Library is installed, the layout_selection field will be
// available on the landing page content type, so it should be displayed on
// the node form.
if (in_array('layout_library', $modules, TRUE)) {
// Show a select list if Options is installed. Otherwise, fall back to an
// auto-completing text field.
$widget_type = Drupal::moduleHandler()
->moduleExists('options') ? 'options_select' : 'entity_reference_autocomplete';
lightning_layout_entity_get_form_display('node', $node_type
->id(), 'default')
->setComponent('layout_selection', [
'type' => $widget_type,
'region' => 'content',
])
->save();
}
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());
}
}
}
}
}
Functions
Name | Description |
---|---|
lightning_landing_page_modules_installed | Implements hook_modules_installed(). |
lightning_landing_page_workflow_presave | Implements hook_ENITY_TYPE_presave(). |