From bc3f2f45c9aa2180e5ddd6f4f2424f4f0b23d8d3 Mon Sep 17 00:00:00 2001
From: Baptiste Wojtkowski <bski@laposte.net>
Date: Wed, 31 Jul 2024 14:47:28 +0200
Subject: [PATCH] Bug 37434: Sort by publicationyear when copyrightdate is set
 in UNIMARC

---
 .../prog/en/modules/virtualshelves/shelves.tt          |  2 ++
 virtualshelves/shelves.pl                              | 10 ++++++++--
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/virtualshelves/shelves.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/virtualshelves/shelves.tt
index e82cf2f..e9504fa 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/virtualshelves/shelves.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/virtualshelves/shelves.tt
@@ -439,6 +439,8 @@
                                     [% END %]
                                     [% IF shelf.sortfield == "copyrightdate" %]
                                         <option value="copyrightdate" selected="selected">Copyrightdate</option>
+                                    [% ELSIF shelf.sortfield == "publicationyear" %]
+                                        <option value="publicationyear" selected="selected">Copyrightdate</option>
                                     [% ELSE %]
                                         <option value="copyrightdate">Copyrightdate</option>
                                     [% END %]
diff --git a/virtualshelves/shelves.pl b/virtualshelves/shelves.pl
index badd78f..2161ab1 100755
--- a/virtualshelves/shelves.pl
+++ b/virtualshelves/shelves.pl
@@ -114,7 +114,10 @@ if ( $op eq 'add_form' ) {
     if ( $shelf ) {
         $op = $referer;
         my $sortfield = $query->param('sortfield');
-        $sortfield = 'title' unless grep { $_ eq $sortfield } qw( title author copyrightdate itemcallnumber dateadded );
+        $sortfield = 'title' unless grep { $_ eq $sortfield } qw( title author copyrightdate publicationyear itemcallnumber dateadded );
+        if ($sortfield == 'copyrightdate' and C4::Context->preference('marcflavour')=='UNIMARC'){
+            $sortfield = 'publicationyear';
+        }
         if ( $shelf->can_be_managed( $loggedinuser ) ) {
             $shelf->shelfname( scalar $query->param('shelfname') );
             $shelf->sortfield( $sortfield );
@@ -272,7 +275,10 @@ if ( $op eq 'view' ) {
     if ( $shelf ) {
         if ( $shelf->can_be_viewed( $loggedinuser ) ) {
             my $sortfield = $query->param('sortfield') || $shelf->sortfield || 'title';    # Passed in sorting overrides default sorting
-            $sortfield = 'title' unless grep { $_ eq $sortfield } qw( title author copyrightdate itemcallnumber dateadded );
+            $sortfield = 'title' unless grep { $_ eq $sortfield } qw( title author copyrightdate publicationyear itemcallnumber dateadded );
+            if ($sortfield == 'copyrightdate' and C4::Context->preference('marcflavour')=='UNIMARC'){
+                $sortfield = 'publicationyear';
+            }
             my $direction = $query->param('direction') || 'asc';
             $direction = 'asc' if $direction ne 'asc' and $direction ne 'desc';
             my $rows;
-- 
2.43.0