From 359afe5156d23109bed680ca60e261a3aea03c08 Mon Sep 17 00:00:00 2001 From: Jan Kristinus Date: Thu, 20 Jun 2024 10:33:55 +0200 Subject: [PATCH] =?UTF-8?q?Relation=20Widgets=20und=20Inline=20funktionier?= =?UTF-8?q?ten=20bei=20mehrfacher=20Inlineverkn=C3=BCpfung=20nicht?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugins/manager/assets/widget.js | 49 ++++++++--------------- plugins/manager/lib/var_yform_dataset.php | 16 +++----- 2 files changed, 21 insertions(+), 44 deletions(-) diff --git a/plugins/manager/assets/widget.js b/plugins/manager/assets/widget.js index 3636671d..965c19a0 100644 --- a/plugins/manager/assets/widget.js +++ b/plugins/manager/assets/widget.js @@ -1,13 +1,24 @@ $(document).on('rex:ready',function() { + let counter = 0; $(".yform-dataset-widget").each(function () { - let id = this.dataset.id; + counter++; + + let field_name = this.dataset.field_name; let link = this.dataset.link; let widget_type = this.dataset.widget_type; - let field_name = this.dataset.field_name; - let _csrf_token = this.dataset.csrf_token; - let value = this.dataset.value; + + let id = Date.now() + counter; + this.dataset.id = id; + + $(this).find(".yform-dataset-view").each(function () { + this.id = 'yform-dataset-view-' + id; + }); + + $(this).find(".yform-dataset-real").each(function () { + this.id = 'yform-dataset-real-' + id; + }); $(this).find("a").each(function () { @@ -23,35 +34,7 @@ $(document).on('rex:ready',function() { }; } - // add - if (this.classList.contains('yform-dataset-widget-add')) { - this.onclick = function () { - let newWindowLink = link + '&_csrf_token='+ _csrf_token +'&func=add&rex_yform_manager_opener[id]='+id+'&rex_yform_manager_opener[field]='+field_name+'&rex_yform_manager_opener[multiple]='+multiple; - return newWindow( id, newWindowLink, 1200,800,',status=yes,resizable=yes'); - }; - } - - // view - if (value !== '' && this.classList.contains('yform-dataset-widget-view')) { - this.onclick = function () { - let dataId = value; - if (multiple === 1) { - let viewObject = document.querySelector('#yform-dataset-view-'+id); - for (let position = 0; position < viewObject.options.length; position++) { - if (viewObject.options[position].selected) { - dataId = viewObject.options[position].value; - break; - } - } - - } - - let newWindowLink = link + '&_csrf_token='+ _csrf_token +'&func=edit&data_id=' + dataId + '&rex_yform_manager_opener[id]='+id+'&rex_yform_manager_opener[field]='+field_name+'&rex_yform_manager_opener[multiple]='+multiple; - return newWindow( id, newWindowLink, 1200,800,',status=yes,resizable=yes'); - }; - } - - // open + // open / add if (this.classList.contains('yform-dataset-widget-open')) { this.onclick = function () { let newWindowLink = link + '&rex_yform_manager_opener[id]='+id+'&rex_yform_manager_opener[field]='+field_name+'&rex_yform_manager_opener[multiple]='+multiple; diff --git a/plugins/manager/lib/var_yform_dataset.php b/plugins/manager/lib/var_yform_dataset.php index 3d001c69..7c9dfa64 100644 --- a/plugins/manager/lib/var_yform_dataset.php +++ b/plugins/manager/lib/var_yform_dataset.php @@ -94,7 +94,7 @@ protected function getOutput() return self::quote($value); } - public static function getMultipleWidget($id, $name, $value, array $args = []) + public static function getMultipleWidget($id, $name, $value, array $args = []): string { $link = $args['link']; $size = $args['size'] ?? 10; @@ -103,13 +103,9 @@ public static function getMultipleWidget($id, $name, $value, array $args = []) $attributes['class'] = 'form-control yform-dataset-view'; $attributes = array_merge($attributes, $args['attributes'] ?? []); - $dataset_view_id = 'yform-dataset-view-' . $id . ''; - $dataset_real_id = 'yform-dataset-real-' . $id . ''; - $select = new rex_select(); $select->setAttributes($attributes); - $select->setId($dataset_view_id); - $select->setName($dataset_view_id . '-name'); + $select->setName($name . '-name'); $select->setSize($size); foreach ($args['options'] as $option) { $select->addOption($option['name'], $option['id']); @@ -122,7 +118,7 @@ public static function getMultipleWidget($id, $name, $value, array $args = []) $e = []; $e['field'] = $select->get() . ' - '; + '; $e['moveButtons'] = ' @@ -154,8 +150,6 @@ public static function getSingleWidget($id, $name, $value, array $args = []) if ('' != $value) { $valueName = rex_escape(trim(sprintf('%s [%s]', $args['valueName'], $value))); } - $dataset_view_id = 'yform-dataset-view-' . $id . ''; - $dataset_real_id = 'yform-dataset-real-' . $id . ''; $viewButton = ''; if ('' === $value) { @@ -163,8 +157,8 @@ public static function getSingleWidget($id, $name, $value, array $args = []) } $e['field'] = ' - - '; + + '; $e['functionButtons'] = '