aVogt
Occasional Collector

Gespeicherte URL's zurücksetzen (Recht/als Script)

Jump to solution

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

Labels (1)
1 Solution

Accepted Solutions
thomas_ritter
I'm new here

Re: Gespeicherte URL's zurücksetzen (Recht/als Script)

Jump to solution

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

View solution in original post

12 Replies
thomas_ritter
I'm new here

Re: Gespeicherte URL's zurücksetzen (Recht/als Script)

Jump to solution

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

aVogt
Occasional Collector

Re: Gespeicherte URL's zurücksetzen (Recht/als Script)

Jump to solution

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 Kudos
thomas_ritter
I'm new here

Re: Gespeicherte URL's zurücksetzen (Recht/als Script)

Jump to solution

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 Kudos
aVogt
Occasional Collector

Re: Gespeicherte URL's zurücksetzen (Recht/als Script)

Jump to solution

Sind es -> Anlage.

Ich habe Fs5.2 im Einsatz

Grüße

0 Kudos
thomas_ritter
I'm new here

Re: Gespeicherte URL's zurücksetzen (Recht/als Script)

Jump to solution

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

reseturls.jpg

0 Kudos
aVogt
Occasional Collector

Re: Gespeicherte URL's zurücksetzen (Recht/als Script)

Jump to solution

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 Kudos
aVogt
Occasional Collector

Re: Gespeicherte URL's zurücksetzen (Recht/als Script)

Jump to solution

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 Kudos
thomas_ritter
I'm new here

Re: Gespeicherte URL's zurücksetzen (Recht/als Script)

Jump to solution

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 Kudos
aVogt
Occasional Collector

Re: Gespeicherte URL's zurücksetzen (Recht/als Script)

Jump to solution

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 Kudos