Ändern des StoreElement Autors per Skript
Author: krause
Publication Date: 5/23/2013 12:51
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
Tags: autor, editor, save, storeelement
-
Author: kohlbrecher - 5/24/2013 10:46
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
Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.
Kommentare
1 Kommentar