From 27fb820ae9081fb56957cf75e79eccd8a99edd52 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Sat, 14 Feb 2026 19:14:48 +0000
Subject: [PATCH] =minor css changes, queue merge logic restructured, and double checking changes actually changed in cRUD.js before sending to server
---
inc/meta/Meta.php | 34 ++++++++++++++++++++++++++++++++++
1 files changed, 34 insertions(+), 0 deletions(-)
diff --git a/inc/meta/Meta.php b/inc/meta/Meta.php
index 1316684..f7a35b4 100644
--- a/inc/meta/Meta.php
+++ b/inc/meta/Meta.php
@@ -276,6 +276,11 @@
*/
public function get(string $name): mixed
{
+ // Handle repeater subfield path
+ if (str_contains($name, ':')) {
+ return $this->getByPath($name);
+ }
+
// Check computed fields first
if (isset($this->computed[$name])) {
return ($this->computed[$name])($this);
@@ -301,6 +306,11 @@
*/
public function set(string $name, mixed $value): self
{
+ // Handle repeater subfield path (e.g., "services:2:image")
+ if (str_contains($name, ':')) {
+ return $this->setByPath($name, $value);
+ }
+
$config = $this->item->getFieldConfig($name);
if (!$config) {
@@ -442,6 +452,30 @@
return new Repeater($this, $name);
}
+ protected function setByPath(string $path, mixed $value): self
+ {
+ $parts = explode(':', $path, 3);
+ if (count($parts) !== 3) {
+ return $this;
+ }
+
+ [$repeaterName, $rowIndex, $subField] = $parts;
+ $this->repeater($repeaterName)->setField((int) $rowIndex, $subField, $value);
+
+ return $this;
+ }
+
+ protected function getByPath(string $path): mixed
+ {
+ $parts = explode(':', $path, 3);
+ if (count($parts) !== 3) {
+ return null;
+ }
+
+ [$repeaterName, $rowIndex, $subField] = $parts;
+ return $this->repeater($repeaterName)->field((int) $rowIndex, $subField);
+ }
+
// ─────────────────────────────────────────────────────────────
// Utility Methods
// ─────────────────────────────────────────────────────────────
--
Gitblit v1.10.0