From e5bb1ed5a0478f0377fd0357dd4e019340eccde6 Mon Sep 17 00:00:00 2001
From: Robert Lange <robert.lange@uni-leipzig.de>
Date: Tue, 18 May 2021 12:55:31 +0200
Subject: [PATCH] refs #19811 [finc] adv. search:

* set focus on first input in advanced search form
** after page has been loaded
** BUT focus on next / new input when user adds new search field
* reset limit for results on default on clear-button
** set variable for javascript in /search/advanced/limit.phtml
---
 themes/finc/js/advanced_search.js               | 17 ++++++++++++-----
 .../finc/templates/search/advanced/limit.phtml  |  1 +
 2 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/themes/finc/js/advanced_search.js b/themes/finc/js/advanced_search.js
index 6ea46964445..daafce424e0 100644
--- a/themes/finc/js/advanced_search.js
+++ b/themes/finc/js/advanced_search.js
@@ -3,7 +3,7 @@
 var nextGroup = 0;
 var groupLength = [];
 
-function addSearch(group, _fieldValues) {
+function addSearch(group, _fieldValues, isUser) {
   var fieldValues = _fieldValues || {};
   // Build the new search
   var inputID = group + '_' + groupLength[group];
@@ -53,7 +53,11 @@ function addSearch(group, _fieldValues) {
   groupLength[group]++;
 
   // #17985 finc barf
-  $newSearch.find('input.form-control').focus();
+  if (isUser) {
+    $newSearch.find('input.form-control').focus();
+  } else {
+    $("#group" + group).find('input.form-control').first().focus();
+  }
 
   return false;
 }
@@ -99,7 +103,7 @@ function addGroup(_firstTerm, _firstField, _join) {
     .removeClass('hidden');
   $newGroup.find('.add_search_link')
     .attr('id', 'add_search_link_' + nextGroup)
-    .attr('onClick', 'return addSearch(' + nextGroup + ')')
+    .attr('onClick', 'return addSearch(' + nextGroup + ', {}, true)')
     .removeClass('hidden');
   $newGroup.find('.adv-group-close')
     .attr('onClick', 'return deleteGroup(' + nextGroup + ')');
@@ -115,7 +119,7 @@ function addGroup(_firstTerm, _firstField, _join) {
   $('#groupPlaceHolder').before($newGroup);
   // Populate
   groupLength[nextGroup] = 0;
-  addSearch(nextGroup, {term: firstTerm, field: firstField});
+  addSearch(nextGroup, {term: firstTerm, field: firstField}, false);
   // Show join menu
   if (nextGroup > 0) {
     $('#groupJoin').removeClass('hidden');
@@ -145,7 +149,10 @@ function deleteGroup(group) {
 $(document).ready(function advSearchReady() {
   $('.clear-btn').click(function clearBtnClick() {
     $('input[type="text"]').val('');
-    $("option:selected").removeAttr("selected");
+    $('select').not('#limit').find('option:selected').removeAttr('selected');
+    if (typeof defaultLimit !== 'undefined') {
+      $("#limit").val(defaultLimit);
+    }
     $("#illustrated_-1").click();
   });
 });
diff --git a/themes/finc/templates/search/advanced/limit.phtml b/themes/finc/templates/search/advanced/limit.phtml
index 1143d26934e..c8f5ad0eaeb 100644
--- a/themes/finc/templates/search/advanced/limit.phtml
+++ b/themes/finc/templates/search/advanced/limit.phtml
@@ -6,6 +6,7 @@
     // If a previous limit was used, make that the default; otherwise, use the "default default"
     $lastLimit = $this->searchMemory()->getLastLimit($this->options->getSearchClassId());
     $defaultLimit = empty($lastLimit) ? $this->options->getDefaultLimit() : $lastLimit;
+    $this->headScript()->appendScript("var defaultLimit = $defaultLimit");
 ?>
 <?php if (count($limitList) > 1): ?>
   <fieldset class="limits">
-- 
GitLab