From 8da88f799c554b33b574bac6d5081ca2bff03d6d Mon Sep 17 00:00:00 2001
From: Robert Lange <robert.lange@uni-leipzig.de>
Date: Thu, 5 Jan 2023 08:36:23 +0100
Subject: [PATCH] refs #21905 [fid_adlr]

* create: use correct finc label for link to saved list
* delete:
** make deleting of list items more robust
** do not reload page, try delete list entry by javascript furthermore
** new: reload page when list item could not be deleted
** set focus on next element after delete

* adapt finc 20379
---
 fid_adlr/languages/de.ini                          |  1 -
 fid_adlr/languages/en.ini                          |  1 -
 themes/fid_adlr/js/lightbox.js                     |  8 +++++++-
 themes/fid_adlr/scss/components/_alerts.scss       |  2 +-
 .../RecordDriver/DefaultRecord/list-entry.phtml    | 14 ++++++++++++--
 5 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/fid_adlr/languages/de.ini b/fid_adlr/languages/de.ini
index c880a3d430a..8167de53e81 100644
--- a/fid_adlr/languages/de.ini
+++ b/fid_adlr/languages/de.ini
@@ -71,7 +71,6 @@ Authors/Corporations = "Beteiligte"
 Format = "Medientyp"
 view_worldcat = "Auch in diesen Bibliotheken vorhanden"
 Description = "weitere Informationen"
-go_to_list = "Zurück zur Ergebnisliste"
 
 #myresearch-menu
 contact_adlr = "Kontakt zu adlr.link"
diff --git a/fid_adlr/languages/en.ini b/fid_adlr/languages/en.ini
index 2fcf1a9ca5f..0d850f7c90e 100644
--- a/fid_adlr/languages/en.ini
+++ b/fid_adlr/languages/en.ini
@@ -69,7 +69,6 @@ basic_search_keep_filters = "Retain Filters"
 Format = "Media Type"
 view_worldcat = "Also available in these libraries"
 Description = "further information"
-go_to_list = "Back to results"
 
 #myresearch-menu
 contact_adlr = "Contact adlr.link"
diff --git a/themes/fid_adlr/js/lightbox.js b/themes/fid_adlr/js/lightbox.js
index c551d2af129..baffb1c1839 100644
--- a/themes/fid_adlr/js/lightbox.js
+++ b/themes/fid_adlr/js/lightbox.js
@@ -207,6 +207,11 @@ VuFind.register('lightbox', function Lightbox() {
     ajax({ url: _currentUrl || _originalUrl });
   }
 
+  // finc: restore focus after deleting records, #20379 #21905
+  function setOrigin(origin) {
+    _origin = origin;
+  }
+
   /**
    * Evaluate a callback
    */
@@ -446,6 +451,7 @@ VuFind.register('lightbox', function Lightbox() {
     // Reset
     reset: reset,
     // Init
-    init: init
+    init: init,
+    setOrigin: setOrigin
   };
 });
diff --git a/themes/fid_adlr/scss/components/_alerts.scss b/themes/fid_adlr/scss/components/_alerts.scss
index 3eae468bf7a..cd9f1b68082 100644
--- a/themes/fid_adlr/scss/components/_alerts.scss
+++ b/themes/fid_adlr/scss/components/_alerts.scss
@@ -23,6 +23,6 @@
   }
 
   a {
-    color: $state-info-text;
+    color: $black;
   }
 }
diff --git a/themes/fid_adlr/templates/RecordDriver/DefaultRecord/list-entry.phtml b/themes/fid_adlr/templates/RecordDriver/DefaultRecord/list-entry.phtml
index 8fc35c4c247..3e6c2424e3f 100644
--- a/themes/fid_adlr/templates/RecordDriver/DefaultRecord/list-entry.phtml
+++ b/themes/fid_adlr/templates/RecordDriver/DefaultRecord/list-entry.phtml
@@ -251,8 +251,18 @@
                     'delete':'<?=$this->escapeJs($id) ?>',
                     'source':'<?=$this->escapeJs($source) ?>',
                     'confirm':true
-                  }, function(){
-                      $('input[value=<?=$id?>]').parent().remove(0);
+                  }, function() {
+                      let rowToRemove = $('input[value=<?=$id?>]').parent();
+                      if (rowToRemove && rowToRemove.length) {
+                        let nextFocus = rowToRemove.next().first().find('input');
+                        rowToRemove.remove(0);
+                        if (nextFocus && nextFocus.length) {
+                          VuFind.lightbox.setOrigin(nextFocus);
+                        }
+                      } else {
+                          setTimeout('location.reload(true);', 2000);
+                      }
+
                       <?php /* reset needed for possible old MyResearchController::mylistAction in instances withot clearMessages */ ?>
                       <?php if (null === $list_id) :?>
                         VuFind.lightbox.alert('<?= $this->transEsc('Item removed from favorites')?>', 'success');
-- 
GitLab