From 9cbde5e91c0061cd8893a563abd02f258688f4f8 Mon Sep 17 00:00:00 2001
From: Moritz Strohm <strohm@data-quest.de>
Date: Thu, 23 Nov 2023 15:19:10 +0000
Subject: [PATCH] allow unsetting assigned persons for resource properties of
 type "user" re #988

Merge request studip/studip!2020
---
 .../resources/ResourcePropertyDefinition.class.php  | 13 +++++++++++--
 resources/assets/javascripts/bootstrap/resources.js |  2 +-
 .../bootstrap/studip_helper_attributes.js           |  1 +
 3 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/lib/models/resources/ResourcePropertyDefinition.class.php b/lib/models/resources/ResourcePropertyDefinition.class.php
index 3525e413bde..04c492444e4 100644
--- a/lib/models/resources/ResourcePropertyDefinition.class.php
+++ b/lib/models/resources/ResourcePropertyDefinition.class.php
@@ -244,14 +244,23 @@ class ResourcePropertyDefinition extends SimpleORMap
             $search = new QuickSearch($input_name, new StandardSearch('user_id'));
             $search->defaultValue($value, ($value ? get_fullname($value, 'full_rev_username') : ''));
             return sprintf(
-                '<label %1$s>%2$s%3$s</label>',
+                '<label %1$s>%2$s<div class="assigned-user-search-wrapper flex-row">%3$s%4$s</div></label>',
                 (
                     $label_html_classes
                     ? 'class="' . htmlReady($label_html_classes) . '"'
                     : ''
                 ),
                 $this->__toString(),
-                $search->render()
+                $search->render(),
+                Icon::create('refresh')->asImg(
+                    [
+                        'class'           => 'delete-assigned-user-icon enter-accessible',
+                        'data-input-name' => $input_name,
+                        'title'           => _('Zuorndung entfernen'),
+                        'tabindex'        => '0',
+                        'aria-role'       => 'button'
+                    ]
+                )
             );
         } else {
             $input_type = 'text';
diff --git a/resources/assets/javascripts/bootstrap/resources.js b/resources/assets/javascripts/bootstrap/resources.js
index 1238cec7e0c..388f47576e5 100644
--- a/resources/assets/javascripts/bootstrap/resources.js
+++ b/resources/assets/javascripts/bootstrap/resources.js
@@ -773,7 +773,7 @@ STUDIP.ready(function () {
 
     jQuery(document).on(
         'click',
-        '.create-booking-form .delete-assigned-user-icon',
+        '.delete-assigned-user-icon',
         function (event) {
             var quicksearch = jQuery(event.target).parent().find('input');
             if (!quicksearch) {
diff --git a/resources/assets/javascripts/bootstrap/studip_helper_attributes.js b/resources/assets/javascripts/bootstrap/studip_helper_attributes.js
index 0cdbaf37b44..8f96dcbe480 100644
--- a/resources/assets/javascripts/bootstrap/studip_helper_attributes.js
+++ b/resources/assets/javascripts/bootstrap/studip_helper_attributes.js
@@ -258,6 +258,7 @@ $(document).on('change', 'input[data-must-equal]', function() {
 $(document).on('keydown', '.enter-accessible', function(event) {
     if (event.code == 'Enter') {
         //The enter key has been pressed.
+        event.preventDefault();
         $(this).trigger('click');
     }
 });
-- 
GitLab