sguener
Elite Observer

WriteLock auf Datensätze

Hallo zusammen,

wir stehen aktuell vor der Anforderung, Datensätze mit einem Schreibschutz (:smileyinfo: quasi setWriteLock(true)) zu versehen. Leider ist das für Datensätze nicht vorgesehen. Wollte mal nachfragen, ob einer von euch das bei bisher umsetzen durfte? Wenn ja wie, bzw. seht ihr an dieser Stelle sinnvolle Alternative, die auch den Kunden (hoffentlich) glücklich machen würden?

Schöne Grüße und vielen Dank im Voraus!

Sahin

(FS-Version ist relativ aktuell 5.2.R3)

4 Replies
philippr
Returning Spectator

Hi Sahin,

ohne die Anforderung genau zu kennen.

Ggf. wäre eine Überlegung alle Datensätze mit einer Eingabekomponente (z.B. CMS_INPUT_TEXT) zu bestücken und über eine Regel (ON_SAVE) zu prüfen, ob diese einen bestimmten Wert hat, wenn nicht kann nicht gespeichert werden.

Es müsste lediglich dafür gesorgt werden, dass der Redakteur diese Eingabekomponente nicht selbst verändern kann. Bei CMS_INPUT_TEXT z.B. mit editable="no".

Ungetestet runtergeschrieben:

<CMS_INPUT_TEXT name="pt_test" editable="no" >

    <LANGINFOS>

      <LANGINFO lang="*" label="test"/>

    </LANGINFOS>

  </CMS_INPUT_TEXT>

und folgender Regel:

<RULES>

          <RULE>

                    <WITH>

                              <NOT>

                                        <AND>

                                                  <PROPERTY name="EMPTY" source="pt_test"/>

                                                  <PROPERTY name="TRANSLATED" source="#global"/>

                                        </AND>

                              </NOT>

                    </WITH>

                    <DO>

                              <VALIDATION scope="save">

                                        <PROPERTY name="VALID" source="pt_test"/>

                                        <MESSAGE lang="*" text="Dieser Datensatz darf nicht bearbeitet werden"/>

                              </VALIDATION>

                    </DO>

          </RULE>

</RULES>

Über die API kann die Eingabekomponente allerdings noch verändert werden

(Beanshell auf die Page)

bsh % fd = e.getFormData();

bsh % e.setLock(true);

bsh % fd.get(null,"pt_test").set("hallo");

bsh % e.setFormData(fd);

bsh % e.save();

bsh % e.setLock(false);

Verhindert nicht das ein Element gelocked wird, jedoch kann mit einer Hinweismeldung nicht gespeichert werden?

Grüße,

Philipp

Hallo Philipp,

vielen Dank für deine Antwort. Ich würde die Redakteure jedoch (am Liebsten) nicht so weit kommen lassen wollen. :smileydevil:

Gestern Abend ist mir noch der StoreListener eingefallen, aber leider kann er nicht die gewünschte Funktionalität bereitstellen, wie ich gerade feststellen musste. Ich werde hierfür mal einen Feature Request einstellen. Aus Kundensicht wäre es sicherlich besser, schon beim setLock "reinzugrätschen", um die Bearbeitung zu unterbinden.

Die Antwort habe ich nur als hilfreiche Antwort markiert, um eventuell noch weitere Vorschläge zu erhalten. Das Thema hat keine hohe Prio, daher kann ich noch ein wenig abwarten.

Vielen Dank nochmals!

Sahin

Hallo Sahin,

ist dieses Posting weiterhin aktuell?

Spontan würde ich sagen, dass Philipp dir bereits die beste Antwort gegeben hat. Mir fällt zumindest keine bessere ein.

Viele Grüße

Michaela

0 Kudos

Ja, ist es eigentlich. Aber du kannst das trotzdem schließen, da scheinbar keine elegantere Lösung existiert, was ich sehr schade finde.

Schöne Grüße

Sahin

0 Kudos