OPUS4 / application

OPUS 4 application.
Other
15 stars 21 forks source link

Erweiterungen im CSV-Listenexport #1059

Closed bfalkenstein closed 4 months ago

bfalkenstein commented 1 year ago

Ich mache hier ein Issue auf, das eine Erweiterung des CSV-Exports (Listenexport) beschreibt, die in den letzten Monaten bei uns (BSZ) entwickelt wurde. Sie wäre unseres Erachtens auch im OPUS-Standard sinnvoll. PR folgt zeitnah.

Problembeschreibung:

Viele unserer Kunden wünschten immer wieder individuelle Anpassungen in der Formatierung des CSV-Exports, z.B. weil ihnen im Standard-CSV bestimmte Metadaten (Spalten) fehlten. Darüber hinaus gibt es viele Kunden, die den CSV-Export zur Erstellung von Forschungsnachweisen (Jahresforschungsberichten) nutzen wollen. Um den Vorgaben der Förderstelle (HAW BW e.V.) zu genügen, ist dafür jedoch eine ganz andere Tabellenstruktur erforderlich (statt jeweils ein Metadatum pro Tabellenspalte sollen hier zahlreiche Metadaten in einer Spalte stehen, ähnlich einer Zitation).

Das führte zu einer Vielzahl individueller Stylesheets (/modules/export/views/scripts/stylesheets/csv.xslt), was im Hosting einen erheblichen Aufwand bedeutete.

Ziel:

  1. Erstellen von zwei csv-Stylesheets (csv.xslt und csv_fn.xslt), die standardmäßig beide in /modules/export/views/scripts/stylesheets/ liegen. Diese beiden müssen im Normalfall nicht mehr verändert werden.

  2. Einfache Auswahl des gewünschten Stylesheets in der config.ini (Export Settings)

  3. Erweiterung des alten csv.xslt um weitere Spalten auf einen Standard, der als "größter gemeinsamer Nenner" aller Kundenwünsche gelten kann.

  4. Formatierung von csv_fn.xslt im Stil einer Zitation, die die formalen Anforderungen eines Jahresforschungsberichtes erfüllt.

  5. In beiden Formaten sollen individuell Spalten ergänzt werden können (Enrichments, Collections), ohne dass das Stylesheet selbst verändert werden muss. Dies geschieht über Einträge in der config.ini

  6. Die individuell ergänzten Spalten sollen wahlweise für alle User (guest) exportiert werden, oder nur für angemeldete User. Auch das kann spaltenweise in der config.ini eingestellt werden.

  7. Im Format csv_fn sollen die Namen von hochschulangehörigen Autoren/Herausgebern mit einem Asterisk kenntlich gemacht werden (Vorgabe der Förderstelle)

    Umsetzung:

  8. Die Stylesheets csv.xslt (erweitert) und csv_fn.xslt (neu) liegen in /modules/export/views/scripts/stylesheets/. Gemeinsam genutzte Templates liegen in /modules/export/views/scripts/stylesheets/utils/csv_utils.xslt. In csv_utils.xslt sind auch die bisherigen csv-Utilities (csv_authors.xslt, csv_editors.xslt, csv_institutions.xslt) integriert. Diese sind somit obsolet.

  9. Die Umschaltung zwischen csv.xslt und csv_fn.xslt erfolgt wie bisher in der config.ini: ;plugins.export.csv.stylesheet = 'csv_fn' plugins.export.csv.stylesheet = 'csv'

  10. Das Standard-CSV (csv.xslt) enthält nun folgende Spalten: OPUS4-ID | Dokumenttyp | Status | Sprache | Autor | Herausgeber | Haupttitel | Untertitel | übersetzter Titel | Abstract | Auflage | Verlagsort | Verlag | Jahr der Fertigstellung | Datum der Erstveröffentlichung | Seitenzahl | Titel des übergeordneten Werkes | Jahrgang | Erste Seite | Letzte Seite | Aufsatznummer | Schriftenreihe | Nummer | ISBN | ISSN | Urheb. Körperschaft | Beteiligte Körperschaft | Konferenzname | Konferenzort | Ausgabe / Heft | URN | DOI | Schlagwörter | Fakultät/Institut/Abteilung | Lizenz | Bemerkung Die Spalten-Überschriften werden teilweise dynamisch aus den Instanz-spezifischen Feldbezeichnungen generiert. Dazu ist es nötig, die Translate-Funktion im Bereich des Export-Moduls bekannt zu machen (in /opt/opus/fhdo/opus4/modules/export/models/XmlExport.php)

  11. Das Stylesheet csv_fn.xslt enthält die folgenden Spalten: OPUS-ID | Kategorie | Interne weitere Kategorie | Publikation | Bemerkung | Interne Bemerkung | Dokumenttyp | Fakultät/Institut/Abteilung Die Spalten "Kategorie" und "Interne weitere Kategorie" enthalten die Zugehörigkeit zu speziellen Collections, die für den Jahresforschungsbericht maßgeblich sind (gesonderte Dokumentation dazu folgt). Die Spalte "Publikation" enthält die relevanten Metadaten in einer Zitations-ähnlichen Form. Die Spalte "interne Bemerkung" wird nur exportiert, wenn der Export von einem angemeldeten User ausgeführt wird.

  12. Es können (in beiden CSV-Formaten) Spalten ergänzt werden, nämlich Enrichments und Collections. Dies geschieht in der config.ini: ; ENRICHMENTS AND COLLECTIONS TO BE EXPORTED IN CSV export.csv.enrichments = export.csv.enrichments_labels = export.csv.collections = export.csv.collections_labels =
    ; Visibility in CSV: 1 = for All, 0 = for Admins only export.csv.enrichments_visible = export.csv.collections_visible = Dabei sind in der Spalte export.csv.enrichments = die technischen Bezeichnungen der gewünschten Enrichments anzugeben (kommasepariert). In der Zeile export.csv.enrichments_labels = können die gewünschten Spaltenüberschriften angegeben werden (kommasepariert). In der Spalte export.csv.enrichments_visible = können die Werte "0" und "1" eingegeben werden (kommasepariert). Dabei bedeutet "0", dass die Spalte nur exportiert wird, wenn der Export als angemeldeter User ausgeführt wird. "1" bedeutet, dass die Spalte auch exportiert wird, wenn der Export von "guest" ausgeführt wird. Das Kriterium für "angemeldeter User" ist dabei php:function('Application_Xslt::accessAllowed', 'documents' = true Beispiel: ; ENRICHMENTS AND COLLECTIONS TO BE EXPORTED IN CSV export.csv.enrichments = enrichment1,enrichment2 export.csv.enrichments_labels =Enrichment 1,Enrichment2 export.csv.collections =collection1,collection2,collection3 export.csv.collections_labels =Sammlung 1,Sammlung 2,Sammlung 3
    ; Visibility in CSV: 1 = for All, 0 = for Admins only export.csv.enrichments_visible =1,1 export.csv.collections_visible =0,1,0

  13. Hochschulangehörige Autoren und Herausgeber werden im CSV-Export mit einem Asterisk vor dem Namen kenntlich gemacht. (*Müller, Max). Um das zu erreichen, muss bei der jeweiligen Person das Feld Interne ID der Personenverwaltung einen (beliebigen) String enthalten.

  14. Die exportierten csv-Files sind nun UTF-8-formatiert.

bfalkenstein commented 1 year ago

PR in https://github.com/OPUS4/application/pull/1060

j3nsch commented 1 year ago

Danke für die Ausführliche Beschreibung. Das ist ja eigentlich schon eine Anleitung. Es gut, dass sie hier schon mal festgehalten ist, aber wenn das Ticket geschlossen wird, ist sie "unsichtbar". Es wäre gut die wesentlichen Informationen in das OPUS 4 Handbuch zu übertragen oder zumindest dort ein Issue anzulegen mit Link zu diesem Issue hier (OPUS4/application#1059), damit die Aufgabe nicht untergeht.

Bitte auch einen kurzen Hinweis in die RELEASE_NOTES.md schreiben.

j3nsch commented 1 year ago

@vgerlach, @ViciJ Gibt es beim KOBV Instanzen, die den CSV Export nutzen bzw. angepasst haben, die von diesen Änderungen betroffen sein könnten?

Mein erster Eindruck ist, dass sich der CSV-Export deutlich verändert und nicht nur erweitert wird. Einige XSLT-Dateien verschwinden. Ich denke der neue Export ist besser, hat auf jeden Fall mehr Funktionen, aber es wäre besser gewesen die alte Funktionalität nicht einfach zu ersetzen. Schaut mal bitte, ob Ihr Probleme beim Update seht. Vielleicht wisst Ihr ja wer den existierenden CSV-Export aktiv nutzt.

bfalkenstein commented 1 year ago

@vgerlach, @ViciJ Aus meiner Sicht ist es so, dass im exportierten CSV gegenüber dem bisherigen Standard nichts verloren geht, d.h. alle Metadaten, die vorher exportiert wurden, sind weiterhin vorhanden. Es kommen nur neue Spalten hinzu. Zu den verschwindenden XSLTs: Dies sind im Verzichnis /modules/export/views/scripts/stylesheets/utils diese drei: csv_authors.xslt, csv_editors.xslt, csv_institutions.xslt. Die Templates aus diesen drei Files wandern in das neue /utils/csv_utils.xslt. D.h. wenn Ihr in dieses drei Files Anpassungen vorgenommen hättet, würden diese durch das Update verloren gehen.

alw-bsz commented 8 months ago
j3nsch commented 4 months ago

Die Änderungen sind übernommen worden. Hinweise in den Release Notes sind noch notwendig. Der CSV Export muss später in ein separates Package ausgelagert und evtl. weiter überarbeitet werden. Im Augenblick denke ich ist es akzeptabel zu sehen, ob es Feedback von Nutzern gibt und dann entsprechend darauf zu reagieren.