From f94860aacd6200fb24c9e7431eb379a368cb392d Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Fri, 10 Jul 2026 00:35:44 +0000
Subject: [PATCH] =Refactored CredentialsManager.php to utilize a CustomTable instance instead
---
inc/registrar/Fields.php | 125 ++++++++++++++++++++++++++++++++++-------
1 files changed, 103 insertions(+), 22 deletions(-)
diff --git a/inc/registrar/Fields.php b/inc/registrar/Fields.php
index 79d07bd..f9668f2 100644
--- a/inc/registrar/Fields.php
+++ b/inc/registrar/Fields.php
@@ -3,6 +3,8 @@
use JVBase\managers\SEO\render\Thing\Organization\LocalBusiness\LocalBusiness;
use JVBase\managers\SEO\render\Thing\Thing;
+use JVBase\meta\Form;
+use JVBase\meta\Meta;
use JVBase\registrar\fields\Field;
use JVBase\registrar\fields\GroupedField;
use JVBase\registrar\fields\OptionsField;
@@ -18,18 +20,25 @@
class Fields {
protected array $fields;
private ?Registrar $registrar = null;
+ protected ?string $type;
public function __construct(?string $type = null, ?Registrar $registrar = null) {
$this->registrar = $registrar;
+ $this->type = $type;
switch ($type) {
case 'post':
$this->addPostFields();
+ //TODO: Add fields to post edit screen
+// add_action('add_meta_boxes', [$this, 'registerPostFields']);
break;
case 'term':
$this->addTermFields();
break;
case 'user':
$this->addUserFields();
+ if ($registrar->hasAnyIntegrations()) {
+ $this->addIntegrationSetupField();
+ }
break;
}
}
@@ -48,7 +57,7 @@
return $this;
}
- public function addPostFields():void
+ protected function defaultPostFields():array
{
$statuses = [
// 'all' => [
@@ -96,13 +105,13 @@
],
];
}
- $fields = [
- 'post_status' => [
- 'type' => 'radio',
- 'label' => 'Status',
- 'default' => 'draft',
- 'options' => $statuses
- ],
+ return [
+ 'post_status' => [
+ 'type' => 'radio',
+ 'label' => 'Status',
+ 'default' => 'draft',
+ 'options' => $statuses
+ ],
'post_thumbnail' => [
'type' => 'upload',
'subtype' => 'image',
@@ -134,13 +143,18 @@
'maxLength' => 158,
],
];
+ }
+
+ public function addPostFields():void
+ {
+ $fields = $this->defaultPostFields();
foreach ($fields as $name => $config) {
$this->addField($name, $config);
}
}
- public function addTermFields():void
+ protected function defaultTermFields():array
{
$fields = [
'name' => [
@@ -162,37 +176,54 @@
'label' => 'Term Parent'
];
}
- foreach ($fields as $name => $config) {
+
+ return $fields;
+ }
+
+ public function addTermFields():void
+ {
+ foreach ($this->defaultTermFields() as $name => $config) {
$this->addField($name, $config);
}
}
- public function addUserFields():void
+ protected function defaultUserFields():array
{
- $fields = [
+ return [
'first_name' => [
'type' => 'text',
'label' => 'First Name',
+ 'section'=> 'your-account'
],
'last_name' => [
'type' => 'text',
'label' => 'Last Name',
+ 'section'=> 'your-account'
+ ],
+ 'user_email' => [
+ 'type' => 'email',
+ 'label' => 'Your Email',
+ 'section'=> 'your-account'
],
'display_name' => [
'type' => 'text',
'label' => 'Display Name',
+ 'section'=> 'your-account'
],
- 'website' => [
- 'type' => 'url',
- 'label' => 'Website',
- ],
- 'description' => [
- 'type' => 'textarea',
- 'quill' => true,
- 'label' => 'Description',
- ]
+// 'website' => [
+// 'type' => 'url',
+// 'label' => 'Website',
+// ],
+// 'description' => [
+// 'type' => 'textarea',
+// 'quill' => true,
+// 'label' => 'Description',
+// ],
];
- foreach ($fields as $name => $config) {
+ }
+ public function addUserFields():void
+ {
+ foreach ($this->defaultUserFields() as $name => $config) {
$this->addField($name, $config);
}
}
@@ -393,4 +424,54 @@
$business = new LocalBusiness();
$business->setHasOfferCatalogField($this);
}
+
+ public function registerPostFields():void
+ {
+ $postType = $this->registrar->getBased();
+ add_meta_box(
+ $postType.'_fields',
+ 'Extra Fields',
+ [$this, 'renderMyMetaBox'],
+ $postType,
+ 'side',
+ 'high'
+ );
+ }
+ public function renderMyMetaBox():void
+ {
+ $ID = get_the_ID();
+ $meta = match ($this->type) {
+ 'post' => Meta::forPost($ID),
+ 'term' => Meta::forTerm($ID),
+ 'user' => Meta::forUser($ID),
+ };
+ $defaults = array_keys(match($this->type) {
+ 'post' => $this->defaultPostFields(),
+ 'term' => $this->defaultTermFields(),
+ 'user' => $this->defaultUserFields()
+ });
+ foreach ($this->fields as $fName => $field){
+ if (!in_array($fName, $defaults)){
+ echo Form::render($fName, $meta->get($fName),$field->getConfig());
+ }
+ }
+ }
+
+ public static function getUserFields():array
+ {
+ return (new self())->defaultUserFields();
+ }
+
+ protected function addIntegrationSetupField():void
+ {
+ $integrations = $this->registrar->getIntegrations();
+ foreach (array_keys($integrations) as $integration) {
+ $this->addField('integration_'.$integration.'_connected', [
+ 'type' => 'true_false',
+ 'hidden' => true,
+ 'label' => 'Connected to '.$integration,
+ 'default' => false,
+ ]);
+ }
+ }
}
--
Gitblit v1.10.0