krause
I'm new here

Ändern des StoreElement Autors per Skript

Jump to solution

Hallo Experten,

wir würden gerne für Objekte aus der Inhalteverwaltung per Skript den Autor ändern. Der Autor soll der Autor der allerersten Version sein.

Dazu habe ich folgendes (etwas vereinfachtes) Skript geschrieben:

...


//get first revision

firstRevision = storeElement.getHistory(new Date(), HistoryProvider.EVER_SINCE, 1, RevisionFilter.CREATE_FILTER ).get(0);

String author = firstRevision.getEditor();

String loginName = author.substring(0, author.indexOf('(') - 1);

User user =  context.getConnection().getService(AdminService.class).getUserStorage().getUserByLogin(loginName);

if (user != null && !storeElement.getEditor().equals(user)){

Boolean wasLocked = storeElement.isLocked();

try {   //lock element

if (!wasLocked)

storeElement.setLock(true, false); // lock non-recursive

//set editor

storeElement.setEditor(user);

storeElement.save("save author from first version " + user.getLoginName(), false);

} catch(LockException lockFailed) {

context.logError("script resetAuthor: lock failed -> object already locked by " + lockFailed.getUserLoginName());

} finally {

try {

if (!wasLocked) storeElement.setLock(false, false);     // unlock non-recursive

} catch(Exception unlockFailed){

context.logError("script resetAuthor: unlock failed " + unlockFailed);

}

}

} else {

context.logInfo("script resetAuthor: skiped.");

}

...

Leider ist es so, dass nach dem Aufruf von storeElement.save() der Autor immer der aktuell angemeldete User wird. Egal was ich speichere (bei Permissions ist es das selbe Phänomen), wenn ich z.B. als Admin angemeldet bin und das Skript ausführe wird immer sowohl als Autor als auch letzter Bearbeiter "Admin" eingetragen. Den letzten Bearbeiter verstehe ich ja noch, aber der Autor sollte doch immer derselbe bleiben.

Weiß jemand, warum das so ist und, noch viel wichtiger, wie ich die Autoren meiner Inhalte per Skript wieder auf die Ursprungsautoren setzen kann?

Danke für die Infos und viele Grüße,

Steffi

0 Kudos
1 Solution

Accepted Solutions
kohlbrecher
Crownpeak employee

Hallo Steffi,

der Autor kann über ein Skript nicht geändert werden, damit hier nicht manipuliert werden kann. Der Autor wird immer auf den aktuell angemeldeten Benutzer gesetzt. Die Funktion setEditor ist in der API Dokumentation auch nicht zu finden.

Grüße

Jan

View solution in original post

0 Kudos
3 Replies
kohlbrecher
Crownpeak employee

Hallo Steffi,

der Autor kann über ein Skript nicht geändert werden, damit hier nicht manipuliert werden kann. Der Autor wird immer auf den aktuell angemeldeten Benutzer gesetzt. Die Funktion setEditor ist in der API Dokumentation auch nicht zu finden.

Grüße

Jan

0 Kudos

Hallo Jan,

danke für Deine Antwort. Mit Schrecken habe ich auch festgestellt, dass es keinen Autor gibt am Objekt. Ich bin bisher immer davon ausgegangen, da in den Strg-P Eigenschaften "letzter Bearbeiter" und "Autor" gesondert aufgelistet wird.

Unsere Lösung sieht dann wohl so aus, dass wir den Bearbeiter der allerersten Version in einem eigenen Feld speichern.

Danke für die Info und viele Grüße,

Steffi

0 Kudos
gockel
Crownpeak employee

Unsere Lösung sieht dann wohl so aus, dass wir den Bearbeiter der allerersten Version in einem eigenen Feld speichern.

Ist das nicht auch ein Fall für die Metadaten !?

0 Kudos