Rubriken dienen im imperia Content Management System als Container für Dokumente. Der Aufbau erfolgt als Baumstruktur und spiegelt in den meisten Fällen die Sitemap des Webauftritts wieder.

Eine Webseite verändert sich im Lauf der Zeit und somit ist auch eine vormals definierte Struktur nicht in Stein gemeißelt…

 

Rubriken verschieben via imperia Oberfläche

imperia CMS bietet zur Umstrukturierung von Rubriken eine Administrationsoberfläche, über die einzelne Knoten oder auch Teilbäume verschoben werden können:

imperia CMS Rubriken verschieben

Das Verschieben über die imperia Oberfläche ist für größere Restrukturierungen sehr zeitaufwändig. Es hat 3 entscheidende Nachteile:

  • man kann nicht mehrere Verschiebeaktionen auf einmal durchführen
  • man muss jedes Mal durch den Quell- und Zielbaum an die richtige Stelle navigieren
  • man kann nur Rubriken verschieben – nicht gleichzeitig löschen, ändern und hinzufügen

Content-Redakteure sind meist recht erfahren im Umgang mit Word und Excel, weshalb also nicht alle Rubrikeninformationen als Excel-Sheet exportieren, bearbeiten (lassen) und dann wieder importieren?

 

Rubriken verschieben via Excel

Die Restrukturierungs Applikation besteht aus 2 Teilen:

  • Export-Script project_cattree_export.pl zur Erstellung des Excel-Sheets
  • Import-Script project_cattree_import.pl zur Erkennung und Durchführung der Änderung

 

Der redaktionelle/administrative Ablauf

Schritt 1: Export des imperia Rubrikenbaums

Der Rubrikenbaum wird mittels project_cattree_export.pl exportiert:

www-data@ubuntuVM:/opt/imperia/webs/dev/site/bin# perl project_cattree_export.pl -run > cattree_export.xls

Hier ein Beispielergebnis:

imperia-rubriken-excel

 

Schritt 2: Bearbeitung des Export-Sheets

Der Redakteur kann nun den Rubrikenbaum über das Excel-Sheet bearbeiten:

  • Wird eine Zeile gelöscht, wird auch die imperia-Rubrik entfernt
  • Wird eine Zeile hinzugefügt, wird eine neue imperia-Rubrik erstellt
  • Wird eine Zeile bearbeitet, wird die existierende imperia-Rubrik aktualisiert
  • Wird eine Zeile verschoben, wird die existierende imperia-Rubrik verschoben

Folgende Regeln sind zu beachten:

  • Die Zelle depth bestimmt die Parent-Beziehung der Knoten. Ändert man diese, werden auch die Rubriken entsprechend verschoben
  • Die Zelle imperia_node_id darf nicht geändert werden
  • Bei neuen Rubriken wird die Zelle imperia_node_id leer gelassen
  • Die Reihenfolge der Rubriken wird über die Reihenfolge im Sheet bestimmt

Das geänderte Sheet wird nun als cattree_import.xls gespeichert.

 

Schritt 3: Import des imperia Export-Sheets

Der Rubrikenbaum wird mittels project_cattree_import.pl restrukturiert. Als Basis dienen die 2 Export- und Import-Sheets:

www-data@ubuntuVM:/opt/imperia/webs/dev/site/bin# perl project_cattree_import.pl -run export:cattree_export.xls import:cattree_import.xls

Folgende Parameter stehen zur Verfügung:

  • dryrun: Änderungen werden nur ausgegeben, nicht aber durchgeführt
  • loglevel: DEBUG, INFO, WARN, ERROR, FATAL
  • diff_only: erzeugt ein diff-File zur technischen Darstellung der Änderungen

 

Der technische Ablauf

Die Kalkulation der Änderungen, die auf dem imperia Rubrikenbaum durchgeführt werden sollen, erfolgt in mehreren Schritten:

 

Schritt 1: XML-Baumstrukturen erzeugen

Der Importer generiert die Dateien

  • cattree_export.xml: XML-Ausprägung des ursprünglichen Rubrikenbaums
  • cattree_import.xml: XML-Ausprägung des neuen Rubrikenbaums

Sie dienen dem dryrun-mode, Aktionen auf einer Baumstruktur zu testen und auszugeben. Fehler in der depth-Hierarchie können so einfacher erkannt und der imperia-Rubrikenbaum muss nicht komplett initialisiert werden.

 

<opt>
    <node depth="1" imperia_node_id="/124879/124926/181952" cat_name="Example Page" description="" ...>
        <node depth="2" imperia_node_id="/124879/124926/181952/181954" cat_name="Example Level 1.2-1" description="" ...>
            [...]
        </node>
    </node>
</opt>

 

Schritt 2: CSV-Files und DIFF erzeugen

Im weiteren Verlauf generiert der Importer die Files

  • cattree_export.csv
  • cattree_import.csv
  • cattree_import.diff

Die Excel-Dateien werden in ein CSV-Format umgewandelt. Der Vorteil: Die CSV-Dateien lassen sich im Anschluss mittels Text::Diff vergleichen. So erhält man die Information, welche Zeilen sich geändert haben.

Wird zum Beispiel Zeile 2 aktualisiert, 7 gelöscht und 9 verschoben, dann sieht das DIFF-Format wie folgt aus:

--- cattree_export.csv 2015-02-14 16:06:03.497244906 +0100
+++ cattree_import.csv 2015-02-14 16:46:23.090459268 +0100
@@ -1,12 +1,11 @@
 "depth";"imperia_node_id";"cat_name";"description";"directory";"filename";"nonewdocs";"assets";"workflow";"metafile";"template";"acl";"meta:navtype";"meta:linguas"
-1;"/124879/124926/181952";"Example Page";;"/example";"index.html";1;0;"example:1";"example.meta";"example.htms";":-22:rc:-14:r:";"start";"de,en"
+1;"/124879/124926/181952";"Example Page NEW";;"/example";"index.html";1;0;"example:1";"example.meta";"example.htms";":-22:rc:-14:r:";"start";"de,en"
 2;"/124879/124926/181952/181954";"Example Level 1.2-1";;"/example/2-1";"index.html";0;0;"example:1";"example.meta";"example.htms";":-22:rc:-14:r:";"article";"de,en"
 3;"/124879/124926/181952/181954/181956";"Example Level 1.2-1.3-1";;"/example/2-1/3-1";"index.html";0;0;"example:1";"example.meta";"example.htms";":-22:rc:-14:r:";"category";"de,en"
 4;"/124879/124926/181952/181954/181956/181958";"Example Level 1.2-1.3-1.4-1";;"/example/2-1/3-1/4-1";"index.html";0;0;"example:1";"example.meta";"example.htms";":-22:rc:-14:r:";"node";"de,en"
 4;"/124879/124926/181952/181954/181956/181960";"Example Level 1.2-1.3-1.4-2";;"/example/2-1/3-1/4-2";"index.html";0;0;"example:1";"example.meta";"example.htms";":-22:rc:-14:r:";"node";"de,en"
-4;"/124879/124926/181952/181954/181956/181962";"Example Level 1.2-1.3-1.4-3";;"/example/2-1/3-1/4-3";"index.html";0;0;"example:1";"example.meta";"example.htms";":-22:rc:-14:r:";"node";"de,en"
-3;"/124879/124926/181952/181954/181964";"Example Level 1.2-1.3-2";;"/example/2-1/3-2";"index.html";0;0;"example:1";"example.meta";"example.htms";":-22:rc:-14:r:";"category";"de,en"
 4;"/124879/124926/181952/181954/181964/181966";"Example Level 1.2-1.3-2.4-1";;"/example/2-1/3-2/4-1";"index.html";0;0;"example:1";"example.meta";"example.htms";":-22:rc:-14:r:";"node";"de,en"
+3;"/124879/124926/181952/181954/181964";"Example Level 1.2-1.3-2";;"/example/2-1/3-2";"index.html";0;0;"example:1";"example.meta";"example.htms";":-22:rc:-14:r:";"category";"de,en"
 3;"/124879/124926/181952/181954/181968";"Example Level 1.2-1.3-3";;"/example/2-1/3-3";"index.html";0;0;"example:1";"example.meta";"example.htms";":-22:rc:-14:r:";"category";"de,en"
 4;"/124879/124926/181952/181954/181968/181970";"Example Level 1.2-1.3-3.4-1";;"/example/2-1/3-3/4-1";"index.html";0;0;"example:1";"example.meta";"example.htms";":-22:rc:-14:r:";"node";"de,en"
 3;"/124879/124926/181952/181954/181972";"Example Level 1.2-1.3-4";;"/example/2-1/3-4";"index.html";0;0;"example:1";"example.meta";"example.htms";":-22:rc:-14:r:";"category";"de,en"

 

Schritt 3: TODO erzeugen

Aus der Datei cattree_import.diff werden nun alle Änderungsaktionen abgeleitet und in

  • cattree_import.todo

gespeichert:

[
 {
   "node_name": "Example Level 1.2-1.3-2.4-1",
   "node_id": "\/124879\/124926\/181952\/181954\/181964\/181966",
   "parent_name": "Example Level 1.2-1.3-1",
   "action": "MOVE",
   "row_id": 8,
   "parent_id": "\/124879\/124926\/181952\/181954\/181956"
 },
 {
   "node_name": "Example Level 1.2-1.3-1.4-3",
   "node_id": "\/124879\/124926\/181952\/181954\/181956\/181962",
   "action": "DELETE",
   "row_id": 6
 },
 {
   "node_name": "Example Page",
   "node_id": "\/124879\/124926\/181952",
   "action": "UPDATE",
   "row_id": 1
 }
]

 

Schritt 4: aaaaaaaand ACTION

Das TODO-file cattree_import.todo wird sukzessive abgearbeitet und die Aktionen auf dem imperia Rubrikenbaum ausgeführt:

  • CREATE
    die Rubrik wird neu erzeugt
  • UPDATE
    die Rubrik wird aktualisiert. Sollte sich das Verzeichnis oder der Filename geändert haben, werden die darin enthaltenen Dokumente aktualisiert. Optional können bei Metadaten-Änderungen die Dokumente durch den Workflow transferiert werden.
  • DELETE
    die Rubrik und alle enthaltenen Dokumente werden gelöscht
  • MOVE
    die Rubrik und darin enthaltenen Dokumente werden verschoben. Die UPDATE-Aktion wird im Anschluss getriggert.
  • CHANGE_ORDER
    die Reihenfolge der Rubrik wird aktualisiert

 

Vorteile und Best Practice

Massenaktionen ersparen einem im Gegensatz zur manuellen Bearbeitung über die imperia Oberfläche sehr viel Zeit.

Ein gemeinsames Arbeiten an Restrukturierungen ist über Google-Spreadsheet möglich. Redakteure können sich die Arbeit aufteilen und standortübergreifend am finalen Rubriken-Aufbau arbeiten.

Auf mehreren Systemen (Test-, Integrations-, Produktionsumgebung) können Änderungen über ein Jenkins-Deployment automatisiert durchgeführt und überwacht werden. Somit sind Rubrikenänderungen Teil des Deployment-Prozesses und bedürfen keinem manuellen Zutun mehr.

Die Umstrukturierung eines Rubrikenbaumes mit mehr als 28.000 Einzelknoten ist bereits erprobt. Die Laufzeit von ~250 Einzelaktionen beträgt in etwa 30 Minuten.

Es empfiehlt sich während der Restrukturierung den Hermes Systemdienst auszuschalten. Sollten unerwartet Probleme auftreten, ist das LIVE-System in dieser Zeit nicht betroffen.

 

tl;dr

  • Anpassungen am imperia Rubrikenbaum können von Redakteuren über ein Rubriken-Excel-Sheet vorgenommen werden
  • Massenaktionen (CREATE, UPDATE, DELETE, MOVE, CHANGE_ORDER) sind in einem Schritt durchführbar
  • Verteiltes oder gleichzeitiges Arbeiten an großen Baumstrukturänderungen kann über Google-Spreadsheet realisiert werden
  • Strukturänderungen sind über Jenkins-Deployments automatisierbar
Bitte bewerten Sie meinen Beitrag:
grauenhafteinfach nur schlechtich habe es geschafft ohne einzuschlafengut ist gut genugsehr gut, bitte mehr davon (4 Bewertungen, Ø: 4,75 von 5)
Loading...