From c265ade3313f446ddf40d6c89f0cb1fcba22f540 Mon Sep 17 00:00:00 2001 From: adg167c Date: Thu, 11 Dec 2025 09:43:31 +0100 Subject: [PATCH 1/8] Use same versioning as mir-parent --- pom.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9bbe0dd..fdfd5b8 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,6 @@ 2023.06.4-SNAPSHOT mir-navigation-plugin - 2023.06-SNAPSHOT jar mir-navigation-plugin Navigation on series plugin for MyCoRe/MODS Institutional Repository From ff5ffcd0a5505517dd44f66463a14f420c0a1573 Mon Sep 17 00:00:00 2001 From: adg167c Date: Fri, 9 Jan 2026 11:31:14 +0100 Subject: [PATCH 2/8] prepare for next development iteration (2023.06.5-SNAPSHOT) --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index fdfd5b8..d37a46f 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ org.mycore.mir mir-parent - 2023.06.4-SNAPSHOT + 2023.06.5-SNAPSHOT mir-navigation-plugin jar From c2d8415074ba70d60c5881d7396f2fb93d406578 Mon Sep 17 00:00:00 2001 From: Lennard Golsch Date: Fri, 30 Jan 2026 10:26:54 +0100 Subject: [PATCH 3/8] add workflow_dispatch to snapshot release workflow --- .github/workflows/maven-publish-snapshot.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/maven-publish-snapshot.yml b/.github/workflows/maven-publish-snapshot.yml index 22d008c..aa792c1 100644 --- a/.github/workflows/maven-publish-snapshot.yml +++ b/.github/workflows/maven-publish-snapshot.yml @@ -4,6 +4,7 @@ name: Maven Snapshot deploy on: + workflow_dispatch: push: branches: - 'main' From 87060f8904c5be589bc69f309f7a353a4085c759 Mon Sep 17 00:00:00 2001 From: adg167c Date: Thu, 5 Feb 2026 12:04:25 +0100 Subject: [PATCH 4/8] use simpler versioning (2023.06-SNAPSHOT instead of 2023.06.5-SNAPSHOT) --- pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pom.xml b/pom.xml index d37a46f..9dd8b02 100644 --- a/pom.xml +++ b/pom.xml @@ -7,6 +7,7 @@ 2023.06.5-SNAPSHOT mir-navigation-plugin + 2023.06-SNAPSHOT jar mir-navigation-plugin Navigation on series plugin for MyCoRe/MODS Institutional Repository From 68e62baf68bfba4560efc821bf3f0adbfaf4b628 Mon Sep 17 00:00:00 2001 From: Lennard Golsch Date: Wed, 11 Feb 2026 14:49:28 +0100 Subject: [PATCH 5/8] Improve README.md --- README.md | 124 +++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 94 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index 8b7033c..40f901c 100644 --- a/README.md +++ b/README.md @@ -1,47 +1,111 @@ # mir-navigation-plugin -Includes an extended navigation for newspapers and series. It based on a widen solr handling for -parent documents (root field). +This MIR plugin provides navigation functionality for newspapers and series. -The plugin provides the extended solr handling for series (solr-navigation.xsl). In frontend -context there is a series layout with a panel that shows the navigation. +It provides a panel for the frontend that displays the series navigation, including banner and search. +The navigation is based on a derivate that contains a `navigation.xml` file, where the navigation structure and banner +can be configured. -## Installation instructions for mir lts 2023.06 (As mir-enduser) +It leverages enhanced Solr handling for parent documents (root field) and includes extended Solr processing for series. -1. Download the project from this repository and place it on your computer +> ⚠️ Note: The plugin will overwrite `response-mir.xsl`; any custom frontend changes may be lost. -2. Unzip the downloaded file to create a development project folder location +--- -3. Customize general mycore.properties(http://www.mycore.de/documentation/getting_started/mcr_properties.html) for this plugin (/mir-navigation-plugin/src/main/resources/config/mir-navigation-plugin/mycore.properties) +## Features -4. Create jar file with maven => mvn clean && mvn install +The plugin offers the following features: -5. Copy the created jar file from target (/mir-navigation-plugin/target) to mycore home lib +- Frontend Navigation Panel: Displays a series of pages or objects with banner and search. +- Banner Support: Root item can include a banner image. +- Flexible Navigation: Defined via navigation.xml with relative/absolute links and multilingual labels. +- Enhanced Solr Handling: Supports parent documents (root field) and requires schema extensions. +- Optional RSS Feed: RSS link can be displayed or disabled. -(Windows Systems C:\Users\User\AppData\Local\MyCoRe\mirapplication\lib)
-(Linux Systems /home/user/.mycore/mirapplication/lib) +--- -6. The navigation plugin uses a widen solr handling for parent documents. For this purpose, the plugin brings its own schema extensions. It is necessary to reload the solr schema (for further information have a look on solr mycore documentation http://www.mycore.de/documentation/search/using_solr.html). -In case of a standard solr core installation (the main core is named „main“) open the mir web cli: +## Requirements -- run command „reload solr configuration main in core main“ - * This command synchronizes the solr main core with the solr schema from this plugin -- Reload the mir core with solr webadmin (Core Admin - reload) - * You can do a quick check in the solr webadmin via mir schema menu item (root field should be there now) -- Reindex solr with the rules from the navigation plugin with command „rebuild solr metadata and content index in core main“ - * solr entries should provide the extended handling for parent documents now (root field) +### Navigation category in `derivate_types` classification -## Requirements for mods document metadata -The standard implementation identifies derivates as series-navigation relatable if they have set categid="navigation" in derobject classification: +The plugin is based on a derivate which must be classified via `derivate_types:navigation`. +Therefore, the `derivate_types` classification must include a category `navigation`. +The category can be defined as follows: - - 1 - index.xml - - +```xml + + +``` +--- -## Migrate series navigation in mir -For adding the series navigation panel in the right corner you have to adapt the MIR.Layout.End property (add series-banner,series-layout): +## Installation & Configuration -`MIR.Layout.End=mir-edit,series-banner,series-layout,mir-citation,mir-thumbnail,mir-epusta,mir-access-rights,mir-export,mir-admindata,mir-historydata` \ No newline at end of file +### Build and provide plugin + +Build the JAR file with `mvn clean install` and copy it to `~/.mycore/(dev-)mir/lib/`. + +### Configure `mycore.properties` + +To use the plugin, configuration in `~/.mycore/(dev-)mir/mycore.properties` is required. +The RSS feed requires a `mycoreobject-rss` stylesheet, which is not included by default. +For historical reasons, the link to the RSS feed is always displayed, but it can be disabled if needed. +All in all, configure as follows: + +```text +# Add 'series-banner' and 'series-layout'. +MIR.Layout.End=mir-edit,series-banner,series-layout,mir-citation,mir-thumbnail,mir-epusta,mir-access-rights,mir-export,mir-admindata,mir-historydata + +# Optional: disable RSS feed. +MIR.Metadata.Navigation.SeriesPanel.RSS.Enabled=false +``` + +### Reload and rebuild Solr + +The plugin leverages enhanced Solr handling for parent documents. +For this purpose, the plugin brings its own schema extensions. +It is necessary to reload the Solr schema (for further information have a look on Solr +[documentation](https://www.mycore.de/documentation/search/search_solr_use/)). +In the case of a standard Solr core installation (where the main core is named `main`), run the following CLI commands: + +```text +# Synchronize the solr main core with the solr schema from this plugin. +reload solr configuration main in core main +# Reindex solr with the rules. +rebuild solr metadata and content index in core main +``` + +As a result, Solr entries will now support the extended handling for parent documents (root field). + +--- + +## Usage + +A panel on an object page, including a banner, navigation, and search, can be integrated via a `navigation.xml` file +contained in a derivative whose _derivate type_ is set to _navigation_. +The following format is expected for the `navigation.xml` file: + +```xml + + + + + + + + + + +``` + +A root item is expected first. The optional `banner` attribute can be used to specify a link to an image that will be +displayed above the navigation. + +Within the root item, the actual navigation points can be defined. The `ref` attribute specifies the target of a +navigation point and can contain either a relative or an absolute link. +Additionally, labels can be defined for the relevant languages. + +> 💡 Tip: Using the [mir-alias-plugin](https://github.com/MyCoRe-Org/mir-alias-plugin), you can simplify the links +> for objects in the navigation. From 72a589bd6d12824dcc273358b242f1f4695df937 Mon Sep 17 00:00:00 2001 From: Lennard Golsch Date: Wed, 11 Feb 2026 13:31:05 +0100 Subject: [PATCH 6/8] Introduce property to toggle RSS feed in the series panel --- .../config/mir-navigation-plugin/mycore.properties | 2 +- src/main/resources/xsl/series-panel.xsl | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/resources/config/mir-navigation-plugin/mycore.properties b/src/main/resources/config/mir-navigation-plugin/mycore.properties index 296bd24..3e5dc33 100644 --- a/src/main/resources/config/mir-navigation-plugin/mycore.properties +++ b/src/main/resources/config/mir-navigation-plugin/mycore.properties @@ -11,7 +11,7 @@ MCR.URIResolver.xslImports.solr-document=%MCR.URIResolver.xslImports.solr-docume ###################################################################### ## RSS Feed for journals and series ## ###################################################################### - +MIR.Metadata.Navigation.SeriesPanel.RSS.Enabled=true #MCR.LayoutTransformerFactory.Default.Ignore=mycoreobject-rss,%MCR.LayoutTransformerFactory.Default.Ignore% #DuEPublico.RSS.Generator=DuEPublico\: Duisburg-Essen Publications Online, University of Duisburg-Essen, Germany diff --git a/src/main/resources/xsl/series-panel.xsl b/src/main/resources/xsl/series-panel.xsl index 52fe3d6..a315572 100644 --- a/src/main/resources/xsl/series-panel.xsl +++ b/src/main/resources/xsl/series-panel.xsl @@ -12,6 +12,7 @@ + @@ -45,9 +46,11 @@
    - - - + + + + +
From 7f12820381500ef46cddb744513837c80149dc60 Mon Sep 17 00:00:00 2001 From: Lennard Golsch Date: Wed, 11 Feb 2026 11:52:44 +0100 Subject: [PATCH 7/8] Render banner only if present --- src/main/resources/xsl/series-panel.xsl | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/resources/xsl/series-panel.xsl b/src/main/resources/xsl/series-panel.xsl index a315572..42aa5c3 100644 --- a/src/main/resources/xsl/series-panel.xsl +++ b/src/main/resources/xsl/series-panel.xsl @@ -31,10 +31,12 @@
- - + + + +
From ba79bcca883085eec1cd729b455ac4571e2e5efc Mon Sep 17 00:00:00 2001 From: Lennard Golsch Date: Wed, 11 Feb 2026 11:27:06 +0100 Subject: [PATCH 8/8] Update response-mir.xsl --- src/main/resources/xsl/response-mir.xsl | 544 +++++++++++++++--------- 1 file changed, 340 insertions(+), 204 deletions(-) diff --git a/src/main/resources/xsl/response-mir.xsl b/src/main/resources/xsl/response-mir.xsl index 16b68b5..d764762 100644 --- a/src/main/resources/xsl/response-mir.xsl +++ b/src/main/resources/xsl/response-mir.xsl @@ -13,6 +13,7 @@ xmlns:decoder="xalan://java.net.URLDecoder" exclude-result-prefixes="i18n mods str exslt mcr acl mcrxsl basket encoder decoder"> + @@ -21,6 +22,8 @@ + + @@ -57,97 +60,318 @@
- +
@@ -204,7 +428,7 @@
- +
@@ -231,11 +455,11 @@
- + - - + + @@ -346,7 +570,7 @@
- + @@ -369,7 +593,7 @@ - +
@@ -386,7 +610,7 @@ - +
  • @@ -399,15 +623,15 @@ - - + + - - + + @@ -434,11 +658,11 @@
  • - +
    - +
    @@ -492,7 +716,7 @@ + test="$displayDerivate/str[@name='iviewFile'] or translate(str:tokenize($displayDerivate/str[@name='derivateMaindoc'],'.')[position()=last()],'PDF','pdf') = 'pdf'">
    @@ -504,7 +728,7 @@ ' + select="concat('background-image: url(', $apos, $WebApplicationBaseURL, 'api/iiif/image/v2/thumbnail/', $identifier, '/full/!300,300/0/default.jpg',$apos,')')"/> @@ -516,10 +740,10 @@
    + style="background-image: url('{$WebApplicationBaseURL}images/icons/icon_common.png');"/> + select="document(concat('ifs:/',$derivid))/mcr_directory/children/child[name=$maindoc]/contentType"/> @@ -545,113 +769,25 @@
    - +
    -
    - - - - - - - - - - - - - - - - - - - -
    - - - -
    - - - -
    -
    -
    - -
    - - - -
    -
    -
    - -
    - - - - - - - - - - - - - - - - -
    -
    - -
    - - - - - - - - - - - - - -
    -
    - -
    - - - - - - - - - -
    -
    +
    - +

    - - - - - + + + + + @@ -666,7 +802,7 @@

    - + @@ -737,7 +873,7 @@
    - +
    aus: @@ -757,7 +893,7 @@
    - + @@ -774,7 +910,7 @@
    - +
    @@ -825,7 +961,7 @@ + select="/response/lst[@name='responseHeader']/lst[@name='params']/str[@name='fq' and contains(., $queryPrefix)]" /> @@ -850,7 +986,7 @@ - + @@ -892,7 +1028,7 @@ - + @@ -1083,7 +1219,7 @@