You are here

trait ProjectTrait in Drupal PM (Project Management) 4.x

Provides a trait for "belongs" to a project behaviour.

@package Drupal\pm_project\Entity

Hierarchy

7 files declare their use of ProjectTrait
Board.php in modules/pm_board/src/Entity/Board.php
Epic.php in modules/pm_epic/src/Entity/Epic.php
Expense.php in modules/pm_expense/src/Entity/Expense.php
Feature.php in modules/pm_feature/src/Entity/Feature.php
Invoice.php in modules/pm_invoice/src/Entity/Invoice.php

... See full list

File

modules/pm_project/src/Entity/ProjectTrait.php, line 16

Namespace

Drupal\pm_project\Entity
View source
trait ProjectTrait {

  /**
   * Returns an array of base field definitions for publishing status.
   *
   * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type
   *   The entity type to add the publishing status field to.
   *
   * @return \Drupal\Core\Field\BaseFieldDefinition[]
   *   An array of base field definitions.
   *
   * @throws \Drupal\Core\Entity\Exception\UnsupportedEntityTypeDefinitionException
   *   Thrown when the entity type does not implement EntityPublishedInterface
   *   or if it does not have a "published" entity key.
   */
  public static function projectFieldDefinitions(EntityTypeInterface $entity_type) {
    if (!is_subclass_of($entity_type
      ->getClass(), ContentEntityInterface::class)) {
      throw new UnsupportedEntityTypeDefinitionException('The entity type ' . $entity_type
        ->id() . ' does not implement \\Drupal\\Core\\Entity\\ContentEntityInterface.');
    }
    $fields = [];
    $fields['project'] = BaseFieldDefinition::create('entity_reference')
      ->setLabel(new TranslatableMarkup('Project'))
      ->setSetting('target_type', 'pm_project')
      ->setSetting('handler', 'default')
      ->setDisplayOptions('view', [
      'label' => 'hidden',
      'type' => 'Project',
      'weight' => 0,
    ])
      ->setDisplayOptions('form', [
      'type' => 'entity_reference_autocomplete',
      'weight' => 5,
      'settings' => [
        'match_operator' => 'CONTAINS',
        'size' => '60',
        'autocomplete_type' => 'tags',
        'placeholder' => '',
      ],
    ])
      ->setDisplayConfigurable('form', TRUE)
      ->setDisplayConfigurable('view', TRUE)
      ->setRequired(TRUE)
      ->setCardinality(1);
    return $fields;
  }

  /**
   * {@inheritdoc}
   */
  public function getProject() {
    return (bool) $this
      ->getEntityKey('project');
  }

  /**
   * {@inheritdoc}
   */
  public function setProject($project_id) {
    $this
      ->set('project', $project_id);
    return $this;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
ProjectTrait::getProject public function
ProjectTrait::projectFieldDefinitions public static function Returns an array of base field definitions for publishing status.
ProjectTrait::setProject public function