Override Gin local actions block to render links in a dropbutton.
This commit is contained in:
parent
118250db66
commit
ee21d1e38d
|
@ -60,4 +60,24 @@ function farm_ui_theme_install() {
|
|||
],
|
||||
];
|
||||
Block::create($values)->save();
|
||||
|
||||
// Modify the block.block.gin_local_actions config to use our class.
|
||||
$local_actions_block = \Drupal::configFactory()->getEditable('block.block.gin_local_actions');
|
||||
$local_actions_block->set('plugin', 'farm_local_actions_block');
|
||||
$local_actions_block->set('settings.id', 'farm_local_actions_block');
|
||||
$local_actions_block->set('settings.provider', 'farm_ui_theme');
|
||||
$local_actions_block->save();
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements hook_uninstall().
|
||||
*/
|
||||
function farm_ui_theme_uninstall() {
|
||||
|
||||
// Revert changes to block.block.gin_local_actions config.
|
||||
$local_actions_block = \Drupal::configFactory()->getEditable('block.block.gin_local_actions');
|
||||
$local_actions_block->set('plugin', 'local_actions_block');
|
||||
$local_actions_block->set('settings.id', 'local_actions_block');
|
||||
$local_actions_block->set('settings.provider', 'core');
|
||||
$local_actions_block->save();
|
||||
}
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\farm_ui_theme\Plugin\Block;
|
||||
|
||||
use Drupal\Core\Menu\Plugin\Block\LocalActionsBlock;
|
||||
|
||||
/**
|
||||
* Provides a block to display the local actions.
|
||||
*
|
||||
* @Block(
|
||||
* id = "farm_local_actions_block",
|
||||
* admin_label = @Translation("Primary farm admin actions")
|
||||
* )
|
||||
*/
|
||||
class FarmLocalActionsBlock extends LocalActionsBlock {
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function build() {
|
||||
|
||||
// Render local actions as a dropbutton.
|
||||
$local_actions = parent::build();
|
||||
$links = [];
|
||||
foreach ($local_actions as $local_action) {
|
||||
if (!empty($local_action['#link']) && $local_action['#access']->isAllowed()) {
|
||||
$links[] = $local_action['#link'];
|
||||
}
|
||||
}
|
||||
return [
|
||||
'#type' => 'dropbutton',
|
||||
'#dropbutton_type' => 'standard',
|
||||
'#links' => $links,
|
||||
'#cache' => $local_actions['#cache'],
|
||||
];
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue