getDefinitions()); // Define the farmOS entity types we care about. $farm_types = [ 'asset', 'log', 'plan', ]; // Iterate through the farmOS entity types. foreach ($farm_types as $type) { // If the entity type does not exist, skip it. if (!in_array($type, $entity_types)) { continue; } // Generate a link to [entity-type]/add. $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'; // Add it to entity Views, if the farm_ui_views module is enabled. if (\Drupal::moduleHandler()->moduleExists('farm_ui_views')) { $this->derivatives[$name]['appears_on'][] = 'view.farm_' . $type . '.page'; // If this is a log, also add it to view.farm_log.page_user. if ($type == 'log') { $this->derivatives[$name]['appears_on'][] = 'view.farm_log.page_user'; } } // Add it to farm.dashboard, if the farm_ui_dashboard module is enabled. if (\Drupal::moduleHandler()->moduleExists('farm_ui_dashboard')) { $this->derivatives[$name]['appears_on'][] = 'farm.dashboard'; } // Generate a link to [entity-type]/add/[bundle]. $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; // Add it to entity bundle Views, if the farm_ui_views module is enabled. if (\Drupal::moduleHandler()->moduleExists('farm_ui_views')) { $this->derivatives[$name]['appears_on'][] = 'view.farm_' . $type . '.page_type'; } } return parent::getDerivativeDefinitions($base_plugin_definition); } }