Konfiguration Editor-Service (Schnittstelle myContent CMS zu myContent PRINT)

Inhaltsverzeichnis

Allgemein

PS.Content kann Artikel an das HUP (VL) Printredaktionssystem ausleiten. Der Übergabemechanismus ist bidirektional, ein Abgleich kann also in beide Richtungen erfolgen, auch aus dem Print-System zurück nach PS.Content (PS.C im folgenden).

Mit Stand 09.11.2023 steht der Editor-Service mit Spring 3.1 und Java 17 zur Verfügung.

Generell funktioniert der Abgleich nur dann sinnvoll in beide Richtungen, wenn einer Komponente aus PS.C eine Fläche in Print und umgekehrt zugeordnet werden kann. Bei der Übergabe von PS.C an Print können zwar auch mehrere Komponenten in eine Zielfläche überführt werden, das lässt sich aber auf dem Rückweg nicht mehr automatisch auf einzelne PS.C Komponenten aufteilen. Eine Ausnahme bilden hier "Weiche Auszeichnungen" im Grundtext des Print-Artikels. Diese können wieder in einzelne PS.C Komponenten (zB. Zwischentitel) übersetzt werden.

Zusätzlich Protokoll-Informationen lassen sich durch die Umgebungsvariable MODULEEFWDATABOLOG erreichen:

  • Import in VL-Artikel: efw-Zwischenablageformat einzelner ContentParts in Artikel-Flächen
  • Import in PS.C-Artikel: VL-NITF-Artikel-XML und PS.C-Artikel-Export-XML im Temp-Verzeichnis

Glossar

  • Grundartikel = Ein eigenständiger Print-Artikel, der alle Komponenten aufnimmt, die nicht als eigenständiger Artikel angelegt wurden.
  • Teilartikel = Ein eigenständiger Print-Artikel, der aus einem Teil (einer Cluster-Komponente) eines PS.C Artikels entstanden ist. Dies können zB. sein:
    • Infobox = Eine Clusterkomponente bestehend aus den Komponenten"HAZ", "Titel" und "Text"
    • Kommentar = Eine Clusterkomponente bestehend ausden Komponenten "Bild", "HAZ", "Autor", "Autor Kontakt" und "Text"
    • Zitat = Eine Clusterkomponente bestehend aus den Komponenten"Bild", "Autor" und "Text"
    • Aufmacher-Bild = Eine Clusterkomponente bestehend aus den Komponenten "Bild" und "Text"
    • Asset (Typ: Bild) = Eine Assetkomponente mit dem Inhalt: Bild sowie den üblichen Metadaten Titel, Text und Quelle

Ortsmarken und Autorenkürzel

vgl. CON-5111: Ortsmarke nicht unbedingt am Flächenanfang

  • Ortsmarken werden von PS.Content übernommen, wenn der Konfigurationseintrag "insert-geo-location" gesetzt ist (siehe Beispiel). 
  • Dieser Eintrag kann global für alle konfigurierten Musterartikel gelten oder für einzelne Muster unterschiedlich definiert werden.
  • Der Wert stellt eine Liste dar und jeder Listeneintrag entspricht 
    • entweder einer Zielfläche im Musterartikel (z.B. Text) - d.h. bei Erstbefüllung der entspr. Zielfläche wird die Ortsmarke und das Autorenkürzel vorangestellt 
    • oder einer Kombination aus component-name und item (z.B. text+text) - d.h. bei Erstauswertung der Mappings mit component-name und item wird die Ortsmarke vorangestellt
  • Die Ortsmarke enthält so viele Orte, wie im Artikel-XML als relevant übergeben wurden - siehe PS.C Artikel-XML <SummarizeFirstLocationsCount>
  • Prinzipiell wird das Autorenkürzel an gleicher Stelle wie und nach der Ortsmarke (sofern vorhanden) eingefügt. 
    • Ob das Autorenkürzel tatsächlich eingefügt wird, entscheidet der VL-Konfigurationseintrag PSContent.InsertAuthorCode = "1"; 
  • Die Formatierung der Ortsmarke und des Autorenkürzels wird in 4057.sdv konfiguriert.
  • Reihenfolgeabarbeitung der 4057.sdv bzgl. Ortsmarke, Autorenkürzel und Spitzmarkenkennung:
    • Neben den Werten aus der 4057.sdv gibt es codeseitig Defaults, wenn kein Wert angegeben ist.
      Im Beispiel sind in {...} die Int-Werte der SDV sowie der Default nach | angegeben.
    • Es wird immer Ortsmarke, Autor und Spitzmarken-Ende in dieser Reihenfolge zusammengesetzt.
EFW-Block für Ortsmarke/Autorenkürzel
<!-- Bedeutung in {.. | ..}: SDV-Intkey bzw. Code-Default bei leerem SDV-Wert -->
<HTML>
  <HEAD>
    <STYLE VER=6>
<!-- Styles für Ortsmarke; "Flächenname" entspr. Zielfläche -->
{4057004 | EM.*[Flächenname]*Ortsmarke{250060: 278070;}}
<!-- Styles für Autorenkürzel -->
{4057023 | EM.*[Flächenname]*Autor{}}</STYLE>
  </HEAD>
  <BODY>
    <DIV CLASS=__Z96_Clipboard__>
<!-- Zusammensetzung der Ortsmarke: Anfang-Ortsmarke; Trennung zw. mehreren Orten; Trennzeichen Ende-Ortsmarke -->
{4057005 | <EM CLASS=*[Flächenname]*Ortsmarke>}Ort1{4057012 | /}Ort2{4057010 | . </EM>}{4057006 | &#32;}
<!-- Zusammensetzung des Autorenkürzels: Anfang-Autorenkürzel; Ende-Autorenkürzel -->
{4057024 | <EM CLASS=*[Flächenname]*Autor>}{4057025 |  (}Autorenkürzel{4057026 | )&#32;</EM>}
<!-- Trennzeichen nach Spitzmarke; nur bei vorhandener Ortsmarke -->
{4057013}
    </DIV>
  </BODY>
</HTML>


Beispiel aus der Editorservice YML
de: 
  hup: 
    vl: 
      edt:   
        article: 
          import:
            default-template: PS_Standard_32
            # Ortsmarke/Autorenkürzel: Zielfläche im VL-Artikel ODER Kombination des Komponenten-Mappings "component+item"
            insert-geo-location: ["text+text", "printShortText+text"]


            - 
              template: PS_Umfrage
              #  Ortsmarke/Autorenkürzel: Zielfläche für Musterartikel "PS_Umfrage" bzw. Kombination des Komponenten-Mappings
              insert-geo-location: []
              parameters:
              -
                ...


Ausleitung von Assets und Clustern

Prinzipiell kann konfiguriert werden, Assets als separate Artikel auszuleiten. Ebenso ist eine Liste von Cluster-Namen konfiguriert, deren Inhalt als separater Artikel ausgeleitet wird.

Zu dieser prinzipiellen Konfiguration lassen sich Ausnahmen definieren (print-template und key-value-Paare dynamischer Attribute als Parameter), in denen Assets trotzdem in den Grundartikel eingehen (oder bei anderer Grundkonfiguration eben gerade nicht) - vgl. CON-4323.

Es ist auch möglich, das im PS.C-Artikel eingestellte print-template mit einem dynamischen Attribut als Parameter (z.B. "Kategorie") auf ein anderes print-template "umzumappen". Die oben genannte Definition von Ausnahmen (Assets im Grundartikel obwohl prinzipiell separat) erfolgt dann mit diesem "umgemappten" print-template - gleiches gilt für die Musterwahl im Editor-Service.

Asset-Download im Printsystem

vgl. CON-4991: DnD von Assets auf alternative Adresse umleiten

Beim Export eines PS.C-Artikels mit Asset werden für diesen Contentpart zwei URLs im XML einbettet:

  • die interne Download-URL (direkt auf den Logic-Container)
  • eine externe Download-URL (Proxy über UI-Container). Die Verwendung der externen URL kann wiederum konfiguriert werden: hup.one.server.use-ui-proxy = true (sonst wird die interne URL verwendet)

Über den Editor-Service wird konfiguriert, welche der beiden URLs für den Import im VL verwendet werden soll: de.hup.vl.edt.article.import.use-internal-content-url = 0

Im Printsystem werden Assets vom Editor-Service heruntergeladen - entweder beim Drag&Drop (Pull-Workflow) einer Asset-Komponente oder beim Export von Artikeln mit Assets in einen Printkanal. Die Download-URL wird im XML übergeben (Export) oder ist direkt der vom Browser gelieferte externe Link (Drag&Drop). In verschiedenen Konstellationen (M&S, MSSA, WrapperRed1) gab es Probleme beim Download über die externe URL innerhalb des Printsystems beim Pull-Workflow. Deshalb kann auch die interne URL zum Download benutzt werden.

  • Im Printsystem wird dazu eine alternative URL konfiguriert (PSContent.ServerAddressDownloadAssetReplace), die bei Pull statt PSContent.ServerAddressDownloadAsset zum Download genutzt wird.
  • Für den Export (Push) wird im yml des Editor-Service der Schalter use-internal-content-url auf 1 gesetzt. Die interne URL ist wie die externe im übergebenen Artikel-XML enthalten und wird dann genutzt.
  1. Der Name des entstehenden Print-Bildes ist beim Export (ohne vorherige Vorschau) der Artikelname (für das direkt in den PS.C-Artikel gedropte Bild wird auch der Artikelname vorgeschlagen, kann aber umbenannt werden und bekommt dann noch implizit einen Datumsstempel angehängt). Das Bild landet im Übernahme-Verzeichnis "Agentur" (sofortiges Einspielen mit Aktualisierung) und ein Ausschnitt im dafür vorgesehenen Übernahme-Verzeichnis.
  2. Wird zuerst eine Printvorschau mit dem Bild erzeugt, hat es eine GUUID angehängt, die offenbar extra dafür generiert ist. Das Bild landet dann nicht im Übernahme-Verzeichnis "Agentur", nur ein Ausschnitt wird beim Export wie oben behandelt.
  3. Beim Drop aus der PS.C-Suche im Katalog Verhalten wie bei 1. (Bild bekommt Name des Artikels, in den gedropt wird bzw. der neu angelegt wird).
  4. Drop der Asset-Komponente: Verhalten ebenso wie bei 1. (Bild bekommt Name des Artikels, in den gedropt wird bzw. der neu angelegt wird - dann impliziter Name mit "..._<n>_picture").

PS: Config war bei diesen Tests Redaktion.AutomatischeNamen="1"; und Redaktion.UseImageName4ImageArticle="0";

Pull-Workflow

Zur technischen Realisierung siehe Pull-Workflow. Hier soll es um die prinzipielle Funktion und eine Konfigurations-Übersicht gehen.

Der Pull-Workflow ist bereits ohne Konfiguration möglich. Dann werden am PS.C-Artikel Kanäle und das Attribut <Kanalname>.#usedInChannel gesetzt. Beim Deplatzieren wird das Attribut von "true" auf "false" geändert. Diese Aussagen beziehen sich auf den Hauptartikel. Cluster lassen sich separat per DnD im Printsystem platzieren, beeinflussen aber die Kanäle und Attribute des PS.C-Artikels nicht - auch nicht beim Deplatzieren.

Zusätzliche Konfigurationen verfeinern den Workflow je nach Wunsch:

  • Setzen zusätzlicher Testate am PS.C-Artikel beim Platzieren
  • "Pull" im Print an: Entziehen des Kanals am PS.C-Artikel beim Deplatzieren im Printsystem + in den Papierkorb stellen
  • "Pull" im CMS an: Kein Kanalentzug beim Deplatzieren, Export des Print-Kanals nur bei <Kanalname>.#usedInChannel="true"

Zuordnung von Komponenten aus PS.C zu Flächen im Printsystem, Wahl von Musterartikeln, prinzipielle Kommunikation

Ablauf Übergabe PS.C nach HUP-Print

  • Die Konfiguration erfolgt in der application.yml des Editor-Services (EDT-SVC).
  • Ausgehend von folgenden Parametern wird ein Musterartikel ("template") gewählt:
    • print-template: (optional) Testat "Artikelmuster" oder Name der Cluster-Komponente 
    • chars: (1-n) Grundtextmenge (Zeichenanzahl)
    • publication: (optional) Publikation von Exportkanal übermittelt
  • Vorgehensweise zum Auffinden des passenden Musterartikels
    1.  Ist eine Publikation bekannt, werden alle templates gesucht, die passend zu publication und print-template sind
    2. Bei Treffermenge = 0: Ist eine Publikation bekannt, werden alle templates gesucht, die passend zu publication sind und KEIN print-template haben
    3. Bei Treffermenge = 0: Es werden alle templates gesucht, die passend zu print-template sind und KEINE publication haben
    4. Bei Treffermenge = 0; Es werden alle templates gesucht, die KEIN print-template oder print-template=standard und KEINE publication haben 


  • Ist diese Treffermenge > 1, wird das template ermittelt, welches am besten zur Zeichenanzahl (chars) passt.
  • Ist die Treffermenge = 0, wird das default-template verwendet
  • Mit dem template wird das Flächen-Mapping (mappings) ermittelt.

Beispiel
templates:
 -
   chars: 3000
   template: 4-44-mit Bild
 -
   chars: 2000
   template: 3-44-mit Bild
 - 
   chars: 1000
   template: 2-24-mit Bild
 -
   chars: 1000
   print-template: comment
   template: Kommentar_2sp
 -
   chars: 1000
   print-template: comment
   publication: OWZ
   template: OWZ_Kommentar_2sp
 -
   chars: 500
   template: 1-18-mit Bild
 -
   chars: 500
   print-template: comment
   template: Kommentar_1sp
 -
   chars: 500
   print-template: comment
   publication: OWZ
   template: OWZ_Kommentar_1sp
 -
   print-template: clusterInfobox
   template: Infobox_1sp
  • Ist der Artikel in HUP-Print schon vorhanden (es hat zuvor bereits eine Übergabe stattgefunden)
    • wird dieser geöffnet und geleert
  • Sonst wird anhand dieses "Musterartikels" ein neuer Artikel angelegt. 
    • Am Artikel wird in einem dynamischen Attribut gespeichert, aus welchem PS.C Artikel er entstanden ist.
    • Der evtl. vorhandene Grundtext wird entfernt.
  • Je Musterartikel wird im Bereich "mappings" definiert, welcher Teil einer möglicherweise vorkommenden PS.C Artikelkomponente in welche Fläche des HUP-Print Artikels überführt werden soll. 
    • Die Reihenfolge der Komponenten im PS.C Artikel gibt die Abarbeitungsreihenfolge vor.
    • In der "Umsetzungstabelle" wird jedem Bestandteil ("item") einer PS.C Artikelkomponente eine Zielfäche ("destination") und optional eine Zielauszeichnung ("style"), einen Auszeichnung für den ersten Absatz ("style-of-first-paragraph") sowie ein Einfügemodus ("mode") zugeordnet.
      • Ist keine Zielfläche konfiguriert, wird die Komponente nicht übertragen.
      • Ist keine Auszeichnung vorhanden, wird das normale Absatz- und Zeichenformat der Zielfläche verwendet.
      • Ist eine Auszeichnung ("style") angegeben, wird der Text mit dieser "Weichen Auszeichnung" eingefügt.
      • Als Einfüge-/ Absatzmodus stehen zur Verfügung:
        • "replace" - Ersetzt den bisherigen Inhalt
        • "add" - Fügt den neuen Inhalt an in den vorhandenen Absatz ein
        • "newline" - Fügt den neuen Inhalt in einem neuen Absatz an
        • "openpara" - Schließt einen vorhandenen Absatz und öffnet einen neuen, der nicht wieder geschlossen wird. (Fettanlauf zB.)
        • "closepara" - Schließt einen Absatzattributierung ab
        • "inline" - Fügt einen Text (i.A. mit einem Style), ohne dass ein Absatz eingefügt wird (z.B. Fett- oder Kursiv-Auszeichnung)
      • Ist eine Auszeichnung für den ersten Absatz ("style-of-first-paragraph") konfiguriert, wird dieser vor den einzufügenden Text gestellt, wenn:
        • der Text in der Zielfläche zuvor leer war
        • der vorherige Contentpart für die Zielfläche einen anderen Namen hatte 
          Name: Component-Name + "." + Item-Name [ + #Component-Nummer]
        • vorher kein Inline-Paragraph in der Zielfläche verwendet wurde
      • Als Destination kann auch eine Freifläche oder Überlagerung adressiert werden. In diesem Falle ist der Layername dem Flächennamen voran zu stellen zB: "Freifläche1$Bild"
      • Schläft eine adressierte Zielfläche, wird diese aufgeweckt, sobald ein Inhalt für sie vorhanden ist. Die Vaterfläche (oder ggfs. der Layer bei Freiflächen) wird dabei ebenfalls aufgeweckt. 
      • Bilder (Assets) werden der Reihe nach in vorhandene und evtl. schlafende Bildflächen eingefügt. 
        • Der Layer/Vater einer Bildfläche muss nicht zwingend alle weiteren von der Bild-Komponente referenzierten Flächen wie Text und Quelle enthalten. Sie können über "destination: ..." adressiert werden.
        • Ist am VLExporter in der Logik-Server Konfiguration der Konfigschalter ".parameters:standAloneArticleFromAsset: clusterHeadPicture" gesetzt, werden alle Bild-Assets als Bildartikel mit dem Template clusterHeadPicture ausgeleitet.
          Es gibt dann KEINE im Print-Artikel eingebetteten Bilder mehr.
        • Image-Parameter (optional):
          • "min-height" - Minimale Zeilenhöhe des Bildes, die die Freifäche für Übersatzbeseitigung einnehmen darf
          • "max-height" - Maximale Zeilenhöhe des Bildes, die die Freifläche für Untersatzbeseitigung einnehmen darf
          • "optional" - Optionales Bild, welches versteckt werden darf (Freifläche schlafend), wenn ein Übersatz nicht anders beseitigt werden kann
      • EFW-Parameter (optional):
        • "start" - EFW-Text am Anfang des einzufügenden Textes - z.B. "-&#32;"
        • "end" - EFW-Text am Ende des einzufügenden Textes - z.B. "<HFILL/>"
        • "start-if-mode-before" - Bei Einfügemodus "add" und Absatzmodus des zuvor in die Fläche eingefügten Textes, bei dem der Start-EFW-Text eingefügt werden darf - z.B. "add"
        • "end-if-mode-before" - Bei Einfügemodus "add" und Absatzmodus des zuvor in die Fläche eingefügten Textes, bei dem der End-EFW-Text eingefügt werden darf - z.B. "newline"
        • "pre-format: true" - Formatieren des Artikels vor dem Einfügen des Textes, wenn die Zielfläche aufgeweckt werden soll
  • Je Musterartikel kann ein Bereich "actions" definiert werden, die seitens HUP-Print ausgelöst werden können, um Inhalte aus PS.Content zu übernehmen
    • Eine Aktion hat einen eindeutigen Namen
    • Eine Aktion hat eine Bezeichnung - z.B. zur Anzeige im Kontextmenü
    • Eine Aktion hat einen Bereich "mappings" definiert - siehe oben


Beispiel
mappings:
- 
  # gleiche Konfig für mehrere Musterartikel
  template: 4-44-mit Bild|3-44-mit Bild|2-24-mit Bild|1-18-mit Bild|Kommentar_1sp|Kommentar_2sp
  actions:
    - name: short-headline
      label: Kurzüberschrift als UNZ
      parameters:
      - 
        component: headline
        item: short
        destination: UNZ
        mode: replace
    - name: teaser
      label: Teaser als Vorspann
      parameters:
      -
        component: teaser
        item: text
        destination: Vorspann
        mode: add 
    - name: qr-code
      label: QR-Code einfügen
      parameters:
      - 
        component: qrcode
        component-no: 0
        item: text
        destination: Service$Text
        mode: replace
        efw-parameters:
          start: "Scannen Sie den QR-Code mit ihrem Handy oder geben Sie den Link in den Browser ein: "
          end:                 
      - 
        component: qrcode
        component-no: 0
        item: assetID
        destination: Service$Bild
        mode: replace     
  parameters:
  - 
    # bei einer headline Komponente wird zunächst der normale Text versucht zu übernehmen, erzeugt dieser Übersatz, wird automatisch die short-Form der Komponente benutzt, sofern vorhanden
	component: headline
	item: text
	destination: Titel
	mode: replace
  - 
	component: headline
	item: short
	destination: Titel
	mode: replace
  - 
	component: printHeadline
	item: text
	destination: Titel
	mode: replace               - 
  -
    component: overline
    component-no: 0
    item: text
    destination: DAZ
    mode: replace
    efw-parameters:
      pre-format: true
  - 
	component: text
	item: text
	destination: Text
	mode: newline
    style-of-first-paragraph: Initial3Z
  - 
	component: subtitle
	item: text
	destination: Text
	mode: newline
	style: Zwischenzeile
  - 
	component: leader
	item: text
	destination: Vorspann
	mode: replace
  - 
	component: picture
	item: text
	destination: Bild1$Text
	mode: replace
  - 
	component: picture
	item: source
	destination: Bild1$Text
	mode: add
  - 
	component: picture
	item: assetID
	destination: Bild1$Bild
	mode: replace
    image-parameters:
      min-height: 10
      max-height: 30
      optional: false
  - 

Übergabe von Verwaltungsdaten

Mit speziellen Mappings können die PS.C Artikel-Verwaltungsdaten im Print-Artikel als Text übernommen werden.

Über das Schlüsselwort "#article" für component wird festgelegt, dass ein Verwaltungsdatum verwendet werden soll.

Über item wird der Pfad zum Verwaltungsdatum beschrieben: z.B. Author = Autorname; Tags$Tag$Name = ein Stichwort

Bei Listen (z.B. Tags, Locations, Departments, ...) wird über component-no das konkrete Element aus der Liste adressiert: z.B. 0 = erstes Element.

Auch für Verwaltungsdaten gelten die schon oben erwähnten Einfüge- und Absatzmodi sowie die efw-Parameter.

    ###### Artikelverwaltungsdaten Mapping #####
    - # das erste Stichwort übernehmen
      component: "#article"
      component-no: 0
      item: Tags$Tag$Name
      destination: Vorspann
      mode: add
    - # das zweite Stichwort übernehmen
      component: "#article"
      component-no: 1
      item: Tags$Tag$Name
      destination: Vorspann
      mode: add
      efw-parameters:
        start: " / "
        #end: " "
    - # das erste Ressort übernehmen
      component: "#article"
      component-no: 0
      item: Departments$Department$Name
      destination: Vorspann
      mode: newline
    - # Autor übernehmen
      component: "#article"
      component-no: 0
      item: Author
      destination: Vorspann
      mode: newline
    #############


Spezialfall Aufzählungskomponenten

  • Für eine Aufzählungskomponente (Enumeration) seht folgendes Mapping zur Verfügung:

mappings:
-
  template: [Musterartikel-Namen]
  parameters:
  -
    component: enumeration
    item: [normal | numbered | alphabetic]
    destination: [Zielfäche des Artikels]
    mode: [add | replace | newline | openpara | closepara | inline]
    style: [Optional. Auszeichnungsnamen]
    efw-parameters:
      start: [Optional. EFW-Text am Anfang des einzufügenden Textes]
      start-if-mode-before: [Optional. Absatzmodus des zuvor in die Zielfläche eingefügten Text, bei dem der Start-EFW-Text eingefügt werden darf]
      end: [Optional. EFW-Text am Ende des einzufügenden Textes]
      end-if-mode-before: [Optional. Absatzmodus des zuvor in die Zielfläche eingefügten Text, bei dem der End-EFW-Text eingefügt werden darf]
      after-number: [Optional. EFW-Text nach einer Nummerierung - nur bei numbered und alphabetic]
  • Die EFW-Parameter "start" und "end" (sowie "start-if-mode-before" und "end-if-mode-before") für das Einfügen von Textbestandteilen am jeweiligen Textanfang und -ende stehen allen Mappings zur Verfügung. Damit lassen sich für (Grund)-Texte, Überschriften und Bildtexte zusätzliche Textteile "einmischen".
  • Für das Mapping der Enumeration-Komponente stehen drei verschiedene Typen zur Verfügung (vgl. Mapping-Parameter "item"):
  1. Normal: Die aufgezählten Texte werden in der angegebenen Reihenfolge eingefügt.
  2. Numbered (nummeriert): Die aufgezählten Texte werden in der angegebenen Reihenfolge mit einer Nummerierung am Anfang eingefügt.
  3. Alphabetic (alphabetisch): Die aufgezählten Texte werden in der angegebenen Reihenfolge mit einem Kleinbuchstaben am Anfang ausgegeben.
  • Ein "Rückwarts-Mapping" von VL nach PS.Content ist nicht vorhanden.

Beispiel
mappings:
-
  parameters:
  -
    component: enumeration
    item: numbered
    destination: Text
    mode: newline
    style: ABS_ERGEBNISSE
    efw-parameters:
      start: "<TAB/>0"
      start-if-mode-before: add
      after-number: ".<TAB/>"
      end: "..."
      end-if-mode-before: add
  -
    component: enumeration
    item: normal
    destination: Text
    mode: newline
    style: ABS_ERGEBNISSE
    efw-parameters:
      start: "&#183;<QUAD TYPE=4/>"
  -
    component: enumeration
	item: alphabetic
    destination: Text
    mode: newline
    style: ABS_ERGEBNISSE
    efw-parameters:
      start: "&#8226;<QUAD TYPE=1/>"    

Spezialfall Cluster-Komponenten

  • Jede Cluster-Komponente, die application.yml des Logik-Servers im Konfigurationseintrag "createStandAloneArticles" (als Parameters des "exportPoint" zum VL-System) aufgeführt ist, wird als Teilartikel bei der Ausleitung an HUP-Print behandelt. 
    • Ihr Name geht als "printTemplate" in die Suche nach einem Musterartikel ein.
    • Die in ihr enthaltenen Komponenten entsprechen in der Konfiguration des EDT-SVC einer ganz normalen Artikelkomponente. (Kein Präfix)
  • Alle Cluster-Komponenten, die nicht im Konfigurationseintrag "createStandAloneArticles" aufgeführt sind, werden als Bestandteil des Grundartikels verarbeitet. 
    • Ihr Name wird mit dem Namen der Cluster-Komponente als Präfix erweitert. (zB. clusterInfobox.headline)

Textersetzungen von PS.Content nach HUP-Print

vgl. auch HUP OP #7929657: Editor-Service: Textzeichen-Ersetzung unvollständig

Für jeden Exportkanal können Textersetzungen definiert werden, die in der Editorservice-Schnittstelle ausgewertet werden. Das sind i.A. Zeichen, die im Printsystem anders aussehen (z.B. Anführungszeichen etc.) oder Steuerzeichen sind (z.B. Tabulator, Absatzmarken etc.).

Folgende Zeichen können z.B. definiert und ersetzt werden (TAGs funktionieren, da sie erst nach Maskierung der < und > eingefügt werden):

PS.C ZeichenErsetzungszeichenHUP-Print Entsprechung
HR oder <HR/>
Absatzlinie
HFILL oder <HFILL/>
Zeilenspaltung
<HFILLLINE/>
Auffüllline
TAB oder <TAB/>
Tabulator
QUAD1 oder <QUAD TYPE=1/>
Vollgeviert
QUAD2 oder <QUAD TYPE=2/>
Halbgeviert
QUAD3 oder <QUAD TYPE=3/>
Drittelgeviert
QUAD4 oder <QUAD TYPE=4/>
Viertelgeviert
QUAD8 oder <QUAD TYPE=8/>
Achtelgeviert
ǁ
QUAD9 oder <QUAD TYPE=9/>
Zifferngeviert
<WBR/>
Trennvorgabe

Bindestrich

<BR/>
Zeilenwechsel (Ausrichtung Umlaufzeile)
<BR ALIGN=END/>
Zeilenwechsel (Ausrichtung Absatzendezeile)

NSP
Geschütztes Leerzeichen (&#160;)

SPACE
Leerzeichen (&#32;)
[Zeichen]
<MASK_Uxxxx>
Zeichenersetzung zu einem Unicodezeichen xxxx (Hex-Schreibweise), welches erst im fertigen EFW-Zwischenablageformat umgewandelt wird
Ř<ACC TYPE=caron>RR mit fliegendem Akzent (Caron bzw. Hatschek)

Die bisher aufgeführten Zeilen zu einfachen und doppelten typografischen Anführungszeichen (auch jeweils die französische Variante) haben keine Wirkung und können deshalb auch weggelassen werden:

« oder »\"Französische in Editor-spezifische Anführungszeichen umwandeln
„ oder “\"Typographische in Editor-spezifische Anführungszeichen umwandeln

Alles, was in PS.C nach Anführungszeichen aussieht (ordinär oder typographisch, einfach oder doppelt), wird im Editorservice hart codiert (!) in die konfigurierten Zeichen umgewandelt (4057.sdv). Damit stimmt auch die Tief- und Hoch-Variante, selbst wenn sie in PS.C falsch wäre.

Bei einfachen Anführungszeichen ist das im Editor oft bewusst nicht auf einfache typografische sondern immer auf Apostroph konfiguriert (einfache typografische werden bei Bedarf als Sonderzeichen eingefügt). Um dennoch aus PS.C heraus einfache typografische Anführungszeichen ins Printsystem einzufügen, wurde die Möglichkeit zur Maskierung der betreffenden Zeichen mit <MASK_Uxxxx> geschaffen, damit sie am Automatismus vorbei geleitet werden können.


Unicode-Zeichen aus PS.Content werden mit der entspr. Codierung &#[Codenummer]; nach HUP-Print übernommen.

Die Textersetzungen gelten auch in umgekehrte Richtung.

Beispiel für Textersetzung nach HUP-Print
export-steps:
-
  export-points:
  -
    name: Print
    parameters:
      text-replacements: "⎵=<HR/>,↔=HFILL,→=TAB,█=QUAD1,▌=QUAD2,▎=QUAD4,▍=QUAD3,▏=QUAD8,ǁ=QUAD9,‑=<WBR>,‒=–,┐=<BR/>,┘=<BR ALIGN=END/>,‘=<MASK_U2039>,‹=<MASK_U2039>,›=<MASK_U203A>,‚=<MASK_U203A>,Ř=<ACC TYPE=caron>R"

PS: Bitte im Codebeispiel die Unterschiede zwischen "Komma" und dem einfachen typografischen Anführungszeichen unten sowie "größer/kleiner als" und den einfachen französischen Anführungszeichen beachten.

Übergabe HUP-Print nach PS.C

  • Ist der Artikel bereits vorhanden, muss der Abgleich durch Anklicken des Eintrags "Externe Änderungen importieren" ausgelöst werden.
  • Wird der PS.C Artikel aus HUP Print heraus neu angelegt, wird initial ein Abgleich ausgeführt.
  • Über den EDT-SVC wird aus dem Print-Artikel (und seinen Teilartikeln) ein temporärer PS.C Artikel erstellt. Dies geschieht schon auf VL-Seite in ModuleEfwDataBO.dll. (vgl auch CON-5822 - Abrufen der Vorgangsdetails... STATUS )
    • Dieser Artikel wird durch umgekehrtes Auswerten der "PS.C nach HUP Print" Konfiguration des EDT-SVC erstellt (vgl. oben). Der ggf. beim ursprünglichen Export des Artikels nach Print verwendete Musterartikel wird mit übergeben, um den richtigen "Abschnitt" des Mappings zu finden.
    • Es werden alle nicht schlafenden Print-Flächen ausgewertet und in entsprechende Komponenten übersetzt.
    • Beim "ReverseMapping" wird nach einem Eintrag gesucht, dessen "destination" der gerade behandelten Editor-Fläche entspricht und der auch den gleichen "style" hat (bei Text-Abschnitten ohne weiche Auszeichnung nach einem Eintrag ohne "style").
    • ist in der Konfiguration des EDT-SVC ein Eintrag mit "reverse-default: true" gekennzeichnet, wird der entsprechende Text bevorzugt als diese Komponente rückübersetzt (für den Fall, dass es mehrere Mappings gibt, die auf die gleiche Kombination destination/style führen) - sonst wird bei Mehrdeutigkeit in der Rückübersetzung immer die erste passende Komponente verwendet.
    • Kann für die Fläche keine Zielkomponente (ohne "style") ermittelt werden, wird der gesamte Text nicht übernommen - wird nur für einen Abschnitt mit weicher Auszeichnung kein Ziel gefunden, wird der Text wie ohne Auszeichnung übernommen.
    • individuelle Ausnahmen zum globalen "ignore-em-classes" für die Rückübernahme lassen sich mit einem Trick festlegen: Der nicht zu übernehmende Text bekommt im Mapping eine mit "reverse-default: true" gekennzeichnete "Dummy"-Komponente (die in der UI nicht existiert) und landet damit nicht im PS.C-Artikel.
  • Handelt es sich um einen neuen PS.C Artikel, werden alle bekannten Komponenten 1:1 übernommen. Je Bildfläche wird ein Asset angelegt.
  • Handelt es sich um einen bereits vorhandenen PS.C Artikel, werden die Komponenten des temporären Artikels mit den vorhandenen abgeglichen:
    • Der Abgleich kann (nur für den Hauptartikel, nicht für Cluster-Komponenten) in der application.yml des UI-Servers konfiguriert werden:
      • Konfiguration unter hup.one.content.article.importSources; z.B.

                  -
                    name: 'VL'
                    parameters:
                      delete: 
                        - text
                        - subtitle
                      ignore:
                        - leader
                        - teaser
                        - audio
                        - picture
                        - video
                      replace:
                        headline: printHeadline
                        subheadline: subtitle
                      before:
                        - topline:headline
                      after:
                        - subtitle:text
                        - text:subtitle|text


          • Der Eintrag "delete" definiert, welche Komponenten des PS.C-Artikels beim Abgleich entfernt (nicht übernommen) werden sollen.
            z.B. "text", "subtitle"
          • Der Eintrag "replace" definiert, welche Komponenten aus dem Print Artikel in eine neue / andere Komponente des PS.C Artikels übertragen werden sollen.
            z.B.: "headline" → "printHeadline"
          • Der Eintrag "ignore" definiert, welche Komponenten aus dem PS.C-Artikel unverändert übernommen werden sollen.
            z.B.: "leader"
          • Der Eintrag "before" definiert, vor welcher ersten Position im PS.C-Artikel die neuen Komponenten eingefügt werden sollen. vgl. CON-3076 bzw. DNT-150
            z.B.: "topline" → "headline" (Dachzeile wird vor der ersten Headline-Komponente eingefügt)
          • Der Eintrag "after" definiert, nach welcher letzten Position im PS.C-Artikel die neuen Komponenten eingefügt werden sollen. vgl. CON-3076 bzw. DNT-150
            z.B.: "subtitle" → "text" (Zwischentitel wird nach der letzten Text-Komponente eingefügt)
            z.B.: "text" → "subtitle | text" (Text wird nach der letzten Zwischentitel-Text-Kombination eingefügt)
      • Der Eintrag "name" muss mit dem in der Konfiguration des Logik-Servers hinterlegten übereinstimmen (hup.one.content.article.import.externalSources)

                  -
                    name: 'VL'
                    moduleClassname: de.hup.one.content.logic.imports.article.ArticleVLImportModule
                    parameters:
                      # url: http://wrapperred14:8080/service/edt/article/xml
                      url: http://localhost:8180/service/edt/article/xml
                      exportAttrib: vlExport.articles

ACHTUNG: Asset-Komponenten werden bei wiederhohlten Rückübermittlung aus Print ignoriert. Es wird weder das Asset noch der Bildtext abgeglichen! Auch die Position des Assets in Relation zum Grundtext geht verloren. Das wird ggfs. später korrigiert.

Textersetzungen von HUP-Print nach PS.Content

An der Importschnittstelle für HUP-Print (VL) in PS.Content können Textersetzungen definiert werden.

Dabei handelt es sich um die gleichen Ersetzungsmöglichkeiten wie in umgekehrter Richtung - siehe Tabelle Textersetzungen

Beispiel für Textersetzung von Print nach PS.Content
import:
  external-sources:
  -
    name: 'VL'
    parameters:
      text-replacements: "<HR/>=⎵,<HFILLLINE/>=‗,<HFILL/>=↔,<TAB/>=→,<QUAD TYPE=1/>=█,<QUAD TYPE=2/>=▌,<QUAD TYPE=4/>=▎,<QUAD TYPE=3/>=▍,<QUAD TYPE=8/>=▏,<QUAD TYPE=9/>=ǁ,<WBR/>=‑,‒=–,<BR/>=┐,<BR ALIGN=END/>=┘"

Mehrfache Print-Artikel zu einem PS.C-Artikel (publikationsspezifische Ausleitungskanäle)

In Kanal exportieren

vgl.  CON-3733 - Abrufen der Vorgangsdetails... STATUS und  CON-5563 - Abrufen der Vorgangsdetails... STATUS

Es gibt 2 unterschiedliche Verhaltensweisen beim Export ins Printsystem für die 2 unterschiedlichen Start-Szenarien:

a) Artikel in PS.C angelegt

b) Artikel im Printsystem angelegt


Im Fall a) wird jeder neue Kanal entsprechend dem gewählten Testat "Artikelmuster" aus dem zugeordneten Musterartikel neu erzeugt.

Im Fall b) bildet der existierende Print-Artikel die Grundlage bei jedem für die einzelnen Exportkanäle neu angelegten Artikel. Der initiale Print-Artikel gilt beim Export dann als der erste konfigurierte Kanal (im Münchner Fall "WOBL"). Hier ist eine Verfeinerung des Algorithmus denkbar (Kanal je nach Publikation des initialen Print-Artikels) - wegen der bevorstehenden Änderungen im Export-Prozedere (Export pro Ausgabe statt pro Publikation) wird das aber momentan nicht forciert.


Für beide Fälle gemeinsam gilt: Wurde in einen Kanal bereits exportiert, wird für weitere Exporte immer der existierende Artikel als Grundlage herangezogen. Ist dieser Artikel unplatziert, wird er direkt geändert. Für platzierte Artikel wird eine neue Version angelegt, die dann auf der Seite entweder übernommen („Aktuelle Version platzieren“) oder verworfen werden muss („Platzierte Version behalten“). Für das Erscheinungsbild des „erneuerten“ Artikels spielt es keine Rolle, ob er auf einer Seite platziert ist oder nicht.

Die Zuordnung der PS.C-Komponenten zu den Text- und Bildflächen im Print-System erfolgt jetzt immer entsprechend dem aktuell eingestellten Testat "Artikelmuster" (früher galt das nur für den ersten Export in einen Kanal - bei Folge-Exporten in den gleichen Kanal wurde die Zuordnung vom Zeitpunkt der Anlage des Print-Artikels genutzt und das aktuell eingestellte Testat "Artikelmuster" nicht mehr berücksichtigt).

Kanal zurückziehen

Beim Zurückziehen eines Kanals erscheint im Normalfall die Frage, ob ein bereits in diesem Kanal existierender Printartikel gelöscht werden soll. Dieses Löschen/Zurückziehen findet dann erst beim Speichern des Artikels statt. Ist der Artikel unplatziert, wird er sofort gelöscht. Bei platziertem Artikel werden nur evtl. vorhandene neuere unplatzierte Versionen gelöscht (auch mehrere) und der platzierte wird zur aktuellen Version mit der Beschreibung "KANAL GELÖSCHT!". Die Exportattribute in PS.C werden ebenso gelöscht.

Bei erneuter Ausleitung wird der ggf. noch existierende Printartikel mit "KANAL GELÖSCHT!" wieder verknüpft, wenn er bestimmte Voraussetzungen erfüllt:

  • Beschreibung enthält "KANAL GELÖSCHT!"
  • Name gleich
  • Publikation und Produktionsgruppe entsprechen den Einstellungen am Kanal
  • PS.C-ID des Artikels entspricht dem PS.C-Artikel

Ansonsten wird ein neuer Artikel für diesen Kanal ausgeleitet. Um also trotz platziertem Altartikel (meist auch nur auf alter Seitenversion) nach Kanalrückzug bewusst einen neuen Artikel zu erzeugen, muss z.B. das Ausrufezeichen in der Beschreibung "KANAL GELÖSCHT!" entfernt werden - ansonsten wird nur eine neue Version von diesem alten Artikel mit dessen Layout erzeugt.

vgl. HUP OP #7969695: CON-3896: Artikel in VL löschen, wenn der Kanal in PS.C entfernt wird:

  • Über den Editor-Service kann nun auch ein Lösch-Auftrag für einen VL-Artikel ausgelöst werden.
    Dabei werden alle beteiligten (Cluster-)Artikel für den entfernten Exportkanal mit Lock geladen. Sofern die Artikel nicht platziert sind, werden sie gelöscht. Andernfalls wird in der Beschreibung "KANAL GELÖSCHT!" eingetragen (der Text lässt sich über TVLRedaktion.csv - Key 71956 auch anpassen).
  • Wird ein Artikel über den Editor-Service gelöscht, der aber noch platziert ist, wird die Beschreibung auf "KANAL GELÖSCHT!" gesetzt.
    Beim erneuten Export werden bei Neuanlage des Artikels (in PS.C ist keine Artikel-UUID mehr bekannt) die Verwaltungsdaten des neuen Artikels (Name, Beschreibung = KANAL GELÖSCHT!, Publikation und Produktionsgruppe) mit dem Variantenverzeichnis der PS.C-Artikelvarianten verglichen. Kommt es zu einer Übereinstimmung, wird dieser Artikel aktualisiert und kein neuer Artikel erzeugt.

    Beim Löschen eines Artikels mit Versionslinie wird das Akt-Versionskennzeichen auf die vorherige Version (die höchste platzierte) "verschoben". Ist das wg. Lock-Problem nicht möglich, wird eine Benutzerbenachrichtigung an das Logon versandt und das Löschen wiederholt.

Zusammengefasster Print-Export

vgl. CON-4274

Beim Import der Contentparts aus einem PS.Content Artikel in einen VL-Artikel wird versucht, Zielflächen-weise die EFW-Texte zusammenzuführen, um Formatierungsprobleme zu vermeiden. Dabei wird abhängig vom gewünschten Absatz-Modus (und Einfüge-Modus) folgendes Schema durchlaufen:

Ablaufdiagramm für das Zusammenführen von Efw-Text für eine Fläche

Sonderfälle:

  • Ortsmarken müssen entspr. Absatz-attributiert werden, damit der erste Absatz ohne Einzug beginnt. Das funktioniert sowohl beim Einfügen mit Absatz-Modus NEWPARA, OPENPARAM also auch ADD.
  • Beim Zusammenführen von EFW-Texten wird abh. vom vorherigen Absatzmodus nur dann ein Leerzeichen eingefügt, wenn der EFW-Text nicht mit <P>, </P> oder </PATTRIB> endet.
  • Vor dem Einfügen des zusammengeführten EFW-Text in den Editor werden offene Absätze (Modus ADD bzw. OPENPARA) geschlossen.

Inline-Modus

vgl. CON-4848 und Ergänzung zu CON-4274

Für das Komponenten-Mapping von Contenpart- zu Artikelflächen kann der neue Modus inline verwendet werden.

Funktionalität bzgl. Quell-Texte zu einer Zielfläche

  • Ein Text mit dem Modus = inline wird an den vorangegangenen ggf. mit vorangestelltem Leerzeichen ohne Absatz angefügt, wenn dieser per inline-, add- oder openpara-Modus eingefügt wurde.
  • Ein Text mit dem Modus = inline wird mit neuem Absatz <P> angefügt, wenn der vorangestellte Text mit closeparam eingefügt wurde.
  • Ein Text mit dem Modus = inline wird an den vorangegangenen ohne Absatz angefügt, wenn dieser per newline-Modus eingefügt wurde und der einzufügenden Text keinen Style hat.
  • Ein Text mit dem Modus = newline wird an den vorangegangene ohne Absatz angefügt, wenn dieser per inline-Modus eingefügt wurde.
  • Ein Text mit dem Modus = openparam wird an den vorangegangenen mit Absatz eingefügt, wenn dieser per inline-Modus eingefügt wurde.

Besonderheiten:

  • Eine Ortsmarke oder ein Autorenkürzel wird für eine inline-Modus-Fläche nicht eingefügt (analog zum openparam-Modus).
  • Ein gestylter Text nach einem inline-Modus-Text wird immer in einem neuen Absatz eingefügt (z.B. Zwischenzeile nach einer Fett-Auszeichnung).