diff --git a/uw_cfg_common.module b/uw_cfg_common.module index 9edb90c3a7c3adf129209e3e724da0b6e070ddd0..a632c42ec4bd06469e8e98ce935d84db39823dbf 100644 --- a/uw_cfg_common.module +++ b/uw_cfg_common.module @@ -173,3 +173,42 @@ function uw_cfg_common_toolbar_alter(&$items) { } } } + +/** + * Implements hook_preprocess_node(). + */ +function uw_cfg_common_preprocess_node(&$variables) { + + // Get the current path. + $path = explode('/', \Drupal::service('path.current')->getPath()); + + // The paths to place the content moderation block on. Made this + // an array to future proof, if there are more pages later. + $paths_for_content_moderation = ['latest']; + + // Check if we are to add the content moderation place. + if (in_array(end($path), $paths_for_content_moderation)) { + + // Add the content moderation block. + $variables['uw_content_moderation_form'] = \Drupal::formBuilder()->getForm('Drupal\content_moderation\Form\EntityModerationForm', $variables['node']); + } + else { + + $block_manager = \Drupal::service('plugin.manager.block'); + + $plugin_block = $block_manager->createInstance('uw_cbl_content_moderation', []); + + $access_result = $plugin_block->access(\Drupal::currentUser()); + + // Return empty render array if user doesn't have access. + // $access_result can be boolean or an AccessResult class + if (is_object($access_result) && $access_result->isForbidden() || is_bool($access_result) && !$access_result) { + return []; + } + + $render = $plugin_block->build(); + + $variables['uw_content_moderation_form'] = $render; + } +} +