/** * {@inheritdoc} */ protected function checkAccess(EntityInterface $entity, $operation, $langcode, AccountInterface $account) { if ($operation == 'delete' && $entity->getFieldStorageDefinition()->isLocked()) { return FALSE; } return $account->hasPermission('administer ' . $entity->entity_type . ' fields'); }
/** * {@inheritdoc} */ protected function checkAccess(EntityInterface $entity, $operation, AccountInterface $account) { if ($operation == 'delete') { $field_storage_entity = $entity->getFieldStorageDefinition(); if ($field_storage_entity->isLocked()) { return AccessResult::forbidden()->addCacheableDependency($field_storage_entity); } else { return AccessResult::allowedIfHasPermission($account, 'administer ' . $entity->getTargetEntityTypeId() . ' fields')->addCacheableDependency($field_storage_entity); } } return AccessResult::allowedIfHasPermission($account, 'administer ' . $entity->getTargetEntityTypeId() . ' fields'); }
/** * {@inheritdoc} */ protected function checkAccess(EntityInterface $entity, $operation, $langcode, AccountInterface $account) { if ($operation == 'delete') { $field_storage_entity = $entity->getFieldStorageDefinition(); if ($field_storage_entity->isLocked()) { return AccessResult::forbidden()->cacheUntilEntityChanges($field_storage_entity); } else { return AccessResult::allowedIfHasPermission($account, 'administer ' . $entity->entity_type . ' fields')->cacheUntilEntityChanges($field_storage_entity); } } return AccessResult::allowedIfHasPermission($account, 'administer ' . $entity->entity_type . ' fields'); }
/** * {@inheritdoc} */ public function cloneEntity(EntityInterface $field_config, EntityInterface $cloned_field_config, $properties = []) { /** @var \Drupal\field\Entity\FieldConfig $field_config */ /** @var \Drupal\field\Entity\FieldConfig $cloned_field_config */ /** @var \Drupal\field\Entity\FieldStorageConfig $cloned_field_storage */ if ((!isset($properties['skip_storage']) || !$properties['skip_storage'])) { $cloned_field_storage = $field_config->getFieldStorageDefinition()->createDuplicate(); $cloned_field_storage->set('field_name', $properties['id']); $cloned_field_storage->set('id', $properties['id'] . '.' . $cloned_field_storage->getTargetEntityTypeId()); $cloned_field_storage->save(); } unset($properties['skip_storage']); $properties['field_name'] = $properties['id']; $properties['id'] = $cloned_field_config->getTargetEntityTypeId() . '.' . $cloned_field_config->getTargetBundle() . '.' . $properties['id']; return parent::cloneEntity($field_config, $cloned_field_config, $properties); }
/** * {@inheritdoc} */ public function buildRow(EntityInterface $field_config) { /** @var \Drupal\field\FieldConfigInterface $field_config */ $field_storage = $field_config->getFieldStorageDefinition(); $route_parameters = array('field_config' => $field_config->id()) + FieldUI::getRouteBundleParameter($this->entityManager->getDefinition($this->targetEntityTypeId), $this->targetBundle); $row = array('id' => Html::getClass($field_config->getName()), 'data' => array('label' => $field_config->getLabel(), 'field_name' => $field_config->getName(), 'field_type' => array('data' => array('#type' => 'link', '#title' => $this->fieldTypeManager->getDefinitions()[$field_storage->getType()]['label'], '#url' => Url::fromRoute("entity.field_config.{$this->targetEntityTypeId}_storage_edit_form", $route_parameters), '#options' => array('attributes' => array('title' => $this->t('Edit field settings.'))))))); // Add the operations. $row['data'] = $row['data'] + parent::buildRow($field_config); if ($field_storage->isLocked()) { $row['data']['operations'] = array('data' => array('#markup' => $this->t('Locked'))); $row['class'][] = 'menu-disabled'; } return $row; }