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