Wie am besten Custom Fields Defaults und Category Setting Logs handhaben

Einige Hintergründe

Der Grund, warum dies geschieht, ist, dass

  1. Das Activity Pub-Plugin einige Standardwerte für diese Felder auf dem Client festlegt (hier).

  2. Alle Änderungen an benutzerdefinierten Kategorie-Feldern werden im Kern als Änderungen an den Kategorie-Einstellungen protokolliert (hier).

“1” (Festlegen von Standardwerten für benutzerdefinierte Kategorie-Felder auf dem Client) scheint derzeit der beste Weg zu sein, um mit der Pipeline für benutzerdefinierte Kategorie-Felder zu arbeiten, da die Aktion “Kategorie aktualisieren” diese automatisch speichert und Sie sicherstellen möchten, dass die Standardwerte festgelegt werden, wenn die benutzerdefinierten Felder voneinander abhängig sind (wie im AP-Plugin).

Beachten Sie, dass es derzeit für ein Plugin nicht möglich ist, benutzerdefinierte Felder selektiv an den Server zu serialisieren (ohne Monkey Patching).

Angesichts des oben Genannten frage ich mich, ob “2” sinnvoll ist? Wie David anmerkt, deutet eine Änderung eines benutzerdefinierten Feldes bei der aktuellen Konfiguration der Pipeline nicht unbedingt auf eine Änderung der Einstellungskonfiguration der Kategorie hin (d. h. von nil zum Standardwert).

Ich bin gespannt auf die Meinungen anderer. Vielleicht übersehe ich eine bessere Möglichkeit, Standardwerte für benutzerdefinierte Kategorie-Felder zu handhaben.

3 „Gefällt mir“

@david Ich stoße diese Anfrage noch einmal nach oben auf Ihrer Liste. Was sagt Ihr Bauchgefühl dazu? Wenn Sie denken, dass eine Änderung an der Speicherung von benutzerdefinierten Feldern für Kategorien im Kern erforderlich ist, kann ich das versuchen. Oder vielleicht finde ich einen neuen Weg, Standardwerte für benutzerdefinierte Felder festzulegen. Oder vielleicht lassen wir es vorerst?

Ja, das ist knifflig. Ich nehme an, die meisten Plugins stoßen nicht auf dieses Problem, da ihr ‘Standardwert’ für die Kategorieeinstellung ein Nullwert ist.

Hattest du eine Idee für eine Kern-API-Änderung, die die Situation verbessern könnte?

Völlig ungetestet, aber ich denke, wir könnten im Moment etwas auf die Beine stellen, indem wir ein rohes HTML-Eingabefeld verwenden (beachte Kleinbuchstaben input anstelle der bidirektional gebundenen <Input-Komponente von Ember).

<input
  value={{or category.custom_fields.my_field "default value"}}
  {{on "change" this.updateMyFieldValue}}
/>

Mit dieser Strategie haben wir die Kontrolle darüber, wie Werte aus der Modellinstanz gelesen/geschrieben werden. Wenn also ein Wert in der Benutzeroberfläche auf den Standardwert gesetzt wird, können wir diesen als ‘null’ in die benutzerdefinierten Felder schreiben:

@action
updateMyFieldValue(event){
  let newValue = event.target.value;
  if(newValue === "default value"){
    newValue = null;
  }

  this.category.set("custom_fields.my_field", newValue);
}

(und dann würdest du die Standardwertkonfiguration entfernen, die du in (1) des OP beschrieben hast)

1 „Gefällt mir“