From 20afb65af748eba75c862a20d7bc710482ea0e10 Mon Sep 17 00:00:00 2001
From: s j <sj@1729.be>
Date: Wed, 5 Jan 2022 11:14:09 +0100
Subject: [PATCH] imp: add RRN/NRN field type

---
 .gitignore                                    |  1 +
 composer.json                                 |  5 ++
 .../Field/FieldFormatter/RrnNrnFormatter.php  | 20 +++++++
 src/Plugin/Field/FieldType/RrnNrnField.php    | 56 +++++++++++++++++++
 src/Plugin/Field/FieldWidget/RrnNrnWidget.php |  3 +-
 5 files changed, 84 insertions(+), 1 deletion(-)
 create mode 100644 .gitignore
 create mode 100644 src/Plugin/Field/FieldFormatter/RrnNrnFormatter.php
 create mode 100644 src/Plugin/Field/FieldType/RrnNrnField.php

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..b25c15b
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+*~
diff --git a/composer.json b/composer.json
index ec171d3..fb8d024 100644
--- a/composer.json
+++ b/composer.json
@@ -13,5 +13,10 @@
   "require": {
     "drupal/webform_rrn_nrn": "^2.2.0"
   },
+  "extra": {
+    "branch-alias": {
+      "dev-1.x": "1.0.x-dev"
+    },
+  },
   "minimum-stability": "dev"
 }
diff --git a/src/Plugin/Field/FieldFormatter/RrnNrnFormatter.php b/src/Plugin/Field/FieldFormatter/RrnNrnFormatter.php
new file mode 100644
index 0000000..5268d76
--- /dev/null
+++ b/src/Plugin/Field/FieldFormatter/RrnNrnFormatter.php
@@ -0,0 +1,20 @@
+<?php
+
+namespace Drupal\field_rrn_nrn\Plugin\Field\FieldFormatter;
+
+use Drupal\Core\Field\Plugin\Field\FieldFormatter\BasicStringFormatter;
+
+/**
+ * Plugin implementation of the 'rrn_nrn_formatter' formatter.
+ *
+ * @FieldFormatter(
+ *   id = "rrn_nrn_formatter",
+ *   label = @Translation("RRN/NRN"),
+ *   field_types = {
+ *     "rrn_nrn"
+ *   }
+ * )
+ */
+class RrnNrnFormatter extends BasicStringFormatter {
+
+}
diff --git a/src/Plugin/Field/FieldType/RrnNrnField.php b/src/Plugin/Field/FieldType/RrnNrnField.php
new file mode 100644
index 0000000..b22d884
--- /dev/null
+++ b/src/Plugin/Field/FieldType/RrnNrnField.php
@@ -0,0 +1,56 @@
+<?php
+
+namespace Drupal\field_rrn_nrn\Plugin\Field\FieldType;
+
+use Drupal\Core\Field\FieldItemBase;
+use Drupal\Core\Field\FieldStorageDefinitionInterface;
+use Drupal\Core\TypedData\DataDefinition;
+
+/**
+ * Plugin implementation of the 'rrn_nrn_field' field type.
+ *
+ * @FieldType(
+ *   id = "rrn_nrn",
+ *   label = @Translation("RRN/NRN Field"),
+ *   description = @Translation("RRN/NRN Field"),
+ *   default_widget = "rrn_nrn_widget",
+ *   default_formatter = "rrn_nrn_formatter"
+ * )
+ */
+class RrnNrnField extends FieldItemBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function schema(FieldStorageDefinitionInterface $field_definition) {
+    return [
+      'columns' => [
+        'value' => [
+          'type' => 'text',
+          'size' => 'tiny',
+          'not null' => FALSE,
+        ],
+      ],
+    ];
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function isEmpty() {
+    $value = $this->get('value')->getValue();
+    return $value === NULL || $value === '';
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function propertyDefinitions(FieldStorageDefinitionInterface $field_definition) {
+    $properties = [];
+    $properties['value'] = DataDefinition::create('string')
+      ->setLabel(t('RRN NRN'));
+
+    return $properties;
+  }
+
+}
diff --git a/src/Plugin/Field/FieldWidget/RrnNrnWidget.php b/src/Plugin/Field/FieldWidget/RrnNrnWidget.php
index 805d2e5..d730d0c 100644
--- a/src/Plugin/Field/FieldWidget/RrnNrnWidget.php
+++ b/src/Plugin/Field/FieldWidget/RrnNrnWidget.php
@@ -13,7 +13,8 @@ use Drupal\Core\Form\FormStateInterface;
  *   id = "rrn_nrn_widget",
  *   label = @Translation("RRN / NRN widget"),
  *   field_types = {
- *     "string"
+ *     "string",
+ *     "rrn_nrn"
  *   }
  * )
  */
-- 
GitLab