Skip to content

Commit

Permalink
Relation Widgets und Inline funktionierten bei mehrfacher Inlineverkn…
Browse files Browse the repository at this point in the history
…üpfung nicht
  • Loading branch information
dergel committed Jun 20, 2024
1 parent 0a076c2 commit 359afe5
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 44 deletions.
49 changes: 16 additions & 33 deletions plugins/manager/assets/widget.js
Original file line number Diff line number Diff line change
@@ -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 () {

Expand All @@ -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;
Expand Down
16 changes: 5 additions & 11 deletions plugins/manager/lib/var_yform_dataset.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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']);
Expand All @@ -122,7 +118,7 @@ public static function getMultipleWidget($id, $name, $value, array $args = [])

$e = [];
$e['field'] = $select->get() . '
<input type="hidden" class="yform-dataset-real" name="' . $name . '" id="' . $dataset_real_id . '" value="' . rex_escape($value) . '" />';
<input type="hidden" class="yform-dataset-real" name="' . $name . '" value="' . rex_escape($value) . '" />';

$e['moveButtons'] = '
<a class="btn btn-popup yform-dataset-widget-move yform-dataset-widget-move-top" title="' . rex_i18n::msg('yform_relation_move_first_data') . '"><i class="rex-icon rex-icon-top"></i></a>
Expand Down Expand Up @@ -154,17 +150,15 @@ 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 = '<a class="btn btn-popup yform-dataset-widget-view" title="' . rex_i18n::msg('yform_relation_view_entry') . '"><i class="rex-icon rex-icon-view"></i></a>';
if ('' === $value) {
$viewButton = '<span class="btn btn-popup" title="' . rex_i18n::msg('yform_relation_no_entry') . '"><i class="rex-icon rex-icon-hide"></i></span>';
}

$e['field'] = '
<input class="form-control yform-dataset-view" type="text" value="' . $valueName . '" id="' . $dataset_view_id . '" readonly="readonly" />
<input type="hidden" class="yform-dataset-real" name="' . $name . '" id="' . $dataset_real_id . '" value="' . $value . '" />';
<input class="form-control yform-dataset-view" type="text" value="' . $valueName . '" readonly="readonly" />
<input type="hidden" class="yform-dataset-real" name="' . $name . '" value="' . $value . '" />';
$e['functionButtons'] = '
<a class="btn btn-popup yform-dataset-widget-open" title="' . rex_i18n::msg('yform_relation_choose_entry') . '"><i class="rex-icon rex-icon-view-list"></i></a>
<a class="btn btn-popup yform-dataset-widget-add" title="' . rex_i18n::msg('yform_relation_add_entry') . '"><i class="rex-icon rex-icon-add"></i></a>
Expand Down

0 comments on commit 359afe5

Please sign in to comment.