mschomacker
I'm new here

Metadaten-abhängige Veröffentlichung in verschiedene Zielverzeichnisse

Hallo zusammen,

wir möchten freigegebene Inhalte aus FirstSpirit generieren und anhand eines gesetzten Metadatums in verschiedene Zielverzeichnisse auf dem FS-Server veröffentlichen.

Nun gilt es, nachdem alle relevanten PageRef-Objekte identifiziert wurden, deren Abhängigkeiten zu finden und in ihrer Gesamtheit in die jeweiligen Zielverzeichnisse zu kopieren. Leider wissen wir nicht, wie dies am effizientesten zu bewerkstelligen ist.

Für Tipps wären wir sehr dankbar Smiley Happy

Mit den besten Grüßen aus Nürnberg,

Alex Kätscher, Michi Schomacker

DATEV eG

0 Kudos
13 Replies

Hallo zusammen,

nochmals besten Dank für die SEHR rasche Antwort Smiley Happy

Eine Frage: wie lässt sich in diesem Kontext die Abbruchbedingung für die Generierung des Linkziels formulieren?

Nach unserem Verständnis wird in dem gegebenen Beispiel-Code (Linktemplate) nur geprüft, ob generell ein Link erstellt werden soll.

Unser Ziel ist es, einen "toten" Link in den Fällen zu generieren, in denen das Linkziel auf einem anderen Server liegt. Unsere vorgelagerte Anzeige-Anwendung kümmert sich zum Aufrufzeitpunkt um die entsprechende Umleitung auf den richtigen Server...

Viele Grüße aus Nürnberg,

Alex, Michi

0 Kudos

Hallo zusammen,

wie ist denn die Definition von "toter Link"?

Link auf die URL, an der die Seite eigentlich zu finden sein sollte?

Wenn ja, dann benötgit man die Abfrage nicht, da FirstSpirit ohne diese Abfrage genau diesen Link erzeugen würde, da zum Zeitpunkt der Generierung des Links nicht ermittelt werden kann // wird, ob die Zielseite erzeugt wird oder nicht.

Viele Grüsse aus Dortmund,

  Holger Höbbel

0 Kudos

Hallo zusammen,

wie ist denn die Definition von "toter Link"?

Link auf die URL, an der die Seite eigentlich zu finden sein sollte?

Ja, wobei mit Links nicht nur Links auf Seiten, sondern auch auf Dateien gemeint sind.

Noch ein Beispiel:

Wir verlinken von einer Seite (Meta: Server A + Server B) auf eine PDF-Datei (Meta: nur Server B). Unser Wunsch ist es, dass der Link auf der entsprechenden Seite sowohl für Server A als auch für Server B generiert wird. Das Linkziel (hier: PDF) soll jedoch nur für Server B generiert werden. Der Link zeigt auf Server A also ins Leere. Könnte man diesen direkt aufrufen, würde man einen HTTP 404 (Not Found) erhalten.

Hintergrundinfo: eine vorgelagerte Webanwendung fängt den PDF-Datei-Request auf Server A ab und leitet den Anwender auf Server B weiter.

Wie könnten wir dieses Szenario am Besten umsetzen?

Auch hier schon mal vielen Dank für Tipps und Hinweise Smiley Happy

Viele Grüße aus Nürnberg

0 Kudos

Hallo Alex und Michi,

wie bereits ausgeführt, ist es bei Seiten kein Problem. Das funktioniert problemlos, indem man beim Erstellen der Links nichts macht, da dann die hier gewünschten toten Links erstellt werden.

Für Medien ist das aber bedeutend schwieriger, da FirstSpirit verlinkte Medien automatisch mit generiert [was ja auch in normalen Anwendungsszenarien genauso gewünscht ist].

Sobald der entsprechende Link berechnet wird [also ein $CMS_REF(...)$ oder ref(...) aufgelöst wird], wird das Medium erzeugt.

Hier sehe ich nur die Möglichkeit, in einem nachgelagerten Schritt (Skript nach der Generierungsaktion) die nicht benötigten medien aus dem Generieurngsverzeichnis zu löschen und erst danach zu veröffentlichen.

Wenn es zum Beispiel alle PDFs betrifft, wäre dies noch relativ leicht mit einem Dateisystemskript zu lösen (Grundlagen findet man beispielsweise hier {wobei dort Dateien umbenannt werden und nicht gelöscht Smiley Wink}).

Wenn es aber nur bestimmte Medien betrifft, müsste man die entsprechenden Informationen sich holen und dann die entsprechende Medien gezielt löschen. Dazu würde ich dann eine Seite benutzen, die über die Medienverwaltung itiert und für alle betroffenen emdien einen Löschbefehl erzeugt und diese Seite anschließend als Dateisystemskript aufrufen.

Iteration über den gesamten Mediastore im Templatequelltext (mal wieder ungeprüfter Code):

$CMS_SET(mediaClass,class("de.espirit.firstspirit.access.store.mediastore.Media"))$

$CMS_FOR(files,#global.project.userService.store("MEDIASTORE",true).children(mediaClass,true))$

$CMS_IF(<<Prüfung>>)$

del $CMS_REF(files,abs:4)$

$CMS_END_IF$

$CMS_END_FOR$

Viele Grüsse aus Dortmund,

  Holger

0 Kudos