Gespeicherte URL's zurücksetzen (Recht/als Script)
Author: aVogt
Publication Date: 8/19/2016 10:44
Hallo,
an welches Recht ist die Aktion "gescpeicherte URL's zurücksetzen" gekoppelt (siehe Anhang)?
Hintergrund:
Es wird gewünscht, dass bei einigen Medien das Datum der Erstellung im Dateinamen mit angegeben werden soll. Beim Hochladen einer neuen Datei muss dann der Dateiname angepasst werden. Dieser wird aber erst verwendet, wenn die gespeicherte URL zurückgesetzt wurde.
Kann man das zurücksetzen der gespeicherten URL's auch per Script vor der Veröffentlichung durchführen?
Danke für Tipps.
Grüße
Andreas
FS5.2R4
-
Author: thomas_ritter - 8/20/2016 19:16
Hallo Andreas,
soweit ich weiß muss dazu Admin sein.
Kann man das zurücksetzen der gespeicherten URL's auch per Script vor der Veröffentlichung durchführen?
Ja kann man. Hier ein Skript dazu:
import de.espirit.firstspirit.access.*;
import de.espirit.firstspirit.access.store.Store;
import de.espirit.firstspirit.access.store.ContentProducer;
/* GLOBAL VARIABLES */
projectId = context.getProject().getId();
project = connection.getProjectById(projectId);
userService = project.getUserService();
languages = project.getLanguages();
templateSets = project.getTemplateSets();
globalStore = userService.getStore(Store.Type.GLOBALSTORE);
urlProperties = globalStore.getUrlProperties();
/* #### reset all stored urls of the project #### */
boolean resetStoredUrls() {
int counter = 0;
try {
urlProperties.setLock(true);
e = context.getUserService().getStore(Store.Type.SITESTORE, true, false);
amountOfResets = urlProperties.resetStoredUrls(e);
for (int j = 0; j < languages.size(); j++) {
currentLang = languages.get(j);
for (int i = 0; i < templateSets.size(); i++) {
currentSet = templateSets.get(i);
if (e instanceof ContentProducer) {
urlString = e.getStoredUrl(currentLang, currentSet, null);
context.logInfo("Resetting " + urlString);
} else {
urlString = e.getStoredUrl(currentLang, currentSet);
}
if (urlString != null) {
urlProperties.setStoredUrl(null, e, currentLang, currentSet, null);
counter++;
}
}
}
urlProperties.save();
urlProperties.setLock(false);
//set current revision
revision = urlProperties.getRevision();
context.setStartTime(new Date(revision.getCommitOrCreationTime()));
counter = counter + amountOfResets;
context.logInfo(counter + " URLs successfully deleted for revision " + revision.getId());
return true;
} catch (Exception e) {
context.logError("Problem resetting URLs " + e);
return false;
}
}
/* Start programm*/
resetStoredUrls();
Damit das Skript funktioniert, muss unter "Eigenschaften" eine eigene Verbindung aufgebaut werden.
LG Thomas
0 -
Author: aVogt - 8/22/2016 8:58
Hallo Thomas,
Danke.
Aber bei mir ist der URLString immer null. Über die languages und templateSets wird iteriert.
Ich habe Deinen Code als Script vor der Generierung im Auftrag eingefügt. In dem generierungsscript werden für die Pfaderzeugung "Advanced URLs" verwendet.
Grüße
Andreas
0 -
Author: thomas_ritter - 8/22/2016 9:02
Hallo Andreas,
es sind aber definitiv gespeicherte URLs vorhanden?
Zu sehen wenn du in der Struktur auf eine Seite gehst, "Alt + P" drückst und im Tab "Gespeicherte URLs" schaust.
lg thomas
0 -
Author: aVogt - 8/22/2016 9:06
Sind es -> Anlage.
Ich habe Fs5.2 im Einsatz
Grüße
0 -
Author: thomas_ritter - 8/22/2016 9:17
Hm, komisch.
Hast du mal versucht das Skript direkt in FS auszuführen?
Zeile 8 ändern in:
project = context.getProject(); Kommt irgendwann ein Fehler in Zeiel 50, aber die URLs hat er gelöscht.
Ich habe auch FS 5.2 mit der neuster Version im Einsatz und bei mir funktioniert es ohne Probleme.
Hast du auch eine eigene Verbindung aufgebaut mit dem "Admin" User oder einem User der Adminberechtigungen hat?
siehe screenshot
0 -
Author: aVogt - 8/22/2016 9:28
hm, als Script im SiteArchitekt funktioniert es (bei Alt + P ist der Reiter gesp. URL dann leer ) .
Die Verbindung sollte auch passen (mit dem Nutzer vorher hatte ich eine Permissionmeldung bekommen) ...
Werde mal suchen, bestimmt wieder ein kleiner Fehler, den ich grad übersehen habe ..
Danke, werde es (hoffentlich) schon noch hinbekommen.
Grüße
Andreas.
0 -
Author: aVogt - 8/22/2016 10:58
Keine Ahnung, warum es jetzt geht. Eigenartig.
Hast Du es für Medien auch umgesetzt?
Da klappt es bei mir nur, wenn ich mir jedes medium einseln vornehme.
Grüße
Andreas
0 -
Author: thomas_ritter - 8/22/2016 11:11
Für den MediaStore haben wir es nicht umgesetzt, da wir ein DAM-System verwenden, das die Medien direkt ausliefert und nicht über FS.
Ich denke um das auch für die Medien anzupassen musst du das ändern:
e = context.getUserService().getStore(Store.Type.SITESTORE, true, false);(SITESTORE --> MEDIASTORE)
Und dann noch die for-Schleife entsprechend anpassen.
lg thomas
0 -
Author: aVogt - 8/22/2016 11:19
Oki,
für den SiteStore gibt es ja "nur"
setStoredUrl(String url, SiteStoreFolder folder, Language language, TemplateSet templateSet)
Da scheinen auch die Seiten mit zurückgesetzt zu werden
Bei
setStoredUrl(String url, MediaFolder folder, Language language)
werden die Medien in dem Ordner nicht zurückgesetzt. Deswegen gibt es wahrscheinlich auch
setStoredUrl(String url, Media node, Language language, Resolution resolution)Alles Gut. Danke für Deine Hilfe.
Andreas
0 -
Author: plamka - 2/3/2017 8:47
Können die Url's auch gezielt für einen Datensatz bei einer Content Projektion zurück gesetzt werden?
Wenn Ja, welche Methode in der Klasse URLProperties müsste verwendet werden?
Ich hätte eigentlich eine weitere Methode erwartet, bei der das Entity und die targetPage übergeben würden.
Vielen Dank
0 -
Author: mkresse - 8/13/2019 17:02
Wir haben eine ähnliche Anforderung, daher möchte ich die Frage nochmal hochbringen: ist es möglich, die URL eines einzelnen Datensatzes einer Content Projection zurückzusetzen?
0 -
Author: thorsten - 8/7/2020 8:38
Hinsichtlich "wer kann gespeicherte URLs zurücksetzen" gibt es wohl eine Doku-Lücke/Widerspruch bei FS:
Handbuch FirstSpirit SiteArchitect - Kontextmenü „Extras“
"Gespeicherte URLs zurücksetzen: Diese Funktion steht nur zur Verfügung, wenn der Benutzer im Bereich Globale Einstellungen / URL-Einstellungen mindestens über das Recht „Ändern“ verfügt."=> Die Doku an der Stelle ist korrekt und wird so von uns verwendet: Alle User die SEO-/Kurz-URLs bearbeiten dürfen, können auch bei Bedarf URLs zurücksetzen.
Online Dokumentation FirstSpirit - Speichern und Zurücksetzen von URLs
"Zur Ausführung dieser Funktion werden Projekt-Administratorrechte benötigt."
=> nicht (mehr) korrekt
0 -
Author: frank_baus - 1/9/2023 10:34
Hallo,
ich muss das Thema leider noch mal aufmachen. Ich habe auch das Problem, dass es im Site Architekt funktioniert, aber das Script im Server Manager Deployment Auftrag leider keine URLs finden kann.
Das Script läuft durch, ändert aber keine URLs im Server Manager
INFO 09.01.2023 10:33:33.854 (de.espirit.firstspirit.server.scheduler.ScheduleManagerImpl): starting task 'deleteurls' - schedule entry 'Deployment' (id=66989) INFO 09.01.2023 10:33:33.857 (de.espirit.firstspirit.server.authentication.FSUserLoginModule): user 'Admin' successful logged in. INFO 09.01.2023 10:33:33.857 (de.espirit.firstspirit.server.sessionmanagement.SessionManagerImpl): new session (ID=6440153133732105665, user=Admin, userID=1, type=DUMMY) created INFO 09.01.2023 10:33:33.858 (de.espirit.firstspirit.server.scheduler.ScriptTaskExecutor): skript connection created: 6440153133732105665, user=Admin INFO 09.01.2023 10:33:33.858 (de.espirit.firstspirit.server.sessionmanagement.SessionManagerImpl): new session (ID=6190569220941853222, user=Admin, userID=1, type=DUMMY) created INFO 09.01.2023 10:33:33.860 (de.espirit.firstspirit.store.access.AccessStoreBuilder): GLOBALSTORE(false) loaded in 0ms INFO 09.01.2023 10:33:33.862 (de.espirit.firstspirit.store.access.AccessStoreBuilder): SITESTORE(false) loaded in 0ms INFO 09.01.2023 10:33:34.239 (de.espirit.firstspirit.store.access.AccessStoreBuilder): GLOBALSTORE(false) loaded in 0ms INFO 09.01.2023 10:33:34.245 (de.espirit.firstspirit.impl.access.ScriptContextImpl): 0 URLs successfully deleted for revision 452979 INFO 09.01.2023 10:33:34.245 (de.espirit.firstspirit.server.sessionmanagement.SessionManagerImpl): Session terminated (ID=6190569220941853222, user=Admin(dummy)), number of sessions now 18 INFO 09.01.2023 10:33:34.246 (de.espirit.firstspirit.server.sessionmanagement.SessionManagerImpl): Close dummy session (ID=6440153133732105665, user=Admin) INFO 09.01.2023 10:33:34.246 (de.espirit.firstspirit.server.scheduler.ScheduleManagerImpl): finished task 'deleteurls' - schedule entry 'Deployment' (id=66989)Habe Alternativ gedacht, es vielleicht Client-Seitig in einem Workflow laufen zu lassen, befürchte aber dass es da Probleme mit Rechten geben kann.
0 -
Author: th_biedermann - 3/13/2023 6:44
Guten Tag zusammen
Ich habe den Script erfolgreich einbauen können.
Ich hätte da noch Frage dazu.
Besteht die Möglichkeit, dass nicht alles URL's zurückgesetzt werden müssen.
Kann ein Startpunkt in der Struktur angegeben werden, ab wo die URL's zurückgesetzt werden müssen?Wie wenn ich das über das Kontextmenü ausführen würde.
DANKE und Grüsse.
Thomas
0
Vous devez vous connecter pour laisser un commentaire.
Commentaires
14 commentaires