FarmActions.php in farmOS 2.x
File
modules/core/ui/action/src/Plugin/Derivative/FarmActions.php
View source
<?php
namespace Drupal\farm_ui_action\Plugin\Derivative;
use Drupal\Component\Plugin\Derivative\DeriverBase;
use Drupal\Component\Utility\Unicode;
class FarmActions extends DeriverBase {
public function getDerivativeDefinitions($base_plugin_definition) {
$entity_types = array_keys(\Drupal::entityTypeManager()
->getDefinitions());
$farm_types = [
'asset',
'log',
'plan',
];
foreach ($farm_types as $type) {
if (!in_array($type, $entity_types)) {
continue;
}
$name = 'farm.add.' . $type;
$this->derivatives[$name] = $base_plugin_definition;
$this->derivatives[$name]['title'] = 'Add ' . Unicode::ucfirst($type);
$this->derivatives[$name]['route_name'] = 'entity.' . $type . '.add_page';
if (\Drupal::moduleHandler()
->moduleExists('farm_ui_views')) {
$this->derivatives[$name]['appears_on'][] = 'view.farm_' . $type . '.page';
if ($type == 'log') {
$this->derivatives[$name]['appears_on'][] = 'view.farm_log.page_user';
}
}
if (\Drupal::moduleHandler()
->moduleExists('farm_ui_dashboard')) {
$this->derivatives[$name]['appears_on'][] = 'farm.dashboard';
}
$name = 'farm.add.' . $type . '.bundle';
$this->derivatives[$name] = $base_plugin_definition;
$this->derivatives[$name]['route_name'] = 'entity.' . $type . '.add_form';
$this->derivatives[$name]['class'] = 'Drupal\\farm_ui_action\\Plugin\\Menu\\LocalAction\\AddEntity';
$this->derivatives[$name]['entity_type'] = $type;
$this->derivatives[$name]['cache_tags'] = [
'entity_bundles',
];
if (\Drupal::moduleHandler()
->moduleExists('farm_ui_views')) {
$this->derivatives[$name]['appears_on'][] = 'view.farm_' . $type . '.page_type';
$this->derivatives[$name]['bundle_parameter'] = 'arg_0';
}
if ($type == 'log') {
$bundles = \Drupal::service('entity_type.bundle.info')
->getBundleInfo('log');
foreach ($bundles as $bundle => $bundle_info) {
$name = 'farm.asset.add.' . $type . '.' . $bundle;
$this->derivatives[$name] = $base_plugin_definition;
$this->derivatives[$name]['route_name'] = 'entity.' . $type . '.add_form';
$this->derivatives[$name]['class'] = 'Drupal\\farm_ui_action\\Plugin\\Menu\\LocalAction\\AddEntity';
$this->derivatives[$name]['entity_type'] = $type;
$this->derivatives[$name]['bundle'] = $bundle;
$this->derivatives[$name]['appears_on'][] = 'entity.asset.canonical';
$this->derivatives[$name]['prepopulate'] = [
'asset' => [
'route_parameter' => 'asset',
],
];
$this->derivatives[$name]['cache_tags'] = [
'entity_bundles',
];
}
}
}
return parent::getDerivativeDefinitions($base_plugin_definition);
}
}