loadInclude('farm_group', 'inc', 'farm_group.base_fields'); switch ($entity_type->id()) { // Build asset base fields. case 'asset': return farm_group_asset_base_fields(); // Build log base fields. case 'log': return farm_group_log_base_fields(); default: return []; } } /** * Implements hook_entity_base_field_info_alter(). */ function farm_group_entity_base_field_info_alter(&$fields, EntityTypeInterface $entity_type) { /** @var \Drupal\field\Entity\FieldConfig[] $fields */ // Prevent creating circular group memberships. if ($entity_type->id() == 'log' && !empty($fields['asset'])) { $fields['asset']->addConstraint('CircularGroupMembership'); } } /** * Implements hook_form_BASE_FORM_ID_alter(). */ function farm_group_form_log_form_alter(&$form, FormStateInterface $form_state, $form_id) { // Check if the form has the required group fields. if (isset($form['group']) && isset($form['is_group_assignment'])) { // Set the visible state of the log.group field. // Only display if is_group_assignment is checked. $form['group']['#states']['visible'] = [':input[name="is_group_assignment[value]"]' => ['checked' => TRUE]]; } } /** * Implements hook_farm_ui_theme_region_items(). */ function farm_group_farm_ui_theme_region_items(string $entity_type) { $region_items = []; if ($entity_type == 'asset') { $region_items = [ 'top' => [], 'first' => [], 'second' => [ 'group', ], 'bottom' => [], ]; } elseif ($entity_type == 'log') { $region_items = [ 'top' => [], 'first' => [], 'second' => [ 'is_group_assignment', ], 'bottom' => [], ]; } return $region_items; } /** * Implements hook_farm_ui_theme_field_groups(). */ function farm_group_farm_ui_theme_field_groups(string $entity_type, string $bundle) { // Add a field group for group membership fields on logs. if ($entity_type == 'log') { return [ 'group' => [ 'location' => 'main', 'title' => t('Group'), 'weight' => 60, ], ]; } return []; } /** * Implements hook_farm_ui_theme_field_group_items(). */ function farm_group_farm_ui_theme_field_group_items(string $entity_type, string $bundle) { if ($entity_type == 'log') { return [ 'group' => 'group', 'is_group_assignment' => 'group', ]; } return []; }