Die Dateien auf die sich Änderungen beziehen sind in der Regel als Task-Liste visualisiert und beginnen mit dem Themenamen. In dieser Anleitung wurde dafür boilerplate/ gewählt und muss an das entsprechende Theme angepasst werden.
22.12
Content-Component-Update
Page Header Components
In WebContent/resources/themes/boilerplate/includes/layout.xhtml folgende Zeilen entfernen:
Alle xml-Dateien in WebContent/resources/themes/boilerplate/cms/templates verschieben nach WebContent/resources/themes/boilerplate/cms/templates/legacy.
In diesen Dateien muss der Dateiname in <html> ergänzt werden um den kompletten Dateipfad relativ zum /resources Ordner, z.B.
Alle Dateien in WebContent/resources/themes/boilerplate/cms/templates/views müssen zum jsf-Composite-Components umgebaut werden. Dazu muss der Anfang der template-Datei muss ersetzt werden bis einschließlich der Zeile<h1>#{cmsPage.title}</h1> durch folgenden Code:
Das Ende der Datei, angefangen bei </div></f:view> muss ebenfalls ersetzt werden, und zwar durch
</composite:implementation></ui:composition>
Es kann passieren, dass dadurch die xml-Struktur beschädigt wird, durch fehlende Start- oder End-Tags. Das muss anschließend überprüft werden.
Anschließend müssen alle JSF-Referenzen auf cmsPage umgabaut werden zu Referenzen zu cc.attrs.component. Die Zuordnung ist jedoch in der Regel nicht so direkt möglich sondern hängt von den jeweiligen Eigenschaften ab. Durch Suchen&Ersetzen folgender regulärer Ausdrücke kann man die häufigsten abgefragen Eigenschaften ersetzen:
Der Suchmechanismus wurde angepasst und es ist in einigen wenigen Themes notwendig, überschriebene Seiten (theme-url-mappings.xml) oder angepasste Templates abzuändern. Dafür sind folgende Funktionen zu suchen und zu ersetzen.
Die erweiterte Suche wurde funktional und optisch umfangreich überarbeitet. Außerdem ist ein Hilfewidget in der Sidebar ergänzt worden. viewer/searchadvanced
Bei einem Update auf diese Version sind keine Änderungen zu beachten.
22.08
Anpassung der Standardsuche
Die Standardsuche wurde signifikant verschlankt, so dass vom Suchfeld un den Optionen weniger Raum eingenommen wird. Die Struktur und das Styling der Standardsuche sowie der Suchoptionenmuss geprüft werden. Insbesondere individuelle Themes und Templates, die die Suche als include benutzen, müssen überprüft und angepasst werden.
Anpassung des Paginators in der Suchtrefferliste
Der Paginator in der Suchtrefferliste wurde verändert und in seiner Funktion erweitert. Hier sollte die zugehörige LESS Datei ergänzt und das Styling geprüft werden.
Widget Nutzungsstatistiken
Es wurde ein Widget zur Darstellung von Nutzungsstatistiken ergänzt.
Widget Copyright (Copyright Indikator)
Der Copyright Indikator wurde leicht abgewandelt, so dass nun auch die Anzeige in der Sidebar als Widget möglich ist.
22.07
Sitelinks
Die Methode für die Generierung der Sitelinks wurde umbenannt. Im Footer der Themes ist daher häufig folgender Abschnitt zu tauschen:
<!-- OLD --><ui:fragmentrendered="#{fn:length(sitelinkBean.availableValues) > 0}"> <ahref="#{request.contextPath}/sitelinks/">#{msg.sitelinks}</a></ui:fragment><!-- NEW --><ui:fragmentrendered="#{configurationBean.sitelinksEnabled}"> <ahref="#{request.contextPath}/sitelinks/">#{msg.sitelinks}</a></ui:fragment>
Copyright Indikator
Für die neue, optionale Komponente zur Anzeige der werkszugehörigen Zugriffsbeschränkung sowie der Nutzungslizenz sind LESS Dateien zu ergänzen.
Optional: Cachebusting
Via Grunt kann den CSS und JS Dateien ein Parameter angehängt werden, der das Neuladen von CSS und JS Dateien forciert (browserabängig).
Es muss grunt-replace in der package.json ergänt werden und (via npm) installiert werden.
In der Datei customJS.xhtml ist hinter der Methode navigationHelper.buildVersion folgende Zeichenkette zu ergänzen: &cachetimestamp=
<!-- EXAMPLE --><script src="#{request.contextPath}/resources/themes/#{navigationHelper.theme}/javascript/dist/custom.min.js?${navigationHelper.buildVersion}&cachetimestamp=2022-8-2-11-49-30"></script>
<script src="#{request.contextPath}/resources/themes/#{navigationHelper.theme}/javascript/dist/#{navigationHelper.theme}-tags.js?${navigationHelper.buildVersion}&cachetimestamp=2022-8-2-11-49-30"></script>
22.06
Icon Clientstatus
Um anzuzeigen, ob der aktuelle Client im Netzwerk registriert ist, kann ein Icon in der layout.xhtml hinzugefügt werden.
<!-- INSERT INTO HEADER AREA --><ui:fragmentrendered="#{adminClientsBean.clientLoggedIn}"> <divclass="page-header__client-status"> <viewerComponent:clientApplicationStatus/> </div></ui:fragment>
Verbesserte Einbindung Websockets
Für das modulare Laden der Websockets ist folgendes Script in der customJS.xhtml hinzuzufügen.
<!-- ADD BELOW VARIABLES AND SCRIPTS -->viewerJS.useWebSocket = #{activeDocumentBean.requiresWebSocket};
Clientsprache
Damit Client ihre Spracheinstellung an der Sprache der aufgerufenen Goobi viewer Seite ausrichten können, muss die folgende Zeile oberhalb des <script /> Tags eingefügt werden:
<!-- add response header for current language --><f:event type="preRenderView" listener="#{facesContext.externalContext.response.setHeader('Content-Language', navigationHelper.locale.language)}" />
22.05
Access denied Bilder aus dem Theme
Um überall (auch in der timematrix) ein eigenes Platzhalterbild bei zugriffsbeschränkten Bildern anzeigen zu können, ist in der customJS.xhtml folgender Code zu ergänzen:
viewerJS.thumbnailLoader = new viewerJS.loadThumbnails("#{request.contextPath}#{navigationHelper.getResource('images/image_not_found.png')}","#{request.contextPath}#{navigationHelper.getResource('images/thumbnail_access_denied.jpg')}");
Content Upload Modal
Das Modal für den Upload eigener Inhalte ist in der layout.xhtml einzupflegen.
<!-- ADD BELOW OTHER MODALS --><ui:fragmentrendered="#{configurationBean.contentUploadEnabled}"> <viewerComponent:modalContentUploadid="contentUploadModal" /></ui:fragment>
22.04
Bei einem Update auf diese Version sind keine Änderungen zu beachten.
22.03
Disclaimer
Für die Möglichkeit das Disclaimer-Modal anzuschalten muss in der Datei customJS.xhtml - hinter den Variablen - die folgende Zeile hinzugefügt werden:
Links und Buttons nach WCAG Kriterien umgearbeitet. Im gesamten Goobi viewer ist die Semantik verschiedener Aktionen angepasst worden. So sind beispielsweise Links zu Buttons oder Inputs geändert worden. Hieraus können sich kleinere stylistische Änderungen ergeben. Das Styling wurde im Core bereits so angepasst, dass es so wenig wie möglich Abweichungen gibt. Es wird dennoch empfohlen, nach dem Update ein besonderes Augenmerk auf das Styling interaktiver Elemente wie Links, Buttons und Inputs (Form submits) zu haben.
22.02
Piwik-Tracking
Das folgende HTML Snippet muss in die folgenden Dateien an das Ende des <body /> Elementes eingefügt werden:
Sollte die Zeile bereits anderswo in der Datei, oder in der Datei boilerplate/includes/layout.xhtml stehen, muss sie dort entfernt werden.
Widgetstruktur
Die Widgets wurden teilweise restrukturiert und vereinheitlicht, weswegen eine visuelle Prüfung der einzelnen Widgets notwendig ist. Änderungen können vor allem die Sidebar innerhalb der Standardansicht (bspw. Startseite, Suche), die Objektansicht sowie den Vollbildmodus betreffen.
Pfadangabe für CSS Maps
Um eine korrekte Anzeige für die Theme CSS Dateien zu bekommen, aus welcher LESS Datei die eingesetzten Styles stammen, ist in der Datei Gruntfile.js folgender Eintrag für das less Modul innerhalb von options zu ergänzen.
Weite Teile der Meta-Tags, CSS- und Javascript-Referenzen in allen Template Dateien wurden in Includes ausgelagert. Dadurch können sie nun zentral im Core gepflegt werden. Betroffen sind alle Template-Dateien:
boilerplate/template.html
boilerplate/templateAdmin.html
boilerplate/templateArchives.html
boilerplate/templateBlank.html
boilerplate/templateCrowdsourcing.html
boilerplate/templateFullscreen.html
boilerplate/templateMirador.html
Welche CSS und Javascript Dateien jeweils referenziert werden, wird im Core mittels des übergebenen Template-Namen bestimmt. Dieser muss in der Variablen templateName eingetragen werden:
In Ausnahmefällen kann es nötig sein, einzelne CSS oder Javascript Dateien anders als im Viewer core vorgesehen zu importieren. Dazu können sie über die Variablen excludeCSS und excludeJS ausgeschlossen werden. Beiden kann eine Liste mit Strings übergeben werden, die Dateien bezeichnen, die nicht referenziert werden sollen.
<!-- Beispiele --><c:setvar="excludeCSS"value="#{['bootstrap', 'jqueryUI']}" /><c:setvar="excludeJS"value="#{['swiper', 'jquery']}" /><!-- eine Liste aller möglichen Strings in der Browser-Konsole anzeigen: --><c:setvar="excludeCSS"value="#{['showCSS']}" /><c:setvar="excludeJS"value="#{['showJS']}" />
Insgesamt müssen folgende Änderungen vorgenommen werden:
JSF-Variablen zwischen <html> und <h:head> einfügen
<!-- templateName determines which CSS + JS libraries will be included --><c:setvar="templateName"value="template" /><!-- You may force exclude default css or js: --><!-- Add a string to one of the arrays below (ex. 'bootstrap', 'themeCss'; --><!-- all available strings can be listed in the browser console passing 'showCSS' resp. 'showJS') --><c:setvar="excludeCSS"value="#{[]}" /><c:setvar="excludeJS"value="#{[]}" />
Es wird im Footerbereich nur noch ein Link der Sitelinks generiert, wenn auch mindestens ein Sitelink existiert. Dafür ist in der layout.xhtml folgendes Element zu tauschen:
Um die Barrierefreiheit zu verbessern, wurden die Überschriften jeweils eine Hierarchiestufe hinauf gesetzt. Die jeweilige Seitenüberschrift ist nun H1, die H1 im Header wurde entfernt.
Diese Anpassung sollte in allen Custom Templates und Components vorgenommen werden:
Danach reicht es in den meisten Fällen aus, die less-Selektoren durch "Suchen und ersetzen" anzupassen.
Sollten die Tags H1 - H6 im Javascript als Selektoren genutzt worden sein, müssen sie entsprechend geändert werden: