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'] = '