Umgang von FirstSpirit mit Pflichtfeldern?
Author: thomas_walter
Publication Date: 8/4/2010 9:21
Bevor ich zu diesem Punkt evtl. einen Featurewunsch einstelle würde ich gerne zuerst hören, wie andere Kunden mit dem Thema umgeben, was evtl. bereits in der aktuellen Version 4.2 bereits umgesetzt ist (wir setzen noch 4.1 ein) und was bereits seitens der e-spirit AG geplant ist ...
Hintergrund zum aktuellen Verhalten:
Das "Problem" ist hier, dass _initial_ alle Eingabekomponenten (also auch DOM) leer gespeichert werden können weil diese theoretisch auch im WebClient angelegt werden können und dort ist es ja technisch gar nicht möglich, eine neue Eingabekomponente (im Browser) anzuzeigen, ohne diese vorher zu speichern.
Daher wird die Eingabekomponente "rot" angezeigt - also als Warnung für den Redakteur, dass dort kein leerer Inhalt gespeichert werden sollte.
Wie gesagt, die Speicherung einer leeren Eingabekomponente funktioniert (trotz allowEmpty="no") nur initial. Doch sobald man in so einer Komponente mind. ein Zeichen eingibt, so wird es vom System erkannt und eine leere Speicherung ist ab diesem Zeitpunkt gar nicht möglich - auch dann nicht möglich, wenn man das(die) eingegebene(n) Zeichen wieder löscht.
Meine Wünsche:
Wenn ich ein Feld im Template als Pflichfeld markiere würde ich erwarten, dass das CMS dies (ausser der optischen Hervorhebung im Java-Client) berücksichtigt. Ich finde es nicht schlimm, dass ein Objekt ohne dass alle Pflichfelder befüllt sind gespeichert werden kann - im Gegenteil das wäre m.E. sinnvoller, als die Benutzer zu zwingen irgendein Zeichen einzugeben, damit die Seite gespeichert werden kann. (Damit ist dann ja auch die Information, dass auf dieser Seite noch ein Pflichfeld nicht befüllt ist verloren).
Allerdings würde ich dann erwarten, dass das CMS bei der Freigabe einer Seite prüft, ob alle Pflichtfelder befüllt sind und die Freigabe einer Seite, bei der nicht alle Pflichfelder befüllt sind unterbindet.
-
Author: thomas_ritter - 5/4/2015 12:39
Hallo zusammen,
seh ich das richtig, dass diese Abfrage nicht Funktioniert, wenn das Pflichtfeld mittels Regeln definiert wurde und nicht mit "allowEmpty"?
Kann man trotzdem abfragen, die Pflichtfelder ausgefüllt sind oder nicht?
Szenario:
Wir haben Datensätze für die nachträglich Regeln eingefügt wurden. Nun möchte ich mittels Script prüfen, ob alle Pflichtfelder ausgefüllt sind, oder nicht.
lg thomas
0 -
Author: StefanSchulz - 5/4/2015 12:58
Hallo Thomas,
man kann über die API Formulardaten eines Elements auf Validität der Regeln prüfen.
Siehe hierzu den ValidationAgent.
Beste Grüße
Stefan
0 -
Author: thomas_ritter - 5/4/2015 14:02
Danke für die schnelle Antwort.
Hast du hierfür evtl. ein kleines Beispiel, das zeigt wie ich das auf einem Datensatz anwenden kann (beanshell)?
0 -
Author: StefanSchulz - 5/4/2015 14:23
Sollte in etwa so gehen (ungetestet, Skriptausführung auf Datensatz):
import de.espirit.firstspirit.agency.ValidationAgent;
validationAgent = context.requireSpecialist(ValidationAgent.TYPE);
storeElement = context.getStoreElement();
validationReports = validationAgent.validate(storeElement, ValidationAgent.ValidationScope.SAVE);
valid = validationReports.isValid();
... // ausgabe etc.
Beste Grüße
Stefan
0 -
Author: thomas_ritter - 5/4/2015 14:42
Danke.
Hier bekomme ich jetzt aber ja die Validierung für meine Datenquelle und nicht für einen einzelnen Datensatz, da storeElement bei mir jetzt zb. die Datenquelle "teasers" ist, oder habe ich etwas falsch gemacht?
lg thomas
0 -
Author: StefanSchulz - 5/4/2015 14:51
Das kommt darauf an, auf welchem Objekt du das Skript ausführst. Auf einer Datenquelle macht es weniger Sinn. Datensätze erreichst du über die Tabelle einer Datenquelle. Woher du die Datensätze in deinem Fall bekommst, ist natürlich anwendungsabhängig, das kann ich dir schlecht sagen.
Grüße
Stefan
0 -
Author: thomas_ritter - 5/4/2015 15:09
Vielen Dank, habe es hinbekommen.
import de.espirit.firstspirit.agency.ValidationAgent;
validationAgent = context.requireSpecialist(ValidationAgent.TYPE);
row = context.getSelectedRow();
storeElement = context.getStoreElement();
dataset = storeElement.getDataset(row);
validationReports = validationAgent.validate(dataset, ValidationAgent.ValidationScope.SAVE);
valid = validationReports.isValid();
JOptionPane.showMessageDialog(null, "Pflichtfelder ausgefuellt: "+valid);
lg thomas
0
Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.
Kommentare
7 Kommentare