2022

Allgemein

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:

	<ui:fragment rendered="#{cmsPage.topBarSliderId != null}">
		<div class="page-header__slider">
			<ui:insert name="topbar" />
		</div>
	</ui:fragment>

und ersetzen durch

		<ui:fragment rendered="#{cmsPage.hasTopbarComponents()}">
			<div class="page-header__slider">
				<ui:insert name="topbar" />
			</div>
		</ui:fragment>

Theme-Template Dateien

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.

<html>themes/boilerplate/cms/templates/views/custom_cms_template_02_home.xhtml</html>

Template views Dateien

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:

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
	xmlns:h="http://xmlns.jcp.org/jsf/html"
	xmlns:f="http://xmlns.jcp.org/jsf/core"
	xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
	xmlns:c="http://java.sun.com/jsp/jstl/core"
	xmlns:viewer="http://xmlns.jcp.org/jsf/composite/components/partner"
	xmlns:composite="http://xmlns.jcp.org/jsf/composite"
	xmlns:viewerComponent="http://xmlns.jcp.org/jsf/composite/components"
	xmlns:widgetComponent="http://xmlns.jcp.org/jsf/composite/components/widgets"
	template="/resources/themes/#{navigationHelper.theme}/template.html">

	<composite:interface>
		<composite:attribute name="component" required="true" />
	</composite:interface>
    
	<composite:implementation>

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:

Regulärer Ausdruck zur SucheErsetzen durch

cmsPage.getContentItem\(['"](\w+)['"]\)

cc.attrs.component.getContent('$1')

cmsPage.getContent\(

cc.attrs.component.getContentData(

cmsPage.getContentItemText\(

cc.attrs.component.getContentData(

cmsPage.hasContent\(

cc.attrs.component.hasContent(

cmsPage.getMedia\(['"](\w+)['"]\)

cc.attrs.component.getContent('$1').mediaItem

cmsPage.getMediaName\(['"](\w+)['"]\)

cc.attrs.component.getContent('$1').mediaItem.name

cmsPage.getMediaDescription\(['"](\w+)['"]\)

cc.attrs.component.getContent('$1').mediaItem.description

cmsBean.getCollection\('collection01', cmsPage\)

collectionViewBean.getCollection(cc.attrs.component.getContent('collection01'), 0, false, false, false)

cmsPage.listPage

cc.attrs.component.owningPage.listPage

cmsBean.getUrl\(cmsPage\)

cmsBean.getUrl(cc.attrs.component.owningPage)

pom.xml

Die Zeile

<includes>META-INF/resources/resources/cms/templates/*</includes>

muss ersetzt werden durch

<includes>META-INF/resources/resources/cms/templates/**/*</includes> 

Anpassungen Facettierung der Suche

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.

OldNew

#{search.facets.currentFacetString}

#{search.facets.activeFacetString}

#{searchBean.facets.resetCurrentFacets}

#{searchBean.facets.resetActiveFacets}

#{currentFacetString:searchBean.facets.currentFacetString}

#{activeFacetString:searchBean.facets.activeFacetString}

#{searchBean.facets.currentFacetStringPrefix}

#{searchBean.facets.activeFacetStringPrefix}

fn:length(searchBean.facets.getCurrentFacetsForField(field.key))

fn:length(searchBean.facets.getActiveFacetsForField(field.key))

#{currentFacets:searchBean.facets.currentFacetString}

#{activeFacets:searchBean.facets.activeFacetString}

Die Funktionen sind üblicherweise in folgenden Bereichen bzw. Dateien zu finden:

22.11

Bei einem Update auf diese Version sind keine Änderungen zu beachten.

22.10

Angepasste Methoden

In angepassten Themes beziehungsweise themspezifischen Templates ist darauf zu achten, dass sich folgende Methoden geändert haben:

BeforeNow

#{configurationBean.showThumbnailsInToc()}

- - - (function removed)

#{activeDocumentBean.viewManager.topDocument}

#{activeDocumentBean.viewManager.topStructElement}

Entfernen von obsoleten rendered Conditions im Header

Die folgenden Methoden sind in custom Templates oder statischen/überschriebenen Seiten zu suchen und zu entfernen:

rendered="#{configurationBean.addHighwirePressMetaTags}" 
rendered="#{configurationBean.addDublinCoreMetaTags}" 

Anpassung der erweiterten Suche

Die erweiterte Suche wurde funktional und optisch umfangreich überarbeitet. Außerdem ist ein Hilfewidget in der Sidebar ergänzt worden. viewer/searchadvanced

  • boilerplate/css/less/constructor.less

  • boilerplate/css/less/views/search/searchAdvanced.less

  • boilerplate/css/less/css/less/widgets/widgetSearchAdvancedHelp.less

22.09

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.

Der Copyright Indikator wurde leicht abgewandelt, so dass nun auch die Anzeige in der Sidebar als Widget möglich ist.

22.07

Die Methode für die Generierung der Sitelinks wurde umbenannt. Im Footer der Themes ist daher häufig folgender Abschnitt zu tauschen:

<!-- OLD -->
<ui:fragment rendered="#{fn:length(sitelinkBean.availableValues) > 0}">
   <a href="#{request.contextPath}/sitelinks/">#{msg.sitelinks}</a>
</ui:fragment>

<!-- NEW -->
<ui:fragment rendered="#{configurationBean.sitelinksEnabled}">
   <a href="#{request.contextPath}/sitelinks/">#{msg.sitelinks}</a>
</ui:fragment>

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.

<!-- INSERT NEW DEV DEPENDENCY -->
"grunt-replace": "2.0.2",

Es sind neue Grunt Tasks in der Datei Gruntfile.js anzulegen und zu registrieren.

<!-- NEW ---------- LOAD TASKS ------------>
grunt.loadNpmTasks('grunt-replace');
	
<!-- NEW ---------- REGISTER DEVELOPMENT TASKS ------------>
grunt.registerTask('cache', [ 'sync', 'replace' ]);
    
<!-- NEW ---------- SRC ENTRY TEMPLATE VARIABLE ------------>
templatesFolder: 'WebContent/resources/themes/<%=theme.name%>/',    
    
<!-- NEW ---------- TASK INSIDE CONFIG  ------------>
replace: {
	dist: {
    	options:{
      		patterns: [ {
				match: /cachetimestamp=[0-9-]+/g,
				replacement: 'cachetimestamp=<%= new Date().getFullYear()+"-"+(new Date().getMonth()+1)+"-"+new Date().getDate()+"-"+(new Date().getHours())+"-"+(new Date().getMinutes())+"-"+(new Date().getSeconds()) %>' 
			} ],
			usePrefix: false,
    	},
	  files: [
	    {
	     expand: true, 
	     flatten: true, 
	     src: ['<%=src.templatesFolder%>*.html'],
	     dest: '<%=src.templatesFolder%>'
	    },
	    {
	     expand: false, 
	     flatten: true, 
	     src: ['WebContent/resources/themes/<%=theme.name%>/includes/customJS.xhtml'],
	     dest: 'WebContent/resources/themes/<%=theme.name%>/includes/customJS.xhtml'
	    }
	  ]
    }
},

In allen template*.html Dateien muss ein Parameter für die eingefügten JS und CSS Dateien ergänzt werden.

    <ui:include src="/resources/includes/templateHeads/css.xhtml">
      <ui:param name="templateName" value="#{templateName}" />
      <ui:param name="excludeCSS" value="#{excludeCSS}" />
      <!-- NEW PARAMETER: -->
      <ui:param name="cacheBuster" value="cachetimestamp=2022-8-2-11-49-30" />
    </ui:include>

    <ui:include src="/resources/includes/templateHeads/js.xhtml">
      <ui:param name="templateName" value="#{templateName}" />
      <ui:param name="excludeJS" value="#{excludeJS}" />
      <!-- NEW PARAMETER: -->
      <ui:param name="cacheBuster" value="cachetimestamp=2022-8-2-11-49-30" />
    </ui:include>

In der Datei customJS.xhtml ist hinter der Methode navigationHelper.buildVersion folgende Zeichenkette zu ergänzen: &amp;cachetimestamp=

<!-- EXAMPLE -->
<script src="#{request.contextPath}/resources/themes/#{navigationHelper.theme}/javascript/dist/custom.min.js?${navigationHelper.buildVersion}&amp;cachetimestamp=2022-8-2-11-49-30"></script>

<script src="#{request.contextPath}/resources/themes/#{navigationHelper.theme}/javascript/dist/#{navigationHelper.theme}-tags.js?${navigationHelper.buildVersion}&amp;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:fragment rendered="#{adminClientsBean.clientLoggedIn}">
    <div class="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:fragment rendered="#{configurationBean.contentUploadEnabled}">
    <viewerComponent:modalContentUpload id="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:

viewerJS.disclaimerConfig = #{disclaimerBean.disclaimerConfig};

Barrierefreiheit

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:

  <!-- PIWIK -->
  <ui:fragment rendered="#{configurationBean.piwikTrackingEnabled}">
    <viewerComponent:piwikTracking piwikBaseURL="#{configurationBean.piwikBaseURL}" piwikSiteID="#{configurationBean.piwikSiteID}" />
  </ui:fragment>

Die folgende Zeile muss direkt oberhalb der Piwik-Komponente in den Template Dateien eingefügt werden.

<!-- COOKIE BANNER -->
<ui:include src="/resources/includes/cookieBanner.xhtml" />

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.

options: {
    sourceMap: true,
    sourceMapURL: "<%=theme.name%>.min.css.map",
},

22.01

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:

<!-- Beispiel: template.html -->
<c:set var="templateName" value="template" />

<!-- Beispiel: templateAdmin.html -->
<c:set var="templateName" value="templateAdmin" />

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:set var="excludeCSS" value="#{['bootstrap', 'jqueryUI']}" />
<c:set var="excludeJS" value="#{['swiper', 'jquery']}" />

<!-- eine Liste aller möglichen Strings in der Browser-Konsole anzeigen: -->
<c:set var="excludeCSS" value="#{['showCSS']}" />
<c:set var="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:set var="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:set var="excludeCSS" value="#{[]}" />
<c:set var="excludeJS" value="#{[]}" />

Metatags entfernen und neues Include einfügen

<!-- DELETE -->
<meta charset="utf-8" />
<meta name="description" content="" />
<meta name="generator" content="Goobi viewer" />
<meta name="application" content="#{navigationHelper.applicationName}" />
<meta name="version" content="#{navigationHelper.version}" />
<meta name="build date" content="#{navigationHelper.buildDate}" />
<meta name="git-revision" content="#{navigationHelper.buildVersion}" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<ui:fragment rendered="#{navigationHelper.displayNoIndexMetaTag}">
  <meta name="robots" content="noindex" />
</ui:fragment>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />

<!-- ADD -->
<!-- META TAGS -->
<ui:include src="/resources/includes/templateHeads/metaTags.xhtml" />

CSS Referenzen entfernen und neues Include einfügen

<!-- DELETE -->
<!-- BASIC CSS -->
<link type="text/css" rel="stylesheet" href="#{request.contextPath}/resources/css/libs/bs/bootstrap.custom.css?${navigationHelper.buildVersion}" />
<link type="text/css" rel="stylesheet" href="#{request.contextPath}/resources/css/libs/jQueryUI-1.12.1/jquery-ui.min.css?${navigationHelper.buildVersion}" />
<link type="text/css" rel="stylesheet" href="#{request.contextPath}/resources/css/libs/jQueryUI-1.12.1/jquery-ui.structure.min.css?${navigationHelper.buildVersion}" />
<link type="text/css" rel="stylesheet" href="#{request.contextPath}/resources/css/libs/font-awesome/css/font-awesome.min.css?${navigationHelper.buildVersion}" />
<link type="text/css" rel="stylesheet" href="#{request.contextPath}/resources/css/libs/swiper/swiper-bundle.min.css?${navigationHelper.buildVersion}" />
<link type="text/css" rel="stylesheet" href="#{request.contextPath}/resources/css/libs/jquery.ui.slider-rtl.css?${navigationHelper.buildVersion}" />
<link type="text/css" rel="stylesheet" href="#{request.contextPath}/resources/css/libs/sweetalert/sweetalert2.min.css?${navigationHelper.buildVersion}" />
<link type="text/css" rel="stylesheet" href="#{request.contextPath}/resources/css/libs/leaflet/leaflet.css?${navigationHelper.buildVersion}" />
<link type="text/css" rel="stylesheet" href="#{request.contextPath}/resources/css/libs/leaflet/extra-markers/leaflet.extra-markers.min.css?${navigationHelper.buildVersion}" />
<link type="text/css" rel="stylesheet" href="#{request.contextPath}/resources/css/libs/leaflet/markercluster/MarkerCluster.css?${navigationHelper.buildVersion}" />
<link type="text/css" rel="stylesheet" href="#{request.contextPath}/resources/css/libs/leaflet/draw/leaflet.draw.css?${navigationHelper.buildVersion}" />
<link type="text/css" rel="stylesheet" href="#{request.contextPath}/resources/css/libs/mapbox/geocoder/mapbox-gl-geocoder.css?${navigationHelper.buildVersion}" />
<link type="text/css" rel="stylesheet" href="#{request.contextPath}/resources/css/libs/mapbox/mapbox-gl.css?${navigationHelper.buildVersion}" />

<!-- CUSTOM CSS + DIST FILES -->
<link type="text/css" rel="stylesheet" href="#{request.contextPath}/resources/css/dist/viewer.min.css?${navigationHelper.buildVersion}" />
<link type="text/css" rel="stylesheet" href="#{request.contextPath}/resources/themes/#{navigationHelper.theme}/css/dist/#{navigationHelper.theme}.min.css?${navigationHelper.buildVersion}" />


<!-- ADD -->
<!-- CSS -->
<ui:include src="/resources/includes/templateHeads/css.xhtml">
  <ui:param name="templateName" value="#{templateName}" />
  <ui:param name="excludeCSS" value="#{excludeCSS}" />
</ui:include>

Javascript Referenzen entfernen und neues Include einfügen

<!-- DELETE -->
<!-- JAVASCRIPT LIBS -->
<script type="text/javascript" src="#{request.contextPath}/resources/javascript/libs/jquery/jquery.min.js?${navigationHelper.buildVersion}"></script>
<script type="text/javascript" src="#{request.contextPath}/resources/javascript/libs/jqueryUi/1.12.1/jquery-ui.min.js?${navigationHelper.buildVersion}"></script>
<script type="text/javascript" src="#{request.contextPath}/resources/javascript/libs/jqueryUi/plugins/jquery.ui.touch-punch.min.js?${navigationHelper.buildVersion}"></script>
<script type="text/javascript" src="#{request.contextPath}/resources/javascript/libs/jqueryUi/plugins/jquery.ui.slider-1.12.1-rtl.js?${navigationHelper.buildVersion}"></script>
<script type="text/javascript" src="#{request.contextPath}/resources/javascript/libs/bs/bootstrap.bundle.min.js?${navigationHelper.buildVersion}"></script>
<script type="text/javascript" src="#{request.contextPath}/resources/javascript/libs/tinymce/tinymce.min.js?${navigationHelper.buildVersion}"></script>
<script type="text/javascript" src="#{request.contextPath}/resources/javascript/libs/datatables.min.js?${navigationHelper.buildVersion}"></script>
<script type="text/javascript" src="#{request.contextPath}/resources/javascript/libs/reactiveX/rxjs.umd.min.js?${navigationHelper.buildVersion}"></script>
<script type="text/javascript" src="#{request.contextPath}/resources/javascript/libs/q-promises/q.min.js?${navigationHelper.buildVersion}"></script>
<script type="text/javascript" src="#{request.contextPath}/resources/javascript/libs/clipboard/clipboard.min.js?${navigationHelper.buildVersion}"></script>
<script type="text/javascript" src="#{request.contextPath}/resources/javascript/libs/pdfjs/pdf.js?${navigationHelper.buildVersion}"></script>
<script type="text/javascript" src="#{request.contextPath}/resources/javascript/libs/riot/riot.min.js?${navigationHelper.buildVersion}"></script>
<script type="text/javascript" src="#{request.contextPath}/resources/javascript/libs/swiper/swiper-bundle.min.js?${navigationHelper.buildVersion}"></script>
<script type="text/javascript" src="#{request.contextPath}/resources/javascript/libs/sweetalert/sweetalert2.min.js?${navigationHelper.buildVersion}"></script>
<script type="text/javascript" src="#{request.contextPath}/resources/javascript/libs/leaflet/leaflet.js?${navigationHelper.buildVersion}"></script>
<script type="text/javascript" src="#{request.contextPath}/resources/javascript/libs/leaflet/extra-markers/leaflet.extra-markers.min.js?${navigationHelper.buildVersion}"></script>
<script type="text/javascript" src="#{request.contextPath}/resources/javascript/libs/leaflet/markercluster/leaflet.markercluster.js?${navigationHelper.buildVersion}"></script>
<script type="text/javascript" src="#{request.contextPath}/resources/javascript/libs/leaflet/draw/leaflet.draw.js?${navigationHelper.buildVersion}"></script>
<script type="text/javascript" src="#{request.contextPath}/resources/javascript/libs/mapbox/geocoder/mapbox-gl-geocoder.min.js?${navigationHelper.buildVersion}"></script>
<script type="text/javascript" src="#{request.contextPath}/resources/javascript/libs/mapbox/mapbox-gl.js?${navigationHelper.buildVersion}"></script>

<!-- JAVASCRIPT DIST FILES -->
<script type="text/javascript" src="#{request.contextPath}/resources/javascript/dist/browsersupport.min.js?${navigationHelper.buildVersion}"></script>
<script type="text/javascript" src="#{request.contextPath}/resources/javascript/dist/viewer.min.js?${navigationHelper.buildVersion}"></script>
<script type="text/javascript" src="#{request.contextPath}/resources/javascript/dist/riot-tags.js?${navigationHelper.buildVersion}"></script>


<!-- ADD -->
<!-- JAVASCRIPT -->
<ui:include src="/resources/includes/templateHeads/js.xhtml">
  <ui:param name="templateName" value="#{templateName}" />
  <ui:param name="excludeJS" value="#{excludeJS}" />
</ui:include>

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:

  • boilerplate/includes/layout.xhtml

<!-- DELETE -->
<a href="#{request.contextPath}/sitelinks/">#{msg.sitelinks}</a>

<!-- ADD -->
<ui:fragment rendered="#{fn:length(sitelinkBean.availableValues) > 0}">
    <a href="#{request.contextPath}/sitelinks/">#{msg.sitelinks}</a>
</ui:fragment>

Überschriftenstruktur

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:

Last updated