Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 9 |
CRAP | |
0.00% |
0 / 82 |
| Shortcut | |
0.00% |
0 / 1 |
|
0.00% |
0 / 9 |
156 | |
0.00% |
0 / 82 |
| getTitle | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| setTitle | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
| getWeight | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| setWeight | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
| getUrl | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| postSave | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 5 |
|||
| baseFieldDefinitions | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 56 |
|||
| getCacheTagsToInvalidate | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| sort | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 7 |
|||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\shortcut\Entity\Shortcut. | |
| */ | |
| namespace Drupal\shortcut\Entity; | |
| use Drupal\Core\Cache\Cache; | |
| use Drupal\Core\Entity\ContentEntityBase; | |
| use Drupal\Core\Entity\EntityStorageInterface; | |
| use Drupal\Core\Entity\EntityTypeInterface; | |
| use Drupal\Core\Field\BaseFieldDefinition; | |
| use Drupal\link\LinkItemInterface; | |
| use Drupal\shortcut\ShortcutInterface; | |
| /** | |
| * Defines the shortcut entity class. | |
| * | |
| * @property \Drupal\link\LinkItemInterface link | |
| * | |
| * @ContentEntityType( | |
| * id = "shortcut", | |
| * label = @Translation("Shortcut link"), | |
| * handlers = { | |
| * "access" = "Drupal\shortcut\ShortcutAccessControlHandler", | |
| * "form" = { | |
| * "default" = "Drupal\shortcut\ShortcutForm", | |
| * "add" = "Drupal\shortcut\ShortcutForm", | |
| * "edit" = "Drupal\shortcut\ShortcutForm", | |
| * "delete" = "Drupal\shortcut\Form\ShortcutDeleteForm" | |
| * }, | |
| * "translation" = "Drupal\content_translation\ContentTranslationHandler" | |
| * }, | |
| * base_table = "shortcut", | |
| * data_table = "shortcut_field_data", | |
| * translatable = TRUE, | |
| * entity_keys = { | |
| * "id" = "id", | |
| * "uuid" = "uuid", | |
| * "bundle" = "shortcut_set", | |
| * "label" = "title", | |
| * "langcode" = "langcode", | |
| * }, | |
| * links = { | |
| * "canonical" = "/admin/config/user-interface/shortcut/link/{shortcut}", | |
| * "delete-form" = "/admin/config/user-interface/shortcut/link/{shortcut}/delete", | |
| * "edit-form" = "/admin/config/user-interface/shortcut/link/{shortcut}", | |
| * }, | |
| * list_cache_tags = { "config:shortcut_set_list" }, | |
| * bundle_entity_type = "shortcut_set" | |
| * ) | |
| */ | |
| class Shortcut extends ContentEntityBase implements ShortcutInterface { | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getTitle() { | |
| return $this->get('title')->value; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function setTitle($link_title) { | |
| $this->set('title', $link_title); | |
| return $this; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getWeight() { | |
| return $this->get('weight')->value; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function setWeight($weight) { | |
| $this->set('weight', $weight); | |
| return $this; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getUrl() { | |
| return $this->link->first()->getUrl(); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function postSave(EntityStorageInterface $storage, $update = TRUE) { | |
| parent::postSave($storage, $update); | |
| // Entity::postSave() calls Entity::invalidateTagsOnSave(), which only | |
| // handles the regular cases. The Shortcut entity has one special case: a | |
| // newly created shortcut is *also* added to a shortcut set, so we must | |
| // invalidate the associated shortcut set's cache tag. | |
| if (!$update) { | |
| Cache::invalidateTags($this->getCacheTagsToInvalidate()); | |
| } | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public static function baseFieldDefinitions(EntityTypeInterface $entity_type) { | |
| $fields['id'] = BaseFieldDefinition::create('integer') | |
| ->setLabel(t('ID')) | |
| ->setDescription(t('The ID of the shortcut.')) | |
| ->setReadOnly(TRUE) | |
| ->setSetting('unsigned', TRUE); | |
| $fields['uuid'] = BaseFieldDefinition::create('uuid') | |
| ->setLabel(t('UUID')) | |
| ->setDescription(t('The UUID of the shortcut.')) | |
| ->setReadOnly(TRUE); | |
| $fields['shortcut_set'] = BaseFieldDefinition::create('entity_reference') | |
| ->setLabel(t('Shortcut set')) | |
| ->setDescription(t('The bundle of the shortcut.')) | |
| ->setSetting('target_type', 'shortcut_set') | |
| ->setRequired(TRUE); | |
| $fields['title'] = BaseFieldDefinition::create('string') | |
| ->setLabel(t('Name')) | |
| ->setDescription(t('The name of the shortcut.')) | |
| ->setRequired(TRUE) | |
| ->setTranslatable(TRUE) | |
| ->setSetting('max_length', 255) | |
| ->setDisplayOptions('form', array( | |
| 'type' => 'string_textfield', | |
| 'weight' => -10, | |
| 'settings' => array( | |
| 'size' => 40, | |
| ), | |
| )); | |
| $fields['weight'] = BaseFieldDefinition::create('integer') | |
| ->setLabel(t('Weight')) | |
| ->setDescription(t('Weight among shortcuts in the same shortcut set.')); | |
| $fields['link'] = BaseFieldDefinition::create('link') | |
| ->setLabel(t('Path')) | |
| ->setDescription(t('The location this shortcut points to.')) | |
| ->setRequired(TRUE) | |
| ->setSettings(array( | |
| 'link_type' => LinkItemInterface::LINK_INTERNAL, | |
| 'title' => DRUPAL_DISABLED, | |
| )) | |
| ->setDisplayOptions('form', array( | |
| 'type' => 'link_default', | |
| 'weight' => 0, | |
| )) | |
| ->setDisplayConfigurable('form', TRUE); | |
| $fields['langcode'] = BaseFieldDefinition::create('language') | |
| ->setLabel(t('Language')) | |
| ->setDescription(t('The language code of the shortcut.')) | |
| ->setTranslatable(TRUE) | |
| ->setDisplayOptions('view', array( | |
| 'type' => 'hidden', | |
| )) | |
| ->setDisplayOptions('form', array( | |
| 'type' => 'language_select', | |
| 'weight' => 2, | |
| )); | |
| return $fields; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getCacheTagsToInvalidate() { | |
| return $this->shortcut_set->entity->getCacheTags(); | |
| } | |
| /** | |
| * Sort shortcut objects. | |
| * | |
| * Callback for uasort(). | |
| * | |
| * @param \Drupal\shortcut\ShortcutInterface $a | |
| * First item for comparison. | |
| * @param \Drupal\shortcut\ShortcutInterface $b | |
| * Second item for comparison. | |
| * | |
| * @return int | |
| * The comparison result for uasort(). | |
| */ | |
| public static function sort(ShortcutInterface $a, ShortcutInterface $b) { | |
| $a_weight = $a->getWeight(); | |
| $b_weight = $b->getWeight(); | |
| if ($a_weight == $b_weight) { | |
| return strnatcasecmp($a->getTitle(), $b->getTitle()); | |
| } | |
| return ($a_weight < $b_weight) ? -1 : 1; | |
| } | |
| } |