8.1 Core changes

2020-01-24

Durch die Refaktorisierung der Bücherregale/Merklisten Funktionalität hin zu einheitlicher Benennung aller Funktionen in im Java-Stack, XHTML-Seiten bis hin zu CSS und JavaScript hat sich auch der Schalter in der Konfigurationsdatei geändert. Bei einem Update auf die Version 4.3.0 muss in der lokalen config_viewer.xml der Schalter <bookshelves /> zu <bookmarks /> umbenannt werden:

config_viewer.xml
<bookmarks>
<bookmarksEnabled>true</bookmarksEnabled>
</bookmarks>

Ebenfalls muss für die Suche in den Merklisten das gegebenenfalls konfigurierte statische Feld BOOKSHELF in BOOKMARKS umbenannt werden:

config_viewer.xml
<search>
<advanced>
<searchFields>
<field>BOOKMARKS</field>
</searchFields>
</advanced>
</search>

2020-01-14

Folgendes SQL Statement ausführen, damit die Beschreibungen von Medien Dateien und die Namen von Werken auf Merklisten länger sein dürfen:

ALTER TABLE cms_media_item_metadata MODIFY description TEXT;
ALTER TABLE bookshelf_items MODIFY name LONGTEXT;

2019-12-20

Folgendes SQL Statement ausführen, damit die Beschreibungen von Merklisten länger sein dürfen:

ALTER TABLE bookshelves MODIFY description LONGTEXT;

2019-10-24

Für das Logging müssen die Log4j und SLF4j libs vom Solr in einen dedizierten Ordner. Dafür sind folgende Schritte auszuführen:

mkdir /opt/digiverso/viewer/apache-solr/tomcat-lib/
mv /opt/digiverso/tomcat-lib/log4j*jar /opt/digiverso/viewer/apache-solr/tomcat-lib/
mv /opt/digiverso/tomcat-lib/*slf4j* /opt/digiverso/viewer/apache-solr/tomcat-lib/
chown -R tomcat8. /opt/digiverso/viewer/apache-solr/tomcat-lib/

Anschließend muss der Pfad in dem base="" Attribut der PreResource in der /etc/tomcat8/Catalina/localhost/solr.xml auf den neuen Ordner angepasst werden.

Damit dann die log4j2.xml aus der Applikation selbst greift, muss gegebenenfalls noch die Definition einer globalen Konfigurationsdatei, die als Parameter der JVM beim Starten übergeben wird, aus der /etc/default/tomcat8 entfernt werden.

2019-10-08

Ein ein Update des Goobi viewer Core enthält ab diesem Zeitpunkt automatisch die neuen Crowdsourcing Kampagnen. Aus diesem Grund muss der Goobi viewer Indexer und das Solr-Schema mit aktualisiert werden. Die Indexer Konfigurationsdatei muss um die folgende Ordnerdefinition erweitert werden:

solr_indexerconfig.xml
<init>
<annotationFolder>annotation</annotationFolder>
</init>

Eine Neuindexierung des Datenbestandes ist trotz Update des Solr Schemas nicht notwendig.

2019-08-29

Für die Suche in den Merklisten muss das Feld BOOKSHELF in der Feldliste für die erweiterte Suche konfiguriert sein. Deswegen muss bei einem Update geprüft werden, ob in der lokalen config_viewer.xml eine individuelle Liste an Suchfeldern definiert wurde. Wenn ja das Feld hinzufügen:

config_viewer.xml
<search>
<advanced>
<searchFields>
[...]
<field>BOOKSHELF</field>
</searchFields>
</advanced>
</search>

2019-08-22

Es muss überprüft werden, ob in der lokalen config_viewer.xml ein alternatives Mapping für den pageType viewImage existiert:

config_viewer.xml
<viewer>
<pageTypes>
<viewImage>objekt</viewImage>
...
</pageTypes>
</viewer>

Wenn ja, dann muss das Mapping auf den neuen pageType viewObject geändert werden:

<viewer>
<pageTypes>
<viewObject>objekt</viewObject>
...
</pageTypes>
</viewer>

2019-07-31

Wenn für ein Werk nur Volltextdateien (kein ALTO) vorliegt, konvertiert der Goobi viewer Indexer diese ab sofort automatisch zu UTF-8 wenn ein abweichendes Encoding vorliegt.

Wenn im Goobi viewer Indexer die RemainingSpaceStrategy inklusive Buffer verwendet wird, dann wird dieser bei einer Neuindexierung überprüft und das Werk gegebenenfalls in ein anderes Repository verschoben wenn der konfigurierte Wert unterschritten wird.

2019-07-06

Da URLs nicht mehr automatisch gesetzt werden muss sichergestellt sein, dass in der lokalen config_viewer.xml die folgenden URLs konfiguriert sind:

config_viewer.xml
<urls>
<metadata>
<mets>https://viewer.example.org/oai?verb=GetRecord&amp;metadataPrefix=mets&amp;identifier=</mets>
<marc>https://viewer.example.org/oai?verb=GetRecord&amp;metadataPrefix=marcxml&amp;identifier=</marc>
<dc>https://viewer.example.org/oai?verb=GetRecord&amp;metadataPrefix=oai_dc&amp;identifier=</dc>
<ese>https://viewer.example.org/oai?verb=GetRecord&amp;metadataPrefix=europeana&amp;identifier=</ese>
</metadata>
<contentServerWrapper>https://viewer.example.org/content/</contentServerWrapper>
<download>https://viewer.example.org/download/</download>
<rest>https://viewer.example.org/rest/</rest>
</urls>

2019-06-11

Die CORS Unterstützung im Apache muss um die folgenden Einträge ergänzt werden:

Header always set Access-Control-Allow-Methods "GET, OPTIONS"
Header always set Access-Control-Max-Age "600"
Header always set Access-Control-Allow-Headers "Authorization, Content-Type"
Header always set Access-Control-Expose-Headers "Content-Security-Policy, Location"
RewriteEngine On
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ $1 [R=200,L]

2019-06-05

Die Package-Struktur des Goobi viewer Connectors hat sich geändert. Bei einem Update ist es zwingend notwendig die Inhalte aus dem Ordner /opt/digiverso/viewer/oai/token/ zu löschen.

2019-05-29

Die Projektstrukur wurde geändert. Bestehende Themes sind nicht mehr mit dem aktuellen Goobi viewer Core kompatibel und müssen angepasst werden. Eine Anleitung erscheint in Kürze in Kapitel 8.2 Theme changes.

Wenn das Theme als externes Theme eingebunden ist sind die im folgenden beschriebenen Anpassungen notwendig. Sie sind in diesem Fall exemplarisch mit dem Reference-Theme dargestellt. Der Theme beziehungsweise Repositoryname ist immer auf den eigenen Fall anzupassen.

Anpassen der Repository URL. Dafür in dem ausgecheckten Repository die Datei .git/config/ editieren und die URL zum remote origin anpassen.

Status

Wert

Alt

gitolite@git.intranda.com:goobi-viewer-theme-reference.git

Neu

git@gitea.intranda.com:goobi-viewer/goobi-viewer-theme-reference.git

Weiter muss der base Pfad für die PreResources in der context.xml geändert werden.

Alt:

viewer.xml
<PreResources
className="org.apache.catalina.webresources.DirResourceSet"
base="/opt/digiverso/viewer/themes/goobi-viewer-theme-reference/goobi-viewer-theme-reference/src/META-INF/resources/resources/themes/"
webAppMount="/resources/themes" />

Neu:

viewer.xml
<PreResources
className="org.apache.catalina.webresources.DirResourceSet"
base="/opt/digiverso/viewer/themes/goobi-viewer-theme-reference/goobi-viewer-theme-reference/WebContent/resources/themes/"
webAppMount="/resources/themes" />

Die Anpassung des Pfades muss natürlich auch in der lokalen config_viewer.xml unter viewer/theme/rootPath erfolgen.

2019-05-27

Sofern die Unterstützung von denkXweb gewünscht wird, muss der Goobi viewer Indexer aktualisiert und die folgenden beiden Zeilen in dessen Konfigurationsdatei eingefügt werden:

solr_indexerconfig.xml
<indexedDenkXweb>indexed_denkxweb</indexedDenkXweb> <origDenkXweb>/opt/digiverso/viewer/orig_denkxweb/</origDenkXweb>

Außerdem den Ordner im Dateisystem anlegen:

mkdir /opt/digiverso/viewer/indexed_denkxweb/
mkdir /opt/digiverso/viewer/orig_denkxweb/
chown tomcat8:tomcat8 /opt/digiverso/viewer/indexed_denkxweb/
chown tomcat8:tomcat8 /opt/digiverso/viewer/orig_denkxweb/

2019-05-22

Damit nach Änderungen am Javascript und CSS Dateien diese schneller an den Client ausgeliefert werden ist eine Änderung in der Apache Konfiguration des Goobi viewer vhosts notwendig. Einerseits hinzufügen der folgenden Zeile:

# make sure the ETag headers are correctly forwarded.
# Post Apache 2.4 have a look at
# https://httpd.apache.org/docs/trunk/mod/mod_deflate.html#deflatealteretag
RequestHeader edit "If-None-Match" '(.*)-gzip"$' '$1", $1-gzip"'

Andererseits das auskommentieren der folgenden drei Zeilen im <LocationMatch /> Block für den Goobi viewer:

# ExpiresByType text/css "access plus 24 hours"
# ExpiresByType text/javascript "access plus 24 hours"
# ExpiresByType application/javascript "access plus 24 hours"

2019-04-24

Die URLs für Verlinkung der Sammlungen aus dem Backend heraus werden nun anders gebildet. Bei relativen URLs wird nun immer auch der Anwendungsname mit angegeben. Beim Update ist zu prüfen ob im Admin-Backend unter "Sammlungen" Einträge vorhanden sind. Wenn ja muss geprüft werden ob URLs zu CMS-Seiten vergeben sind. Ist das der Fall muss der Anwendungsname entfernt werden.

Beispiel:

Alt

Neu

/viewer/sammlungen/alle-werke/

/sammlungen/alle-werke/

2019-03-29

Aktualisierung des Goobi viewer Indexers und Anpassen der Konfigurationsdatei solr_indexerconfig.xml. Wenn das Metadatum MD_SERIESTITLE existiert muss dieses in MD_TITLE_SERIES umbenannt werden. Siehe dazu auch den letzten Abschnitt in Kapitel 6.2.

Außerdem kann aus der lokalen config_viewer.xml die Definition der Klassifikationen aus dem CMS-Bereich gelöscht werden (config/cms/classifications). Die Werte werden inzwischen in der Datenbank vorgehalten.

Durch die Refaktorisierung des Medien-Bereichs sind einige Funktionen von dort an andere Stelle gewandert. Zum Beispiel auch die Zuweisung einer Bild-Datei zu einer Sammlung. Dieser Umzug muss manuell gemacht werden. Dafür ist vor dem Update folgendes SQL auszuführen:

SELECT cms_media_item_id, file_name, collection, collection_name, collection_field FROM cms_media_items WHERE collection=1;

Die Query liefert eine Liste aller Medien-Objekte die berücksichtigt werden müssen. Für jedes muss im CMS-Backend eine neue Sammlung angelegt werden mit collection_field als Sammlungsfeld und collection_name als Sammlungsname. Das Bild muss anhand der id oder des Dateinamens identifiziert werden.

2019-02-14

Die Übersichtsseiten-Funktionalität wurde zugunsten einer CMS-Erweiterung entfernt. Mit dem Update des Cores muss zwingend auch der Goobi viewer Indexer und das Solr-Schema aktualisiert werden.

In der Konfigurationsdatei des Goobi viewer Indexers den Eintrag für den overviewFolder entfernen und für einen cmsFolder hinzufügen:

solr_indexerconfig.xml
<!--overviewFolder>overview</overviewFolder-->
<cmsFolder>cms</cmsFolder>

Außerdem den Ordner im Dateisystem anlegen:

mkdir /opt/digiverso/viewer/cms/
chown tomcat8:tomcat8 /opt/digiverso/viewer/cms/

Nun folgendes SQL Statement ausführen um sicherzustellen, dass der Zeichensatz der CMS-Zieltabelle korrekt ist und die Migration nicht fehlschlägt:

ALTER TABLE cms_content_items CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Ob die Migration ausgeführt werden muss, kann in der Datenbank geprüft werden:

SELECT COUNT(*) FROM overview_pages,overview_page_updates;

Um dann bereits angelegte Übersichtsseiten aller Werke ins CMS zu migrieren, den folgenden Aufruf einmalig ausführen:

https://viewer.example.org/viewer/tools?action=migrateOverviewPages

Am Ende kann der overview Ordner aus dem Dateisystem auch in das Backup verschoben werden.

2018-12-19

Der Goobi viewer Indexer und das dazugehörige Schema müssen aktualisiert und der Datenbestand neu indexiert werden damit die Bildmaße als WIDTH und HEIGHT in den Solr Suchindex geschrieben werden.

2018-12-17

Für die neue Facettierung nach Strukturelementen muss der Goobi viewer Indexer auf die Version 3.2.20181214 und das Solr-Schema auf 20181214 aktualisiert und der Datenbestand neu indexiert werden.

Außerdem muss in der lokalen config_viewer.xml geprüft werden, ob das Feld DOCSTRCT zur Facettierung konfiguriert ist. Wenn ja ist dieses durch die neuen beiden Feldnamen DOCSTRCT_TOP und DOCSTRCT_SUB zu ersetzen.

<search>
<drillDown>
<!--field initialElementNumber="3">DOCSTRCT</field-->
<field initialElementNumber="3">DOCSTRCT_TOP</field>
<field initialElementNumber="3">DOCSTRCT_SUB</field>
</drillDown>
</search>

2018-11-19

Eine Änderung in der Darstellung von Normdaten-Buttons erfordert eine Umkonfigurierung aller Installationen, die Normdaten anzeigen.

Der Type für NORM_URI lautet nicht mehr field sondern neu normdatauri und kann als Parameter an beliebige Stelle platziert werden. So können Normdaten-Buttons auch zwischen anderen Parametern gerendert werden, anstatt wie bisher nur ganz am Ende.

config_viewer.xml
<metadata label="MD_AUTHOR" value="MASTERVALUE_WIKINORM" group="true">
<param type="field" key="MD_VALUE"/>
<param type="wikipersonfield" key="MD_VALUE"/>
<param type="normdatauri" key="NORM_URI" />
</metadata>

Für den Normdaten-Button muss ein eigener Platzhalter (hier: {5}) definiert werden:

messages_de.properties
MASTERVALUE_WIKINORM={1} <a href="http://de.wikipedia.org/wiki/{3}" target="_blank" title="Wikipedia" alt="Wikipedia" data-trigger="hover" data-placement="top" data-toggle="tooltip"><i class="fa fa-wikipedia-w" aria-hidden="true"></i></a> {5}

Außerdem die folgende Datei unter /opt/digiverso/viewer/config/ ablegen:

normdatamap.properties
001=NORM_IDENTIFIER_ZLB
0247_a=URI
035__(DE-101)=NORM_IDENTIFIER_ZLB
1001_a=NORM_NAME
1001_d=NORM_LIFEPERIOD
1001_q=NORM_SEX
4001_a=NORM_ALTNAME
5000_4\:beza=NORM_ACQUAINTANCE
5000_4\:bezav:VD-16\ Mitverf.=NORM_COAUTHOR
5001_4\:beza=NORM_ACQUAINTANCE
5001_4\:bezav:Mitschu\u0308ler=NORM_CLASSMATE
5001_4\:bezav:VD-16\ Mitverf.=NORM_COAUTHOR
5001_4\:bezf=NORM_RELATIVE
5001_4\:bezfv:Vater=NORM_FATHER
5001_4\:bezfv:Vorfahren=NORM_ANCESTOR
5001_4\:saml=NORM_COLLECTOR
5102_4\:besi=NORM_OWNER
5102_4\:bete=NORM_CONTRIBUTOR
530_04\:rela=NORM_RELATIONSHIP
548__4\:datl=NORM_LIFEPERIOD
548__4\:dats=NORM_PRODUCTIONPERIOD
548__4\:datw=NORM_WORKPERIOD
548__4\:datx=NORM_LIFEPERIODEXACT
550__4\:stud=NORM_EDUCATION
550__4\:beru=NORM_PROFESSION
550__4\:obin=NORM_OBIN
551__4\:ortg=NORM_PLACEOFBIRTH
551__4\:ortu=NORM_PLACEOFEDUCATION
551__4\:orts=NORM_PLACEOFDEATH

2018-10-25

Die folgenden beiden Feldeinträge sollen in der Konfigurationsdatei des Goobi viewer Indexers ergänzt werden:

solr_indexerconfig.xml
<MD_PROCESSID>
<list>
<item>
<xpath>@OBJID</xpath>
<addToDefault>false</addToDefault>
<addUntokenizedVersion>false</addUntokenizedVersion>
</item>
</list>
</MD_PROCESSID>
<BOOL_CONTAINSIMAGE>
<list>
<item>
<xpath>string(boolean(mets:fileSec/mets:fileGrp[@USE="PRESENTATION"]))</xpath>
<addToDefault>false</addToDefault>
<addSortField>true</addSortField>
</item>
</list>
</BOOL_CONTAINSIMAGE>

2018-10-19

Der Goobi viewer Indexer muss aktualisiert und der Datenbestand neu indexiert werden um sicherzustellen, dass keine falschen Suchtreffer angezeigt werden.

2018-10-09

In der config_viewer.xml muss der Block <openIdConnect> umbenannt werden in <authenticationProviders>. Sein Attribut showwandert in die einzelnen enthaltenen <provider> Einträge. Der Default-Wert für show ist dabei true. Alle <provider> Einträge mit Namen Google und Facebook müssen zusätzlich das Attribut type="openId" bekommen. Die Anmeldung über lokale Viewer-Nutzeraccounts muss als separater <provider> eingetragen werden:

<provider type="local" show="true" name="Goobi viewer"/>

Eine typische komplette Konfiguration sieht dann so aus:

<authenticationProviders>
<provider type="openId" show="true" name="Google" endpoint="https://accounts.google.com/o/oauth2/auth" clientId="CHANGEME" clientSecret="CHANGEME" image="google.png" />
<provider type="openId" show="false" name="Facebook" endpoint="https://www.facebook.com/dialog/oauth" clientId="CHANGEME" clientSecret="CHANGEME" image="facebook.png" />
<provider type="local" show="true" name="Goobi viewer"/>
</authenticationProviders>

Siehe auch Sektion 5.2 Benutzeraccounts.

2018-09-10

Da sich bei der Suchtreffer- und Sammlungsanzeige in der URL die Position geändert hat an dem die Einschränkung angezeigt ist muss eine Weiterleitung eingerichtet werden, damit externe Verlinkungen weiterhin funktionieren. Dafür kann zum Beispiel im Apache das folgende Snippet verwendet werden:

## Redirect collection facetting to new URL destination
ProxyPassMatch ^/viewer/browse/DC(.*)/-/([0-9]+)/-/-/$ !
RedirectMatch 301 ^/viewer/browse/DC(.*)/-/([0-9]+)/-/-/$ /viewer/browse/-/$2/-/DC$1/
ProxyPassMatch ^/viewer/search/DC(.*)/-/([0-9]+)/-/-/$ !
RedirectMatch 301 ^/viewer/search/DC(.*)/-/([0-9]+)/-/-/$ /viewer/search/-/-/$2/-/DC$1/
ProxyPassMatch ^/viewer/search/(.*)/-/([0-9]+)/-/-/$ !
RedirectMatch 301 ^/viewer/search/(.*)/-/([0-9]+)/-/-/$ /viewer/search/-/-/$2/-/DC:$1/

2018-09-06

Bestehende Cronjobs für den Goobi viewer sind zu prüfen und in die Datei /etc/cron.d/intranda-goobiviewer zusammenzuführen. Eine Vorlage für so eine Datei ist wie folgt:

/etc/cron.d/intranda-goobiviewer
PATH=/usr/bin:/bin:/usr/sbin/
MAILTO=support@intranda.com
#
# Regular cron jobs for the Goobi viewer
#
## This REST call triggers the email notification about new search hits for users,
## that enabled notifications for saved searches
42 8,12,17 * * * root curl -s http://localhost:8080/viewer/rest/search/sendnotifications/?token=fc375cda-0908-405b-ad7a-1fc5ba638662
## This REST call creates an XML sitemap for the Goobi viewer instance. Please always
## call it on it's external URL because otherwise the protocol (http/https) might not
## be detected correctly
18 1 * * * root curl -s -X POST -H "Content-Type: application/json" -d '{}' "https://viewer.example.org/viewer/rest/sitemap/update/?token=fc375cda-0908-405b-ad7a-1fc5ba638662" 1>/dev/null
## This two scripts pull the theme git repository regulary. The @daily part is only
## a reminder for the 1-minute schedule
*/1 * * * * root cd /opt/digiverso/viewer/themes/goobi-viewer-theme-reference; git pull | grep -v "Already up-to-date."
@daily root echo "Please look at the git checkout interval for the Goobi viewer theme" | mail -s "Reference: Theme repository is checked out every minute" do-not-reply@example.org
## Optimize the Solr search index once a month
@monthly root curl -s "http://localhost:8080/solr/update?optimize=true&waitFlush=false"

Der Token muss erst generiert und dann in der lokalen config_viewer.xml konfiguriert werden:

cat /proc/sys/kernel/random/uuid
config_viewer.xml
<webapi>
<authorization>
<token>fc375cda-0908-405b-ad7a-1fc5ba638662</token>
</authorization>
</webapi>

2018-08-17

Wenn das Crowdsourcing Modul installiert ist, muss aus dessen Konfigurationsdatei config_viewer-module-crowdsourcing.xml der folgende Block entfernt werden:

<viewImage>
<url>resources/components/viewImageUserGeneratedContent.xhtml</url>
</viewImage>

2018-06-21

Bei der Facettierung dürfen die konfigurierten Feldnamen nicht mehr mit FACET_ starten, sondern müssen mit MD_ beginnen.

2018-05-28

Optional: Extrahiertes Theme einbinden. Siehe dazu Kapitel 2.16.1

2018-05-08

Damit die vom Goobi viewer generierten IIIF Presentation Manifeste von extern funktionieren, muss CORS erlaubt werde. Dafür das Headers Modul im Apache aktivieren sofern noch nicht geschehen:

a2enmod headers

In dem oder in den vhosts folgendes Snippet einfügen:

## CORS for IIIF
Header set Access-Control-Allow-Origin "*"

Anschließend den Apache neu starten:

systemctl restart apache2

Außerdem muss der Goobi viewer Indexer aktualisiert und der Datenbestand neu indexiert werden. Hintergrund ist, dass für die Generierung der IIIF Manifeste die Bildgrößen verfügbar sein müssen. Stehen diese im Solr Suchindex ist die Generierung der Manifeste deutlich schneller als wenn dafür jedes Bild einzeln gelesen werden muss.